#making-mods-general

1 messages · Page 301 of 1

vernal crest
#

(Also ichor what if you used the chat commands mod, can you use the up arrow in that?)

lucid mulch
#

the test_event.txt replaces all newlines with /

vernal crest
#

But the fact that you have to write it differently means it's more work at that end

tiny zealot
#

the cost is i have to massage the final form into the event script at the end, but that cost is very low (my text editor is good at this job)

vernal crest
#

You can just do multiline events in json anyway

lucid mulch
#

(not in real json)

tiny zealot
#

rte saves me a lot of time overall, but it probably won't save most people a lot of time overall, which is why i said it's finicky

vernal crest
#

Yeah but the game is not in real json so...you wouldn't be writing events using debug rte outside the game context otherwise would you?

#

What do you mean by reinstall the files?

lucid mulch
#

I don't do content anyway, and would write it in a C# multiline string to avoid the problem

tiny zealot
# vernal crest What do you mean by reinstall the files?

i have a work directory and don't edit my files directly in my mods folder. installing them is not difficult (run make) but it's still a step and it takes place in a different terminal so it increases friction on the patch reload method

versed wyvern
#

Are there any vanilla applications of RejectItem dialogue keys? I'd thought Elliott's reaction to sea cucumbers would've been it but it's still written to just give you back another sea cucumber after taking yours blobthink

tiny zealot
#

grep says no

#

bizarre choice to do elliott's that way, tbh

versed wyvern
#

Dang, guess I'll just need to add one to test with then, thanks rubyslime

golden spire
#

I shoould use grep more but I just use "kfind"

calm nebula
#

RejectItem doesn't count as a gift

#

AcceptGift counts as gift

#

Anywyas

#

"RejectItem_category_bait": "{{i18n:willy-rejects-bait}}$h", // magic bait

#

