#making-mods-general

1 messages · Page 258 of 1

reef kiln
#

There is a guide for them. One sec.

#
Stardew Modding Wiki

This is a mildly advanced guide for modders that assumes familiarity with Tiled, Content Patcher, and map modding fundamentals such as the difference between Map Properties and Tile Properties.
Interior doors, such as the one in Figure 1, are interactive map elements with hardcoded behaviour (see InteriorDoor.cs). There are three types in the b...

sour sleet
#

That's really helpful, thanks!

dusk mulch
#

Will HasFlag still work if the mailflag is an actual piece of mail?

ivory plume
#

Yep, mail flags are stored the same way regardless of whether there's an associated letter.

latent mauve
ivory plume
#

Do you mean these paths, or something else?

latent mauve
#

I would have thought it was

#

which is front of some of the houses, with more variants by the bridge

#

They probably meant these guys:

fierce vault
#

yup, that’s it

#

Sorry, i had left the chatroom for a little while

reef kiln
#

I have never seen them done as a seperate mod. There is the vanilla ones that are kind of like them but not the same.

lucid iron
#

you need to find 16 of these somehow

fierce vault
#

I do not know where thay are stored in the tilesets yet either. This pic is from SVE by the way. Not sure if it changes the look of them slightly or anything.

latent mauve
#

There are 8 immediately in sight on the spring_outdoorsTileSheet

#

+3 of those little grass sprout tiles

ivory plume
fierce vault
latent mauve
#

it's above the right tunnel wall

fierce vault
#

What realized though is that the stones look so nice because there is shading with the path’s color itself. That might make them look different or be bad for recolor compatiblilty, because I’d need to keep the dirt shading in or leave it out.

lucid iron
#

you will have to make recolor compatibility yes

uncut viper
#

there are CP tokens for whether youy have children or what their names are

#

so you can do that yes

fierce vault
lucid iron
#

the individual is you

fierce vault
#

True enough

#

Thought if I made it though I might as well share it.

uncut viper
#

there isnt really gonna be a template rfor it, its just tokens

#

i dont know any mod that uses them

#

you use them the same way you use any other CP token

lucid iron
#

i think its ChildName | at=0 and ChildName | at=1

uncut viper
#

no, ChildNames |valueAt=0

#

you will also want to make sure ChildNames has any value at all first

lucid iron
#

{{ChildNames |valueAt=0}}

#

ah good button got it Dokkan

uncut viper
#

only one dialogue per dialogue key can exist. thats just how it works

#

if two mods add dialogue for the same key only one will win

#

which one wins is controllable

#

like i said ,its controllable, so it depends on the priority each mod sets. also, yandere mods arent allowed to be discussed in this server, fyi

#

depends on priority and ofc conditions*

ivory plume
#

Each dialogue has a specific key, and the game will choose the first key which exists in its priority order (i.e. the order listed on Modding:Dialogue).

For example:

  • If mod A defines a <dayOfWeek><hearts> dialogue and mod B defines a <dayOfWeek> dialogue, only the first is shown because that key has a higher priority.
  • If two mods define the same dialogue key, whichever one is applied last is shown.
uncut viper
#

the best way to know which mod will win is to try it in game. second best way is to look at the mod files to see which is set to load first/use a higher priority

lucid iron
#

you can make the mod you want to win depend on the other mod to ensure it happening

uncut viper
#

(that would still depend on if the other mod specifies a later priority on their patch i believe?)

lucid iron
#

yea this is only if everyone's on Default

#

Priority

uncut viper
#

if A has a higher prioprity then B is applied before A

#

Option B has "early" priority. it sets the value of "RandomDialogue" to "Hello!"
Option A has "late" priority. it sets the value of "RandomDialogue" to "Goodbye!"

#

they both get applied, but they set the same value

#

also i meant option A for the second line

#

since they are applied in order and set the same value, the one that applies last wins

#

it will overwrite the "Hello!"

ivory plume
#

