#making-mods-general

1 messages · Page 130 of 1

uncut viper
#

(i would be surprised if it was a format version issue, but i dont know much about spacecores animated texture stuff to know what the actual issue would be)

lucid mulch
#

note that outside of 2.1 with localization changes, there would be near zero change between a content pack in 2.0 and 2.4 other than some shiny toys not being available

normal heart
#

having an issue with my json and i followed the documents

hard fern
#

um, the whole json would be more helpful

latent mauve
#

The validator yelled about it being 2.0, and if it is attempting to read as 2.0 instead of 2.0.0, it's worth changing. EditData has undergone quite a few fixes in that time

normal heart
#
{
    "Format": "2.4.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/Objects",
            "Fields": {
                "253": {
                    "Edibility": "43"
                },
                "395":
                    "Edibility": "13"
            }
        }
    ]
}
uncut viper
hard fern
#

oh i see it

#

missing a { } it looks like?

normal heart
#

oh gotcha yep

uncut viper
#

also EditData itself hasnt really changed like at all since 2.0

latent mauve
#

I probably scrolled too far in the changelogs then, but still

lucid mulch
#

even 2.0 didn't change much, it was mainly just adding priority and all the backwards compat to try and make non1.6 native content packs work at all

latent mauve
#

Better to at least attempt to update it to see if it fixes anything

lucid mulch
#

Note that the version at runtime, and the format version are related but distinct

latent mauve
#

My SpaceCore animation looks identical in format to theirs, but mine works

lucid mulch
#

There can be wild optimisations of what EditData does under the hood that does not matter what formatversion gets used

latent mauve
#

So unless there's an issue elsewhere with the actual assets, I don't know what would be wrong otherwise.

#

But it's late for me, and nobody else was answering them, so if y'all want to take over, by all means ❤️

hard fern
#

i tried using that CP-A to spacecore thing and it totally didn't work either, but i just gave up on it afterwards lol

#

i might want to take another look and see what's wrong

woeful lintel
#

yeah, you'll need to make it a rug

brave fable
#

arrg but if we had passable decor you could have floor cushions on a rug

#

arfsnfnmfs

hard fern
#

is it possible to marry a custom npc, but have their "kiss" be a hug like krobus instead 🤔

fossil osprey
#

I think some people have made NPC behave like that yes

woeful lintel
formal flame
#

Hello, I'm new to the modding scene of this wonderfull game and I have a question. If I want to, can I make a mod that generates custom layouts for the farm? Like I want to use an algorithm to generate worlds, and I thought that dooing that in Stardew would be nice.

distant radish
frigid hollow
#

i think deep woods does procedural stuff? not updated for 1.6 yet though

formal flame
#

I want to make one using Wave Function Collapse, in that way I can decide what "tiles" to use and will be costumizable. Like if you get your own "tiles" the farm layout will be generated using them...

#

I wanted to know if it's possible. I need to use that algorithm for my final project for my thesis at uni. And I tought why not build something for a game...

blissful saddle
#

I would love to see it implemented. But I think SDV maps are too much hard coded for it to work, safe for having heavy restrictions

proud wyvern
#

it would be very hard to get anything sensible to work, due to the nature of Stardew tile(sets) and layers

blissful saddle
#

I will take a look at the algorithm though. it may be useful to another project of mine

fossil osprey
#

You can probably do something with the farm map, but not other maps
And yeah, for it to be coherent that's need a ton of conditions

formal flame
brave fable
#

just keep looking at the screen. draw the cute beds. do not look at the walls. ignore the hundreds of baby spiders. draw a bunny.

formal flame
drowsy pewter
#

Well, you should try making a map the normal way first

#

then you'll see what we're talking about

formal flame
#

Can I use .NET 8.0?

brave fable
#

nope, .NET 6.0

formal flame
#

ok thanks

fallow musk
#

do i need to pass the helper instance of ModEntry to every other class, or can I do the 'create a static instance of it and make it public' thing?

#

it doesnt seem to work for me, only works when i use it in the main class

calm nebula
#

I mean. Depends on what you what

#

I had mods that put the various parts of Helper in a static field.

#

I had mods that passed in the various parts of Helper.

#

But yeah, pass it in or make it static, your choice

fallow musk
#

the problem was that i tried it but im not able to invoke the function i intend to call after asset load

#

not sure whats my mistake here

#

but the function triggers when i move the event trigger to ModEntry class, but doesnt work in a second class

calm nebula
#

You're using a static constructor

#

Don't do that unless you have to

#

Static constructors are called whenever a class is even vaguely touched, even if by reflection only

#

Wait no I can't read

fallow musk
#

oh so ig event trigger related mechanics might not even be loaded in the SModHelper yet

calm nebula
#

No, where are you calling that function?

fallow musk
#

its though another class, but basically this

#

do i need to create the object of the class first before invoking the method?

#

the materials im adding to the inventory do take effect

#

so atleast the control goes to the applyRoleEffects method

#

its just that the AssetRequest thing is not detecting anything

#

this all seem to work when i have it in the main class, but keeping different asset load logic in the same class feels cringe

lucid iron
#

You need to call that in the Entry method of ModEntry

#

It's fine to split stuff up but if u don't call smth in mod entry to setup the hook then it never happens

fallow musk
#

oh so i need to call the secondayOnAssettLoad(secondClass) from a primaryOnAssetLoad(main class)

#

that would work ig

#

thanks

lucid iron
#

You need to call it in ModEntry.Entry specifically

fallow musk
#

oh thanks ill go through this

dawn hill
#

hi! this might be an odd question, but is there a mod that disables ||bigfoot||?

i know its silly but, stardew valley is supposed to be relaxing for me but ever since i discovered that there is a ||bigfoot easter egg|| i've been a bit paranoid and i avoid places where he can be seen.
I really hate playing like this, i just want to relax while playing instead of being so on guard all the time.

censored for spoilers hhh

tough crater
#

Random question: Do you think it's possible for SMAPI or content patcher (whichever one it is) to be coded to read Dynamic Tokens, Config Schema, and Custom Locations from an include?

drowsy pewter
fervent horizon
#

So if I am replacing an asset like "animals/horse", and then I change the config, do I invalidate "animals/horse" or the asset that I replaced

dawn hill
drowsy pewter
#

oh theres a sound?Thats a little more annoying since I'd have to find what sound file it is

#

So the files

#

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

drowsy pewter
#

the only hard part is finding the image (and sound)

dawn hill
#

yeah i believe a little alert sound plays and big footsteps when he shows up / runs away

drowsy pewter
#

an alert sound might be difficult since its probably used in multiple places in the game SDVpufferthinkblob so removing it would cause issues

#

if thats the case then this might be a job for C# modders

blissful panther
#

Do you know which spritesheet it's in?

drowsy pewter
#

found it in characters

blissful panther
#

If I knew that, I could try to figure out where it actually activates in the game and which sound it uses...

fervent horizon
#

Could you just patch out the event trigger

ocean sailBOT
#

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

dawn hill
# drowsy pewter an alert sound might be difficult since its probably used in multiple places in ...

https://www.youtube.com/watch?v=G-ueFAdEuD8
i found out by this video, the man in the video shows bits of code and talks about how it works, i dont know if this can help?

Stardew Valley has a new resident!

Info for when/where to spot it: (Unsure if it is the same on console)
https://docs.google.com/spreadsheets/d/1l59NkJzKzy2WQeJlBjImq8RPYZQmRfJd5_iQQg1GJUg/edit?usp=drivesdk

FAQ:
Q: What is its name?
A: Asldkfjsquaskutanfsldk

Q: ???
A: ¯_(ツ)_/¯

Watch Live on Twitch for Challenge and Speedruns:
https://www.tw...

▶ Play video
blissful panther
#

...that is certainly a filename.

dawn hill
#

lol yes people think its CA trying to write sasquatch

frigid hollow
#

oh god i got jumpscared by him yesterday

drowsy pewter
#

Yeah I think editing the actual event is out of my realm of knowledge but someone else might be able to

dawn hill
#

aw, okay! thank you for still trying to help though! should i resend my message in #modded-stardew ?

fervent horizon
#

Yeah, someone in there may already have a solution

dawn hill
#

okay, thank you so much!!

lucid iron
#

Friend

fervent horizon
#

Asking this again, since it got buried

So if I am replacing an asset like "animals/horse", and then I change the config, do I invalidate "animals/horse" or the asset that I replaced

lucid iron
#

I'm not sure what is meant by asset you replaced

fervent horizon
#

Ok, that is probably why it wasn't updating

#

I was invalidating my asset

#

Not the target

mighty lake
#

anyone know where the dialogue from cutscenes is located in the files? i tried looking in Content->Data->Events, but the only version of the community center cutscene i can find is afterwards when Morris comes.

#

i'm trying to edit some dialogue from lewis when he gives the speech

drowsy pewter
#

You can use your text editors search in files function to find the line in a whole folde

#

Notepad++ can do this and i assume VSC too

mighty lake
drowsy pewter
#

Yup haha

#

Anyways errant thought. I used to play this petsite game where you could decorate a "tree" png with different ornaments and show it to people. Would be kind of fun to have a tree furniture ingame that you can interact with, either with a simple dress up menu where you click through options, or an item slots thing and you put little ornament items on the tree SDVpufferthink