(Ignore the comment, it's wrong)

tiny zealot
#

good point, atra. RejectItem won't reveal the gift taste in the social menu, since it wasn't a successful gift

calm nebula
#

I handed the man my bait one too many times while trying to crab pot

versed wyvern
#

Well, what I wanted to see was whether RejectItem dialogue would be blocked by the daily/weekly gift limit since it's not counted as a gift blobthink

calm nebula
#

Also I'm now looking at my example and I'm not sure mine is right (category..bait? Not a negative number?)

#

It has very high priority

tiny zealot
lucid mulch
#
// Wine - reject
"RejectItem_(O)348": "{{i18n:Sterling.Gift.RejectItem_(O)348.Marriage.{{Random:0,1,2}} }}",                
// Generic alcohol - reject
"RejectItem_alcohol_item": "{{i18n:Sterling.Gift.RejectItem_alcohol_item.Marriage.{{Random:0,1,2,3}} }}",
calm nebula
#

Hey pathos is there a GSQ fork

lucid mulch
#

the proposes 1.6.16 choose was a gsq goto

calm nebula
#

Tbh i see those as sufficiently different (especially for content modders not used to transpilers)

#

Pathos!

#

Plz!

lucid mulch
#

considering the tentatitve 1.6.16 has forking as a concept being deprecated, its gsq goto or nothing at all

#

though the current proposal doesn't datamodel or change how preconditions work so the duplicate ids don't matter

calm nebula
#

Forking is what

lucid mulch
#

other option is to just make them have unique ids and in a skipAction/final action set the other ids to seen

vernal crest
#

Oh that includes deprecating quickQuestion

#

Man, I haven't even learned any of this stuff yet. I hope 1.6.16 is not so far away as to make me put off doing event stuff in case I learn deprecated things.

lucid iron
#

So can you code pong with event scripts

lucid mulch
#

I'm curious if you can infinite loop an event by goto'ing backwards

lucid iron
#

Use if u need type thing

lucid mulch
#

oh wait one of the explicit examples is an infinite loop for asking the same question until the correct answer happens

vernal crest
#

And to stop using them because they might break in future updates

lucid mulch
#

I mean you cant stop using them because the alternatives also new for 1.6.16

#

though wouldn't be too hard to backport them

lucid iron
#

We got no release date for 1.6.16 either

vernal crest
#

Hence my "I hope 1.6.16 isn't too far away so I don't learn how to use quickQuestion and then immediately have that be deprecated"

lucid mulch
#

tbh the bigger qol change is making all the vanilla events multilingual

vernal crest
#

What does that change for us?

lucid mulch
#

the Data/Events folder will be a lot less busy

vernal crest
#

Yes that's true. I just made an English copy of the Content (Unpacked) folder where I deleted all the non-English files though lol

lucid mulch
#

other qol is a bunch of hardcoded ccommands got deleted by moving their logic into the event itself using skipaction stuff

orchid meadow
#

Hi all, does anyone know what tile sheet or sprite sheet or font sheet that the numerals inside the "money box" uses? I am trying to make a mod that changes its font. However, I can't seem to figure out where in the game are the numerals are sourced from. Any help would be appreciated. Thanks!

calm nebula
#

Wait

#

Language agnostic I assume

lucid mulch
#

yeah

#

all the text got moved to Strings/Events

calm nebula
#

Sorry, I parser "multilingual" as "French and English in the same event" (god that is a font nightmare)

#

Although it could be done

tiny zealot
orchid meadow
tiny zealot
lucid iron
#

Perhaps if there's multilingual daily dialogue too

whole raptor
#

It works SDVpufferparty Now onto the choose thingy SDVpuffersquint

north palm
#

thank you so much.. i will try later luna_mafu_love

whole raptor
#

Ooh, I like choose SDVpuffereyes

tiny zealot
#

i do like it, but it's also funny that this is like the sixth or seventh way to do player choices /lh

whole raptor
#

Definitely looks like the most friendly option at least

lucid mulch
#

I do prefer goto / choose / label over quickQuestions and its backslashes

#

but I also do like fork events

tiny zealot
#

hmm i won't miss fork but i didn't mind a switchEvent

whole raptor
#

quickQuestion is hell... and I definitely don't say it just cause of the converter SDVpufferblob

#

Wait... the quotation marks don't need to be escaped with with the choose command and labels...? Or is it just written like that in the migration example? SDVpufferthinkblob


label accept/
emote Willy 32/
speak Willy "Aye... I thought you would.$h#$b#I'll leave this door unlocked for ya... you can come drop off the materials whenever you like."/
goto resume/```
tiny zealot
#

you will have to escape them

lucid mulch
#

it isn't written with json/cp in mind

whole raptor
#

Oh thank god, I got scared when I saw no matches

tiny zealot
#

my burning question about these examples with ends sprinkled in is does the index += 2 and continued execution thing still happen

#

i have an event with an early end and i had to follow it with nulls like so: end/null/null/... because otherwise it would continue executing 2 commands later during the end

ruby rapids
#

Hi there. Is there a way to generate skill books. I've tried Hack and debug, but neither work. I am trying to test "book void" and "skillbook_4" audio dialogue. (I am doing voice-overs for Abigail and I want to make sure the volume is good.)

woeful lintel
#

Ok, I just went to the 1.6.16 migration page and I just learned that "Instanced Static" are a thing in C#. This is now my top 1 hated language

#

No, scratch that, top 0

#

matlab is top 1 for an obvious reason

calm nebula
#

Instances static is a stardew hack

#

To make splitscreen work

woeful lintel
#

really? the page seems to infer that it can be found in mono game framework, maybe I misunderstood.

lucid mulch
#

Even if it was xna/monogame still not a c# thing

calm nebula
#

The issue was that it used to check every loaded assembly

#

And thus would sometimes hit steam's assembly and die

sour sleet
vernal crest
sour sleet
#

Oh that’s not too bad then

calm nebula
#

Chue, the instancedstatic stuff is reflection

lucid iron
#

Oh i thought you meant quick question switch checked assemblies

woeful lintel
#

Just realized that the player isn't pixel aligned with its own shadow...

#

unplayable

clear oxide
#

How do I spawn something in a body of water ?

#

Trying to make a creature spawn in the water or under the water like fish do

lucid iron
#

If you just want them to be fishable look at location data

#

If you want them to move around on water tiles u can also just do that if the water tiles are Back layer or passable

calm nebula
#

If you're asking about our sea minster friend she's a specific subclass of Temporary Animated Sprite

#

wonders if stardew will ever get console mods

iron ridge
calm nebula
#

A mod that exists on console

#

If content patcher, even a frozen version, existed on console it could happen!!!!

blissful panther
#

I feel like mods on the Switch version could exist with repacked XNBs right now.

rancid musk
#

Yeah, there's definitely a decent amount of content that could exist via repacked XNBs.

blissful panther
#

Even a stripped down SVE or RSV without the C# necessities could exist, I think.

rancid musk
#

As long as it doesn't use conditional patches or framework stuff, it'd work.

calm nebula
#

It's off an earlier discussion re: mod.io

#

And spawned slightly from the security discussion

#

And I was thinking well

#

Also my dear chue do you use sphinx

lucid iron
#

Not at the moment

calm nebula
#

I think I like it, I might use it for smd

trim sand
#

question about Farm Type manager since i can't find a good awnser in the github read me.
can i have multiple settings files in the same ftm content pack? since i was wanting to have an modified forage list for the map in addition to the default ftm forage but only if a specific mod is loaded, and it seems ftm has a way to only load files if specific mods are present or not. im just not sure how to have multiple files able to be loaded.

trim sand
#

oh no my question has summoned esca

royal stump
#

or if you need one of the areas turned off while another mod's active, it should be something like this

"CPConditions": {
"HasMod |contains=Mod_A": "false"
},```
trim sand
#

I. See. Okay thats not terrible. I had admittedly sorta assumed area ids were only for area delimited spawns which this isn't.

#

(map is small enough that it doesn't make sense to separate any further)

royal stump
#

The "areas" list is basically just a set of rules; each one is limited to a single map, but multiple can target the same map, etc

trim sand
#

I see. Cool. I was worried my question was about to spawn some forbidden knowledge or something

ivory plume
#

@uncut viper Would it be okay if I mentioned your mod dependency graph in my monthly Patreon post? Here's a rough first draft of how it'd look (let me know if you'd want any changes):

lucid iron
#

i wonder if it'd be confusing to have some no longer working mods there

blissful panther
#

Pathos, quick question while you're around and on the subject of dependencies.

Currently, the monthly summary doesn't account for framework mods that aren't used via ContentPackFor, does it? Can you think of any way it might be possible to account for frameworks like that?

(Asking for a friend. Definitely not myself in any way at all. SDVkrobusgiggle)

ivory plume
#

Possibly! Dependencies are a bit messier though. For example:

  • a mod can have multiple dependencies;
  • dependencies are often used to set load order or indicate a compatibility patch, rather than something actually used by the mod.

I'd need to look into how clean the data would be. (It's too late for this month's summary though.)

tawny ore
#

Would it be reasonable to assume that every mod which "Loads" a data model to a non-vanilla path, then every mod which performs edits to that path should be considered a dependent mod

#

I guess that also excludes mods that do their framework integration from CustomFields

#

Yeah... it seems tricky. I can't think of a clean way to account for all of those.

uncut viper
# ivory plume <@78657757846188032> Would it be okay if I mentioned [your mod dependency graph]...

Feel free! Or if you'd prefer, I could do you one (subjectively) better: an interactive version I literally just finished touching up and pushing to my site. I've tweaked the visualization a decent amount since that initial graph in your preview; this new one has the edges weighted by dependency "stength" (aka required dependencies are a stronger link than optional dependencies, and contentpackfor dependencies are stronger still) as well as some more colour coding between the links to follow suit. So which one you like better is up to personal taste (though I personally like the new one better since I think it shows a clearer relationship between all the mods, rather than nodes just sorta spreading out just to fill up space).

blissful panther
#

It would only affect things going forward, and it would be a slow change, but maybe a simple:

"DataModelsFor": [
  "Not.DHs.Mod",
  "Other.NonFrameworkPackMod"
]
lucid iron
#

Cytoplasts...

blissful panther
#

Well that's just about the coolest thing I've seen in a long time.

lucid iron
#

Personally i think the straight forward "how many mods are dependent on blah" is still useful as a stat

uncut viper
#

(also that page does require like, at least A GPU installed to view I think according to the library's docs... bit of a rough time finding a library that allowed for smooth graph loading and viewing in the browser when dealing with so many nodes and edges, so it uses webgl i think)

lucid iron
#

Shows how many ppl use spacecore at least

lucid iron
uncut viper
#

yeah thats no surprise to me lol

lucid iron
#

Perhaps u can render static pngs

tawny ore
#

Tried loading on a potato, only saw spuds

lucid iron
#

Setup some cron job to do that once a day

uncut viper
#

i do still have the raw data as well so i can just put it in the same tool i visualized it with originally

#

eventually i will set up a "hey, i dont think your device can handle this, heres a static image instead" but i was already calling it a day for it with where its at now when Pathos pinged me, so...

ivory plume
#

Thanks! I'll go one better and just show both versions.

lucid iron
#

Hm u also wanted a lightweight way to get the data right

#

Instead of entire mod dump

uncut viper
#

I was also gonna ask about that when Pathos posted the mod dump yeah SDVpuffersquee

#

I only need the ~200mb folders.json inside the mod dump to make this, not the other 66gb

ivory plume
#

I can add a separate download for the folders.json and mods.json files. They'll always be at the same URL and Azure Blob Storage returns the headers like ETag, so your tool could auto-update when a new version is posted.

uncut viper
#

could definitely set up a monthly cron job for that then, yeah! thatd be wonderful SDVpufferheart

lucid iron
#

Exciting new frontiers of graph theory

uncut viper
#

also, in case you feel like changing the bit about unknown mods, i realized theyre not just deleted/hidden mods but just any mod that the mod dump determined was an "Invalid" mod (as opposed to "Smapi" or "ContentPack"), so it also includes things that arent typical folder structures (like replacer mods or mods with multiple mods inside them nested)

#

i can probably adjust it later to differentiate between those and truly unknown mods based on whether or not they have a ModPage url

uncut viper
#

i wouldve been done with it earlier but i think i spent a non-zero amount of hours just twiddling with the simulation setting knobs (there are many) to both a) find something nice and b) watch it go brr

trim sand
#

aaand ive somehow managed to brick my farm map. i dont even know what i did. nothing about the map file name has changed or its location. but now it can't be found by smapi.

#

not sure this at all helps others understand whats happening. but log i guess.

wild viper
#

tysm it worked instantly, the house is there and I can warp to it

uncut viper
spice inlet
wild viper
uncut viper
trim sand
#

huh. i didn't consider that itd break if the tilesets werent availible when saving. since they need removed before packaging the project.

uncut viper
#

never ever save a tmx when there are errors present! gotta add the sheets back in

trim sand
#

i mean i know that now. and also im probally never doing another map after this disaster of an experience with it. whole things been a wreck from start to finish

uncut viper
#

or different optional files but on the same mod page

uncut viper
#

fresh data 👀 thank you!!

ivory plume
#

(Actually, maybe I'll rename it to exports since SMAPI is already in the account name.)

uncut viper
#

its too late ive already integrated those urls into my automated system, cant change em now /j

primal rover
#

Figured out the setup with Mac which was less painful than I expected. For my job it's near impossible working with SQL and worse: WPF.

golden spire
#

I'm curious how many duplicate image files exist in all the dumps

uncut viper
#

(ill figure out some automation later probably, but for now the site should be updated for april's mod dump manually now)

ivory plume
#

(Blob-to-blob transfer is pretty fast.)

blissful panther
#

(Now try between datacentres! SDVkrobusgiggle)

lucid iron
uncut viper
#

i assumed they meant like, how many different mods include springobjects.png

primal rover
uncut viper
#

im glad its neat to look at!

ivory plume
uncut viper
#

it loads instantly and that counts as beautiful in my books

#

i will definitely make use of this SDVpufferheart

blissful panther
#

Oh, @uncut viper, you even added a light mode for me! /j

uncut viper
#

it was definitely just for you

#

(dont tell anyone but i actually use light mode on my site too)

latent mauve
#

(I just saw the link to the upcoming event command changes while reading through the backlog this morning and panicked when I saw quickQuestion on that list of deprecated commands.)

#

As long as I actually release my mod before that somewhere in the far off future update, it'll be fine, right? 😛

uncut viper
#

(i also never realized how many dependencies DSV seasonal outfits has SDVpuffersweats its got the most out of every mod at 97)

rigid oriole
#

most of em are probably false deps for load order I'd think considering these are all nexus lists

#

sounds like a lot of compat work on their end

uncut viper
#

they for sure are, its just still more than i expected. i naively assumed the most dependencies a mod would have would be like, 50

calm nebula
#

Todo

uncut viper
#

!androidsmapi

ocean sailBOT
#
Android SMAPI

There is an unofficial port of SMAPI for Stardew 1.6 to Android. Please see the wiki instructions for more information.

IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. We are not able to provide support if you run into trouble or compatibility issues; please use the discord linked on the Android SMAPI github.

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

uncut viper
#

we dont provide support for mobile/android SMAPI in this discord, you should use the one for the smapi port

#

well, the fact remains that we dont provide support for it here (and this wouldnt be the right channel even if we did)

#

ask again in the android smapi discord and hope you get a response

#

its not an official SMAPI port and not maintained or worked on by people in here, so we don't know whats up with it or how to troubleshoot it

fossil osprey
#

???

#

@outer glacier

blissful panther
#

And that's enough of that.

rigid oriole
#

insane behavior

ivory plume
primal rover
#

I'm not sure there's a way to contribute/PR to the wiki but for Mac I think the Avalonia ilspy is not a valid option anymore. I'm about to test ilspycmd cli instad

latent mauve
hallow prism
#

what are the changes, a better way to deal with questions in event? some harmonised changes?

ivory plume
blissful panther
#

Yeah, the Avalonia version of ILSpy is a couple of years out of date, and currently unmaintained.

ivory plume
hallow prism
#

"7" yeah ok i knew we had a few but maybe not that much

rigid musk
#

pondering where are the spouse portraits kept

hallow prism
#

the furniture? in the junimo furniture

ivory plume
#

(In general the base game is moving to a label-based event flow, where each event has any variations/forks/choices/etc entirely within the single event script.)

rigid musk
#

ah junimo furniture, thanks Lumi

hallow prism
#

i don't really know what a label based event flow is except the tiny bit i saw about the goto thing the other day but i can definitively see the pro of not having to remember 7 different formats to "go to next event/offer a choice"

calm nebula
#

Tbh I prefer the old quickquestion into a switchevrnt methodology

blissful panther
#

(Atra, are you from xkcd 435 now?)

calm nebula
#

Yes

#

I'm old and I do not matter

hallow prism
#

(it'll be also easier to understand the new stuff with the vanilla converted examples)

tawny ore
#

In 1.6.17 will we get turing complete events?

ivory plume
# hallow prism i don't really know what a label based event flow is except the tiny bit i saw a...

For example, let's look at the band event.

In 1.6.15:
The game runs a common event intro, then calls cutscene bandFork which (through a few hardcoded C# steps) injects one of these commands based on your previous choices:

fork poppy/
fork heavy/
fork techno/
fork honkytonk/

Each of those forks is then a complete separate entry (in a different location's asset!) which contains around 60 lines of mostly duplicated event code, where only the first 18 or so are actually different. If the game then wanted more variations within those, it would split off more forks which would then duplicate even more code.

In 1.6.16:
The game runs a common intro, then runs only the specific commands which are different from each variation:

<common intro>/
goto poppy "PLAYER_HAS_DIALOGUE_ANSWER Current 76" heavy "PLAYER_HAS_DIALOGUE_ANSWER Current 77" techno "PLAYER_HAS_DIALOGUE_ANSWER Current 78" honkytonk "PLAYER_HAS_DIALOGUE_ANSWER Current 79"/

label poppy/
<commands specific to the poppy variant>
goto finish/

label heavy/
<commands specific to the heavy variant>
goto finish/

...

label finish/
<common outro>

If the game then wants more variants within these, it just adds a label with goto or choose without needing hundreds of duplicated lines of code.

latent mauve
#

Can labels be used to create a "middle part" of an event, so that could be appended to for additional actions without breaking the start or end of an event?

#

(Yes I'm still thinking of the Egg Festival and the egg hunt section)

hallow prism
#

and if i'm reading right there is also now translations separate as the event command for vanilla?

ivory plume
# latent mauve Can labels be used to create a "middle part" of an event, so that could be appen...

If I understand correctly, yep that's the main benefit of labels. You can have diamond flows like this without needing to duplicate whole parts of the event script:

                             /--- variation 1 -\                  /--- variation 1 -\
common intro --> question -->                   ---> condition -->                   --> common ending
                             \--- variaiton 2 -/                  \--- variaiton 2 -/

You can have any number of variations within the script. For example, the Solarian Chronicles board game event is fully implemented using labels now.

#

(We're just discussing it abstractly here, so it'll be easier to grasp when you see it used in practice in 1.6.16. Many of the base game events are much easier to read and follow now, with much less hardcoded logic needed.)

blissful panther
#

(Please tell me for your own sake you aren't needing to edit the vanilla events by hand, and you have some sort of automation for it!)

ivory plume
#

(It involved lots of custom scripts and global regex replacing for the vanilla migration.)

blissful panther
#

(Whew!)

calm nebula
#

(And the old way still works right?)

#

If you don't want to migration SDVkrobusgiggle

ivory plume
#

Yep. I guess I should make that clearer on the mod migration page.

calm nebula
#

My preference for the old switchevent system is because you could also do the same diamond schedule but it's broken into separate strings

ivory plume
#

Hopefully a bit clearer:

calm nebula
#

A good example is the .15 penny picnic event

#

Where depending on player choice it would switchevent to different subevents

#

But they would all switch event back to a finale

tawny ore
#

Doesn't the term deprecation imply that using those commands breaks?

ivory plume
#

(Here's how that event looks in 1.6.16. Essentially it does the same thing, but within the same script using choose.)

tawny ore
#

Maybe it's just me, but I think obsolete aligns more closely with "this is no longer the preferred way"

uncut viper
#

deprecation implies unsupported in favor of new alternatives to me

#

with the possibility of removal in the future

tawny ore
#

Like when I mark something for deprecation, that means by the time it's deprecated then it's gone

ivory plume
#

Deprecation and obsoletion have specific definitions; deprecation means it still works but is no longer recommended (and will often be removed in a future major version like 2.0.0).

tawny ore
#

Interesting, I didn't know that. I feel like most times I encounter that word, it has been the wrong usage.

calm nebula
#

But I'll make a reminder to myself to support those cmds anyway

primal rover
heady trout
#

Hey what dose this mean I'm trying to make a mod

tawny ore
#

These multiline events kind of makes me wonder if there is a usecase for Content Patcher to do edits to specific lines of strings

ivory plume
#

(Sadly the events won't be multiline in the XNB files; there's a pipeline extension which squashes them to single-line mode for efficiency.)

tawny ore
#

Ah so the data as it exists will all still be single line

ivory plume
heady trout
#

ok

crude plank
#

@inland rain sorry for pinging you, i remember you said to let you know if we hear about requests for updates, not sure if this falls into this category but i'd love to see Craft and Build from Containers work with chests that are organized using Ultra Organized Chests

ornate trellis
#

seeing how events gonna change and me already not liking making events this coming update is scaring me xD

ivory plume
#

(Anything you learn and do now will still work in 1.6.16. But if you learn the new approach when it releases, I think it'll make your events much easier to edit and maintain in the future. For example, you can just learn choose instead of question forkX + question null + quickQuestion + $q + $r + splitSpeak + ...).

brittle pasture
#

speak for yourself, I don't need to learn the arcane multitudes of quickQuestion and forks and the like

gentle rose
#

but will it make chaos easier

tawny ore
#

Even if it ever does become obsolete, you can always count on Content Patcher to fix everything for you

lucid iron
#

Given that 1.6.16 is not yet settled this means I can delay my npc to 2028

ornate trellis
#

well, I am always a sucker for things getting easier to do

rigid oriole
#

i for one welcome our new event command overlords

uncut viper
#

who needs to learn new syntax when i can surely just ask chatgpt to do it for me the day 1.6.16 drops

gentle rose
#

barley will you help me implement an event turing machine

tawny ore
#

Discord needs to hurry up and launch their DiscordGPT trained on all of our conversations

rigid oriole
ornate trellis
#

hm, gotta scroll up and see if there was some sort of aprrox time when this update gotta hit or is it gonna be one of the end of moth update wave moments

gentle rose
#

exactly, we have all the tools we need to prove events are turing complete

ivory plume
#

Basically, to read event flow you need to know...

In 1.6.15      | 1.6.16
-------------- | ----------
question forkX | choose
question null  | goto
question <id>  | label 
quickQuestion  |
$q + $r        |
fork           |
%fork          |
splitSpeak     |
resetVariable  |
switchEvent    |
...            |
uncut viper
latent mauve
#

It's a far off unknown future date

uncut viper
#

~unknowable~

tawny ore
#

Imagine if SDV updates adopted agile methodology and there was an update every other week

latent mauve
#

I would cry

tawny ore
#

Release early, release often, customer value, blah

gentle rose
#

we don’t need discordgpt anyway, we have ai cat pathos right here

ornate trellis
tawny ore
#

/pathos "when will 1.6.16 be released?"

uncut viper
#

"Ask again later."

#

8 ball style

ivory plume
#

(Definitely don't wait for 1.6.16, since there's no ETA for it. The mod migration guide is just documented early to get feedback as we go and because it's easier than documenting everything in one go later.)

rigid oriole
gentle rose
#

universal turing machine ofc

lucid iron
#

Render and play pong

uncut viper
#

you could probably do it with some advanced moves

ivory plume
#

(I do have plans to de-hardcode the board game, so you could render a pong graphic to the screen through an event script and play using goto. I'd say it's a terrible way to implement pong, but someone implemented Doom through TypeScript types, so...)

tawny ore
rigid oriole
rigid oriole
gentle rose
#

wait so what’s going on with typescript types that they allow that level of code execution SDVpuffersquee

tawny ore
#

Where is SDV redstone?

ivory plume
rigid oriole
#

automate

lucid iron
#

Automate doesn't have nand gates though

tawny ore
#

Yeah that project was insane. Doom using only types.

primal rover
#

Lol, tried programming a "multitool" to select the first found weapon under certain conditions. It worked sort of, by changing every tool I hold into the first found weapon. Goodbye pickaxe, hoe and fishing rod, hello extra Obsidian Edges

lucid iron
#

Idk if hoppers are sophisticated enough

gentle rose
#

someone saw the haskell five queens post and took it as a challenge

tawny ore
#

It seems like Automate with hoppers should be able to accomplish logic gates

rigid oriole
#

i question what we would actually DO with a logic gate in stardew valley without adding additional machines to autocraft and such

ivory plume
#

Somehow run Doom on Stardew Valley machines?

primal rover
#

and then run SDV inside that Doom

#

Boom, inception

tawny ore
#

Look at Core Keeper for some ideas on how a 2d game might use logic gates, but tbh it doesn't really fit the vanilla theme

#

So anything would probably be lore breaking

#

You'd need additions like conveyer belts and sensors for it to have SDV applications

gentle rose
#

conditional produce processing of some kind?

#

build a cpu using jam makers?

rigid oriole
#

Binary adder

tawny ore
#

To me it'd be something like a do your own automate

#

A sensor has a charge when machines are in a current state, a collector when powered can grab the output, etc.

lucid iron
#

I would like the idea more if space isn't so fixed

#

But there was this old issue on automate about directional in/out right

tawny ore
#

Well I think the answer is we need an infinitely growable farm land

#

Procedurally generated side areas where you can buy the neighboring land for exponentially more costs

#

It can be called "Space: The Final Frontier"

brittle pasture
#

hmm, what if to balance expansion we can have machines produce pollution as they run, and if you produce too much pollution biters attack neighbors go to your farm and complain

#

to defense against biters you can set up gun turrets bribe dispensers

sour sleet
#

What's the best way to only allow entry to an area once the player has paid a fee?

tawny ore
#

It'll pollute until you advance technology with Demetrius help for more greener machines

#

This isn't a topic I know much about, but mail flags maybe? @sour sleet

brittle pasture
#

if you want to stop them permanently you can find and destroy biter spawners make your case at city town halls

calm nebula
#

Guyyyysss logic gates aren't enough

#

U need flip flops too SDVpufferheart

brittle pasture
sour sleet
ivory plume
sour sleet
#

Can you only add bundles to the community center or add them to a custom location?

hallow prism
#

custom with UB is doable

primal rover
#

Scythe being a MeleeWeapon is throwing off my masterplan

hallow prism
#

VMV has a whole set of custom bundles, as well as WAG

latent mauve
#

The documentation shows how you can place it, it can go anywhere

sour sleet
#

Ah that's good to know. Looking at the wiki made me think it was only possible to add to the community center lol

lucid iron
#

The wiki is about vanilla

latent mauve
#

Gotta look at the mod's documentation 🙂

lucid iron
#

There are some other ways to do it though

#

Like if you made a shop where you had to purchase a pass item

sour sleet
#

I was trying to avoid using too many frameworks but it's something I really wanna do

lucid iron
#

And then action on purchase set mailflag

#

This would let u make it cost money and or a trade item

tawny ore
#

Would it be possible with just a dialogue response?

latent mauve
#

Yeah, you could use a dialogue response to remove money

lucid iron
#

I want to say yes but it might get really big and terrible

uncut viper
#

would be much easier with event gotos

lucid iron
#

Blueberry had a thing where u buy an item via dialogue

uncut viper
#

it gets a lil bit messy bc you also have to check if they even have the money in the first place and it becomes an ugly ternary upon ternaries

#

but it should be doable

hallow prism
#

my feeling is UB is opening a lot of cool options, so it's worth it if you do plan to use some of those

lucid iron
#

Shops are for selling things...

uncut viper
#

source?

hallow prism
#

if it's not the case then some event trickery may be a better thing

calm nebula
round ermine
#

Hmmmmmmmmmmm... Is there a way for me to get loaded data from content patcher before conditions are applied?

To provide a bit of context, I'm trying to figure out a clean way to get the full data from certain targets (eg Data/Events/Trailer or Data/Festivals/spring13 as examples) about loaded patches regardless of whether conditions are in effect, and pulling that data from the thing loading the data initially (CP) seemed far more efficient than externally scanning and parsing full mod folders, but a patch export for "Data/Events/Trailer", for example, would only show the data with the currently in effect conditions, as I understand it. thinkDerp

Essentially I'd like to be able to either get the final state of the data content patcher is interpreting after applying the various mod patches but before applying conditions, if that makes any sense at all.

lucid iron
#

Are you in C#?

#

Actually I don't think content patcher itself even has what you want

round ermine
#

I dabble in C#, but am by no means an exprt. Tried to do some harmony patching to poke around a bit with CPs data, but it's honestly beyond my level, so I got a bit lost there.

I thought it might initially have the data i was looking for, since it has to load the patches before it parses them for the conditions, but since I hit a dead end, I figured I'd ask here in case anyone else had more insight.

tawny ore
#

You can observe the asset early and late (in C#)

lucid iron
#

The difficult part i think is that you desire some sort of contextless state

uncut viper
#

the only way to do it would be to reflect into content patcher and look at where it stores patches, otherwise the data does not exist as far as the game is concerned

lucid iron
#

What do you hope to see if i had some kind of mutually exclusive patch?

tawny ore
#

The closest thing you get to data prior to conditions is basically the vanilla asset

lucid iron
#

Or if i had a patch meant to be permanently off

#

After a flag

tawny ore
#

Otherwise, conditions are sort of a live concept, they are applied as they are relevant

#

Even the absence of a condition is technically a condition

lucid iron
#

Also you can have tokens in the Target LilyDerp

#

So a patch isn't guaranteed to edit a particular target all the time

#

Perhaps better to ask what your desired effect is

tawny ore
#

I kind of think the only way this would be possible is if the idea about having patches work sort of like a docker layer was a thing

lucid mulch
#

Content patcher only knows what it changes, and even then it only has it in a newtonsoft JObject data structure.
It can only stabilise to the correct data type once the asset pipeline runs to tell it the type

ivory plume
#

Patches exist in a quantum superposition of all states until observed, at which point the waveform collapses into an asset edit.

lucid mulch
#

Also got the problem that some of the conditions arent just logical gates but stuff like "is the save loaded because it was using a token that needs the farmers display name"

tawny ore
#

Ah Schrodinger's patch

round ermine
#

In this particular case, I'm essentially trying to find a way to obtain festival locations for NPCs in all their potential placements (Year variants, HasMod variants, etc.) in some sort of automated fashion, which means either finding a way to get some kinda JSON export the data before those conditions get applied, or getting a file listing of the patches that are being applied to the target prior to and parsing those outside of Content Patcher myself, I suppose.

#

I am probably overcomplicating things in some manner. 😛

#

patch summary asset "whatever" kind of gets me the sort of data I need as it tells me what is applying patches to that asset, so maybe I can work with that in some manner. thinkDerp

lucid mulch
#

If it's for data collection and not for normal mod usage

round ermine
#

Yeah, purely for data collection. 🙂

lucid mulch
#

You can just time travel to the days you are after, do a location changed so tokens update and then do the export

#

Automating stardew to get into the state that the festival data will be present will be a lot less painful than the alternatives

lucid iron
#

This means you need to install all the npc tho

lucid mulch
#

See also: Event Tester mod, it's easier to automate stardew to just run the events than trying to static analysis them

lucid iron
#

I think there were efforts to update a spreadsheet based on the mod dump

round ermine
#

That would work for the current state of things, but I'm also wanting to capture things like "changes location based on a hasMod", with well over 100 NPC mods is quite a task.

ivory plume
#

(Except in the upcoming 1.6.16, which adds static analysis support for event commands.)

lucid iron
#

This would be completely offline cus u r just read a bunch of content patcher mods with some magic knowledge about festival

lucid mulch
#

I do want to hijack those c# attributes when I get my hands on them for the debugger mod

#

I think I can do some fun LSP stuff with them

#

Syntax highlighting, red squiggles, etc

#

Can GSQ also get it?

ivory plume
#

Possibly; it would certainly be nice to have unit tests for game state query fields too in the base game.

lucid iron
#

I would like ability for mods to mark their gsq as invariant

#

Or mark as always false/always true

lucid mulch
#

I just need easy ways to know what the arguments are without starting to use harmony or the mono one to try and interpret the il to see how ArgUtility gets used or whatever

#

But yeah having immutable/deterministic flags would be nice

#

Granted I'm still a ways off the LSP half of the mod as there's still untapped potential on the dap side

lucid iron
brave fable
lucid iron
#

No the thing where you buy 1 cookie(?)

#

Did that need any non vanilla

brave fable
#

oh right that. i didn't push it, maybe it's in chat

lucid mulch
patent lanceBOT
brave fable
#

this one 🍘

round ermine
# lucid iron This would be completely offline cus u r just read a bunch of content patcher mo...

Yeah, my initial attempt was outside the game via a python script that just iterated over every mod folder that had a manifest that indicated it was a content pack. and just scanning every json within those folders for Set-Up_additionalCharacters and MainEvent_additionalCharacters which actually somewhat worked, but turns out most parsers that aren't the one used by content patcher... Aren't very happy with the very loose restrictions that CP allows, so about half the JSONs fail to parse for about a dozen different reasons, which is why I decided to try the "use the tools the game is using" approach. dogekek

calm nebula
#

Are you using json or json5

#

Try json5 first

lucid mulch
#

Even json5 won't be happy with all the crap newtonsoft supports

calm nebula
#

Also, scratch a modder and find someone who will bitch about the json spec

round ermine
#

Tried both. json5 had the best results, but still plenty of failures. newtonsoft be reall lenient.

tawny ore
#

It has been 1 0 days since a modder has complained about the json spec

lucid mulch
#

Yeah it's an active problem trying to figure out how to get anything else to be as remotely 'flexible' as newtonsoft

lucid iron
ivory plume
#

(If you prefer working in Python, you could create a tiny C# CLI app which just reads a JSON file and re-saves it. Then your Python tool can just run files through the CLI app to clean any Content Patcher-supported JSON file into a strict-valid JSON file.)

round ermine
#

Yeah, that was going to be my next thing to try if the CP stuff wasn't viable, so that'll be my next attempt. I'm not tied to a language, so I'll probably just implement the thing again in C# instead of having an overcomplicated snake. 🙂

tawny ore
round ermine
#

I only did python because it was super quick and easy, didn't think about the different json handling.

lucid mulch
#

Meanwhile my mod is going to in the future have to figure out how it's going to sourcemap line/columns in the json to the internal data structures in content patcher

#

I have some hacky ideas on how to do it but it's annoying enough that I'm procrastinating in the debug half instead

tawny ore
#

That sounds a bit like witchcraft to me, are you doing witchcraft?

lucid iron
#

newtonsoft.js.json

#

so the debugger u have rn

lucid mulch
#

I need either a better syntax parser in the extension or start on the LSP if I want the inline experience to be better
but once I go near the LSP I need the stardew side to be able to understand line numbers

#

I have some ideas because Newtonsoft does have some support to preserve that metadata if you tell it to

#

but that will involve having to hotswap the json serializer cp uses (which for the core content pack is smapi)

#

and potentially hotswapping the data structure as well to have extra fields/properties

calm nebula
#

Y'all can have that if you want

calm nebula
lucid mulch
#

I want red squiggles in my editor though, not does it crash

lucid iron
#

i wonder how u can describe something like this the critter query

#

mushymato.MMAP_Critter": "Birdie T 4 Birdie 175 4 Birdie {{ModId}}/critters/birdie 4

#

u r allowed to put as many pairs as desired here

#

for more birdies

lucid iron
#

vanilla does this sort of thing in map props

lucid mulch
#

hmm is it possible to know what the generic arguments are of a method within a harmony prefix?

worldly sundial
#

Should 'Helper.Events.World.ObjectListChanged' be getting called on clients? It seems like its only called on my client for the farm, not even if the client is the one placing an object

wild viper
lucid mulch
#

its Data/Characters not Data/NPCData

wild viper
#

Ah

lucid iron
lucid mulch
#

wait it was harmony postfixing gamemenu's draw to get the collection data?

lucid iron
#

yea lol

#

im assuming this is some kind of genius 1.5 hack

rancid musk
gaunt orbit
#

For anyone who has used stardeui, what's the experience been like?

lucid iron
#

It's like Qt

#

Do u like qt?

gaunt orbit
#

I've never used qt

lucid iron
#

Hmm what about vue DokkanStare

gaunt orbit
#

I've used avalonia/wpf and angular

lucid iron
#

Well in a general sense, it separates layout and logic

brave fable
gaunt orbit
#

I did know it was mvvm/mvc/whatever it's called these days, I guess I just wanted to know how easy it is to integrate and if there were any specific pain points or highlights of working with it

lucid iron
#

I do think the sml needs getting used to

gaunt orbit
#

It looks less bad than avalonia xaml

lucid iron
#

And sometimes it's hard to integrate with sdv menu assumptions because you do not get to define IClickableMenu

#

This is why i needed terrible harmony patch on lookup anything

gaunt orbit
#

Aah that is good to know

lucid iron
#

In exchange though u get to do elaborate layouts without thinking about controllers

brave fable
lucid iron
#

And scrolling without thinking about mouse wheels

#

u also get to hot reload just the sml part

#

so its possible to tweak all kinda things without needing the C# kind of hot reload that i dont have anyways

brave fable
#

does stardewui handle gamepad trigger/shoulder buttons at all? i usually use those for quickly changing selected regions or pages in menus

gaunt orbit
#

There is something I'm concerned about- there doesn't seem to be any provisions for "virtual" scrolling, and I'm somewhat concerned about the potential memory footprint of large but uniform lists

lucid iron
#

raffadax made my menu incredibly slow

#

cus it added like 1000 rules

#

and each rule costs about 10 elements

gaunt orbit
#

It's not hard to use an offset slice, but scrollbars don't seem to be independently usable for a custom scrolling implementation

lucid iron
#

so you may handle any kind of button event yourself as desired

#

anyways what i mean by "not define IClickableMenu" is that you do not subclass that on your own

#

you just give the sml asset and the context instance to stardewui and it hands you a IClickableMenu (internally DocumentView iirc, something like that)

#

when i went from hard reference to using the sml/framework mode, i had to toss out whole mod

#

so it's a hard sell to convert existing menu done in vanilla system over imo, better something decided b4 even starting mod

gaunt orbit
#

Yeah that's why I'm don't research now

lucid iron
#

there prob would have been some terrible™️ way to use stardewui to build the menu then backend into the ShopMenu but i decided to just obey vanilla limits for that particular mod

gaunt orbit
#

You could probably get around that by storing an sml view inside a subclass and passing stuff back and forth

#

Oop

#

Ninjad

lucid iron
#

yea but i dont have good way of dealing with Game.activeClickableMenu is ShopMenu

#

And I'm gonna get into race conditions with happy home design type replace whole thing mods kyuuchan_run

gaunt orbit
#

You could subclass shopmenu and just call the sml methods from overrides

lucid iron
#

That's even harder because now i do actually have to think about controllers YuniShake

#

I also dunno of the attribute binding would work

gaunt orbit
#

True

trim sand
#

so uhh. getting farm type manager to work for my maps custom forage is completely eluding me...
and unfortunately its failing silently so im not even sure where to begin trying to debug it. file for context https://smapi.io/json/none/66120a95606841a6928fc42e0bb5d8fa
since its a FTM pack i assume no additional schema is correct?
i would assume other than sleeping a day i don't need a new save to test this?

lucid iron
#

So yeah overall opinion is that if u be making whole new menu it's great, can also do HUD displays too (like that fishing ui mod)

#

But there r some perf limits with really big scrolling (10k+ elements)

gaunt orbit
#

The problem with huds is that draw and input order are reversed so you can't have overlapping elements or it goes weird

#

It drives me nuts

lucid iron
#

Oh yeah in context of hdd idk if it has much interactive hud support

#

Not something i tried to do or seen anyone do with it atm

karmic jetty
#

hey y'all! is there a way / guide to debug mods quicker? right now I'm just compiling and restarting my game afterwards

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

I'm not planning to migrate hhd to sml right now. It's a complicated project but it's layed out in a way that makes sense and works well right now

next plaza
#

@uncut viper Saw the dependency graph thing when Pathos shared it in the monthly Patreon post. It was really neat! Thanks for making it. Interactive version was fun too.

I was kinda surprised at how small SpaceCore was, until I realized transitive dependencies don't count for size.

lucid iron
#

You can attach debugger to smapi

karmic jetty
#

ahhh gotcha, thanks!

gaunt orbit
#

I'm considering it for another project but I don't want to commit unless I'm reasonably confident it will actually improve development

sour sleet
#

I'm trying to add a bundle with UB and i get endless red smapi text when interacting with my bundle. Is there a different documentation I could read? I'm not finding the original very much help as it doesn't list all the fields and how to use themSDVpufferflat

gaunt orbit
#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

gaunt orbit
#

The error probably says what's wrong

uncut viper
calm nebula
#

One day CP eats allllll

#

I was actually wondering earlier today if, say

#

Console Stardew could eventually get CP mods

sleek flint
#

Hey, I wanted to ask you about something, if a mod is not working anymore, and I want to create a mod with the same idea as the old one but without taking any of its code. Should I still ask for permission from the dev of the broken mod?

lucid iron
lucid iron
#

and even when a mod is active nothing stops you from just making your own take, 2 cakes etc

acoustic summit
sleek flint
acoustic summit
#

If you feel inspired

lucid iron
#

yes, and sometimes the license gives you blanket permission

#

e.g. if old mod was GPL all u need to do is make sure your redux version is also open source with same license

#

details is for ppl who are lawyers Sleepden

sleek flint
#

Ok thanks everyone.

lucid iron
#

i think problem with console is that you need to serve the files there officially

#

something concernedape llc has to setup and host

karmic jetty
#

has anyone here possibly connected rider to stardew on linux for hot reload? SDVpuffersweats I'm able to attach to the process just fine, but I'm not quite sure how to work hot reload. It's enabled but seemingly not working.

lucid iron
#

its finnicky

#

probably doesnt work afaik

uncut viper
karmic jetty
lucid iron
#

its undergoing mitosis

calm nebula
#

Gorgeous SDVpufferheart

uncut viper
tiny zealot
uncut viper
#

(ill try nd add a "limit CP influence pls" toggle in the next version i push to live)

karmic jetty
lucid iron
#

say is the current simulation settings a contentpackfor centered(?) one

#

i am trying to find gmcm basically

sour sleet
#

SMAPI is saying that it can't load my image 'BundleBackgroundImage'. Here is my entry for loading it:
{ "LogName": "Load Bundle Assets", "Action": "Load", "Target": "Mods/{{ModId}}/OpeningBundle, Mods/{{ModId}}/BundleBackgroundImage", "FromFile": "Assets/Images/Bundles/{{TargetWithoutPath}}.png" } I really need some better documentation for UB, oof

uncut viper
#

its not centered on anything right now except for a very slight lean towards the center of mass

#

there is a search box on the left side

#

its not the most visible in light mode (the library im using is not the most customizable...)

tiny zealot
uncut viper
#

it actually stands out a lot more with the CP limiter in place

lucid mulch
#

gmcm will have a lower quantity than normal because

  1. all the content packs don't use it, cp does
  2. once you are in C# land, optional dependencies aren't very useful for just grabbing its api so you just don't put it in the manifest
lucid iron
#

a sign that something is a cp extend

uncut viper
#

(this is why people usually like to remove outliers, i suppose. but when your outlier accounts for half of all mods....)

barren compass
#

Hi button, just dropping in to say thanks a lot for your json tutorial. Very digestible and well made for an absolute code layman like me

lucid iron
#

i think maybe if we just had a no node size adjust mode?

uncut viper
#

im glad it helped!! very glad SDVpufferheart

lucid mulch
#

log scale the sizing?

uncut viper
#

wont log scaling might make everything too similar in size since most of everything will be on the smaller side? or am i confusing how log scaling works

lucid iron
#

log scaling makes bigger things still bigger but not 👁️

#

but i feel like the number of edges to a node ought to be enough indicate

trim sand
#

Content patcher being the eye of sauron moment

sour sleet
uncut viper
#

ill try and add some toggles maybe for different scaling functions, if i can figure my way around the library enough. the version im currently using is a beta and its not fully documented yet orz

lucid mulch
lucid iron
#

sdv modding in 2038

uncut viper
#

compressed...

#

.zip'd

tiny zealot
rigid musk
#

for books do they have a context tag like 'category_books'

uncut viper
#

i think they have book_item but im not 100% on that

#

liike 90%

#

they do have their own categories too though

#

-102 for skill books and -103 for power books. or vice versa.

tiny zealot
rigid musk
uncut viper
#

beats me! dont know how that works. i dont do dialogue!

rigid musk
#

Very fair

karmic jetty
lucid mulch
#

poor profiler, sitting on the outer most orbital

tiny zealot
uncut viper
#

some lovely log scaling. much more blotchy

lucid iron
#

what r the blue clumps

#

big content patcher mods?

uncut viper
#

yeah things with a lot of optional dependencies, mainly. lots of recolours

sour sleet
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 16 C# mods and 6 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

calm nebula
uncut viper
#

(recolours, outfits, item retextures, etc... basically a lot of things one needs their editimages to go after)

#

and ofc your typical suspects like ridgeside and SVE and whatnot

#

just harder to spot now as they dont stand out as much

#

i love that Console Commands has 8 mods that depend on it

lucid iron
#

wait really...

#

is that just on wiki example

uncut viper
#

no clue!

uncut viper
sour sleet
#

Nope

uncut viper
#

well, im not sure where you put whatever for the UB stuff, but its just trying to load Mods/8BitAlien/BundleBackgroundImage, so if your ModID is more than that, id double check wherever your UB stuff is

lucid mulch
#

the Mods/whatever is just a convention
there isn't a load on Mods/8BitAlien/BundleBackgroundImage

next plaza
lucid iron
#

i still put optional dep on gmcm when relevant

next plaza
#

(Pretending that I personally don't have possibly the most important framework mod after Content Patcher)

lucid mulch
#

all optional dependencies do is mess with load order, and if an optional version is specified, not load your mod if the dependency is out of date

#

and considering you can't go anywhere near .GetApi() until GameLaunched anyway, load order isn't a factor

next plaza
#

I'm pretty sure Content Patcher does in fact require an optional dependency to use at least some of the features

uncut viper
lucid mulch
#

(even pathos doesn't put most optional dependencies in his manifests)

uncut viper
#

the only thing i can think of for CP re: dependencies is using a C# custom token, but you can alternatively just use a HasMod condition if you dont want to add a dependency

#

maybe you need a dependency to make the custom token too? cant remember

next plaza
#

Now, make me a copy of this graph pre-1.6 (so I can inflate my ego by seeing JA dominance for everything item related)

#

Let's ignore that you'd need a mod dump from pre-1.6

uncut viper
#

if you could get me a mod dump download from pre-1.6, sure

lucid iron
#

im sure pathos has that somewhere

#

honestly would be interesting data point

lucid mulch
#

pathos doesn't keep the old ones iirc

next plaza
lucid iron
#

aww ok

lucid mulch
#

and I deleted most of mine due to filesize constraints

uncut viper
#

which is a shame bc this library does have like, a history view slider thingy i could use to see nodes pop up over time

lucid iron
#

ok new plan, time machine just for button

lucid mulch
#

as my excel spreadsheet schenanigans was doing A/B comparisons of mod-dump folders

next plaza
lucid iron
#

go back to 2016

lucid mulch
#

the smapi-mod-dump folder only has smapi mods, no content packs

next plaza
#

Oh

#

Alas

#

That would do nothing for inflating my ego via JA, and therefore is unimportant

lucid mulch
#

it was my original 1.6 compatability analysis that had him start uploading the full thing

lucid iron
#

say would it be possible/easy to represent compat between content packs?

#

hard part is prob defining what is incompatible

uncut viper
#

i dont know what you mean by that

#

what is there to represent, whats the data point there

lucid iron
#

not on your dependency graph i mean

#

but it would serve as way to identify genres of content mods

#

still, the very concept of incompatible content pack is nebulous outside of exclusive loads

lucid mulch
#

ok went through all the old mod-dump links and they all 404 now, so they got removed from the storage account

next plaza
lucid iron
#

i think pre 1.6 all Loads were exclusive right

next plaza
#

Oh, you mean content patcher

lucid iron
#

so its new as own concept?

#

idk about smapi content pipeline

next plaza
#

I was thinking you meant mods disabling themself when another is installed, which I didn't think was a thing but I've been out of the loop for months so I could've easily missed it

tiny zealot
#

smapi content pipeline had load/edit priorities before 1.6. 1.6/2.0 gave them to CP

sour sleet
lucid mulch
#

@uncut viper what part of the dump do you need?

#

I do still have my original end of june 2023 dump intact

lucid iron
next plaza
#

I suppose but I thought you meant manifest level

lucid iron
#

i dont remember a manifest feature to do that Think

next plaza
#

Like instead of optional or required you could mark a mod as incompatible and your mod would unload itself if the other was detected

next plaza
#

I thought it was the sort of thing Pathos didn't want to add, but Pathos has changed his mind on some stuff before

lucid iron
#

im sure it was tossed in here as an idea but no psure u gotta do it yourself

tiny zealot
tiny zealot
#

i suppose neither

lucid iron
#

is smapi obligated to count exclusive groups and load the biggest one

next plaza
#

It could be useful for people who make alternate versions of their mods though (and choose not to go the config route)

vernal crest
tiny zealot
#

(aside: i am a C programmer and seeing the abbreviation UB (undefined behavior) sends me into SDVpufferfear)

sour sleet
uncut viper
lucid mulch
#

though my mod dump from 2023 doesn't have the split mods / folders.json files but it does have a singular cache.json file, not sure how different the data structure is

uncut viper
#

beats me! as long as it has the same data i need i could just write a custom script for it anyway, though itd not be tonight

lucid iron
#

hm cp is only 0.6% away from being majority government

lucid mulch
uncut viper
#

oh wow that is tiny

lucid mulch
#

its zipped

#

its a 200mb json file instead

uncut viper
#

yeah i didnt expect the zip to compress it that much

#

my mental gauge for how compressable things are is not tuned

lucid mulch
#

its a formatted json file, with a lot of repeat words due to data structure

#

it contains all the manifests so should be enough

#

I had my own scripts for analyzing it, because I had fun stuff like symlinking the contents of the mod-dump into my smapi mods folder

#

so I could run all distinct modids

#

tbh I find it hard to believe that content patcher is <50%

calm nebula
#

One day content patcher will take over the world

lucid iron
#

i mean if you consider xnb (7%) not real then its already over 50%

lucid mulch
#

also I'm very interested what happens if you overlay this with a compatibility report to filter out mods that will no longer load

calm nebula
#

Me: hey Google how do I debug this obscure verilog error

#

Google: patch export

lucid mulch
#

anyway, seeing the dependency interactive page is making me very tempted to rewrite my profiler site again

#

I'm not happy enough with my current data visualization

uncut viper
#

well it errors out loading the json at around line 246,000 or so and i dont have the time right now to debug that, but i will at some point soon bc the data structure is like basically identical except for whatever this is its erroring on

#

i guess RawData.Id used to be an int[] and now its just an int. shrugs

lucid mulch
#

in my typescript code I had to JSON5 load it as it had some naughty stuff in it

uncut viper
#

i lied i fixed it and ill justr ctrl z it after. CP still dominates

#

the biggest blob to the left of it is JA

lucid iron
#

where is DGA on this

#

i thought it was rising

lucid mulch
#

the old cache data structure does have a fun quirk at least for nexus section where it know multiple mods came from the same nexus entry, and so you could clump the various SVE sections into one that has the combined dependency graph

uncut viper
#

dunno! I've left my desk now. it's movie night time so that screenshot is all you're getting right now

calm nebula
#

Gasp! Work life balance????

uncut viper
#

the new structure also does that too Im pretty sure, it was an intentional choice not to clump them

lucid mulch
#

I've been "at work" for the last 2-3 hours and still haven't logged into teams

calm nebula
#

I regularly don't log into teams at woek

#

||but also we just email||

sour sleet
#

Yay, managed to get my first custom bundle done! Never used UB before or used queries so learnt lots of new stuff tonightSDVpufferparty

ivory plume
#

Monthly mod stats time!

Mod compatibility

76.2% of SMAPI (C#) mods are compatible or have a workaround, up from 75.4% last month.

Unique mods by type

We have 285 more mods this month. That includes:

  • +179 Content Patcher;
  • +52 SMAPI;
  • +31 Alternative Textures;
  • +28 Fashion Sense;
  • +4 Farm Type Manager;
  • +2 XNB;
  • 0 Better Artisan Good Icons;
  • 0 Custom Furniture;
  • 0 Dynamic Game Assets;
  • 0 TMXL;
  • -2 Custom Music;
  • -2 Mail Framework Mod;
  • -3 Shop Tile Framework;
  • -4 Producer Framework Mod;
  • -5 Json Assets;
  • and +5 for frameworks with <100 content packs.

Content Patcher packs

We have 10,929 Content Patcher packs.

The top five Format versions are still...

  • 2.0 (3,350 ↗ 3,356), 2.3 (764 ↗ 776), and 2.4 (554 ↗ 575) for Stardew Valley 1.6;
  • 1.19 (566 →) for Stardew Valley 1.4;
  • and 1.3 (477 →) in old unofficial guides.

Open source

  • We have 3,365 tracked C# mods, of which
  • 2,185 mods (65%) have a source code repo, with
  • 1,168 (53%) in a multi-mod repo and 1,017 (47%) in a single-mod repo.

Web costs

And finally, web hosting costs for the SMAPI.io site, update-check server, and API rose to US$208/month due to increased web usage. (The graph is always a bit behind due to billing cycles.)

See also

And that's it for this month!

brittle pasture
#

~~+2 XNB SDVpufferwaaah ~~

calm nebula
#

Why is CP 2.0 still going up and quite fast XD

lucid iron
#

mod stonks

ivory plume
#

(One day the world will collapse into nuclear fire, and the next day someone will release a new XNB mod.)

trim sand
#

im not sure i understand what xnb modding would even be.

lucid iron
#

take Map/springobjects.xnb, unpack it, change the color of O390 to pink, pack it

#

as you can imagine it's pretty bad for compat

trim sand
#

oh no

ivory plume
#

(It's a way of modding without the use of any mod loader or frameworks, by directly replacing whole game files.)

trim sand
calm nebula
ivory plume
#

(I'd much prefer the Content Patcher 1.0.0 mod; it'd probably still work fine, it just wouldn't be able to use fancy newer features like tokens or conditions.)

tiny zealot
#

rip "for mysterious reasons" my beloved SDVpufferwaaah

next plaza
median forum
#

truly that's the most bleak part of the upcoming nuclear annihilation

next plaza
#

Convenient that you can just check your emoji list for items in way, though still not as useful as

#

!stone

ocean sailBOT
#

🪨 The item ID for Stone is 390.

worldly sundial
#

Does anyone know why ObjectListChanged is only getting called on the farm for a client? Similarly is LocationListChanged supposed to get called on clients? It seems to never get called for me

next plaza
#

@uncut viper Oh, and a friend of mine said you should try a more heavily modded game next. Maybe Minecraft or Skyrim? 😛

I told them your browser (and probably computer) would explode upon opening it, though

lucid mulch
#

tbh those games don't have as rich of a dependency tree

next plaza
#

I thought we had a wiki page on this (whether on main wiki or modding wiki) but I can't find it

lucid iron
#

i have this tho

#

cursors too big

next plaza
#

(Still hiatus-ing, just saw the question and thought I'd answer while here)

lucid mulch
#

I vaguely remember a pathos message about how the smapi events are delibrately withheld even when the farmhand was in the location at the time

next plaza
calm nebula
#

(You don't have to justify the hiatus to anyone)

lucid mulch
#

but my search-foo isn't having much luck

lucid iron
#

well it'd be downscaled...

#

hm i wonder

calm nebula
#

Plus we all know you're temporarily loaned to Minecraft

next plaza
#

I already can't see the full size version of the springobjects one

lucid mulch
#

wait is the minecraft SpaceCore getting updates again?

worldly sundial
#

The clients get networked the object list somehow though right? I assumed the objectlischanged event would work for listening, but i guess not. Since it works on the farm would there be some way to hook into it for a farmhand?

next plaza
worldly sundial
#

For the other locations, even if its just the one the farmhand is on would work

next plaza
uncut viper
queen jacinth
#

What language is Stardew Valley made in?

lucid mulch
#

C# (MonoGame / XNA Game Framework)

queen jacinth
#

I see.

uncut viper
#

i definitely wouldn't have made the graph in the first place if I was also the one who had to do the work of compiling every mod

next plaza
queen jacinth
#

I would assume it be something like Python.

ivory plume
#

If you're already familiar with Python, C# is pretty similar since they're in the same language family.

next plaza
next plaza
# calm nebula You're making active efforts!

And thanks to my ADHD I haven't gone back to it since the other day and who knows when I will. 😛

The bug I got stuck at being a non deterministic one certainly didn't help

calm nebula
#

Just make the mod then wait multiple months years to finally release it

uncut viper
#

(I've seen people release single jars that support both major mod loaders at once so surely it must be easier now to do that I'd hope)

next plaza
calm nebula
#

What's wrong with java?

#

(I do actually know what's wrong with java)

ivory plume
#

(Multiple people are typing.)

calm nebula
#

(But not in a way a c#-> transpiler would help)

#

Hmmm

next plaza
calm nebula
#

Jython?

calm nebula
next plaza
# calm nebula What's wrong with java?

Might just be past "trauma" from dealing with Minecraft's codebase in particular. It's definitely not as nice as C#. One thing I hated in particular was dealing with all the "void mymethod() throws SomeException { ... }" stuff

calm nebula
#

Oh, you have to mark what each method can throw?

#

Clearly we need a Rust to Java

next plaza
calm nebula
#

Two of atra's favorite things. Too much coffee and oxidation

next plaza
next plaza
#

More translation layers can only be beneficial and will surely have no downsides whatsoever

calm nebula
#

Tbh i don't even have a like desire to write java

lucid iron
#

magick -compress LZMA -quality 40 Cursors.png CursorsCompressed.webp imagemagick is the right answer every time

calm nebula
#

In theory either Go or Zig is next up for me buttrttttt

next plaza
calm nebula
#

The JVM does have weakref

#

I wonder if you can get a decent ReadOnlySpan mock with that

lucid iron
#

i feel like i understand why nexus thumbnails look the way they do now

lucid mulch
#

The Minecraft mod scene also has Scala kicking around that looked terrifying.
not sure if kotlin ever started being used or not

next plaza
regal grail
#

Hello! I am new to making mods, and was looking for help. I've seen a few other posts on reddit and such talking about getting help in the stardew valley discord server, so is this where I'd come to ask questions, or is there a better place for something like that?

tiny zealot
lucid iron
#

here be the place ask away

tiny zealot
#

a sensible decision with terrible effects on pixel art

hard fern
#

😔

regal grail
#

Wonderful! So, I'm using content patcher as I know nothing of C#, and so far it's been fine, however I'm currently trying to get mail to send the following day after viewing a specific event. Currently I have it in a test mod and get no errors, but it doesn't work. I was checking the wiki but it admittedly isn't the easiest to read and understand when this is the first of done of anything like this

tiny zealot
#

if you've added your mail to Data/mail, and it's called e.g. Succuless.firstmod_EventMail, you would put
/mail Succuless.firstmod_EventMail as one of your event commands. probably first thing, so the player won't miss it if they click skip

#

(of course you should use content patcher's {{ModId}} token for your convenience, but that's another topic)

worldly sundial
regal grail
tiny zealot
# regal grail Thank you! I'd like to make sure I know how to add the mail correctly. So, it's ...

the id of the mail is the key for its entry. this asset is a dictionary, or map, or key-value store. here's a snippet:

{
  "Robin": "Hey there!^I had some extra wood lying around... I thought maybe you could use it. Take care!  ^   -Robin %item id (O)388 50 %%[#]A Gift From Robin",
  "Demetrius": "Dear @,^I was conducting a field study the other day, and I found this specimen. ^I hope you find it as interesting as I did.    ^   -Demetrius%item id (O)392 1 (O)394 1 (O)132 1 (O)66 1 %%[#]A Gift From Demetrius",
  // ...
}```
#

take the first entry ("Robin"). the key (which is the mail's ID) is Robin, and the value is Hey there!^I had...

upbeat mango
#

May I ask something

tiny zealot
upbeat mango
#

I'm confused on how to make a door open in tiled

lucid mulch
#

-# (Don't ask to ask, just ask)

regal grail
tiny zealot
#

the part following [#] is the mail's player-facing title, which is shown in the collection menu when you go there to reread mail you have received

lucid mulch
upbeat mango
#

Thank you

tiny zealot
#

we could probably write a dissertation on how to choose IDs for your stuff, but broadly speaking you should use your mod's unique ID everywhere you are allowed, to guarantee uniqueness among all installed mods

#

content patcher provides a token called {{ModId}} which is automatically replaced with your mod's ID, so it's pretty easy to do

#
{
  "Target": "Data/mail",
  "Action": "EditData",
  "Entries": {
    "{{ModId}}_MailFromMyEvent": "Hey, farmer! This is the mail you should be getting after my event plays.[#]The Mail from the Event"
  }
}```
(insert second dissertation about i18n, which is truly a topic for a later time)
regal grail
#

Ah, that would be handy, and would explain why it was on the wiki a lot. I'll keep that in mind. In good news, I followed the instructions and got it to work in my game! And, not to bog you down with too many questions as I'm sure you have better things to do, but is there a way to send mail based on heart level? Like mail that sends the next day after achieving 2 hearts with a character?

lucid mulch
#

also the transition from 1.5.6 to 1.6 was fairly major and collectively took action to try and ensure having namespaced identifiers everywhere is best practice and the norm

tiny zealot
regal grail
#

I was actually trying to use trigger actions to get the mail to send originally, using the "PLAYER_HAS_SEEN_EVENT" condition, so I've looked into them a little bit and can probably(?) figure it out. Is it under conditions?

#

I'm guessing the trigger would be day ending, and then it'd be a condition and the action would be addmail

tiny zealot
#

yeah, that should do it. DayEnding, PLAYER_HEARTS, AddMail tomorrow

regal grail
#

Alright, I'll try that and I'd imagine I can get it working. If not, at least I know you guys are kind people! I was honestly worried about asking stupid questions and looking like an idiot, but thank you very much, have a great night!

wild viper
#

My NPC is moving according to the schedule but isn't doing the animations like sitting etc

pine elbow
wild viper
#

I dont really know the format

pine elbow
#

And, follow up, are they correctly tiled on your sheet?

pine elbow
#

Could you send your sprite sheet and the json containing the animation code?

wild viper
#

for example if I go inside the house theres a chair which I, the player, can sit on, but the npc does not do the sitting animation they just stand on the chair

pine elbow
#

Ahh okay. But are they performing the sitting animation? As far as I know, you need special code to have characters sit on map benches and such. I'd take a peek at Penny's code and try to find where that is

ornate locust
#

You need to make the animation

#

hang on, let me find mine

#

here we go, you need to make a sprite of your guy sitting and make an animation for their schedule

pine elbow
#

So no special code? Hm. I must've misremembered

ornate locust
#

I mean, if there's special code to just make them sit, I don't know about it. It's an animation where they take a sitting pose and are placed on the chair

#

be warned, you might need to offset it to actually make them sit on the right part of the chair

wild viper
ornate locust
#

WEll there's how you hook it to an animation

pine elbow
ornate locust
#

and here's what my sitting one looks like, it's just the one frame

pine elbow
ornate locust
#

After you do this, you will call that animation in their schedule

pine elbow
#

I also believe that when counting sprite sheet tiles, the first tile is 0 and then 1, so keep that in mind

ornate locust
#

Keep in mind that laying_down will remove their shadow so you don't have a weird floating shadow if you need an offset

#

"{{ModID}}_bill_saloon_lunch": "43/43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 43 42 42 41 41 42 42/43//offset 16 16/laying_down",
for example, this is a bit I made so he could sit on a stool in the saloon and eat lunch. I had to offset it to put his butt actually on the stool right

#

which is how you get around the clipping problem you were having, Sage

#

You offset them so they don't clip

pine elbow
#

Offset........please explain that to me like I am. 5 years old /silly

ornate locust
#

It's just shifting the thing you made over by however many pixels

pine elbow
#

Okay okay I think I see

ornate locust
#

Fine-tuning the placement

pine elbow
#

Ty I will keep this in mind when i update Margo's spritesheet

ornate locust
#

You also generally want to use laying_down if you do that so their shadow isn't in a weird place

#

Also notice the // double slash there, that's something it says on the wiki:

f you want to use offset or laying_down without a message, leave that spot empty. Example: offset/laying down without message: "haley_beach_towel": "20 20 21 21 21 21 21/22/21 21 20//laying_down/offset 0 16"

pine elbow
#

I'm sealing this info into my brain thank you

ornate locust
#

I had a real "butt on chair" fight with some of the schedule locations

#

Also if you want a big animation, bigger than your one dude, (like fishing or Clint blacksmithing) that takes you into Spacecore

wild viper
#

will patching data/animationdescriptions even work for 1.6 content json?

ornate locust
#

eh?

#

I'm not sure what you mean?

#

this isn't an outdated way of doing it, I did this on the new game patch and it works

wild viper
#

oh okay well you said look at other npcs to try and learn the format so I looked at aspen and she uses data/animationdescriptions but idk if that still works or not

crude plank
# inland rain what's the conflict with them?

once the chests are being organized by Ultra Organized Chests they have a GlobalInventoryId and are no longer "seen" by Craft and Build from Containers. Just to mention, i've been using mouahrara's unofficial update of Craft and Build from Containers, i know you've been going through some updates from them

ornate locust
#

I'd generally recommend looking at NPCs updated for 1.6 just in case, but many old ways of doing things do still work

pine elbow
#

But it should still work

wild viper
#

Well I don't wanna be outdated right? Might as well try the new format

ornate locust
#

it just lets you tell it what frame of your sheet you want it to show while your guy is in that spot

pine elbow
#

I'm itching to mod but my head hurts SDVpufferwaaah

#

And I also have my half of an art trade to finish...sigh...Margo will have to wait

orchid glade
#

Are there events that aren't events? I can't find an event associated with this precondition: "66/e 295672/t 600 700/H"

#

i.e. 295672

royal stump
#

there are events generated by code (and various hardcoded flags), but that one seems to be for getting 60 items in the museum, according to Data/MuseumRewards

"RewardActions": [
  "MarkEventSeen Host 295672"
],```
orchid glade
#

Ahh okay. Thanks for checking, I couldn

#

(oops premature send)

#

I couldn't get searching within json files working for some reason so I was coming up blank

royal stump
#

SDVpufferthumbsup I use this setup in notepad++'s ctrl+shift+F menu, in case it helps

orchid glade
#

I'm on mac using VSCode. I'll look up later how to adjust the search - I could search but it wasn't clear what files were in scope or how to change it, as it only found one instance (from an open file). Also it usually works in finder, but when I used that it only found it in json's I'd downloaded (ie mods), but not the ones within the unpacked stardew files, which is weird and annoying.

royal stump
#

ah, yeah, I've never touched VSCode and some editors can be weirder about it SDVpufferdizzy

lucid iron
#

vscode has a search in the sidebar

orchid glade
#

Yeah that's what I was using, chu, but I coudn't see where to point it to the right place. I think maybe it's set up to not have access to everything?

lucid iron
#

i opened the content (unpack) folder

#

if you did that then check your filter '

orchid glade
#

Opened the folder in VSCode? (I usually jsut open individual jsons)

lucid iron
#

yea thats what i usually do yggy

#

and how you search a whole folder

orchid glade
#

Ahhhh awesome, you're a legend

lucid iron
#

also lets you ctrl+p to quickly go to a different file

orchid glade
#

it's a whole new way of using software (for me) heh

#

Still perplexed why finder wasn't doing it for me though

rigid oriole
#

The finder only searches in the currently open project scope

lucid iron
#

anyone know any vanilla style waterfall tilesheets

#

looks like the vanilla one but longer i mean

orchid glade
rigid oriole
#

Oop my bad

primal rover
#

Question out of curiosity, is the doc still up to date regarding macOS not being able to run debug mode (to make changes without restarting SDV each time) or is there a workaround for this? I have trouble finding the specific wiki page where I found this yesterday, it seems the search tools in the wiki keep giving me a hard time (I know I’m searching for terms I am 100% sure are on that page but it gives me nothing)

vernal crest
#

I'm assuming you're talking about Rider? I was under the impression that debugging and hot reload are different things and that some people have managed to get Rider to hot reload on Mac but that possibly it was at the expense of debugging.

#

Searching discord, I am seeing people mentioning having issues with hot reload on Rider on Linux. Not seeing any mention of macOS.

primal rover
#

Yeah indeed the hot reload. I’m actually working with VSCode now so I may give Rider a shot instead (haven’t tried it yet) since I think I might have that installed.

I’m not very interested in the breakpoint/debugging anyway at this point, just the continuous restarts tripping me up

vernal crest
#

Hm I just found a message from focustense saying that hot reload is broken on Mac using Rider. But if you search the discord for hot reload yourself, you might find something useful for you rather than me trying to do go-between searching where I might miss something.

primal rover
primal rover
#

I’ll try rider since ichor seems to mention getting that working

#

Never mind I read that wrong, it was while running through terminal. I’ll investigate

vernal crest
#

Yeah I was going to suggest trying ichor's terminal approach if there's enough similarity between Mac and Linux to make that feasible

primal rover
#

Yep and I may have found some other clues with targeting NET8. Kind of stupid I forgot it was called hot reload, so big thanks for that. I guess I took it for granted on windows too much 😂

vernal crest
#

No problem, hope you can find something that works for you!

primal rover
#

If I do, and if I find the mystery doc again, I’ll update it for others

clear oxide
#

Has anyone made a UI maker ? I hate having to make UI stuff 😭

median forum
#

is it possible to make it so that a heart event can't start until X amount of days have passed since the previous one?

primal rover
#

I think you’d have to store the last event time then and add a condition that checks if x amount of time has passed.have your tried anything yet?

#

From what I’ve seen so far that does not seem out of reach.

flat sluice
rough lintel
median forum
#

oh no i haven't tried anything, i was just thinking about it while i'm sitting here at work rewriting my heart events

#

amazing

#

thank you all!

primal rover
rough lintel
#

all you do for the next event in the preconditions is check that the CT isnt active

#

conversation topic

median forum
#

bless

#

i didn't really want the player to be able to rush things hahah

brave fable
#

yep, conversation topics are essentially timed flags. mail is a basic flag, and doesn't come with any received or expired dates. once the conversation topic is up, it's removed completely

median forum
#

that's great to know

#

thank you!

brave fable
vernal crest
# median forum that's great to know

Sword and Sorcery makes liberal use of time gates for events so if you want to see examples of how to do it, that's the mod I'd recommend. Desty even made the timegate configurable so users can decide if they want it to be 3 days between events or a week etc (don't remember the actual numbers)

exotic fiber
#

erm how the flip do I make mods?

#

i have an idea for one

proper bobcat
#

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

inland rain
crude plank
#

since he made Ultra Organized Chests and i've discussed a bit with him about making Craft and Build from Containers work on chests with a GlobalInventodyId

median forum
ocean sailBOT
#

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

proper bobcat
#

congratulations!

vernal crest
#

I really like that it's configurable because it allows players to adjust to their own playstyle without removing the timegate completely.

proper bobcat
#

Irrc there's a one day timegate config as well

median forum
#

that's probably a good idea to implement. i'd hate to force players to wait as long as i think they should and then have them lose interest

proper bobcat
#

Great for the players who want to really get through the mod, although I would personally do the week myself

median forum
#

gonna make my players wait a month for pierre to get over his divorce before dating again (i am not actually going to do this)

vernal crest
#

I really need to work on getting Hiria's relationship gating set up. I've been procrastinating on it forever.

median forum
#

seems like there's always something else to do, i bet

vernal crest
#

Yup, especially when I'm trying to rotate between things equally so I don't end up with a bunch of just one mod task to do at the end. Have to ensure I don't lose interest and lack of variety is guaranteed to do that.

median forum
#

absolutely

inner harbor
#

I should set Aideens 14 heart event to run without marriage soon. Kat, Tristan and Victoria still need 14 heart events. I know what to do for Tristans, the others... theyll be complicated.

pine elbow
#

Good morning mod making general

vernal crest
#

It is 11pm lol

#

I skeep now, have a nice day Sage!

tawny ore
orchid lily
#

Hello, Is there any way to modify other mod's i18n files with a mod as I only want to modify certain tokens to match what I have

cosmic thorn
#

it wont work like that right?

{
  "Action": "EditData",
  "Target": "Data/Events/Custom_TestHouse",
  "Entries": {
    "805272/f Testy 1000": "long..."
  }
}
lucid iron
orchid lily
hard fern
#

😔 i think I'll work on gift tastes some more, and then i need to work on overhauling my map ... I think it was too small, the last time

shut sun
#

Hello SDV modding community!
I’m looking to make a small mod that adds a custom npc to the game, along with things like a house, events, complete sprite sheets etc to have the npc fully integrated into the game. I’ve seen that there are guides on the SMAPI wiki on how to make mods generally, but was wondering if there were guides or anyone that’s able to give instruction on making an npc with a storyline from the ground up? I’m an established c++/c# programmer so I’m not looking for deeply technical advice, this is the first time I’ve attempted to mod SDV so I’m a bit clueless :)

hard fern
#

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

hard fern
#

I don't know if this will be as in depth as you'd like

lucid iron
#

So npc stuff mostly happens via content

hard fern
#

But here's the npc specific guide and stuff

lucid iron
#

You can ofc edit content via C# but most people don't do that and just use content patcher

shut sun
#

I see, I saw that content patcher uses a tag system?

hard fern
#

Tag?

lucid iron
#

There is a lot of fiddly bits so yes pls check out the guides SDVpufferthumbsup

#

Not sure meaning of tag in this context but content patcher has tokens and conditions to do dynamic edits with

shut sun
#

Sorry yeah I meant tokens

#

Thank you both!

lucid iron
#

You can do various things in c# to extend what you can do in content so it's not that bad if you start in content patcher and go "hm my npc needs special sauce"

cosmic thorn