(Just to avoid confusion, there's two levels of priority here: the order in which the game checks for dialogue keys, and the order in which patches are applied. The patch priority only matters when editing the same dialogue key.)

uncut viper
#

correct

hot gale
#

What do I need to do for a custom NPC to 'wander'? Do I need to schedule movement from tile to tile at set times? Can it be randomized in a way that perhaps slaps a 'generic' AI on them where they perform basic functions? I have added a few NPCs to my new custom location and they just stand there.. not sure what to do with them exactly as far as making them feel alive

uncut viper
#

and unless specified otherwise, all patches have Default priority

#

so at that point, its determined by mod load order basically

calm nebula
#

Animation key

#

See how Emily uses it in the saloon

hot gale
#

Cool, thanks for the tip!

sour sleet
#

Ok so I still have transparent doors. I've used this example but I'm confused about the "FromFile" part. I basically want to use the base game door on a custom map. I put my FromFile as townInterior.png but obviously it's not in any of my mod folders as you can't do that

hot gale
#

townInterior.png is already in the Maps folder so it can be called like Maps/townInterior.png

uncut viper
lucid iron
#

did you sleep in the place with doors?

uncut viper
#

afaik

lucid iron
#

try leaving and coming back

sour sleet
sour sleet
uncut viper
#

i know. im saying ignore the Custom Interior Doors section, which is where that Patch townInterior section is

#

you just want the top half of that wiki page

sour sleet
#

Oh, the guide says to do a patch when the door is transparent

uncut viper
#

only if you are using custom interior doors

#

a transparent door being there is not limited to custom interior doors

sour sleet
#

Do you know how to fix the base game doors being transparent?

uncut viper
#

thats just what happens if you have the doors set up wrong

#

usually if the tile action/property does not match the Map property i believe

latent mauve
#

The Doors map property is what makes them solidify, I think

#

(which is not to be confused with the Tile action, for clarity's sake)

sour sleet
latent mauve
#

Awesome! I'm gonna step away for a bit and find some dinner, consider this a general reminder to stay hydrated and eat something today ❤️

uncut viper
#

good luck finding the dinner, bring a map if u need to

grizzled crescent
#

Image 1: My wallpapers overlayed Vanilla to show they are same height,
Image 2: For some reason there is a bar under the wall and I'm not sure why D:
Image 3: Shows I have the dimensions to 16x48
Image 4: My actually mod texture image.

I am not sure how to fix the issue with this bar showing up under the wall, hopefully I added enough context.
Inside of my farmhouse is the vanilla farmhouse.
(I deleted the other one so there isn't a double post in chat)

uncut viper
#

if you posted it very recently and no one responded, its likely that theres just no one around who has the answer

#

deleting the other one doesnt mean its not a repost

#

unfortunately sometimes niche issues just need to be posted at the right time and maybe right phase of the moon in order to capture the handful of people who may know

#

unsure about the moon part but it cant hurt

grizzled crescent
lucid iron
#

is this AT

grizzled crescent
lucid iron
#

possibly just AT bug bolbthinking

uncut viper
#

(moreso just trying to assure that you're not being purposely ignored or anything, multiple convos are common and all and people just dont tend to respond if they arent confident in the answer! wrong advice is sometimes worse than none after all)

lucid iron
#

since we r 1.6 land now perhaps you can do CP way?

#

my 1.7 wish is

#

make Item hashable somehow blobcatgooglyblep

uncut viper
#

an item is already hashable as long as its (O)192

lucid iron
#

they have too much state tho

#

oh i mean implement whatever C# uses to check HashSet

uncut viper
#

dont make me explain the joke

lucid iron
#

wow perish

uncut viper
#

unrelated question but for a custom museum framework does anyone have any strong or even slightly above average strength opinions on whether or not itd probably be better to like, use a GSQ to determine if an item id donatable vs just a user-defined list of item ids and/or context tags and/or categories
i have it set as the latter right now but thats just cuz i was mimicking the vanilla MuseumDonationRequirement

lucid iron
#

if you use a GSQ then i'd be able to make an item only donatable during the summer

uncut viper
#

on one hand a GSQ is more flexible but on the other hand i feel like it might lead to some weird "sometimes donatable, sometimes n ot" shenanigans

#

and idk if those shenanigans will always be desirable or intended

#

it would also get in the way a bit of my planned failsafe for "what happens if a mod updates and an item that WAS donatable, is no longer donatable, but is already donated" which was to just pop em off the shelves

#

but that becomes a lot trickier if it is also effectively impossible to determine when something is donatable

lucid iron
#

well, that happens with context tags too

uncut viper
#

via code

#

do items keep their context tags even after a game restart if the tag was removed from the data?

#

either way the current check relies on base context tags anyway

sour sleet
#

What's the etiquette with custom tilesheets modders have uploaded to Nexus? Am I allowed to use them in my mod or do I need permission first?

uncut viper
#

not the tags of the actual item in the location

uncut viper
#

if they do not tell you their permissions, then you do not have permission

sour sleet
#

Awesome, thanks

uncut viper
# uncut viper not the tags of the actual item in the location

to add on to this, the current way a custom museum (and the vanilla museum) checks if an item is donatable is to iterate over every object in the itemregistry when the location is created and check its ParsedItemData to see if it qualifies aka has the right tag set. so my plan was to use that iteration to check if there was a not-donatable item already in the donation during this check. but with a GSQ i dont think i can do that, since i cant determine if a GSQ is immutably true or false unless its literally "true" or "False"

lucid iron
#

that said i dont see why you would check the donated again, just toss all the things in a global inventory

#

restore it from there and trust that it's correct

uncut viper
#

the point was that i did not want to trust its correct

#

and wanted to offer a failsafe if it isnt

lucid iron
#

then if i donated a SEASON Summer GSQ thing, do you yeet it on Fall 1

uncut viper
#

i mean i think ur just reiterating my point of why i wasnt sure if i wanted to use a GSQ

lucid iron
#

yea certainly, im exploring the ✨ implications ✨ with you

uncut viper
#

there are tradeoffs and i wanted to know if people had strong opinions on the GSQ thing

#

to determine if its worth the tradeoff

lucid iron
#

it's hard to add context tag on some items i think

uncut viper
#

i was actually thinking of fresh farm produce when i was thinking about tags originally

#

a museum for only fresh items

lucid iron
#

but they become stale...

uncut viper
#

preserve them in epoxy resin itll be fine

#

like a mcdonalds cheeseburger

lucid iron
#

i do feel like, if you are going to support GSQ then you will have to give up on rechecking anything less dire than error item

uncut viper
#

if i do go with GSQ i would probably add an item retrieval thing to the museum instead, alongside rearranging

lucid iron
#

the talk we had weeks ago about folly of wanting item invariant gsq apply here

uncut viper
#

which is just more work SDVpufferpensive

#

i just wanted to see if there was something i could do to prevent like. a user filling up every museum slot available, then the mod updates and adds 5 new donatables and removes 10 others that they decided should not be donatable, making the user stuck

lucid iron
#

i feel like this is a regenrate_bundle kinda situation: some wacky thing happened but you can fix it with this console command

uncut viper
#

there were also plans for a console command

lucid iron
#

rather than something you actively check persay

uncut viper
#

i always kinda loathe having to use a console command to do anything though

#

as a player

tiny zealot
uncut viper
#

the problem isnt with that, its with determining what goes in the lost and found

#

and what stays on the shelves

lucid iron
#

sending stuff to the mayor house lost and found is simple

uncut viper
#

if all items are donatable based on a GSQ i cant determine what was or possibly will be still a valid donation

tiny zealot
uncut viper
#

if theyre donatable based on a set-at-runtime, immutable list of values though, thats different

#

set at launch imean

tiny zealot
#

if it's helpful to you, i use GSQs for availability in secret note framework and i just explicitly only check them once a day

uncut viper
#

given how important the whole "how to decide whats donatable" thing is to a custom museum tho its somethin i wanted to stop and give more thought to before i put too much more work into a system that will entirely depend on it

#

well like chu said, what if they make an item only donatable in the summer

#

and then the user loads their save and its fall 1

#

it doesnt matter how many times or how often i check it, it will not be a valid donation item anymore

tiny zealot
#

what if you registered a trigger action for authors to use. {{ModId}}_RemoveDonatedItems <qid>+ or whatever

#

so if an author removes 10 items that shouldn't be valid anymore, they can set up the TA to remove them from their museum when the save loads

uncut viper
#

that only works if they know exactly what items to remove

#

which they may not from a GSQ-based condition

tiny zealot
#

don't they? they updated their mod to remove them from the valid list, didn't they?

#

in your hypothetical

uncut viper
#

what if their condition used to be ITEM_CONTEXT_TAG scarecrow_item

#

and then they changed it to only be something else

#

sure, they can remove all the vanilla scarecrows, but modded scarecrows? how would they know?

tiny zealot
#

oh you're talking about item queries?

uncut viper
#

thats just a GSQ

#

it doesnt HAVE to be an item only GSQ, but itd be the most useful

#

but importantly no that is not an item query, that is still just a GSQ. it checks whatever item is passed into it, it does not generate any items on its own. item only GSQs and item queries are different things

versed wyvern
#

Anyone happen to know, if a character's schedule has them do the random sandbox radius in an area with other NPCs, do they avoid walking over one another or not? Would like to minimize NPC clipping if I put them near each other

green patrol
#

heeey couple of random questions regarding machines...

  1. so the mod I'm porting atm has a machine that takes no input and then produces an item every couple of in-game hours (this item is then used as fuel for another machine from the mod, hence why it only costs time to produce). But uh...I've never made a machine that does that using content patcher? I tried to base the code off of the code for the solar panels and worm bins from the game, but it's not generating any output like I'm expecting.

  2. the mod also had animation frames for the machines. If I'm understanding things correctly from the wiki, I do a WorkingEffects field and then inside it I use the Frames element of that? And then if say, my machine is at index 32 on my sheet and I have 7 frames I put [33, 34, 35, 36, 37, 38, 39] as the value for the Frames property?

This is the file for the machine in question: https://smapi.io/json/none/4184d9b04d6c4827b9e9145e0b29803e

#

it works if I define it in the way I'm used to (a machine takes an input and converts it to an output) but I'm having a bit of trouble with the no input one 😓

lucid iron
#

why did you put 6 think

#

trigger should be OutputCollected, MachinePutDown i think

vernal crest
uncut viper
#

i am not binding a "Reset your museum progress" command to a hotkey

vernal crest
#

Yes I am here just to say stupid stuff

#

I have nothing useful so this is what you get

uncut viper
#

thank you i think

vernal crest
#

It's a form of moral support

green patrol
#

so I thought that it'd do something similar

lucid iron
#

ig 110 is 6

#

so it might work yes

uncut viper
#

where does worm bin put 6

lucid iron
#

frames should be relative

#

so like 1 2 3 4 5 6 7?

green patrol
tiny zealot
#

button, if i were doing the museum framework and i wanted to use GSQ, i would just allow queries that become invalid later to cause items to get punted out to a lost and found, and tell authors (chu) not to write queries that change over time

uncut viper
#

neither of my worm bins say that in my unpack

lucid iron
#

2 | 4 = 6

vernal crest
#

Ok here is my attempt at a useful contribution: have you come across any demand for the GSQ approach so far? If not, would it be a gigantic PITA to begin with the non-GSQ approach but change later if demand for the GSQ approach appeared later? Would it be more than if you did all the work for the GSQ approach now and then nobody used it?

If these questions are just as useless as my hotkey suggestion joke, pretend this message doesn't exist meow_sticks

lucid iron
#

im guessing they use a different xnb unpacker?

#

that isnt stardewxnbhack

#

but you should use OutputCollected, MachinePutDown for readability

green patrol
#

oh okay

#

I used the lybell-art github xnb unpacker, I didn't realize there was another one

lucid iron
#

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

lucid iron
#

tis the recommended one around here and it'll do ur whole Content folder at once

green patrol
#

o noice

drowsy pewter
#

stardewxnbhack is specifically for stardew and has some features to untangle stardew stuff

green patrol
#

so I do OutputCollected and MachinePutDown instead of 6, and fix the frames, and it should work then?

uncut viper
lucid iron
#

lets fix one problem at a time

#

comment out the WorkingEffects section and try putting your machine down in game

vernal crest
lucid iron
#

see if it starts wobbling

#

and if u can get water

green patrol
#

o yeah that's a good idea

uncut viper
#

no ones requested features thus far. its not a PITA to do it right now, but it would be basically impossible to not be a breaking change if i wanted to do it later, and deciding what to do now affects the implementation of the things i need to work on next

#

re: just telling authors to not use queries that can become false again, i am also a little worried that some GSQs may not become false again per se but may not be like, determinable at the time the location is created

lucid iron
#

i think ichor means

#

if i release a mod where the donate requirements are SEASON Summer this is my fault not yours

uncut viper
#

i know

lucid iron
#

while your framework should just behave assuming GSQ only become false due to catastrophe

uncut viper
#

im saying like even if the GSQ is PLAYER_HAS_MAIL Host myFlag, can i even reliably see what the mail flags the host has at the time the gamelocation is instantiated?

#

and if i can for mail flags, can i guarantee that for everything?

green patrol
#

it works :)

lucid iron
#

then do the frames fix next

uncut viper
#

like LOCATION_ACCESSIBLE, for instance. whats the earliest i can reliably check that, and is it earlier than my museum is created?

lucid iron
#

ah i see, that is problematic yes yggy

uncut viper
#

i hadnt thought about that aspect until just now

green patrol
#

yep yep. will report back shortly!

uncut viper
#

itd make all the items pop off, though

lucid iron
#

i suppose u can defer the check to player Warped if you just keep holding the thing in global inv

uncut viper
#

the things arent actually in a global inventory

lucid iron
#

actually how r u holding the things rn

uncut viper
#

not right now, anyway

#

same way vanilla museum does

dusk mulch
#

What label does fish and cooking food types use? Like objects use (O)

uncut viper
#

its a Dictionary<Vector2, Item> on LibraryMuseum.cs

#

and it iterates over that in the draw code

#

(tho its not LibraryMuseum.cs its CustomMuseum.cs)

lucid iron
#

oh it just serialize right then into save huh

uncut viper
#

i hadnt considered a global inventory before, but i still dont know the snorlax method for a GameLocation anyway

lucid iron
#

well u can still defer the check to warped since if u pop it off as debris

#

the player's gotta be there

uncut viper
#

bc the class itself has a buncha overrides and custom code in it that would be a major pain in the ass to do via harmony patches on regular ol GameLocation instyead

#

i guess it wouldnt be that bad to just defer to save loaded, that should have everything

#

saveloaded instead of warped bc if i send them to lost and found instead ideally theyd know asap

lucid iron
#

i think the message thing need to be night before doesnt it

uncut viper
#

what message thing

lucid iron
#

the general "thing sent to lost and found" popup

#

u can just hud message urself tho

uncut viper
#

i can just send a letter

#

i was gonna start wondering again if there was a way i could use global inventory to replace the need to serialize at all and save myself a dependency but i forgor i wanted to subclass Quest anyway

#

maybe. undecided

lucid iron
#

if i was to use global inv to not subclass GameLocation

#

i would let people mark tiles as display with TileData

#

and store the previously known coord on modData but do stupid shit to reassign it should map change

uncut viper
#

thats already possible

#

with the framework

lucid iron
#

but you r subclass it for purposes of not doing 9001 harmony patches so

uncut viper
#

that and the ez netfields

green patrol
#

smol update: animation fix didn't work, but I'm gonna try and see if I can get it to work by putting the animation frames on a separate spritesheet

lucid iron
#

hm im pretty sure they are supposed to be on same sheet

green patrol
#

o

lucid iron
#

did u set Interval

green patrol
#

ye

#

100

lucid iron
#

maybe this is the nonsense with LoadEffects/WorkingEffects again

#

try setting both of these (same data)

versed wyvern
#

There wouldn't happen to be something that lets me apply the player's hair color to other assets, would there? Like if I want a representation of the player to appear in a photo and their hair color needs to match

lucid iron
#

if it's an event i think u can fake it by putting farmer actor there

#

if it needs to persist then no this is big pain PecoSmile

versed wyvern
uncut viper
#

will the farmer actor blink

versed wyvern
#

I thought so, oh well

lucid iron
#

haunted photo

#

even in C# land, you have to defeat fashion sense to make such a thing work

green patrol
#

nah it's still only wobbling

#

animations are hard. and weird

latent mauve
#

(should be tilesheet frames - 1 because the first is typically the static/non-animated)

green patrol
#

for this specific machine it's got 7 frames

#

so index 32 is the static frame

#

and then 33-39 are the animation frames

dusk mulch
#

Does anyone know if the ID spreadsheet is going to get updated?

vernal crest
#

I'm not familiar with machines but shouldn't the frames actually be numbered 32-39 if that's what indexes the frames are on?

green patrol
#

shrugs idk? I tried it both ways and neither one seemed to work

latent mauve
#

By the way, if your RequiredItem fields are null and this is a brand new machine, you shouldn't need to include those fields to set them to null in your code.

green patrol
#

o okies

latent mauve
#

Same for Condition

green patrol
#

that's how the deluxe worm bin did it so that's why I did it that way

#

but I am all for efficiency!

tawdry hinge
#

THANKS

is there a git hub?

latent mauve
#

The game/CP is smart and has default values for a lot of things if you don't include them in the code. 🙂

dusk mulch
vernal crest
latent mauve
#

That's fair, I was just making a comment

dusk mulch
latent mauve
#

Looking at the animation stuff still

dusk mulch
#

The Items page.

uncut viper
latent mauve
#

(also sometimes nulling a field is bad, so I don't like to encourage it when it's not needed)

green patrol
#

changing it back to the 33-39 indexes didn't cause the playing btw just double checked

latent mauve
#

I'm cross-checking against my laundry machine

brittle pasture
#

you need an extra pair of []s

green patrol
#

o

dusk mulch
latent mauve
#
            {
            "Id":"Default",
            "ShakeDuration":100,
            "Frames": [2,4,6,8],
            "Interval": 200,
            "WorkingEffectChance": 1,
        },```
#

this is from my machine

#

Your format's a bit off

dusk mulch
uncut viper
#

have you not been getting errors in your console Shads?

green patrol
#

nope...

vernal crest
green patrol
#

cause like it still runs, it just doesn't play the animations

latent mauve
#

You don't need to ping me twice in rapid succession, Person. I'm clearly still in the room. SDVkrobusgiggle

#

(also before anyone asks, that washing machine is 2 tiles wide, which is why the frames are multiples of 2)

green patrol
#

what's shake duration?

latent mauve
#

A duration in milliseconds during which the machine sprite should shake.

#

It's optional, not everyone wants their machines to shake

green patrol
#

oh okay. and then it just loops back to frame 2 when it's finished with frame 8 by default too?

latent mauve
#

that's what mine does, yep.

dusk mulch
#

Is there a way to add a price multipler to the whole shop instead of going through each item and adding it?

latent mauve
#

Yes

brittle pasture
#

post your code again?

latent mauve
#

Lemme open up my Leah's Art Commissions WIP, since I used that to set all prices to 30000 at once. xD

latent mauve
#

Spouse portraits, Person

fierce vault
#

Hi, when making modded floors and paths, is WinterTexture
Corner the only seasonal variation they can have? That was the only one I saw on the wiki.

dusk mulch
#

Ohhhhh

green patrol
#

(are you talking to me or to person selph?)

naive wyvern
#

Reasonable for stardew lore

brittle pasture
#

you

#

should have replied lol'

sour sleet
#

Is it possible for a custom interior to have the windows change depending on the time of day? Basically like the vanilla windows

#

Mine don't seem to change rn

naive wyvern
#

Day Tiles and night tiles

green patrol
#

updated with the list-dict-list formatting. still only wobbling, no errors/warnings in the console. would posting the spritesheet help too?

brittle pasture
#

got it now
LoadEffects and WorkingEffects are top level fields

latent mauve
brittle pasture
#

move them out of OutputRules

uncut viper
#

well, thatd explain the lack of errors

dusk mulch
sour sleet
latent mauve
dusk mulch
brittle pasture
#

WorkingEffectChance is also a top level field

#

move it out of WorkingEffects

green patrol
#

o it played it once

#

yay~

brittle pasture
#

yeah that's because it still thinks WorkingEffectChance is 0.33

vernal crest
sour sleet
naive wyvern
#

Youll have to draw for that for windows

sour sleet
#

Even if I'm using the vanilla windows?

vernal crest
#

DayTiles and NightTiles change which tile is present on the map. When used with certain tilesheet indexes they will add a glow to the window as well.

green patrol
#

it works now! ty chue, button, fireredlily, and selph! Now I'll be able to have this done before the weekend ^_^

vernal crest
naive wyvern
#

My bad, aba is right

vernal crest
#

Just find a vanilla map that has the window you want to use and then check what it's doing and copy that.

sour sleet
#

Oh gotcha haha SDVpuffersquee

naive wyvern
#

I thought you were doing a tilesheet from scratch

dusk mulch
#

Wait, can you set any tile to a day/night tile? Since you just put in the sprite index?

sour sleet
#

I am making a custom tilesheet, yes but I am using a lot of vanilla stuff too!

naive wyvern
#

Theoretically, yeah

dusk mulch
#

Huh, Alright.

#

I feel like I should make a spreadhseet to help people with sprite index's... But I am too lazy.

vernal crest
#

Which sprites?

eternal marten
#

hey, is it open source

vernal crest
#

Is what open source?

dusk mulch
naive wyvern
#

Its just putting in the corresponding sprite indexes
Plus its not that hard to count what the sprite index is, i usually just plop the image in Tiled, check what their coordinate is, and divide by 16

eternal marten
naive wyvern
#

But i understand wanting to count faster than what Im doing kamo_laugh

eternal marten
#

or. in other words does it have docs

#

is it documented

naive wyvern
#

Framework mods have docs on how to use them usually if thats what youre asking

dusk mulch
uncut viper
#

theres over 33,000 mods for stardew valley. you're gonna need to be more specific

dusk mulch
sour sleet
#

33,000 is crazy

eternal marten
#

I'm not asking if mods themselves are open source, I meant the Documentation on how to make mods

uncut viper
#

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

lucid iron
#

it would suck a lot of game modding is closed source somehow

vernal crest
dusk mulch
#

It is kind of confusing that the action documentation is on github and the other documentation is on the wiki. (I am talking about the CP documentation)

vernal crest
#

I can get that, but it wouldn't make sense to have the documentation for a mod on the wiki.

latent mauve
#

^

dusk mulch
#

How many people use CP compared to C#?

vernal crest
#

There are about 10,500 CP mods tracked compared to about 3,200 C# mods.

uncut viper
#

the modding namespace on the wiki is not meant to cater to the majority owning mod. its meant to serve as a repo for knowledge about modding the game, however you may mod it. this includes CP, C#, Lua, XNB, FashionSense, FTM...

dusk mulch
#

Fair enough then

uncut viper
#

there is some CP specific information on there but its the exception that proves the rule

modest dagger
#

To anyone who uses notepad++ here can I have multiple windows of it open and if so how?

lucid iron
#

if i were to write my own framework for editing data

#

i can still direct people to the wiki to learn about game

vernal crest
#

Even though all modding is done through SMAPI (right?) even the SMAPI documentation is not on there (though much of the C# information is SMAPI-specific, it's not about how to use SMAPI itself).

uncut viper
#

xnb mods dont require smapi

#

the API reference on there is SMAPI specific

#

so it is just about how to use SMAPI

#

the difference there is that aside from xnb mods, every mod uses SMAPI. every single one.

#

if someone else made an alternative mod loader that wasnt SMAPI that got popular, it'd be on there too

#

either that or neither of them would be, if they both were developed and released at the same time

vernal crest
#

Oh yes I forgot xnb mods. They are so limited that they slip off my radar.

uncut viper
#

the only place to find SMAPI documentation is the stardew wiki

vernal crest
#

Actually, maybe I am misunderstanding how they work. An xnb mod that affected Data/Machines, for example - that would be essentially removed by adding another xnb mod for the same asset, right? Because in installing the second xnb mod you'd just overwrite the first one? Unless someone actually edited the xnb from the first mod to add their changes to it?

uncut viper
#

yes

#

that is, in practice, what Content Patcher does

#

with a lot of bells and whistles on top

sour sleet
#

Oh, my windows are messed up now T-T

#

They look fine in Tiled but are like this since adding the Day and Night tiles

ornate locust
#

It looks like you put the bottom of the window in both spots in the day/night tiles

#

instead of the top of the window in the top spot and the bottom in the bottom spot

dusk mulch
# sour sleet Oh, my windows are messed up now T-T

I think you mean your win are messed up
‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ does

sour sleet
#

`This is the DayTile and the NightTile I've put on the map propertiesFront 9 1 288 Front 9 2 256

#

for the window pictured. Is it correct?

sour sleet
vernal crest
#

It's confusing because vanilla lists the lower tile before the upper tile.

ornate locust
#

Yeah you got em backwards. Also that is only correct for the day tiles, night tiles would be 1253 and 1285

#

The unlit version of the window

#

That's why it's still lit, you put the lit tiles on night tiles too

sour sleet
#

Oh!!

#

Thank you both, I get it now

rigid musk
#

Does anyone know how the appearance system works tbh_seen I seem to be incapable of understanding it without assistance - I just want to have his outfit/portrait change during winter with it remaining the same through the other seasons like in vanilla

brittle pasture
#

basically, go down the list, lowest precedence first, pick an entry - if entry condition matches, applies textures

uncut viper
#

pick multiple entries* if they all match

#

then a weighted random choice

sour sleet
ocean sailBOT
#

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

uncut viper
#

what does your json look like?

brittle pasture
#

yeah you can have multiple as well
winter outfit should be simple to copy from the vanilla NPCs

brisk wedge
#

Does anyone know what

This mod failed in the GameLoop.GameLaunched event. Technical details:
ArgumentException: Unhandled proxy/conversion method for info: ProxyInfo{target: TypeInfo{context: spacechase0.GenericModConfigMenu, type: GenericModConfigMenu.Framework.Api, GenericModConfigMenu, Version=1.14.1.0, Culture=neutral, PublicKeyToken=null}, proxy: TypeInfo{context: me.ModName, type: GenericModConfigMenu.IGenericModConfigMenuApi, ModName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null}}
 ---> ArgumentException: The IGenericModConfigMenuApi interface defines method AddTextOption which doesn't exist in the API or depends on an interface that cannot be mapped!

means?

uncut viper
uncut viper
sour sleet
uncut viper
#

the TextureName changes the default thing the game looks for for portraits. right now, you've set it to look for Portraits/TracyLilybrook/TracyLilybrook

#

not her. her portraits

#

and sprites

brittle pasture
#

(also not related to solving your problem but I recommend putting {{ModId}} in your character id to avoid collision)

uncut viper
#

so Characters/TracyLilybrook/TracyLilybrook too

#

TextureName is optional and theres often very little reason to ever make it not be null

#

(and by null i mean just not written in your json)

#

id also recommend switching to the standard ModId convention too as Selph says, for your location too

sour sleet
#

Oh I think I know the problem

uncut viper
#

your location name is unique right now too but its in reverse order from standard. wont cause problems but. yknow. isnt standard. some mods (like LA) rely on standards

sour sleet
#

I forgot to load Tracy's sprites and portraits

uncut viper
#

that would do it. but do make sure you remove the TextureName line

sour sleet
#

Ok I will do. Should I change my ModId do you think?

uncut viper
#

yes

#

or well, not the modid itself

#

but add it to all your internal ids yes

#

so character internal names, location internal names, etc

#

mail flags, item ids, whatever

sour sleet
#

Yep will update everything now SDVpuffersquee

uncut viper
#

standard modid format is Author.ModName so itd just be 8BitAlien.Lilybrook

tidal stone
#

is there a recolor guide i can look at as far as like what all i should recolor for a base recolor of sdv i know like grass and dirt and probably trees and bushes but i dont wanna miss anything

uncut viper
#

easy way would probably be to download something like Earthy and see what it recolours

tidal stone
#

ok

uncut viper
#

tried and true method of "people have probably already complained to them enough thru the years that i can trust theyve missed nothing by now"

tidal stone
#

thats true :3

#

i think imma do a recolor of resources as well but have that seperate and then maybe the tall grass be a config you ncan turn on and off in case people wanna use different grasses :>

#

ive never messed with jewel tones so its gonna take me a bit ^^

odd ginkgo
#

hi all!

#

so let's say you've made a custom location

#

and you want that it to be ALWAYS raining in that location

#

how... would one do that? LocationContexts?

#

I'm becoming convinced its impossible lol

brittle pasture
#

add the map property LocationContext with the value YourCustomIdHere to the map

uncut viper
#

you can put it in its own LocationContext and set that context's Weather

odd ginkgo
#

ohhh

#

as in, in Tiled itself

#

omg that makes so much sense

brittle pasture
#

yes
and then as Button said, edit Data/LocationContexts with YourCustomIdHere key and set it to always rain

uncut viper
#

you can look at how the Desert does it in Data/LocationContexts as an example, it has a single WeatherCondition that is always true for sunny

odd ginkgo
#

ty so much, going to go test it out now

#

ya'll are amazing

#

IT WORKED

#

amazing

#

I should have come and asked for help from the start haha

boreal belfry
#

I think I have learned enough to ask the right question. I have two mods wich are utilizing two vanila town building assets through Tiled. Is there a way to make a CP patch that will effect one but not the other?

#

I suspect the answer is no but I want to be sure

rocky copper
boreal belfry
#

is it okay to talk about personal mods specifically I am not sure what the etiquette is

uncut viper
#

as long as they dont violate server rules

#

and as long as you arent distributing assets from another mod without permission

boreal belfry
#

thanks!

#

so I am specifically trying to change the shed in aimon's custom quarry wich uses the hat mouse house. when mods that affect the image of the hat mouse change, so does the shed. However, Lacy the hat mouse npc also changes the img used for her house and thus also the Quarry shed.

uncut viper
#

one easy way (but not the only way) would be to have one patch only take affect when the location is Mountain, then

#

it will technically still change the texture of the hat mouse in the forest, but if you're not there to see it, it doesnt matter

#

the other way i could think of would be to just patch over top of one of the two houses with a map patch that uses a custom tilesheet

#

so you'd technically be using a different texture, and only in that one spot

boreal belfry
#

Oh, fascinating! thank you so much

uncut viper
#

(also ofc i say "only when in Mountain" but if you wanted to affect the hat mouse then itd be the opposite, only take affect in the Forest)

dusk mulch
#

If I set the Summer, Winter, Fall and spring objects to T on map properties, do they automatically appear or do I need FTM?

rocky copper
#

Hey, I'm testing out a couple options that involve changing the Type and Category of some custom objects and within the last 20 minutes or so the game just, like, stopped reading any changes I make between restarts? It was working and now it's not.

dusk mulch
#

Also were you restarting the game entirely or just using patch reload?

rocky copper
#

Restarting entirely

ocean sailBOT
dusk mulch
#

Yeah

uncut viper
#
  1. you dont need to restart the game completely most of the time, you can do patch reload YourModId as Person says
  2. are you spawning in new items every time?
rocky copper
#

The items come from a custom building with item conversions; the items were ready to be picked up from the building when I start the day

#

But I was seeing the changes and now I'm not

uncut viper
#

some data is saved to the item permanently, some is not

#

try spawning in a completely new item after you make your change

rocky copper
#

Hmm.

uncut viper
#

Type in particular is saved

rocky copper
#

Of course.

uncut viper
#

to me it sounds like the building was technically processed the night before and the item created

#

and thus saved

rocky copper
#

So it was probably a fluke that it actually worked at one point?

#

And it's currently behaving how it's supposed to

uncut viper
#

without knowing what you changed or when its hard to tell, but my first guess would be that you just happened to change some data that gets reconstructed every time

#

i can never remember what all is cached and saved in the item instance itself

rocky copper
#

I'll try with freshly made items, that's good info about how type is saved.

uncut viper
#

but its always a good idea to spawn new items when making any object data changes

#

just to be sure

rocky copper
#

Some kind of cache is what I was afraid of, it just felt like it was being inconsistent about what was being cached

#

While I'm here, does anyone know if there's a way to make an object unshippable but sellable at specific shops?

uncut viper
#

if it felt inconsistent then thats bc it probably is haha

#

user-facing text isnt saved if you use tokenizable strings at least

dusk mulch
#

To let forageables spawn in a location, do I need FTM? Or just set the Season_Object map property?

uncut viper
uncut viper
vernal crest
#

They kind of are in that they are type (O)?

#

And also in Data/Objects

uncut viper
#

but their C# class of the Ring itself is not an Object

rocky copper
vernal crest
#

Yeah I know but that's not visible on the wiki lol

sour sleet
brave fable
#

your last message isnt even off the screen yet lol

dusk mulch
dusk mulch
vernal crest
#

Are you asking because you've tried and it didn't work?

dusk mulch
#

I tried it in one of my other mods and it didn't work so I am trying to figure out if that is what you are supposed to do or not.

#

I will try again

vernal crest
#

What's your Data/Locations data like?

sour sleet
dusk mulch
vernal crest
#

"Whether to spawn seasonal objects on spawnable tiles based on the data in Data\Locations.xnb."

calm nebula
uncut viper
# vernal crest It is for rings!

(i was curious abt smth so i checked: correct its cached for a patch reload. but it does update the user-facing text on a full restart! so its not the worst SDVpuffersmile )

calm nebula
#

Data/Locations has it but FTM may be easier

dusk mulch
#

sigh

dusk mulch
vernal crest
rigid musk
vernal crest
uncut viper
#

(though in the FarmHouse case, you really... dont want it to. its every time you upgrade your house or your spouse room changes lol)

dusk mulch
#

Well Data/Locations was alot easier for me it turns out

rocky copper
#

Anyone know what the formatting would be to add context tags to shops' "SalableItemTags" field? Would it need to be an Append action to simply add to the list without needing to rewrite the whole thing?

uncut viper
#

SalableItemTags is a list of strings so you can just use targetfield to get to it then add entries like anything else

rocky copper
#

Ohhh, okay

uncut viper
# calm nebula Huh
if ((this.isOutdoors.Value || this.name.Equals("BathHouse_Entry") || this.treatAsOutdoors.Value || this.map.Properties.ContainsKey("forceLoadObjects")) && pathsLayer != null)
    {
        this.loadPathsLayerObjectsInArea(0, 0, this.map.Layers[0].LayerWidth, this.map.Layers[0].LayerHeight);
        if (!Game1.eventUp && this.HasMapPropertyWithValue(this.GetSeason().ToString() + "_Objects"))
        {
            this.spawnObjects();
        }
    }
vernal crest
uncut viper
#

this is in the base GameLocation which setMapForUpgradeLevel and showSpouseRoom call

#

uhhh

calm nebula
#

It looks at data/locations

#

And spawnobjects is called....a lot

#

Repeatedly

vernal crest
#

Basically I need to know if I should tell people "don't bother with this property ever, go straight to Data/Locations" or "use this property in X condition, otherwise go to Data/Locations".

uncut viper
#

i mean it does yes, but my point was that the map property DOES do something

#

it will make them spawn again under those 3 circumstances if there is data to spawn them

calm nebula
#

Don't bother with the property and use data/locations

uncut viper
#

if you put that map property in your farmhouse alongside the force map property, you will get shit spawning in your house every time you divorce

#

which, like, is maybe fair

calm nebula
#

Don't do that SDVpufferthumbsup

uncut viper
#

id agree you shouldnt do really use or rely on it

#

but you can

calm nebula
#

Memo to self: spawn trash in the farmhouse with map property

vernal crest
#

Did it once have the purpose of spawning forage and has become obsolete for that?

#

I mean as the primary way to spawn forage

uncut viper
#

i dont know if i can explain it to a layperson bc i dont know for sure how to describe when a gamelocation is constructed via that constructor

calm nebula
#

I don't think it was ever used by the game itself

vernal crest
#

It is present in vanilla maps though. I wonder why if it wasn't used.

rigid musk
#

cheer YEAHHH he's PURPLE! YEAHHH (thank you guys)

uncut viper
#

was he not purple before

rigid musk
#

no hes blue

uncut viper
#

damn. im a fake qi fan i guess

rigid musk
uncut viper
#

honestly shocking that i dont know as much about Mr Qi as Lily of Friendable Mr Qi fame

#

shocking i tell you

vernal crest
rigid musk
#

Button I thought you were the #1 Qi Knowledge Expert though O: I thought you knew every thing about him down to the pixel OOO:

uncut viper
#

yeah thats true. btw you have one pixel thats off by #0020F0 on his shirt

rigid musk
#

Aw darn... looks like I gotta scrap everything and start over

uncut viper
#

ive memorized every individual hex code pixel

rigid musk
#

(Ironically I was missing a pixel for one of his portraits... I didn't even realize until I went in to give him the purple fit for winter)

uncut viper
#

along with maybe jujst "You shouldn't use this map property." maybe lol

vernal crest
uncut viper
#

what other ones are there

#

ForceSpawnForageables?

vernal crest
#

Yes, and SpawnBeachFarmForage, SpawnForestFarmForage

uncut viper
#

those two i can only assume works bc the farms theyre used on work

vernal crest
#

Couldn't you assume with that reasoning that season_Objects work because they're on the Forest map and forage spawns there?

uncut viper
#

it does look like ForceSpawnForageables does call a bunch of the same object spawning as the Data/Locations stuff

#

no i cant assume that bc they dont do anythin

vernal crest
#

Yeah but if you didn't know that

uncut viper
#

and they do work!

#

once

vernal crest
#

I'm saying that what if the Beach spawns happen somewhere else

#

And the map property SpawnBeachFarmForage is just there being pretty and useless

uncut viper
#

pretty sure the Season_Objects stuff does happen on a new save at the very least

#

also ForceSpawnForageables makes the same stuff happen that any outdoor location would have happen that did not have skipWeedGrowth applied

#

bu without it needing to be outdoors

#

so yeah the wiki is correct there

#

the other two are checked in functions whose entire purpose is to check for that property on Farm

#

and return true/false

#

so yes they also work

vernal crest
#

Awesome, thank you for checking them

#

forceLoadObjects isn't on the wiki, should it be added?

uncut viper
#

its only purpose is to make Season_Objects happen and only in the case of a gamelocation being created, your farmhouse upgrading, or your spouse room changing

rocky copper
vernal crest
#

Then nope lol

uncut viper
#

so like.... i guess.... its quite useless though

#

but if Atra wants to spawn trash in the farmhouse on divorce, its required

#

unless you turn the farmhouse into an outdoors location

vernal crest
#

I'd be surprised if Atra goes to the wiki to find anything out when making mods lol

uncut viper
#

Atra still has leftover stuff to fill out on the wiki that they think we've all forgotten

#

im not letting them off the hook

#

not until i know whether or not SetNpcInvisible and SetNpcVisible can be called from a farmhand

vernal crest
#

xD

uncut viper
grand edge
#

is there any reason why season_day dialogue would be overwritten by regular weekday_heart dialogue? i have comments about squidfest and other passive festivals getting overwritten 😔

uncut viper
#

the reason is bc thats how it is. season keys have priority over non-seasonal keys

grand edge
#

what should i replace them with then?

vernal crest
#

They're listed in precedence order on the wiki.

uncut viper
#

<season>_<key>_inlaw_<spouse>
<season>_<key>
<key>_inlaw_<spouse>
<key>
thats the priority order, where <key> is e.g. dayOfWeek or dayOfWeek_Hearts

#

(priority from top to bottom)

#

wait, i read your messsage wrong

#

season_day is the one being overwritten?

grand edge
#

yeah i was like wait, yeah

vernal crest
#

So something like spring_10 is being overwritten by Sun4?

grand edge
#

yup

vernal crest
#

Ignore that the date does not match the day lol

#

But only during passive festivals?

uncut viper
#

im assuming they dont get overwritten when you test on your own mod list?

#

also, is it a custom NPC's dialogue or a vanilla one?

grand edge
grand edge
vernal crest
#

Also when you say overwritten, do you mean the lines actually change to new values or simply that the NPC uses one dialogue key when you expect them to use another?

grand edge
#

he uses one key when i expect the other

versed wyvern
#

Just to cover all bases are you in year 1? There's this part about it being specific to Y1

grand edge
#

this save is year 5...

vernal crest
#

So your dialogue key should be spring_10_2

grand edge
#

gotcha

uncut viper
#

remember you need to treat everything after the <season>_ part as the key by itself, so it follows the rules in the table in the wiki

grand edge
#

it worked thank you!

uncut viper
#

spring_10 is just the "10" key but for spring, and the "10" key is first year only

#

since its just DayOfMonth

#

(and then similar for the _inlaw_<spouse> postfixes too ofc)

#

... suffixes

vernal crest
#

Too much Harmony

uncut viper
#

not enough space

dusk mulch
#

Can I send my mod to someone so they can try and diagnose why my trigger action/player_stat isnt working? I have tried almost everythhing I can think of

rigid musk
#

Is there a different appearance thing that needs to be done for the desert + ginger island?

#

(i mean its kinda clear there is cause he switches back to being blue while there 😔 )

versed wyvern
#

There was a section about an island-specific flag needing to be set for the beach outfit, which also apparently prevents the appearance from being used elsewhere ThinkO_O

vernal crest
rigid musk
#

pain i guess that makes sense

vernal crest
#

Do you want him to be in his purple there only during Winter season?

rigid musk
#

yes

vernal crest
#

I think you might be able to do that by using a GSQ in the Condition field to check for the season instead of the Season field because you can use LOCATION_SEASON <location> [<season>] to check for the season back in the Valley.

rigid musk
novel dune
#

perfect, thanks mate

dusk mulch
#

well now that i have released 2.0.0 of SITW i have a decision to make…

#

work on More Secret Notes or start on learning C#

hard fern
#

What do you need C# for?

fathom hound
#

Have so many mod ideas if I knew C#

dusk mulch
#

welp, time to go learn

#

Do I NEED IDE for C#?

uncut viper
#

your experience will feel like shit if you dont have one

#

but no, you dont

dusk mulch
#

ughhhh bugger it i will stick to CP

uncut viper
#

there are free IDEs

dusk mulch
#

i want to learn C#, i just dont want to have to download so much

vernal crest
#

Downloading things is the tip of the effort iceberg for learning C#

dusk mulch
#

Fine, I will do it...

#

But I refuse to use VSC

uncut viper
#

if you mean VS Code, that isnt even an IDE

fathom hound
#

VS is though, right?

uncut viper
#

VS Community is yes

dusk mulch
#

oh well i will use rider

#

1.4 GB?!

brave fable
uncut viper
#

i would consider building/compiling/debugging to be necessary before id call it an IDE instead of a sparkling text editor

blissful panther
#

Then VSCode is an IDE for a fair few languages! SDVkrobusgiggle

uncut viper
#

as i see you are both typing please note that i said "id" not "anyone'd"

blissful panther
#

(I don't enjoy VSCode, though. I have an allergy to Electron... I say while using it right now.)

uncut viper
#

what can VSCode compile without an extension?

blissful panther
#

Ah, if your bar is sans extensions, then nothing, yeah.

brave fable
#

say what you want, but the vscode plugin marketplace is leagues better than whatever sad offerings vscommunity has

#

electron giveth back

uncut viper
#

i think if i download a program and i cannot immediately do those things in it, i can hardly say i downloaded an IDE, personally

blissful panther
#

You downloaded a text editor with IDE plugins, yeah.

uncut viper
#

if i even have internet access to get those plugins!

#

i could be installing it fresh from an install usb

brave fable
#

good luck doing that with any microsoft product SDVpufferfush

#

vscomm hasn't got a leg up there

uncut viper
#

i mean VSCode does just have a .zip portable version you can download

blissful panther
#

But what about Curso- /j

brave fable
#

in any case, there's an embedded terminal in vscode, it's trivial to say that it can't compile when the only step removed is having to type dotnet build or npm run build instead of pressing a big green button

uncut viper
#

id sooner expect cursor to format my flash drive than put something on it correctly

#

i dont think whether its trivial or not changes my personal definitions

#

is the terminal itself an IDE, then

#

if i write my code with nano and then run dotnet build, have i created an ide

brave fable
#

SDVpufferfush.

dusk mulch
#

I think I get what coding is now... Just cry and bang your head against your keyboard until your computer listens to you!

marble verge
#

Good morning. Does Priority apply to Includes?

uncut viper
#

no. includes are entirely just for your own personal organization

marble verge
#

According to patch summary it seems to apply, but the JSON validator throws a warning.

uncut viper
#

there is no functional difference between a mod with 100 includes and that same mod with no includes and everything in one file

dusk mulch
uncut viper
#

did you set the validator to Content Patcher mode?

calm nebula
#

Button, you're purple!

uncut viper
#

bc it will complain about no format line but thats bc it doesnt know its an include

#

atra you must be doing this on purpose by now

dusk mulch
uncut viper
#

if the only complaint the validator has is about the format line, ignore it.

marble verge
#

Okay.

dusk mulch
#

I feel like I have more knowledge of this game through modding it then playing it...

calm nebula
#

Are you not more purple?

uncut viper
#

let me check

#

nope, dont think so

strong kettle
#

idk if this is right channel to ask but does anyone have an up to date robin speed build mod that works?? all the ones ive tried adding to my game are out of date and dont work

uncut viper
#

does the save serializer still explode if all my subclass does is override methods and doesnt actually add any new fields/properties?

fair estuary
#

Howdy y'all. New here and trying to learn. 🥰 Anyone have recommendations on how they got started

uncut viper
#

!startmodding the tutorials here for most people i think

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.

dusk mulch
#

So I am trying to start on the C# tutorial mod...

vernal crest
#

I started because I wanted my farmhouse to have a bathroom and it was soon enough after 1.6 came out that there weren't any reliably working bathroom mods lol

vernal crest
fair estuary
#

That's pretty cool.

I'd love a "ki" system to be able to use magic powers that you get from special crops. But it's only useable during mining

dusk mulch
#

oh.

#

The 1 step I missed...

vernal crest
fair estuary
dusk mulch
#

How do I download the NuGet package?

#

I don't understand it

vernal crest
#

Did you click on the "how to add the package" link?

dusk mulch
#

Yes

#

Oh wait

#

I am on the wrong tab

#

OMG IT WORKED

#

I BUILT MY FIRST C# MOD

vernal crest
#

I thought it was folder name

fathom hound
#

I didn’t even realize load order had any impact

fair estuary
unreal spoke
#

!loadorder
It’s the folder name, but priorities or false dependencies are probably the better way to go.

ocean sailBOT
#

When two mods edit the same dialogue or images, whichever edit is applied last "wins" and is the one you see in the game.

If the mods don't set edit priorities (which most don't), that order is mainly determined by the order the mods were loaded by SMAPI. You can change that mod load order to influence the edit order.

hallow prism
#

There are other options dependi g of the goal

fathom hound
dusk mulch
#

that sounds sad when i say it out loud

fair estuary
#

Nah an achievement is an achievement good job

vernal crest
#

If it's just for your own use folder name is okay but if you're publishing this mod, don't rely on that.

cunning kiln
fair estuary
#

I think in my mind, using existing stuff in different ways is cool, but the stuff I want to try and do will be addidtive so I think it’s going to have to be c#

fair estuary
cunning kiln
#

The other key is to not get too ambitious at first. I have a file full of mods that I'll probably never complete because the scope was too large😅

fair estuary
#

Wonder if adding in new animals can be done by content patcher or if that will need c#

vernal crest
#

CP

fair estuary
#

Though there may already exist mods for adding more animals anyway

cunning kiln
#

There are a lot of mods that add more animals -- that's a great chance to look to see how the code works in action.

#

(Also, creating new animals is a good chance to learn pixel art.)

#

Here's a newbie question for everyone else: if you need to find betas and you aren't big enough to have your own discord, where should you ask? The modded-farmers channel?

dusk mulch
#

Where would I find the API for the inventory?

hallow prism
cunning kiln
#

(Usually I'm the opposite of spam -- I've been on this Discord for 2.5 years and I'm still green😂 )

dusk mulch
#

OHHHH I GET C# EVENTS NOW

#

i hate it.

#

but i love it too

marble verge
#

Is there an Entries tag to exclude an item from having to be cooked?

vernal crest
#

What do you mean by "having to be cooked"?

marble verge
#

For food items that do not have a corresponding recipe.

vernal crest
#

Do you mean for perfection or something?

#

Because if there's no recipe they can't be cooked and therefore there's no need to worry about stopping the user from cooking them.

marble verge
vernal crest
#

There should be a field to exclude from collections, I've just lost the page

marble verge
#

Yeah, from random sale, fishing collection and shipping collection. There was nothing about cooking, which is why I asked.

vernal crest
#

I think my brain may finally be clunking into place. Do you want to have a cooking recipe that is excluded from the perfection count?

marble verge
#

No, I wanted to exclude food and drinks that can be bought or found but not cooked - but I guess I won't have to worry about that 🙂

vernal crest
#

Oh then I was right the first time around haha

#

Yeah they'd have to be a recipe to need to count for that

uncut viper
#

you wont be able to exclude them from the collections page though

marble verge
#

Yeah, I figured - but it's the same for minerals, so it is what it is.

vernal crest
uncut viper
#

i mean they will always appear greyed out

#

yes

vernal crest
#

That might explain why I keep being baffled at how many foods I have left on my collections page to cook despite having cooked nearly everything in the game.

uncut viper
#

the collections page checks every object. if its type Cooking or category 7, it checks if you've cooked it before

#

but you cant have cooked it without the recipe

marble verge
#

So giving it a different category would solve that problem... But would that affect anything else?

uncut viper
#

it would need to not be Cooking type either

marble verge
#

I was thinking of just setting them to 0.

uncut viper
#

it would affect gift tastes

marble verge
#

So those'd have to be added back in manually, huh.

uncut viper
#

also, NPCs wont comment on you purchasing them at random

#

if you purchase from their shop

#

it would also potentially affect Item delivery quests

calm nebula
#

Khloe plz

uncut viper
#

what about khloe

vernal crest
#

Atra just really misses her

uncut viper
#

is atra under the impression that Better Game Menu is actually also Better Collections Page

gentle rose
#

wishful thinking

uncut viper
#

hi iro

gentle rose
#

hi button

#

what have you broken recently

uncut viper
#

nothing broken, just once again lamenting that i need a whole spacecore dependency just to use the serializer

#

and the only other alternative is a big rework on a mod that is already behind schedule

gentle rose
#

your mods have schedules?

uncut viper
#

loosely

#

if i dont set personal deadlines for myself, i just dont do them

#

well, i dont do them anyway, but the schedules make me feel bad about not doing them, which sometimes(?) helps me be less behind schedule

gentle rose
#

just feel bad about not doing them without having schedules, it's what I do

uncut viper
#

see the thing is ideally they do get done eventually,

#

therefore I need the schedule

gentle rose
#

I think the next mod I'll actively work on is the one that dehardcodes most of the gender stuff tbh

#

and allows people to set per-NPC custom alternatives

uncut viper
#

it sounds like you'll be faced with the same kind of daunting task as i am for my other mod

#

so, godspeed

#

<--- has to inspect and patch/account for 274+ methods

serene tapir
#

Quick question since you said this is for personal use- are you using cfdes config?

#

If CFDE is loading last, change the relevant npc to random in our config, and it'll only load half the time, so the other dialogue can load the other half of the time and you can have both dialogues

shut mountain
#

I yearn to create items SDVpufferwaaah

#

I don't know what to make tho, and I suck at sprite art ;-;

vernal crest
#

You could try browsing free sprite packs and see if any of them are crying out to be added to the game (being very careful to check the licence if you decide to publish the mod).

shut mountain
#

Okay! :D

hard fern
#

I do know itch.io has some free use sprite packs people put up

shut mountain
#

That's where I am now

deep cypress
shut mountain
#

Lol okay. I can do that (maybe)

deep cypress
#

Yayy!!!! Some of those dialogues are a deep dig!

deep cypress
#

I just invented a new fantasy metal: Marikalasa. Lighter than mirthril (maybe), stronger than adamantium (dubiously), more magical than vibranium (questionably), cheaper than iridium (definitely not)(n yes I kno iridium is real, it's on sites of... weaponry n stuff). Marikalasa means sea-cakes. Mari being proto-germanic, kalas being slavic (usually it's kinda got a more sh sound at the end, but mermaids, being what we are, we slide easily into the softening of sounds).

#

The Marikalasa Breastplate will give some very good stats indeed, but probably be like only 1/5000 to drop from a barrell, or something.

#

(What's even funnier is if you drop the -asa, Marikal sounds almost like miracle...)

fathom hound
#

Hey guys, would it be okay if I made a thread specifically pertaining to game code & not really about mod making questions? I know people have questions but not mod related and I’m not sure where to direct them

blissful panther
#

I don't see a problem with it!

fathom hound
#

Thanks SDVpufferthumbsup

drifting dune
#

Agreed, thanks SDVpufferthumbsup

fathom hound
#

Non-Mod Related Q&A Thread

#

There ya go! @drifting dune SDVpufferheart

#

OMG CRAP I’m sorry I didn’t mean to lock it

drifting dune
fathom hound
#

@blissful panther can I get it unlocked I’m so sorry LMAO

drifting dune
#

haha it's fine

fathom hound
#

I’m sleep deprived and it shows

#

Post ur Q here for now and I’ll repost in there SDVpufferwaaah I’m so sorry Crush

drifting dune
#

It's not a problem 🙂 no need for apologies, you're already doing me a favour

blissful panther
#

And done!

fathom hound
#

Thank you SDVsobastian aSDVemoteheart

drifting dune
#

Thanks 😄

brittle pasture
fathom hound
#

Do we? I thought they were just personal threads showcasing stuff

#

Just wanted to make sure it was appropriate SDVpuffersquee

brittle pasture
#

as in ask questions about game code in the main channel without strictly relating to a mod

fathom hound
#

Yeah that’s why I sent him here! But I felt like a thread might’ve been more appropriate maybe

brittle pasture
#

a thread is totally fine too of course, the main issue with threads is visibility

fathom hound
#

Feel bad it’s called making-mods and it wasn’t about a mod SDVsobastian

fathom hound
brittle pasture
#

rng stuff is beyond me I'm afraid
I recall atra having done extensive work on it, but they're not active rn + they may not see the question SDVpufferwaaah

drifting dune
#

SDVpufferpensive That's okay, it's quite niche anyway

tidal stone
#

ik you can with the flowers but do you think i could recolor crops and have them random colors t oo 🤔

#

probably actually silly q

#

i just thought i might make rainbow carrots in sdv XD

lucid iron
#

You can't do it with regrowable crops

#

But it should be possible

tidal stone
#

i just thought it would be fun to add a little variety to it yknow

#

i think ill work on that later then ty ty

rocky copper
#

Hey, I've got a custom shop selling a custom item for a combination of a trade in item and the shop's currency (Qi Gems), but it won't display the Qi Gems in the menu. It will display them in the menu if I'm trading Qi Gems but not as the currency. It won't display them as the currency even when the trade item isn't there. It does display them in the pop out menu. Any ideas?

brittle pasture
#

did you set the shop's currency field

rocky copper
#

Yeah

brittle pasture
#

as in the global field and not just the individual item's trade item, just to clarify

rocky copper
#

Yeah, global for the shop

brittle pasture
#

ah yeah I read your question more closely

#

hmm might be a game limitation?

rocky copper
#

I was afraid of that

brittle pasture
#

do you have item extensions, I think it fixes it

#

by changing the shop menu to show multiple trade items

rocky copper
#

I don't.

#

This is a small part of a much bigger mod that so far has only used Content Patcher and FTM, I wouldn't really want to add another dependency just for this.

#

I tried with other currencies, and they work. Just Qi Gems as a currency doesn't

lucid iron
#

Does it correctly cost you 40 qi gem and 3 tiger slime egg

rocky copper
#

Yeah

#

Oh wait, as in does it correctly charge me? I hadn't tested that

lucid iron
#

I think if it's mechanically correct then u can just tell people to use item extensions if it bothers them

rocky copper
#

Okay, checked, it does work

lucid iron
#

There's lots of fun things from item extensions tho Dokkan

#

Custom ore nodes mainly

rocky copper
#

I'll have to look into it, I actually hadn't heard of that one

gentle rose
#

though I can’t remember atp what broke which part SDVpuffersquee

rocky copper
#

Ooh, thank you for this

wet wadi
#

Can modded NPCs receive birthday gifts?

dreamy cedar
#

I recently debugged an issue with Junimatic where, on some maps, there were places that Junimos would not animate correctly - I tracked that to the Junimo code calling the constructor for PathFindingController, which called PathFindingController.findPath which failed, and that was because there were some tiles which looked perfectly open, but GameLocation.isCollidingPosition returned true. And that was because the tile had a property, "NPCBarrier" set.

Now, it turns out that the "NPCBarrier" check will be skipped if your NPC's Name happens to contain "NPC", because of course it does. So I'm able to fix it just by prefixing my Junimo's names with "NPC_".

Anybody know any back story here? Is there a problem with using the name hack?

lucid iron
wet wadi
lucid iron
#

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

lucid iron
#

Take a look at the third link

woeful iron
#

Hello all! I'm beginning my road down modding lane! I have a software engineering and security engineering background. Deeply in love with open source software, so will be sharing my mod on my github

#

Does anyone know the license for the code on the wiki? I was going to fork the NPC example and tweak that.

#

But I can start from scratch to avoid any messiness

#

I know that may seem kind of absurd in this context, but I have to be sensitive as I am public facing.

lucid iron
#

License of code on the wiki think

#

Which bit of code are you talking about

woeful iron
#

The creating an NPC example on the NPC page of the wiki

#

At the bottom

brittle pasture
#

Content is available under Creative Commons Attribution-NonCommercial-ShareAlike unless otherwise noted.

#

that applies to wiki content as a whole

woeful iron
#

Oh! Thank you so much.

lucid iron
#

Ah i was confused because i thought c# code

woeful iron
#

I am very happy with that license

#

It makes me want to click on the chickens in appreciation

#

Okay, next question -- are there restrictions on outbound traffic from a mod?

#

and what is my access like to the file system?

#

Goodness, out of context that sounds sketchy

#

I essentially want my NPC to call a service setup by myself. File system access is not needed but I was curious about what security is in place to prevent MODs going rogue in that regard.

iron ridge
#

you are just a normal c# executable

woeful iron
#

Oh brilliant, and terrifying

iron ridge
#

you are limited by the permissions smapi has given its executor

#

e.g. you're not elevated unless smapi was ran as admin

woeful iron
#

Oh!

iron ridge
#

network traffic from mods is only allowed on nexus if you ask them

lucid iron
#

there are existing mods that call other services yea

#

Like discord rich presence

woeful iron
#

Wow, that's nice. Well I'm part of a team of two people and the other is WAY better at paperwork and applications than I amongst

lucid iron
#

Modding is all unofficial i recommend not worrying about it lol

#

We already broke into mr ape's backyard to mess with things

woeful iron
#

It's solving the problem of wanting to send network requests without requiring users run SMAPI with admin privs

#

What do you mean by only allowed on nexus?

lucid iron
#

Nexus policy says you can't have networking stuff in your mod without permission

#

SMAPI acquired permission

iron ridge
#

just email nexus during the week and wait a day or two, they're usually pretty quick

lucid iron
iron ridge
#

just include your mod attached, and ideally source

woeful iron
#

User experience

lucid iron
#

Do people need admin perm to run smapi on windows?

woeful iron
#

Maybe I misunderstood the statement made

rancid musk
#

They don't. And you don't need admin permission to do a network request.

lucid iron
#

Maybe you could tell us more about what you want your mod to do so we can give better answers

rancid musk
#

It's easy to do network requests from C#, though you need to deal with threading so... that's fun. (And by fun I mean not really fun.)

uncut viper
iron ridge
#

ah

brittle ledge
brittle ledge
woeful iron
#

Awesome!!! Thank you so much.

faint ingot
#

I don't suppose there's a way in a content patcher mod for a map to have one map layer scroll on movement the way the summit does?

brittle pasture
#

yep, C#

#

though I think chu has/is working on a framework for that?

lucid iron
#

Knobs

#

Yeah i experimented with it briefly

tawny ore
#

If aeden was still around, 5 minutes after talking about that there would have been a mod for it

rancid musk
#

Thinking about aeden's mods is exhausting.

lucid iron
#

I don't think it's hard, but I can't directly reuse summit bg so i have to come up with draw code weh

faint ingot
#

Working on my first full outdoor map location, this is what I'm working with so far and thinking about how to manage the fog. Probably also will look at cloudy skies framework

lucid iron
#

If u have a particular sprite in mind i can try to make it work 4 u

#

Do u just want it fo scroll right in a loop

#

Or depend on player position

tiny zealot
#

i will need parallax bg for the expansion i'm not working on, so chu let me know if you finish it, or maybe i'll roll my own

lucid iron
#

Scroll right in a loop wouldn't need any framework actually, just a lot of animated map tiles

faint ingot
#

probably scrolling diagonally up/right in a loop, ideally shifting vertically with player position on top of that, but that might be a bit much

uncut viper
#

does the fog specifically need to be below the other map tiles and not overtop the whole screen

faint ingot
#

that would be like, 300 animated tiles which I'm sure I would mess up besides it being a lot of effort

#

yeah I think it needs to be layer specific

#

I will look at cloudy skies for a full screen fog effect for when you cross the bridge and go to the next map