mighty lake
#

thatd be so cute!

drowsy pewter
#

This is the most "ideas guy" ive been in this channel but if anyone is interested on working on it with me I'd ofc do all the art

mighty lake
#

imagine if your spouse could add unique ornaments that fit their vibes SDVpufferaww

#

like a motorcycle ornament for seb or something

lucid iron
#

I think u can probably make it secretly a table with multiple slots (using furniture framework)

mighty lake
drowsy pewter
#

A shelf maybe? If its really big? I was hoping it could have mini ornaments not huge 16x16 objects

#

but having normal objects means people can use anything which is also nice

lucid iron
#

The top of the tree belongs to Largemouth Bass

mighty lake
#

it would be super cool to deck out a tree with any objects you want

#

if you end up making it, i'd def slap them all over my farm for winter hehe

lucid iron
#

Now if u want the menu/paper doll version that's gonna be some c# spaget blobcatgooglyblep

drowsy pewter
#

yip

lucid iron
#

I would make it a building probably

drowsy pewter
#

intriguing

lucid iron
#

And menu to select ornaments bolbthinking

#

But I think the FF approach is more fun and less spaget

mighty lake
#

i'm trying to come up with new gameplay features that avoid me having to do art 010_smiley

lucid iron
#

The reasoning for building is cus u can have paint masks

#

Beautiful pink aluminum tree DokkanStare

#

The ornaments shall be draw layers

drowsy pewter
#

just set that in config. all of these could be done in a CP mod with config options but thats freaking annoying to navigate into and out of gmcm to try decorating something

lucid iron
#

Yeah blobcatgooglyblep

frigid hollow
#

a config menu that has a live updating preview

tender bloom
#

GMCM Options can do that

#

But again, I think C# might be involved

#

You can see what I mean if you install customize wedding attire and GMCM options

woeful lintel
#

God damnit, this just gave me the idea to add a "Scale" field to custom slots...

#

why did I never think of this stuff before I work on the mod

lucid iron
#

yes the winter star tree demands gigantic largemouth bass

latent mauve
#

You never know what features you need until you scopecreep yourself into needing them. xD

woeful lintel
#

k, the slot scale idea is speedrunning breaking my brain: from where to scale the sprite? does it scales shadow?

lucid iron
#

there would need to be a separate no shadow option

#

if u wanna make winter star tree work

woeful lintel
#

welp, I'll see that later, it's 3 a.m., and not a FF coding day

#

there's already a no shadow option

#

for some reason

lucid iron
#

i actually just let ppl put shadow scale separately so 0 is no shadow

drowsy pewter
#

Uh oh am I going to get accidentally roped into creating my potshot idea

#

This is a bad habit

lucid iron
#

idk i assume u posted it to nerd snipe ppl into making it real

latent mauve
#

I mean, in the interim, a simpler, less interactable version would be to make a tree sprite that has conditional patches for spouse-related ornaments

#

(if they're spaced out enough and use an overlay patch, it could even have limited polyamory support)

tardy adder
#

What if I create a giant Christmas tree SDVpufferthinkblob

#

Also good day all, I just got back home and I am fighting sleep

rancid musk
#

goosetada ModManifestBuilder 2.4.1 has been released! With such features as, uh... updating dependencies so Visual Studio calms down

teal bridge
#

I, for one, am elated by this announcement.

rancid musk
#

Technically I think I also fixed a potential bug where you depended on a mod with a manifest that was literally just null

#

But that is so extraordinarily outside the set of possibilities that it shouldn't count as a bug

blissful panther
#

At that point, it's just cursed and it's probably something you did five years ago.

rancid musk
#

Also it seems like the changes I made in 2.4.0 to make it stop trying to load the wrong DLL worked?

#

I mean it seemed like they worked in 2.4.0 too but they still seem to be working so yay

teal bridge
#

I never ran into that issue, as far as I remember.

#

Unless you mean the thing where you need to restart Visual Studio after updating an analyzer (you can't fix that).

rancid musk
#

It isn't an analyzer, so that shouldn't be necessary.

teal bridge
#

Analyzer or source generator, I mean. But maybe it isn't either.

rancid musk
#

It's not.

#

But pre-2.4 it would do this thing where if you updated the MMB version msbuild would keep trying to use the old DLL even while using the new .targets file and it would at best be using outdated stuff and at worst break. Now it doesn't do that.

blissful panther
#

Truly the only downside to the manifest builder is something that's not its fault.

rancid musk
#

The only downside is I had to spend a bunch of time figuring out how msbuild works.

blissful panther
#

<SMAPIDependency Include="furyx639.ToolbarIcons" Version="2.7.1" Required="false"/>

rancid musk
#

Ah.

blissful panther
#

Only happens in Rider, so I always just put it down to a Rider bug.

teal bridge
rancid musk
#

That does seem like a rider bug, yeah.

#

I guess rider assumes that anything that isn't a Reference is an Item?

#

I don't know why I capitalized item.

blissful panther
#

Yeah, an item of SMAPIDependency.

rancid musk
#

A file would've been a better way to put it

blissful panther
#

At some point I'll get around to reporting it to them!

teal bridge
#

I used Rider for a little over a week and eventually got around to accepting that the file and assembly/dependency explorers are just weird.

#

They're like... almost sort of correct, but in that ineffably Java/IntelliJ-oriented quirky way.

cobalt lance
#

I'm having some trouble locating them, but wasn't there previously a pinned message somewhere that had links to programs that can convert STF and JA to CP?

rancid musk
#

!converters maybe

cobalt lance
#

Thank you

rancid musk
blissful panther
#

Do you have any way to tell how many people are using it?

rancid musk
#

Not really without scanning repos for package references.

#

The big huge repository of every stardew mod used to be good for that but I understand why it's not being updated anymore.

teal bridge
#

Yeah, it's actually more of an integration tester, but it is pretty cool.

rancid musk
#

casey's mods repo is also there, but that's kind of weird to me. Why does it only show casey's repo when I know more of us use it

blissful panther
#

Huh. DeepWoods has its API on NuGet. That's actually not a bad idea!

#

Also, very glad that's being updated/

lucid iron
#

is it cus nuget knows about casey's repo?

#

because casey published the content engine syntax

rancid musk
#

It's probably because casey's repo has over 100 stars

#

The rest of us just aren't popular SDVpufferpensive

lucid iron
#

but pathos uses it im psure

blissful panther
#

I have an entire six!

rancid musk
#

Pathos doesn't use ModManifestBuilder afaik

teal bridge
#

I actually only use it for StardewUI, none of my other mods do.

#

I mainly did that because I need to keep a whole bunch of versions in sync.

rancid musk
#

It's more important for mods that you expect other mods to hard reference, also.

#

Since file versions and all that

teal bridge
#

Yes, exactly.

lucid iron
#

i used it more after making a project template

#

prior to that i always forget

blissful panther
#

Yeah, I converted every single one of my mods to use it when I made a project template using it.

rancid musk
#

It's very nice if you have a monorepo since you can put most of your fields in the common targets

teal bridge
#

It's invaluable for doing stuff like tossing a version into a Common.Props and then having that propagate to every manifest, but for me it's very much a take-it-or-leave-it thing for ordinary mods.

lucid iron
#

the beta was also a factor

teal bridge
#

And of course content patcher mods (which are the majority) won't use the manifest builder.

lucid iron
#

auto version up Dokkan

teal bridge
#

I do like that feature, yes. Might be a compelling reason to switch a few mods over to it.

blissful panther
#

I just like how minimal it makes my csproj files.

lucid iron
#

either way i think it's worth a mention on getting started, after describing manifest.json

teal bridge
lucid iron
#

the point is to not have separate manifest.json right blobcatgooglyblep

blissful panther
lucid iron
#

it was tripping me up that if u have manifest.json already, ModManifestBuilder took that over what i put in csproj

rancid musk
#

Speaking of monorepos, does anyone else use symbols to conditionally compile their common projects?

teal bridge
#

Not often, but in a few places.

#

Oh wait, common projects? What do you mean, conditionally compile the entire thing?

#

You mean having a .shproj with "namespaces" that aren't really namespaces, using conditional compilation to omit specific features?

calm nebula
#

(I did, once upon a time.)

#

Also consider3d trimming

#

I wish trimming worked better in c$

rancid musk
#

I've started giving myself feature flags for different parts of my common project. In a mod's csproj I'll put something like xml <UseCommon>GMCM;UI;Inventory</UseCommon> and my common.targets uses that to define variables like COMMON_GMCM, COMMON_UI, COMMON_INVENTORY then in my files I just put the whole file in #if COMMON_UI etc.

#

I miss JavaScript's tree shaking lol

calm nebula
#

That's what I did lol

teal bridge
#

Ah, ok. Not doing that kind of monorepo.

calm nebula
#

But I would prefer if trimming fuckign worked lol

#

Lol

rancid musk
#

Same. Just let me define "hey these files don't contain public APIs tree shake them"

#

Tree shaking in JS is some kinda magic and it has me spoiled

teal bridge
#

I'm not familiar with this being part of plain old JS. A bunch of JS transpilers do it?

rancid musk
#

Yeah, most all the modern JS build tools have tree shaking.

#

It's pretty magical how well it works given how sloppy and dynamic a language JS is

teal bridge
#

The JS tools, among other things, can usually depend on the minified script being self-contained. Webpack works great on entire apps, but you wouldn't use it for a JS library because of the public API problem.

#

And since technically everything in .NET, even executables, can be a program or a library, I guess there are challenges related to reflection, dynamic, and so on.

rancid musk
#

Yeah, but on the other hand, if you are publishing a library the end dev's environment will end up tree shaking your library during their build

#

The moral of the story is that my feature flags ended up shaving a lot of size off my compiled mods and I am pleased.

teal bridge
#

How big were those mods? I'm not used to seeing many that couldn't fit on an old floppy disk.

rancid musk
#

Not like bigger than a floppy big, but I trimmed several hundred KB off the DLL in a couple cases for mods that don't use much of the common project.

teal bridge
#

I think LookupAnything is the biggest one I have installed.

rancid musk
#

And that should lead to a good decrease in load times.

teal bridge
#

Oh wait, Better Crafting is indeed a bit larger.

#

A few hundred KB really makes a difference in load times?

rancid musk
#

I expect my users to have potentially thousands of mods so it's more a "I'm doing my part" situation

#

Every little bit probably helps, and that's a lot of code the runtime no longer needs to worry about.

#

(Granted I'm somewhat infected by the JS side of things. It would be a way huger event in JS and that colors my perception.)

teal bridge
#

Most of those thousands tend to be Content Packs, from what I've observed (but I don't spend that much time in #modded-stardew)

lucid iron
#

content packs r way bigger on average

rancid musk
#

Well, yeah. They have content

#

All those textures and strings and

teal bridge
#

On the one hand, I respect the effort going toward performance optimization and try to do a lot of the same (in different dimensions, mind you). On the other hand, Amdahl's Law, man...

lucid iron
#

better crafting would be smaller if u separate the themes

gray linden
#

how do i save the day of month in a variable?

uncut viper
#

same way you save anything else, just grab it from Game1.dayOfMonth

rancid musk
#
Game1.dayOfMonth```
lucid iron
#

say why does stardewui ship this .xml file

#

what is it for

gray linden
#

i did that and i cant monitor.log it, sorry if this is stupid im new

teal bridge
#

That's the XML docs. You definitely want those if you're writing an extension.

#

That's how VS (and VSCode, Rider, etc.) gets its intellisense if you don't have the source open.

blissful panther
#

You'll be missing the second parameter of the log method. It defaults to trace, which won't show in the console unless you specify a higher log level.

lucid iron
#

oh interest, vscode had always just decompiled it

teal bridge
#

It can decompile to get the signature, sure, but not the descriptions.

#

If it were a lot bigger then I might release a version of the mod without it... but half a MB is not much to download, and it has no impact on the game itself.

calm nebula
#

You know the inane shit you write in the docstrings? That's that file lol

#

(Well. Inane shit I writel

teal bridge
#

Mine is not insane, it's helpful.

#

Most of it, anyway. I don't write crap like x++ // increment X in either regular comments or XMLdocs.

calm nebula
#

I assume you're better at this than I am, I feel like half the time I'm just explaining what the function name says lol

teal bridge
#

Experience and introspection, I guess? If you can predict what you are likely to forget in 3 days, that's a good proxy for what other people are not going to be able to work out for themselves.

gray linden
teal bridge
#

Of course it's never perfect. I still stumble on old code and have to ask "why TF did I write that".

#

If you need docs to explain function names, just imitate CA and write 78-character long names.

#

DoTheFirstThingExceptWhenTheSecondThingHappensButAlsoMaybeTheThirdThing

blissful panther
#

Or do_the_first_thing_except_when_the_second_thing_happens_but_also_maybe_the_third_thing if you want to imitate Podunkian! SDVkrobusgiggle

teal bridge
#

If you write snake_case in C#, you are banned from all my repos.

blissful panther
#

I don't even do it in Python.

#

It's just slower to type. I dislike it.

calm nebula
#

or, recent work code

def pad_to(li: list[int|bool], length: int) -> list[int|bool]:
  '''Pads the list out to the length specified'''
   # code here
#

which was what I was feeling about inane comments

blissful panther
#

Maybe if I bound _ to shift + space I could get behind it...

calm nebula
#

but yeah, more inane comments

teal bridge
# calm nebula which was what I was feeling about inane comments

Most docstrings are going to start out with a simple description like that, but they're really there to document the algorithms and edge cases. Does it modify the list in place, or copy it? What happens when the list is already longer than the padding? Etc.

calm nebula
uncut viper
calm nebula
#

what

teal bridge
# calm nebula

Yes, I see what you mean. When I look at that code, I'm wondering less about whether ApplyPatch applies the patches, and more about WTF that mysterious Buffer thing is.

uncut viper
#

(or at least it was before 1.6.9)

calm nebula
#

that's really it, tbh

teal bridge
#

Why even write doc comments on internal members unless they're really esoteric?

rancid musk
#

I should define an interface for my harmony patch classes and do discovery rather than manually calling them.

teal bridge
#

I thought you were trying to improve startup time...

rancid musk
#

lol, true

teal bridge
#

Though I suppose you could use a source generator to do discovery at compile time.

rancid musk
#

Guess it's time to write --- yeah, lol

#

Same for registering events, trigger commands, etc.

teal bridge
#

I did do something like that for console commands. And then proceeded to add a grand total of 2 commands.

rancid musk
#

I've got a few more than 2.

calm nebula
#

awww poor crops

old edge
#

Hello can someone give me an example of how to use the $y question dialogue. I need a complicated example please.

#

Is this right...

hallow prism
#

why complicated?

old edge
#

At least 3 responses/choices

hallow prism
#
                "AsterDialogueThu8Depressed": "$y 'Does it happens to you, when you hold it together after a pretty bad day and then break at the smallest thing?_Way too much._Well, this time, I needed a muffin, here's one for you too. You know you can call me if you need, right?[651]_A bit, sometimes._You can call me next time it happens, if it helps._No, not really_Ah, sounds like you're in a good place'",
old edge
#

Hmm so this one has 3 possible outcomes?

hallow prism
#

yes

old edge
#

And gives an item

hallow prism
#

way too much, a bit sometimes, no not really

old edge
#

Ok thank you and I needed to know also if I add a #$b# before the $y would it work?

#

A dialogue before the question

hallow prism
#

no idea, i haven't tested this format

old edge
#

Do I need to add an additional # to separate the commands in dialogue?

rose shuttle
#

I have a dumb question. I just tried using StardewXnbHack and I got a screen full of red text. I am using 1.1.2 version and as far as I know, everything is updated...

gray linden
#

im reminding the player of birthdays and using switch cases for the days, i have to check the season first. would it be best practice to use a switch for the seasons too or just if those and switch the days

rancid temple
rose shuttle
#

yes

#

I laid my eyes on the Stardew Valley.dll before I dropped it in

rancid temple
#

What version of SDV and SMAPI are you on?

rancid musk
#

You need SMAPI 4.1.4 or later.

rose shuttle
#

I just started the game to make sure I wasn't needing to update

rancid temple
#

Can you show a screenshot of the exe in the folder?

rose shuttle
#

(ironiclly, this is the first time in months I started the game and not see something that needs updating

rancid musk
#

By all accounts that looks correct. 🤔

#

Well time to update my SMAPI and check then

#

Works fine here

rancid temple
#

Does it require being logged into Steam? Not sure how all this works when you own the game on GoG

rancid musk
#

It shouldn't.

rose shuttle
#

I'm logged in

rancid temple
#

Hm, maybe re-install SMAPI, just unpacked again and it worked for me too

rancid musk
#

Yeah, reinstalling SMAPI would be my next step probably

#

Maybe even delete smapi-internal before doing that

rose shuttle
#

yeah I just removed and re-tried the thing, and it didn't change, so yeah, Smapi is next

#

don't think I've ever actually uninstalled SMAPI before...

old edge
#

Been working on this dialogue for almost 2 years if someone could tell me if this will work thanks! json "AnnettaDialogueSunMorning": "The waves have been especially restless lately...#$b# $y 'Do you ever feel like the ocean is calling to you, like it's trying to share its secrets?_All the time._I thought I was the only one... maybe it's something we should explore together someday._Sometimes, but I don't understand why._Maybe it's the mystery of it all that draws you in._Not really._Ah, I see. Well, the sea has its own ways of speaking, I guess.'",

#

This is without the # between #$b# and $y commands

rose shuttle
#

Uninstalling and reinstalling SMAPI didn't fix

rancid temple
#

Wild idea, but it's worked for me before with dumb things not working, have you tried restarting your computer?

rose shuttle
#

groans and looks at all my open tabs
no.... I havne't...

#

brb

hollow hinge
#

hiya i hope im not interrupting anything! I just have a question on a content.json file i wrote

uncut viper
#

but your Data/Characters edit also doesnt seem properly closed

rancid temple
#

Also a lot of {

#

Like almost all of them

hollow hinge
#

i see

#

ill fix those right away!

#

thank you!

uncut viper
#

also you want to use Fields and not Entries for editing Sebastian i imagine, or else you're going to reset every other field to its default

#

(oh and the quote thing is also on every other one of your patches below line 24 too)

hollow hinge
#

how's this looking?

rancid temple
#

Missing 2 closing } line 12

rose shuttle
#

Rebooted PC, still erroring

uncut viper
#

for every { you need a matching } in the right place to "close off" blocks of json, and yours are currently not in the right places

rancid temple
#

Sorry, 3

rancid temple
rose shuttle
#

agrees

uncut viper
#

right now from CP's perspective it looks like you're trying to add an Action: Load inside your Data/Characters edit

rose shuttle
#

Game doesn't have to be actually running for this, right?

rancid temple
#

Right

hollow hinge
#

or is that something i shouldnt change

uncut viper
#

thats not the problem. the problem is that you dont have the right }s in the right places

hollow hinge
#

i see

rose shuttle
#

Should I downgrade my SMAPI?

rancid temple
#

No, it should work with the latest

lucid iron
#

are you sure u didnt run this from a different dir

rose shuttle
#

well no, the website says or later, so I should, in theory, be fine

#

it's in the right folder...

rancid temple
#

What does your smapi-internal file look like?

rose shuttle
#

why do all those files say november when I literally just reinstalled it a few minutes ago?

rancid temple
#

Seems like your internals are out of date?

lucid iron
#

cus they r last changed back then

rancid temple
#

Mine all say 11/28

#

Which is when the latest version of SMAPI released

rose shuttle
#

ok... so... uninstall didn't work right

rancid musk
#

Do you have some weird thing going on with file permissions and overlay filesystems or something that I don't even understand? Because SMAPI shouldn't load with the wrong versions

rose shuttle
#

I thought about just nuking the whole gamefile, guess that's my next step

rancid musk
#

🤔

rancid temple
#

Did you try just deleting smapi-internal like Khloe suggested?

#

I don't think I've ever intentionally uninstalled SMAPI so I'm not sure what it leaves behind lol

rose shuttle
#

no, I uninstalled smapi, I missed the deleting of the internal folder, I do that

#

same

rancid musk
#

Computer's haunted

rose shuttle
#

ok, deleted internal, uninstalled, reinstalled, and everything in internal still says 11-12...

#

sighs

rancid temple
#

Can confirm, every computer I've ever owned has been haunted

#

Did you make sure to download latest SMAPI fresh?

rose shuttle
#

that's my next step, along with a fresh game install

rancid temple
#

All this does make me glad the save files are separated

rose shuttle
#

indeed

#

freshly installing SDV, got a fresh copy of SMAPI... crosses fingers

#

there's some progress

#

And hope dies...

#

rebooted, reinstalled all the things... I don't know what else to try

lucid iron
#

what net version do u have

rose shuttle
#

you mean browser? Chrome

lucid iron
#

no

#

.NET

rose shuttle
#

what is that? how do I find it?

lucid iron
#

i have no clue for windows Dokkan

#

but i guess u should double check smapi internals again

#

see if it's got 11-28 last changed

rose shuttle
#

I just posted internals, but lemme look again

#

am I blind? I don't see anything .NET

#

This is in the game folder, is this what you meant?

frigid hollow
#

how do i do "SetTilesheet" for the outdoorsTileSheet?

lucid iron
#

SetTilesheet takes the tilesheet name

frigid hollow
#

oh. the name of the tilesheet as shown in tiled i guess?

#

oh yep

#

thanks !!

lucid iron
#
{
  "Position": {
    "X": 18,
    "Y": 33
  },
  "Layer": "Front",
  "SetTilesheet": "untitled tile sheet",
  "SetIndex": 1109
},
#

like this Bolb

lucid iron
limpid breach
#

Anyone know what the cat is doing here? I’m trying to figure out what to replace it with, but I don’t think I’ve seen the original in game

frigid hollow
#

it's getting ready to pounce

#

the butt wiggle

limpid breach
#

Ohhh Ty 😭

rose shuttle
lucid iron
#

you have

#

its just secret PecoSmile

#

sdv runs on monogame which runs on .NET

hollow hinge
reef kiln
#

does anyone know how to set up custom NPC to work with NPC Map locations?

frigid hollow
#

i think they do automatically? are you having issues

reef kiln
#

yes

#

some NPC don't show up when on custom maps

lucid iron
#

you need to add the custom location to the world map

latent mauve
#

^

lucid iron
#

i don't know the details though, and compat is concern

fresh lintel
#

Hi, I launched new release to my mod.

frigid hollow
#

adding the location to the Data/WorldMap will tell NPCMapLocations about it

lucid iron
latent mauve
#

I was gonna post my example JSON again, but it looks like it finally expired LOL

fresh lintel
#

If anybody could help me with bug said by spaceytoast I'll apreciate a lot

frigid hollow
brittle ledge
tender bloom
#

Yeah, that's not a real bug report

#

Lots of mod authors get this kind of thing reported in error, in part because SVE users tend to be extremely inexperienced at debugging (and blame all kinds of random shit on random mods)

fresh lintel
tender bloom
#

Tell them no log and no reproduction steps means no bug

fresh lintel
tender bloom
#

You really don't need to spend this much effort, unless you want to

#

Odds are good they have done any number of the following:

  • installed SVE wrong in the first place
  • have some 3rd mod that's actually breaking the warp
  • installed XNB mods that screwed up their save in some new and fun way
    My bet would be on some 3rd mod, but who knows
fresh lintel
#

Okey... even that I want to be more active on Discord... so that my excuse to >.<... you know be more sociable

tender bloom
#

Welcome to discord then SDVpuffersquee

#

Sometimes we complain about bad bug reports together

hollow hinge
#

amazing news! i got the content.json to work!

#

thank you guys so much!!

lucid iron
#

skeleton man DokkanStare

tender bloom
fresh lintel
tender bloom
#

More active on discord, and then you have to request it

tender bloom
#

You need to chat more to get to Farmer level

fresh lintel
#

okey okey thanks

#

I am a lazy developer obsessed with simplicity. Thats why preferred to create map mod with C# insted of ContentPatcher

#

I have read all mod doc on wiki... its super useful and boring

tender bloom
#

lmao

#

I prefer to use CP when I can

#

I find it a fun intellectual exercise to see how much I can push the limits of frameworks

fresh lintel
#

It could be funny... but you know... why use a hammer if I can use a rock?

#

The stoic way

calm nebula
#

Eh. It depends tbh

#

I find that people are more likely to install content pack mods tbh

fresh lintel
#

Well... I want to become good modder... not a famous one 😆

lucid iron
#

i dont see benefit in using C# just to do smoe content loads yggy

fresh lintel
#

Thank you for the info... I could help me to improve my downloads

lucid iron
#

a good modder would use the right tools in the drawer Dokkan

fresh lintel
fresh lintel
lucid iron
#

yea sure, im just against rebuilding wheels monS

rose shuttle
#

I just did the .NET thing and still getting errors

lucid iron
#

when i needed non standard behavior in my content patcher map mods i just made a separate framework for it

#

so that other ppl can theoretically use it too

brittle ledge
#

I mean the downside of doing it yourself is if a base game update breaks it, you have to fix it yourself instead of letting someone else handle it SDVpuffersquee

rose shuttle
#

I don't get it, and my patience is about out...

fresh lintel
rose shuttle
#

CP?

lucid iron
fresh lintel
lucid iron
#

did you want to find out some specific thing? i can look for you

lucid iron
rose shuttle
#

I just wanted to unpack Contents.... I'm modding and want a fresh copy to play in

#

I even tried the previous version of stardewxnbhack and got the same error

lucid iron
#

are you sure you dont have 2 sdv installs somehow

rose shuttle
#

I have an unpacked Contents from 6/7/24... but I feel like something changed in it since then

#

yeah just once copy

#

one*

latent mauve
#

Do you perhap use an Antivirus that might be holding onto the files to scan them at a really inopportune moment?

brave fable
#

sdvxnbhack would just be using the install located in the folder it's run from, though. it doesn't run otherwise

rose shuttle
#

right

brave fable
#

also hi brenya, nice to see you again ☀️

rose shuttle
#

Hi! waves

rose shuttle
fresh lintel
lucid iron
#

u did the ol turn computer off and on again right

#

between installs

rose shuttle
#

honestly, I'm so frustrated right now, I don't remember the order of doing things

#

I don't know

lucid iron
#

doesnt hurt Dokkan

rose shuttle
#

I just restarted a few minutes ago, so I guess

#

but I guess I can do it again

brave fable
#

honestly though i don't believe there were many content changes from after 1.6.0

lucid iron
#

1.6.9 added stuff

#

and pruned a lot of old

brave fable
#

more than the crow shop?

rose shuttle
#

I'm > < close to smashing something

#

right, let me close everything... again...

#

brb

lucid iron
rancid musk
#

1.6.9, 1.6.10, 1.6.12, 1.6.13, and 1.6.14 all touched Content in some way

brave fable
#

sure, but not much significant to your average mod author i think. you can get by perfectly fine on 1.6.0 content

#

which was like, march 2024

#

a 6/7/2024 unpack in whichever date order is going to be fine imo

fresh lintel
latent mauve
#

I think a lot of those changes were just removing unused assets, or things like adding the working portraits for Sam and Shane or the ||crow shop||?

rose shuttle
#

It says it needs it

rancid musk
#

1.6.9 has some big things. At least one whole new asset (Data/LostItemsShop), new dialogue keys, translations moved around, some new fields on various models

latent mauve
#

ah, I forgot about the dialogue keys and the new fields

rose shuttle
#

yeah, dialogue is definitely something I planned on playing with

calm nebula
#

It doesn't matrer

brave fable
#

i wouldn't lose hair over those, though

calm nebula
#

Thr vase game doesn't use those keys

lucid iron
#

if u just want to find out the names u can decompile gamedata.dll instead

latent mauve
#

True, it mostly just added them so modders could use them, yeah? And they're listed on the wiki (the new keys).

fresh lintel
fresh lintel
# rose shuttle

Did you try executing StardewXnbHack with admin permissions?

fresh lintel
#

It works?

rose shuttle
#

it's running

#

it's slow

brave fable
#

you're forgiven for being so wrong 😌

rose shuttle
#

but it;s doing the things

rancid musk
#

So something is messed up with your file permissions

#

Even though you uninstalled and reinstalled everything

fresh lintel
rancid temple
#

Unpacking has always felt a little slow to me, but I never used any other unpacker to compare it to

rose shuttle
#

Tah daaaaaahhhh

latent mauve
#

(if you ran the SMAPI installer as admin, it does tend to create these exact kind of problems, also)

#

It's why I try so hard to not suggest running in admin as an option when people can't run the installer due to permissions errors.

tender bloom
#

I know how to fix this kind of thing on mac, but idk on windows

#

on mac (and linux) you can pop into the command line and fiddle with perms

rose shuttle
#

I'm so freaking happy my eyes are leaking, this is ridiculous lol

rancid temple
#

I think the answer is install it somewhere else lol

#

Windows is dumb and bad

brave fable
#

on the other hand, run-as-administrator is a great hammer for making and solving windows permission issues

latent mauve
#

Windows has the System File Checker that uses a command line to fix itself, math person that I apparently can't distinguish (❤️)

rancid temple
#

That's Elizabeth

brave fable
#

pretty sure that's max

rancid musk
#

Run as Administrator, the cause of and solution to all some of Windows' problems

latent mauve
#

I fixed it.

tropic lichen
#

hey guys are there any sprite templates for creating Fashionsense outfits?

hard fern
#

Huh. I've never had it have proben on windows before

tender bloom
#

it's meee

#

(roku is right, Elizabeth)

latent mauve
#

Sorry, there's three math people running around and my brain is confused

tender bloom
#

Classical = plain ol newtonian stuff, very macro scale

lucid iron
#

you can always become a 4th mathperson

tender bloom
#

Atra is quantum because their funny little electrical chips get into quantum stuff

rancid temple
#

So far they have all provided the handicap of not changing profile pictures lol

latent mauve
#

I can't math well consistently enough to be a math person.

brave fable
#

nothing stopping you from being a Junior High Maths Person

lucid iron
#

Arithmetic MathPerson

calm nebula
#

Meow

lucid iron
#

Calculus I MathPerson

calm nebula
#

We need more mathpeople, the natural number e

fresh lintel
#

Against mathpeople MathPerson... could be too?

brave fable
#

i'm more of a guess-and-check maths person myself

#

if only we had hot reload in high school

lucid iron
#

Empirical MathPerson

rose shuttle
#

Poking my head back in to say thank you to everyone who worked to help me get this issue sorted (and saving what's left of my sanity). I appreciate you all ❤️

#

Now I'm off to play lol

spice inlet
#

(left RenderedActiveMenu, right Rendered)
Drawing that billboard on the top left

rancid temple
#

Is this also why text boxes render under GMCM's menu?

spice inlet
#

gmcm seems fine for me so idk

rancid temple
#

I'll have to see if I can get a picture of it later, only notice it sometimes

lucid iron
#

i thought casey fixed the tooltips thing

brave fable
#

i notice it on occasion when in a nested menu, such as the tooltips from the modlist page showing up from the mod page

#

which isn't a render order issue, it's just that gmcm doesn't clear the modlist page hovertext value when entering a mod page

rancid temple
#

I'm not finding it now, so maybe I'm just thinking from the last version

rancid musk
#

Rendered should absolutely be drawing after RenderedActiveMenu

#

Rendered is emitted after the game's draw() method returns

#

(Unrelated, now I want to add support for UB's custom currencies to Better Crafting since you can technically create a recipe using currency as an ingredient.)

brave fable
#

to think that better crafting will let you cook money into a building. what a world

rancid musk
#

I would complain but that is entirely accurate

lucid iron
#

i think i should be allowed to make ferrero rocher out of golden walnuts

rancid musk
#

Technically that isn't possible with BC right now. I deliberately didn't make golden walnuts a supported currency since those are limited and the base game needs most of them.

#

I could add them I guess. It's possible for a mod to add an additional source of walnuts.

brave fable
#

users need to be able to learn critical thinking. let it be a teachable moment when they bake their hard-earned money into a snack

hallow prism
tardy adder
#

Time to learn how to do crops

distant radish
brave fable
#

what practical joker went around hiding walnuts inside coconuts

#

can you add a new machine rule to crack open a golden pumpkin to get a golden coconut?

rancid musk
#

What if you just keep cracking open spherical golden things to find slightly smaller spherical golden things

brave fable
#

surely you crack open the golden walnut and get a golden egg. surely

tall raft
#

Does it require anything special to get an NPC to reject a particular gift? I have an NPC who is highly allergic to fish and can't have it, thus he will not accept them.

final arch
#

they need a reject dialogue for it

brave fable
#

you're likely fine to make the item_fish context tag a hated gift. it's very SDV to have a character accept a gift but loathe you for it

#

see: penny and beer

calm nebula
#

You can also use RejectItem

tall raft
#

Okay awesome, thanks y'all. I appreciate it! I'll see if I can fiddle around and find something that works.

fresh lintel
coral solstice
#

Ok I’ve made an AT pack, well, I’m in the middle of making an AT pack, and I’m doing some testing, SMAPI isn’t giving me any errors about my manifest or texture jsons, but my texture simply isnt showing up for AT

Could someone help plz

rancid temple
#

!json you can use the validator site to share what you've got

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.

gaunt orbit
#

@floral canyon RE: better beehouses

coral solstice
rancid temple
#

Just send the link here and we can take a look at it

coral solstice
#

Manifest is fine, it’s the texture one, I’ll shoot it over one sec

rancid temple
#

What is Mushroom Door?

coral solstice
#

OH WAIT

#

My bad, it is nearly 1am and I have had like 4 redbulls I have left my brain somewhere that is else

hard fern
#

😭 four??

gaunt orbit
#

Better Beehouses ambient sounds

rancid temple
#

4 scary

coral solstice
#

Don’t judge me shrimp

#

I really need to learn how to read, and I got an A+ in English Lit in school 🙃

rancid temple
#

Reading is very important SDVkrobusgiggle

brave fable
#

4 red bulls seems close to a lethal dose

#

1 sounds awful enough

coral solstice
#

Meh, I used to drink like 9/10 monsters a day when I was like 17

#

4 redbulls is tame but I’m old now so

brave fable
#

sounds revolting hahah

coral solstice
#

I was very angsty as a teen 😂

hard fern
rancid temple
#

A red bull is only like 111 mg of caffeine, you need 10 grams to be considered a lethal dose

calm nebula
#

How do you know this

rancid temple
#

interbutts

calm nebula
#

I ask as I put instant coffee in my coffee

rancid temple
#

As someone with a previous heart condition, my limit is probably a lot lower lol

#

You only have to drink like 9 gallons of red bull for it to be lethal

calm nebula
#

That would eb super expensive too ahahaha

#

Aren't they like two bucks each?

rancid temple
#

Maybe on sale dogekek

calm nebula
#

Part of the treason I go for instant coffee in my coffee (so a 2x coffee) is because it's cheaper lol

#

I can also get coffee from the work coffee machine

rancid temple
#

Work beni

hard fern
#

the treason of instant coffee?

rancid temple
#

It's only treason if you're in a position of power

#

Otherwise it's rebellion

drowsy pewter
#

Just a sanity check here, does this set of trigger actions look right? I'm just copying what I did to apply and remove the cornucopia mail flags at the beginning and end of each day 🤔 I think it's right, but I want to get someones opinion since testing the asdlkjfg1 event relies on tiny random luck

https://smapi.io/json/none/9b1038e55d1349f29ffcc1fe81be2c04

brittle pasture
brittle pasture
drowsy pewter
#

Uh crap. I was supposed to add that to the reset, wasn't I

#

And that's why I'm here! Haha

#

Thank you!

brittle pasture
#

beyond that, what does the mod do exactly? it's so I can see if it's the desired effect haha

royal stump
#

I might be missing the point, but it seems like "MarkActionApplied": false would be an easier way to do it

drowsy pewter
#

It's setting the asdlkjfg1 flag, which is a flag the game uses to make sure the ||bigfoot|| easter egg only runs once (one of them)

#

So the player won't have the easter egg show up, even if they havent actually seen it

drowsy pewter
uncut viper
#

MarkActionApplied: false means it can repeat forever without you needing to set it false in the resetaction trigger

#

so if a trigger is supposed to be infinitely repeatable then you wouldnt need the resetaction trigger at all

royal stump
#

something like this as a single action, I guess?

                "6480.bigfootbegone": {
                    "Id": "6480.bigfootbegone",
                    "Trigger": "DayStarted DayEnding",
                    "HostOnly": false,
                    "Actions": [
                        "RemoveMail All asdlkjfg1 all",
                        "AddMail All asdlkjfg1 received"
                    ],
                    "MarkActionApplied": false
                },```
#

it'd trigger every morning and night while not actually marking itself

drowsy pewter
#

I do want to make sure the flag gets removed at DayEnd so they can uninstall if needed

uncut viper
#

i think the intent with not adding it back immediately is so you can uninstall the mod and not have it remain marked seen

royal stump
#

ah, right, I didn't notice that happening SDVpufferdizzy

drowsy pewter
#

Yeah, that's why its not just the one trigger

uncut viper
#

just having the first two actions with removemailflag going on dayending and setmailflag going on daystarted, both with MarkActionApplied false, should be sufficient though unless im missing something

#

er, first two triggers i mean

drowsy pewter
#

If what I have works, I think I'll stick with it rather than risk messing something up on a second execution 😛

#

I appreciate the input guys!

#

Next time I use trigger actions, I'll keep that in mind

#

Loaded the game and ran in and out of Backwoods a few times without any sightings, clearly mod works flawlessly

rancid temple
#

Seems right thumblob

acoustic summit
#

Can modEntries hold NetFields for common data across players in multiplayer? I have my ModEntry inheriting INetObject but the data in a NetCollection is still differing. Anyone worked with that before?

tiny zealot
#

i think if you want to add netfields and have them work, they need to eventually descend from the NetRoot at the top of the world hierarchy

lucid iron
#

i dont think ModEntry should inherit net object that seems cursed

acoustic summit
#

Haha very cursed, just trying to find a way of making to feasible

lucid iron
#

just have a field

#

but also is smapi message events not good enough for u Bolb

tiny zealot
#

whenever i've thought "i should add netfields somewhere", i usually find another solution (e.g. SMAPI multiplayer messages)

acoustic summit
#

Def not for this, unfortunately

uncut viper
#

why not?

#

what are you attempting to do?

acoustic summit
#

Handling collections of instances for custom objects, kinda like characters

tiny zealot
#

(in Portable Hole, i use smapi messages to keep assorted things in sync, including a data structure, although the structure is not terribly strict about, say, order)

lucid iron
#

u can just construct the object twice monS

uncut viper
#

yeah i dont see why smapi messages wouldnt work for that

lucid iron
#

but if u r set on having net fields then just make it a field on mod entry

acoustic summit
#

The object is being interacted with and moving constantly, being animated as well.

lucid iron
#

is this bosses again

acoustic summit
#

Nooo

lucid iron
#

animation is also good reason to just make object twice

acoustic summit
#

Its something Ive been at for months, kinda started mid way through the boss work.

uncut viper
#

i mean sending that kind of data is essentially what a netfield is already doing, no?

lucid iron
#

it'll look janky if u actually netfield the frame

acoustic summit
#

I mean everything is working atm, just in bugfixing stage / multiplayer compat

lucid iron
#

at any rate if u r set on having net objects then just make it a field

#

rather than making all of modentry the net object

acoustic summit
#

I think I needed to set the owner of the field to something

uncut viper
#

definitely do not have modentry inherit inetobject.

acoustic summit
#

Which is why I needed modEntry as a netobject

lucid iron
#

yea im saying

#

make a separate class that inherits inetobject

#

have a field on mod entry of that class

lucid iron
acoustic summit
#

I get you, yeah

lucid iron
#

in which i mail over the save data

uncut viper
#

making something new that inherits from net anything seems like itd be a lot more troublesome than a smapi message

lucid iron
#

well, u can just use Item if u want

#

the Weeds that know all

acoustic summit
#

I mean it might work using smapi messages, but itd be a lot of messages pretty constantly. Whats the performance of smapi messages like?

lucid iron
#

i mean u r sending stuff over the network

uncut viper
#

i mean the data has to be transferred either way

lucid iron
#

it really doesnt matter which one u r doing they r equally worst case

rancid temple
#

Should be the same or better than netfields

#

You get to choose the rate you send messages, you don't with netfields

lucid iron
#

smapi multiplayer message is pretty low level and doesnt do any implicit syncing shenanigans so its prob better

uncut viper
#

if anything better bc a smapi message doesnt talk back i imagine

#

unless you make it talk back

lucid iron
#

our advice is all pretty theoretical cus you didnt explain what your actual use case is

tiny zealot
#

netfields only send i think every 3rd frame, so you're already on your back foot if you want to use it for animations

rancid temple
#

I couldn't get color syncing with just netfields

uncut viper
#

also any lag will have the animation looking janky as chu says

acoustic summit
#

The animations themselves are handled seperately, just iterating through the collection

#

They look pretty good, or atleast Im happy with them atm

acoustic summit
# lucid iron our advice is all pretty theoretical cus you didnt explain what your actual use ...

Creatures spawn all around valley, these creatures can be caught, they can run away, then can chase. Most move, fly, swim etc and have associated animations during movement. The creatures currently existent need to be synced between players. The creatures only spawn in active location, disappear when no farmers are in the location anymore. They also disappear after set time. Right now all of x works except the same creatures syncing between players, right now each player has its own creature list.

lucid iron
#

These r just Critters right

acoustic summit
#

Much like them yep

#

Critters have a field per location, but I don't know how I could add a field for these in locations

lucid iron
#

I don't know how well it'd work given the multiplayer fake location business

brittle pasture
#

also are critters synced, IIRC they arent

brittle pasture
lucid iron
#

Well I assume nature made their own critter like class

acoustic summit
#

Yep

#

They are netobjects and work much like characters

lucid iron
#

But yeah I do think it makes a lot of sense to use smapi message here

acoustic summit
#

With their position, and other important changing data in fields

lucid iron
#

You don't bother sending anything until a player enters a map with another player in it

#

It's perhaps bit more work to set up but you have far more control over it

#

Compared to netfields which work by mystery reflection business

acoustic summit
#

I can see how to get it working, though yeah it would be a bit to set up now

lucid iron
#

Are you going make your mod a framework?

acoustic summit
#

Ill keep it in mind incase the net path is too annoying to work out

lucid iron
#

Ornithologist guild let people add birbs and it's great Dokkan

#

There was also custom critter that broke in 1.6.9 rip

acoustic summit
#

rn by default it adds 86 animals, but Im working to have it be alterable

lucid iron
acoustic summit
#

Ive never thought about how Id make it a framework

lucid iron
#

I have an agenda and it's to get more ppl to expose their bespoke stuff BOOM

#

The gist is that you source your data from a custom asset

#

And let other people edit into the custom asset

#

There's the older content pack for approach but it's worse because u can't use content patcher tokens with that

fervent horizon
#

I plan on making my Different Horse Skins mod a framework if I can figure it out.

acoustic summit
#

Thats hella cute

fervent horizon
#

Works with NPC Map Location too

rancid musk
#

Making something a framework is basically feeding your asset through an asset requested event and responding to invalidation of that asset in a sane way.

#

And, you know, having lots of things to do with your data asset helps. But feeding a data asset through the content pipeline with the asset requested event is the big thing.

willow shale
#

@tardy adder vmv names for the dewb addon for u:
"If PLAYER_HAS_MET Current AdelaideRosierVMV ## AddFriendshipPoints AdelaideRosierVMV 75",
"If PLAYER_HAS_MET Current AsterPellegrinVMV ## AddFriendshipPoints AsterPellegrinVMV 75",
"If PLAYER_HAS_MET Current CelestineDuboisVMV ## AddFriendshipPoints CelestineDuboisVMV 75",
"If PLAYER_HAS_MET Current HeliaDiamantiVMV ## AddFriendshipPoints HeliaDiamantiVMV 75",
"If PLAYER_HAS_MET Current MaddyPellegrinVMV ## AddFriendshipPoints MaddyPellegrinVMV 75",
"If PLAYER_HAS_MET Current MariamFortinVMV ## AddFriendshipPoints MariamFortinVMV 75",
"If PLAYER_HAS_MET Current MoiraDuboisVMV ## AddFriendshipPoints MoiraDuboisVMV 75",
"If PLAYER_HAS_MET Current NaveenFaycombeSereneVMV ## AddFriendshipPoints NaveenFaycombeSereneVMV 75",
"If PLAYER_HAS_MET Current OdalisDuboisVelezVMV ## AddFriendshipPoints OdalisDuboisVelezVMV 75",

tardy adder
#

woah thanks Megan

willow shale
#

np, you should just be able to copy paste that into the json for the addon

toxic sage
#

this is a super beginner question, but i'm trying to make a manifest file and idk what to put as my mod's unique ID?

hard fern
toxic sage
#

thank you!!

tender minnow
#

hello, does anyone know if there's a way to delete an event in the vanilla game?

brittle pasture
#

can you be more specific? detect an event is running in C#, or checking whether an event has happened in general

rancid musk
#

Delete, not detect

tender minnow
#

I want to replace one of the events with my own

#

i tried to set it as null but it still ended up playing

brittle pasture
rancid temple
#

You could just edit the original event with yours in place

tender minnow
#

if I change the conditions in the original event will it still work?

brittle pasture
#

maybe your edit isnt applying

lucid iron
#

you can block it with an always false mailflag prob

rancid temple
#

I'm wary of straight up blocking/deleting an event, considering how many are requirements of each other

tender bloom
tiny zealot
tender minnow
#

hm. maybe I'll have to cope with the conditions not being exactly like I want them 😭

#

it's a story mod so I'm trying to tailor it to the story

tiny zealot
#

it's doable, and not even hard, you just have to be aware of it

#

which event is it?

tender minnow
#

it's Hailey's dark room event

#

I tried to nullify it but maybe I did it wrong before?

tiny zealot
#

ok that event is (i believe) "15/f Haley 2500/p Haley" in HaleyHouse

tender bloom
#

keep in mind if you have other mods installed, this might affect it also

tiny zealot
#

so if you're using CP, in your Entries you would put

"15/f Haley 2500/p Haley": null,
"15/<your conditions here instead>": "<your event script>",```
tender minnow
#

okay!!! I'll try that out, see if it works. thank you!!!

#

should I keep it in the same set of brackets?

tiny zealot
#

no, don't include the brackets. those are programmer shorthand for "fill in your value here" (and/or "this value is required")

#

or sometimes "SGML-descended markup language tag" /lh

tender minnow
#

okay, this is what it looks like. it didnt nullify it unfortunately. (i took out the huge block of event script)

tiny zealot
#

in the null line, you need f Haley 2500 instead of 2250

tender minnow
#

omg. i didnt even notice it was changed

#

omg if that has been my problem this entire time im gonna be mad

brave fable
#

(is Season Spring a valid precondition?)

tiny zealot
#

(yes!)

tender minnow
#

yes!

brave fable
#

(wtf)

tiny zealot
#

all preconditions got readable names in 1.6

brave fable
#

(my z fall z winter z summer)

tiny zealot
#

i recommend them over the cryptic letter ones. you can much more easily reason about the actual requirements

brave fable
#

oh wow that's so much better

tender minnow
brave fable
#

very angry at SawEvent instead of SeenEvent tho

tender minnow
#

my problem was a typo im crying

brave fable
#

look on the bright side, you taught me about readable event preconditions 🌥️

tender minnow
#

haha well im glad i could help there!

mighty quest
#

Someone shared their SMAPI log with me:

hard fern
#

?

#

?

tiny zealot
#

at least they tried? 😭

quaint moss
#

Scenario: I add a patch with a Trigger Action containing a custom modded GSQ, and said patch has a When: HasMod condition for the mod with the custom GSQ. If players do NOT have the mod with the custom GSQ, will they receive unknown query errors?

uncut viper
#

not if your hasmod is set up right

#

if the When condition prevents it from loading, then the trigger does not exist at all to the game

quaint moss
#

That's what I needed to know, thanks.

sand sinew
#

hiiii genuine question, how would i go about making a portrait mod? (and if i have enough time, a seasonal outfits mod)? i downloaded an npc that recently got updated for 1.6 but the portraits not fitting the sdv style is bothering me

sand sinew
#

thank you!!!!!

faint ingot
lucid iron
#

*EditImage

faint ingot
#

whoops thank you I should not be giving advice around here I'm pretty new myself : )

sand sinew
#

nodding nodding. i’ll keep these in mind, thank you!

outer cedar
#

whenever i use move actor in events the actor always goes in the opposite direction no matter what number i give can anyone help 😓

light bramble
#

Ok Hypothetical that's not really hypothetical. Say I wanted to have a chance of random dialogue for a day. Say the second (and onwards) day of the green rain, is there a way to have a random dialogue option be picked?

tribal umbra
#

when doing a map can i put more than one "MapProperties": {} into the json file?

#

ive tried to put more than one because parts of the map can be disabled at players will, but when i did so this part of the code didn't seen to work

#

and another mod that i was using for reference uses the map properties for nightiles in the same {} for different spots of the map

#

so now if someone disable this part of the map, this would happen

#

instead of being all dark

lament berry
#
        {
        "Action": "EditImage",
        "Target": "TileSheets/Craftables",
        "FromFile": "assets/Beehouses/{{Beehouse Style}}/{{Saturation}}/{{Colorway}}.png",
        "FromArea": { "X": 0, "Y": 0,"Width": 32, "Height": 32},
        "ToArea": { "X": 32, "Y": 32,"Width": 32, "Height": 32},
        },

        {
        "Action": "EditImage",
        "Target": "TileSheets/Craftables",
        "FromFile": "assets/Beehouses/{{Beehouse Style}}/{{Foliage}}.png",
        "PatchMode": "Overlay",
        "FromArea": { "X": 0, "Y": 0,"Width": 32, "Height": 32},
        "ToArea": { "X": 32, "Y": 32,"Width": 32, "Height": 32},
        "When": {"Season": "winter"}
        }, 

Is there a way to make the second part of this not apply to ginger island? i'm trying to see if there's an applicable token in the content patcher author guide and i'm not sure i'm seeing anything that would do that?

maybe something like this? (but this didn't work for me)

"When": { "Query: '{{location}}' = 'island'": false }

unique sigil
#

also yes, you can put multiple map props in the same entry in a JSON file. usually however for day/night tiles, i make two actions: EditMap for DayTiles, and EditMap for NightTiles and Light that is tied to a When condition "Time": "{{Range: 1900, 2600}} so it only triggers at nighttime.

tribal umbra
#

Yes, i was talking bout the lights, thanks for answering

unique sigil
brittle pasture
#

"LocationContext": "Island" should work

#

or the inverse of that

unique sigil
#

ah yeah i forgot that was a thing lol

brittle pasture
#

with LocationName you need to specify every location on the island

lament berry
#

ah, yeah. i ended up scrolling down further on the guide and forgot it was LocationName

#

but let me try LocationContext if that covers the whole island?

#

i kinda forgot about the island not having winter/snow 😂

tribal umbra
#

It's because before it was basically like this:
//PICNIC TABLE { "MapProperties": { "NightTiles": "Front 64 45 403", "Light": "64 45 5"}, "When": { "Picnic": "True" }, }, //FOUNTAIN { "MapProperties": { "NightTiles": "Front 20 22 908", "Light": "20 22 5"}, "MapProperties": { "NightTiles": "Front 32 25 908", "Light": "32 25 5"}, "When": { "Fountain": "True" }, }, //HILL BENCH { "MapProperties": { "NightTiles": "Front 34 34 403", "Light": "34 34 5"}, "When": { "Hillbench": "True" }, }
and it wasn't working, the map was loading and all but the lights didn't. And when looking upon another map's code, i noticed that the parts of the map that were supposed to have night tiles were all in one {} so i did the same and it started working again. Its like this now:
"MapProperties": { "NightTiles": "Front 64 45 403 Front 20 22 908 Front 32 25 908 Front 34 34 403", "Light": "64 45 5 20 22 5 32 25 5 34 34 5"},

#

but like this that problem happens that when a player disable a certain part of the map, the lights that would be in there aren't disabled too

fallow musk
#

is it possible to change the value of the 96 in line 153 without doing the transpiling thing?

brittle pasture
#

you can postfix the constructor and set bobberBarHeight to another value, assuming it's not being used later inside it

#

looks like it is, but only to set bobberBarPos, so you probably need to set both in the postfix

tender bloom
light bramble
light bramble
#

is there a tutorial on that?

#

or a wiki entry I can read?

brittle pasture
light bramble
#

I think this might be the one I follow XD Just because it's got Jean and Jorts in it XD

tribal umbra
# unique sigil if youre talking about the lights (hopefully i didnt misunderstand this lol), li...

Ohhh i get it now, sometimes i have a hard time understanding english. I've tried to do that, in a part of the code it's like this:
//HILL BENCH { "Target": "Maps/Town", "Action": "EditMap", "FromFile": "assets/TownHouses.tmx", "FromArea": { "X": 51, "Y":36, "Width": 16, "Height": 17 }, "ToArea": { "X": 51, "Y":36, "Width": 16, "Height": 17 }, "NightTiles": "Front 64 45 403", "Light": "64 45 5", "When": { "Hillbench": "True" }, },
And there is more parts of the code written like that, is it right? because now none of the lights are getting on at night, except all of the town's normal lights (that weren't getting on before that)

#

I think they are getting on now (the base lights from town) bc mines aren't being loaded into the game x-x

unique sigil
#

i have never edited the vanilla Town map but you might need to add existing Light properties on the town map to your EditMap action

tribal umbra
#

How's that?

unique sigil
#

i've only ever made entirely new location maps (see: the code for wildflower acres) haha

#

wait hold on

unique sigil
tribal umbra
#

It was like that before, but then that error appearead, where only one of the map properties would work and all of the other lights would be turned off

unique sigil
#

i am not on my laptop right now so i cant give you the exact format, but you can check the way i add map properties onto a map on wildflower acres

tribal umbra
#

and when i put every tile to have light in the same {} when a part of the map is disabled, the light tiles within that part aren't

unique sigil
#

and yeah since you are editing a vanilla map you may need to copy and paste values of the day/night tiles and lights on the vanilla town map into your edit map action

#

mind you, this might end up causing incompatibilities with maps that edit the same target (Maps/Town)

hard fern
#

my walk sprites don't look cursed anymore! hurray? SDVpufferflat

unique sigil
devout otter
#

If you want to make them modular and not one big list, you'd need to do it via Text Operations.

tribal umbra
#

How do i do that? is it in the wiki?

long jungle
#

Do you guys know any mod that uses Content Patcher to add custom items?

I want to look at their code to use as an example.

#

Better if these custom items are materials/resources

devout otter
#

Mm, one of my mods should have an example. Let me check...

tribal umbra
#

Ohh thank you

devout otter
#
      "LogName": "Rare FlowerLight",
      "Action": "EditMap",
      "Target": "Maps/Forest",
      "TextOperations": [
           {
               "Operation": "Append",
               "Target": ["MapProperties", "Light"],
               "Value": "113 92 4",
               "Delimiter": " "
           }
      ]    
},```
#

So this basically says "add 113 92 4 to the end of the Light field in MapProperties"

tribal umbra
#

I'll try to do that, thanks a lot

brittle pasture
#

adding any new item is straightforward; there are plenty of examples
a new node is slightly more involved, and requires another framework

fallow musk
#

Does OnDayStarted happen after AssetRequested for Data/Machines?

I have some logic which triggers on AssetRequested but needs some information which is only asked on OnDayStarted. Is there a way to make this flow work?

brittle pasture
#

AssetRequested happens when the data is requested, which can be any time, or multiple times if it's invalidated

You want to read your info in OnDayStarted, save it somewhere, invalidate Data/Machines, then in AssetRequested if that data is set modify it accordingly

fallow musk
#

how to invalidate already loaded Data/Machines.json?

fallow musk
#

ooh thanks

faint ingot
#

so I'm assuming it's a hardcoded thing that you can put stairs in a certain building in town? Like there isn't a tileData property I could add that would perform a warp if stairs are placed there?

calm nebula
#

Yes yes hardcoded

blissful panther
#

Now that's an idea for MEEP. Got some bug fixes coming up, and that would be a pretty simple addition...

distant radish
dire nest
#

Hello 👋
Is it possible to use something like "contain" for the condition of LOCATION_NAME? My mod Uppergrade should only work in cellars, but currently, I have to explicitly name every cellar (main house + every cabin) individually. I'm looking for something like

"Condition": "LOCATION_NAME Target Cellar*, ITEM_QUALITY Input 0 2\"

instead of

"Condition": "ANY \"LOCATION_NAME Target Cellar, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar2, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar3, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar4, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar5, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar6, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar7, ITEM_QUALITY Input 0 2\" \"LOCATION_NAME Target Cellar8, ITEM_QUALITY Input 0 2\""
slender badger
#

LOCATION_NAME can take multiple values, so you can condense it down to

"Condition": "LOCATION_NAME Target Cellar Cellar2 Cellar3 Cellar4 Cellar5 Cellar6 Cellar7 Cellar8, ITEM_QUALITY Input 0 2"
dire nest
# slender badger `LOCATION_NAME` can take multiple values, so you can condense it down to ```jso...

Okay, nice! This is an advantage. However, I also need the 'like' condition for compatibility reasons. A user asked me if 'Uppergrade' could be made compatible with 'Build More Cellars.' But I think it's not very practical to name every single cellar location from that mod individually.

slender badger
#

Hm, I don't think GSQs by themselves can do a contain like that, but you could probably do it with a CP token SDVpufferthinkblob Try either of these maybe:

"Condition": "LOCATION_NAME Target Cellar Cellar{{Range:0,99}}, ITEM_QUALITY Input 0 2"
"Condition": "{{LocationName |contains= Cellar, Cellar{{Range:0,99}}}}, ITEM_QUALITY Input 0 2"
dire nest
#

SDVpufferheart Thanks! I try it later

finite ginkgo
slender badger
#

In that case, maybe a dynamic token? Hmm...

dire nest
slender badger
#

Please don't ping me on reply 😅

#

I did say it was a maybe and that you'd need to try them out to see if they'd work or not

dire nest
#

Ohh, sry. I thought "ping" means @|Airyn or so :X I'm (obviously) not a native speaker.

proud wyvern
#

that's just another way to ping

slender badger
#

There's also pinging on reply, as in this gif ^

lucid mulch
#

Out of the box in content patcher, I don't think there's a good way to compute a derived set in CP tokens

#

A Mod token can probably do it easily nevermind, there isn't a good pattern for a token to take another tokens set as an argument

#

if Query had the option to run on every value of the set rather than just a collapsed string representation of the set, then it could have done it

gray linden
#

so i followed this tutorial https://www.youtube.com/watch?v=6rrgzpn_tpg and when i try to warp to Custom_Village it says it cant find location Custom_Village even though everything is correct. is this because the tutorial is old and does not apply anymore? if so how do i load in my custom map that i made in tiled then?

Hey! In this series, I'll guide you through everything you need to know to make a Stardew Valley mod! In this episode, we make a content.json file and a manifest.json file!

Things I mentioned in the video:
#1 - SMAPI - http...

▶ Play video
frigid hollow
#

any tutorial older than march of this year will be very very outdated!

gray linden
#

alright i guess thats where the problem lies. thanks!

slender badger
#

The majority of video tutorials will be out of date, you're better off sticking to the wikis

hallow prism
#

technically a map named this way would work so you may have another issue

#

as an advice however, you need a more solid internal name for your maps

#

usually people have an unique mod id like nitesky_wonderfulplace and then use that, so your name would be named nitesky_wonderfulplace_village (using {{modid}} when relevant as a shortcut)

frosty hull
#

@next plaza Hi, i have question about your mod Space Core

gray linden
slender badger
gray linden
#

oh sorry i didnt see your name

lavish panther
#

Sorry if this question is asked alot or if im supposed to know where something is. I want to get into modding for this game and idk what to do or where to look any help would be appreciated? i just dont want to go down the wrong rabbit hole so i came here first. thank you

slender badger
#

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

slender badger
#

!gs Assuming you want to create mods. If you want to use them, #modded-stardew is the channel you want

ocean sailBOT
proud wyvern
gray linden
#

can someone who has the time tell my step by step how to add a custom map/area into the game. would be greatly appreaciated, also if you could explain it like im an idiot that would be great. thanks in advance

fossil osprey
#

Do you already have a custom map? 'cause that would drastically change the length of the explanation

proud wyvern
proud wyvern
#

"but it's exposed as an API, so it can break other mods too"

frosty hull
#

Oh sorry, ok

tribal umbra
#

guys how do i make a custom tilesheet works as a chair? i've tried this { "Action": "EditData", "Target": "Assets/ChairTiles", "Entries": { "assets/spring_xcube/64 160": "3/1/up/<offset_0,5> <offset_1> <0>/draw tile 0/draw tile 80" }, }, but it isn't working. Not really sure how should i do it, since it isn't well explained in the wiki

lucid iron
#

Hm why do u have the < >

gray linden
tiny zealot
tribal umbra
fossil osprey
lucid iron
#

If that's from example then <value> means replacing the entire thing

little steeple
#

Guys is it only me or smapi no longer calls the method Events.Content.AssetRequested more than once per Game load

lucid iron
#

Did you invalidate

little steeple
#

For example in the case of "Data/Shops" it used to call the event every time the shop was opened

lucid iron
#

I imagine it's some optimization thing cus there's no reason to do that blobcatgooglyblep

little steeple
#

before 1.6.9 it was the case

lucid iron
#

So for your needs, manually invalidate the asset

#

And then u will get asset requested the next time it's accessed

#

What is the purpose of invalidating every time you open shop?

little steeple
#

to check if the player has a pet => sell pet treats. Now it doesn't unless the save is loaded again

#

I also tried using Content patcher with When: + tokens. but they always result true

lucid iron
#

Make a GSQ instead

#

And use Condition

#

Well, make if there's not one already Dokkan

#

So if you don't care about specific pet, PLAYER_HAS_PET <player> works

tiny zealot
#

definitely put Condition on your shop items instead of invalidating Data/Shops on the regular

lucid iron
#

If u need to see if player has cat then u need to make your own GSQ

tiny zealot
#

you can also probably just do an item query for your stuff, which will have a similar effect

little steeple
#

is there a condition for mail received?

lucid iron
#

PLAYER_HAS_MAIL

little steeple
#

Omg thank you so much, I didn't know about Game state queries. Now everything works as it should!

tribal umbra
#

{ "Action": "EditData", "Target": "Data/ChairTiles", "Entries": { "assets/spring_xcube/64/160": "3/1/up/offset_0,5/offset_1/0/0/80/false"}, },
I've writed it like this in the code but i'm still unable to make my custom tilesheet work as a bench

frigid hollow
#

i think you need to take out the "assets/" part from the tilesheet name in the entry?

#

so "spring_xcube/64/160" instead