#making-mods-general

1 messages Β· Page 198 of 1

brittle pasture
#

CTF is the old name, before I scope creeped it to way beyond custom tappers

lusty elm
#

tho tbf i'm missing context for the convo entirely, so everything im saying might be completely missing the mark.

uncut viper
#

no you were on the mark still theres Both

brittle pasture
gentle rose
#

"usable only in machine output rules" SDVpufferwaaah

uncut viper
brittle pasture
#

sure, consume them
unfortunately I can't remove them now because I have started using them in one of my mods

gentle rose
#

if you own four or more cows, it's going to rain tomorrow, your speed is more than 5 and you're holding up tuna, you may take the bus to my new location

uncut viper
#

when do i have to answer your riddles three?

lusty elm
#

thats what i was thinking, is this a puzzle where you're going to give random context clues?

uncut viper
#

if you want, you could hide your custom ticket machine behind a bush that gets cleared with BETAS clear terrain features stuff if you meet the conditions

#

call down a lightning strike on the bush at the same time it gets cleared

gentle rose
#

your reward in the new location will be a singular sap

uncut viper
#

but if you hold THAT sap while going to the bus stop then-

gentle rose
#

you get shown an apparently identical location in the options but it's actually the skull cavern level 10,000

uncut viper
#

worth it

lusty elm
#

then you go to the mirror world, where all the tiles are flipped, (it will be really confusing) /j

gentle rose
#

(also that should, theoretically, be possible I think - you define two locations with identical names and the two different conditions)

#

why is github search in repos so bad... I promise you, pathos' mods repo does include uses of the word "train"

#

are you just stuck on the main branch or something? bc that's annoying

uncut viper
#

im actually usually surprised by how well github repo search works for me

gentle rose
#

really? it never seems to work for me

brittle pasture
#

if your code is too new it isn't indexed
if it's not the main branch it isn't indexed
if your file is too big it isn't indexed
if you didn't pray to the Steve Ballmer effigy in your closet yesterday (you have one, right) it isn't indexed
nothing is ever fking working properly on github code search

gentle rose
#

I see I am not alone SBVLmaoDog

ivory plume
gentle rose
#

ty! I did find the code itself, I just didn't realise github doesn't do searching in non-main branches until I searched and saw it wasn't an option in their advanced filters either. Guess if I want to have a closer look I'll have to clone it SDVpuffersquee

rotund elm
#

if a mod is using their target path to load an asset as {{ASSETS}}/AssetName how would I load my recolor over their file? Would it just be mods/ModFolder or ModId/assets/assetname?

uncut viper
#

you editimage on the same target

#

so neither of those

rotund elm
#

ok so just use the {{ASSETS}}/AssetName

uncut viper
#

use the same path they do

rotund elm
#

fromfile?

#

{{ASSETS}}/AssetName is their target path

uncut viper
#

but odds are they are doing an exclusive load so make sure to handle priority as necessary

#

yes, use the same target path

#

but if that's a dynamic token you need to know the value

lucid iron
#

u prob wanna just EditImage right

uncut viper
#

in all likelihood

rotund elm
#

I need to replace the whole png

uncut viper
#

edit image can do that

rotund elm
#

so if that works

uncut viper
#

and is better because then you don't need to worry about exclusive load

rotund elm
#

ok cool, so then I would just need to replace dynamic token with the actual value

uncut viper
#

correct

rotund elm
#

which would be ''mods/mod name/assets/asset.png"

uncut viper
#

Probably not

rotund elm
#

nOoOO

uncut viper
#

Targets don't have file extensions

rotund elm
#

i swear I cant follow simple instructions

#

oh yes

gentle rose
#

can you harmony patch a new item into a flag enum a_sideeye

rotund elm
#

without that

uncut viper
gentle rose
#

luckily, this doesn't need to be saved into the serializer

#

ty button!

uncut viper
#

i would double check how to do it at least because I might have it backwards but I know it's technically possible even if not strictly advisable

gentle rose
#

I think you're probably right I'm just not sure if flag enums are special in that way

#

or if they work the same as regular int enums

uncut viper
#

TBH I don't actually know what you mean by flag enum

gentle rose
uncut viper
#

after a quick Google I think they are still just ints under the hood but don't quote me on that i don't wanna look bad in front of the competent coders

gentle rose
#

I believe they are some kinda fancy schmancy int under the hood thing but I have already looked plenty bad in front of the competent coders so you can throw something at me if I'm wrong

lucid iron
#

they r enums that make themselves nice for bitmaps

gentle rose
#

I think that's the hardest part of the crime I'd like to commit rn

lucid iron
#

so instead of going 0 1 2 3 they go 0 1 2 4 8

lusty elm
#

I'm debating on a few options here, and I could use some random opinions. (this map will not rotate seasonally, and be Robin buildable)
Note - Grass (for Animals) Only Grows on Tillable Land
Note - Tillable Land on an Inside map, acts as a greenhouse. Outside Maps Till as normal seasons.

As My options, I can Spawn ore, Forage (Mushrooms w/e), Make the Dirt and/or Grass Tillable. And Make it an Inside or Outside Map (Which i would disable weather effects on).

When you look at the map, what kind of things would you expect?

lucid iron
#

watch for falling rocks

#

maybe u block some bridges with meteor

lusty elm
#

To be Fair, with the Surface Map being 155x200, they are probably playing with friends or want a massive amount of space to do stuff too.

rotund elm
#

So if using the mods folder name didnt work for the edit image to I switch to modID

#

Or how do I tell why the edit image action didnt work?

uncut viper
#

what did the other mod put in their "Target": line? whatever they put in there, thats what you put in your Target

#

if they used tokens in their target, replace the tokens with their actual values in your json

rotund elm
#

"Action": "Load",
"Target": "{{ASSETS}}/CookbookSprites",
"FromFile": "assets/cookbook-sprites.png"

and I put

        "Action": "EditImage",
        "Target": "Mods/LoveOfCooking [CP]/assets/cookbook-sprites",
        "FromFile": "assets/cookbook-sprites.png"
uncut viper
#

your target doesnt match their target at all

#

you need to find out what {{ASSETS}} is supposed to be

rotund elm
#

OOOOHHHHHH

uncut viper
#

pretending that isnt a dynamic token and tokens werent a thing, you would also write {{ASSETS}}/CookbookSprites

#

but your mod doesnt know what that dynamic token is

rotund elm
#

Ok how do I find that im assuming its in their source code on github or something similar

uncut viper
#

i assume its just a defined constant somewhere up top in their dynamic tokens section made to reduce having to re-type stuff a lot

#

its in their content.json

rotund elm
#

ohhhh

uncut viper
#

its in their dynamic tokens

rotund elm
#

WAIT I DIDNT KNOW YOU COULD DO THAT IMMA CRY

#

this coulda saved me so much time lmao

rotund elm
#

I promise I'm smart guys SDVpuffercry

uncut viper
#

no one knows everything!

rotund elm
#

Thank you Button, I appreciate it A LOT

#

this is like christmas

#

me and dynamic token are gonna be besties forever

lusty elm
#

We Learn. :3

hard fern
#

i finally figured out how to animate tiles so... i now wield unlimited power

rotund elm
#

omg I couldn't stop when I first learned

#

it was an addiction

lusty elm
#

Animations can add a lot, but too much movement also distracts the eye

rotund elm
#

Yea I learned that after going overboard on my first map

#

XD

#

It looked like I was hallucinating lol

latent mauve
#

I couldn't find any good burlap sacks on the nexusmods tilesheets (fill the niche, friends!), so I spent 4 hours trying to make my own. LOL

deep cypress
#

Well well well!!!! Apparently a child is not an NPC!

latent mauve
#

The farmer's children are indeed not NPCs

hard fern
#

?

lusty elm
#

Those 2 comments 1 after another have some odd implications

hard fern
#

oh yeah the children you have

latent mauve
#

I did use them as a base though

hard fern
#

thats why uhh, idk which but one of the children to npc mods yeets your real children into the void

#

and replaces them with npcs

latent mauve
#

Little NPCs AKA the mod aptly named The Farmer's Children does that, I think?

lusty elm
#

thats fairly normal practice for turning a not npc into an NPC

deep cypress
#

I'll probably just kluge the harmony patch to make it do something else!

lucid iron
#

i think the main jank with little npc in current form is that it doesnt just make you add a Data/Characters entry for the replacement npc

latent mauve
#

Apparently The Farmer's Children and LittleNPCs are the same mod, which I did not realize until now. LOL Scratch that, I confused myself again apparently

lucid iron
#

instead it does that from own content pack and incompletely

vernal crest
deep cypress
#

It's gonna probably just have to be a different patch than NPC.ActiveItem or whatever the hell the thing is I am patching. Anyways luvs I am going to sleep good night!

rotund elm
#

@steep oracle meet @vernal crest !!

#

They taught me everything I know about maps so I have total faith they'll be able to help you out :)))

faint ingot
#

Having trouble with setting and testing a schedule key... this is the code: ```{
"Action": "EditData",
"Target": "Strings/schedules/Clint",
"Entries": {
"sdvlao_clint_test": "{{i18n:clint_test}}",
},
},

{
"Action": "EditData",
"Target": "Characters/schedules/Clint",
"Entries": {
"Tue":"850 Blacksmith 3 13 2/1100 SeedShop 20 22 1 "Strings\schedules\sdvlao_clint_test"/1630 Blacksmith 8 12 1 clint_hammer/2200 Blacksmith 10 4 1 clint_sleep",
},
},and it results in[game] NPC 'Clint' failed setting temporary dialogue key 'Strings\schedules\sdvlao_clint_test'
Microsoft.Xna.Framework.Content.ContentLoadException: Unable to parse string path: Strings\schedules\sdvlao_clint_test_Friendly```

teal bridge
# lucid iron they r enums that make themselves nice for bitmaps

Technically, and as far as I know, the only thing that FlagsAttribute actually does is make ToString() behave a little differently. If you're only doing bitwise operations then you can use any enum (or any int) for it, and regardless of whether you add the attribute, it's up to you to set the values to powers of 2 if you want those operations. The attribute is barely more than a marker.

slender badger
#

Finally got around to finishing up my dynamic tokens tips & tricks page on the modding wiki, thanks to Tia making the half-done page public and me shaming myself into not leaving it like that SBVLmaoDog

Stardew Modding Wiki

This is a collection of various tips & tricks for using Content Patcher's dynamic tokens for increased coding versatility. At their core, dynamic tokens are used for creating a token that changes its value depending on various conditions, which with a little creative thinking can be used for all sorts of situations!
This page assumes that you're...

faint ingot
#

Oh I think I see what I'm missing now

#

need to put a Clint: after schedules\ and before the string name whoops

hard fern
#

wheew... maps hard SDVpufferchicksweatsip

devout otter
#

Child Age Up and Growing Valley also use LittleNPCs.

#

(Unless, likewise, I've been mistaken all these time.)

slender badger
#

That's correct, yep

latent mauve
#

the mod naming format just confused me then

fathom hound
#

hi guys, i got an interesting idea for a mod, i wanted clothing to have weather effects, but i realized a lot of modded players play with fashion sense.. is there a way to wear both vanilla clothing and FS clothing simultaneously? or is there a way to integrate it being tailored to alter the design (think forge but for tailoring)?

modest dagger
#

what do you mean weather effects, like next day if they're wearing it it'll rain?

fathom hound
#

i was gonna set various buffs/debuffs depending on what the player was wearing, example, if player was wearing a bikini in the middle of winter, they'd get a -1 speed debuff until they change into something warmer (then get the snowing buff below once they do)

also clothing sets.. if a player has full prismatic outfit then they have a +1% extra chance of prismatic shard drops or something

#

if the player was wearing a rain outfit then i'd give them a +1 fishing buff while it was raining
sunny could be +1 foraging
snowy could be +1 mining

wanted the breastplates to give +1 combat

#

i was kinda surprised such an idea wasnt made yet, so i was wondering if it was worth trying to figure out since fashion sense has its own system

#

then i thought about the forge but for tailoring mechanic πŸ˜…

#

I was basically going to add custom tags and buffs to existing vanilla clothing

slender badger
fathom hound
brittle pasture
#

FS does allow having physical in game items now

#

you can look up how to do that; I think Pathos posted a WIP mod in this channel that does that earlier

fathom hound
#

Oh? SDVpufferwow thank you Selph!

#

Had another question burning in my head before I turn off my PC, is it possible to have an NPC schedule based on syntaxes like divorced, but kids arent doved? on the wiki i only see heart requirements and this seems a bit complex for CP

slender badger
#

From searching, it looks like you can use "HasValue:{{ChildNames}}": "true" though

fathom hound
#

Thanks so much Airyn, I can't wait to work on this tomorrow if that's useable SDVpufferheart

#

i've been wanting a custody mod for so long

dusk mulch
#

Does anyone know of any frameworks that lets you add lotions to willy's boat? Like more islands?

#

oop i meant locations*

fathom hound
#

i figured you would make a custom menu option to go to the other locations as the easiest way to do it but im not sure SDVpufferthinkblob

slender badger
fathom hound
uncut viper
#

Central Station will let you add locations accessible from Willy's boat

#

it is only an alpha right now though

slender badger
fathom hound
#

but ofc if kids were doved then they'd just go back to normal like nothing happened bahaha SDVpufferchickskeleton

fathom hound
#

i guess if theres modded spouses then all day would be easiest

slender badger
uncut viper
#

i think if they leave the farmhouse they should just teleport to the bus stop, no?

#

if theyre scheduled to go elsewhere

slender badger
#

Do they? SDVpufferthinkblob I thought that was only for marriage schedules

fathom hound
#

i read on wiki it was just for marriage but im not sure

uncut viper
#

when i was testing Custom Schedule Keys i gave Haley a non-marriage schedule and she walked out of my farmhouse and to the Bus Stop, but she was ofc married to me, so it mightve been coincidence

#

(well not walked TO the busstop she was yoinked there)

slender badger
#

If that doesn't work, you could maybe do a workaround with adding an invisible NPC warp inside the farmhouse that leads to a waiting room and have the divorced parent schedule in and out of that SDVpufferthinkblob But it'd be finicky

winter dust
#

Where's the guide for updating mods to 1.6/1.6.9 again?

#

I swear there was an article on the wiki about it.

fathom hound
#

"Today's my custody day so I want to spend as much time here as I can. I'll leave when I'm sure our kids not sleeping home alone."

#

bam

#

awkward moment if there's only one kid but thats a risk im willing to take (unless i can do 2 diff dialogues just for this lol)

#

yay okay i can finally sleep now thanks again!

dusk mulch
brittle pasture
#

search through pathos' posts for an alpha you can check out

hallow prism
#

isn't train station already able to add that?

brittle pasture
#

they asked for boat

hallow prism
#

central station is improving on that (adding more fine options/tuning/cool stuff)

brittle pasture
#

does TS add boats?

hallow prism
#

Walk to the railroad and interact with the ticket machine to buy tickets. For boat destinations, unlock Willy's boat and then interact with the ticket machine there.

#

it should, yes

brittle pasture
#

ah it does SDVpufferthumbsup

hallow prism
#

my understanding is that CS will offer more option/fine tuning/bus transport in addition (and stuff like not having to wait for some stuff to be unlocked to have travel options, like being able to join the central station earlier via bus or something)

brittle pasture
#

I guess there's also Transport Framework

#

though admittedly with CS coming out TF is going to have stiff competition lol
not the least because it uses content packs

#

(also I wonder how they would interact. not destructively I hope)

grave scarab
#

used a diff tool to find contributions someone made to my mod, I'm a Real Developerβ„’ now

inland loom
#

Can someone help me mod stardew valley?
It's basically my first time trying to mod the game

ocean sailBOT
inland loom
slender badger
#

Also #modded-stardew is the channel you want for using mods. This is for creating mods

slender badger
#

They don't just magically create themselves πŸ˜†

inland loom
#

Rude

rigid musk
#

It's not rude to not want to receive pings

inland loom
#

I'm not talking about the pings I understand that

rigid musk
#

Oh then I don't... I mean I still dont see it

#

Yeah you can make mods :D

#

It might not be magic but sometimes it feels like it when I do make them lol - anyone with an orange name here has made a mod :3

#

(and some people without it but y'know)

dusk mulch
#

i wana make mods but im all dry out of ideas and my secret note mod needs a framework to be updated to work so i have to wait for that

inland loom
dusk mulch
#

and none of the mod depo ideas interest me

dusk mulch
#

fancy seeing you here lol

blissful panther
#

So to be clear, the PEEM thing is a completely standalone thing intended for you to include with your mod. There's nothing for me to release!

inland loom
#

How can you create a mod?

rigid musk
#

I really want to make a mod but all of the ones I have in my idea list are not interesting to me right now... (I do not want to sprite apples and apple trees)

hard fern
#

peem....

rigid musk
# ocean sail

This guide Airyn sent is a good start to look at !

blissful panther
#

Well it isn't MEEP, so PEEM felt appropriate!

dusk mulch
inland loom
rigid musk
#

You need to have some basic understanding of how certain things work, a good start is to unpack the game files and look at that/look at the type of thing you're wanting to make

#

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

slender badger
# inland loom Rude

I don't see how it's rude? You asked a very obvious question, so I poked a little fun at it KR02Shrug If you haven't installed mods before though, I wouldn't recommend trying to create one until you're more familiar with things

rigid musk
#

If you need help with whatever you end up wanting to make we're all here to do so :3 Everyone here has been... monumentally helpful for me for sure

inland loom
#

Thanks again you're so helpful

rigid musk
#

Airyn also has a point with that - if you haven't even installed them I definitely suggest looking at that first- who knows maybe you'll even be inspired!

#

It's a confusing thing to dive into to be sure

#

I started making mods because of Custom Furniture (a framework mod) because I wanted to make my own furniture ... (and ended up turning gunther into a carpet)

blissful panther
inland loom
dusk mulch
hard fern
#

πŸ˜… i got excited seeing a little tree stump house so i put it on my map and now i dunno what to put in it...

rigid musk
#

Best place to start are those three things:

Playing with mods
Looking at the game files
Looking at how to start making a mod

dusk mulch
#

(spoilers srry)

inland loom
dusk mulch
rigid musk
#

That's usually how it goes really, You play mods, you realize 'i want this thing' - you don't find the thing - well now you gotta make it... profit

rigid musk
#

I'm still making dumb mods to this day- please see: Qianu Reeves

#

(I think Qi finally drove me fully insane)

dusk mulch
#

ooo i saw that one on the home page

#

its funny

rigid musk
hard fern
#

external map

rigid musk
#

(and are you actually looking for ideas or just talking about the absolutely adorable tree stump)

#

(because it is absolutely adorable)

blissful panther
hard fern
dusk mulch
#

So... what should I do?

rigid musk
#

A little squirrel npc sounds adorable genuinely though

#

I could make a squirrel npc....

#

I will not make a squirrel NPC I wont do this to myself

hard fern
#

ive already been scope creeped into the sun

rigid musk
#

Maybe you could put a little area in it that spawns mushrooms

#

like a mega mushroom stump

hard fern
#

πŸ˜” i dont like mushrooms

rigid musk
#

:(

#

I dont like to eat mushrooms but theyre funky fresh looking

hard fern
#

im the opposite, i only like the ones cooked, on my plate

dusk mulch
hard fern
#

cant stand them otherwise XD

dusk mulch
#

there is already a sprite for a squrriel that runs out of trees and bushes sometimes

rigid musk
#

you could give it a string when you click on it about a little familiy of mice that live in there or something

blissful panther
# dusk mulch So... what should I do?

Really all I can think is you just put it somewhere there's no bush? Unless in your case you need it to be a bush, in which case we can definitely tweak a few things about how it works under the hood to make it work for a bush...

rigid musk
#

And Id have to make it a tree house of course because its a squirrel

inland loom
#

While making a mod can you like create new characters?

dusk mulch
rigid musk
#

and give it a little tree seed shop...

royal stump
#

SDVpufferlurk using a "fake" bush drawn directly onto the terrain, rather than a real one, is usually the go-to for issues with them

blissful panther
hard fern
#

i think i went a little overboard

royal stump
#

but yeah, logic-wise, Action has lower priority than any actual objects on a tile

rigid musk
#

Making NPCs is VERY complex though, I reccomend starting with smaller projects to build up to learning how to do that

#

There's a lot of moving parts to an NPC

inland loom
dusk mulch
slender badger
#

This is also why I said to try using mods first, by the way, since then you'll learn more about what's possible from what already exists

royal stump
dusk mulch
rigid musk
#

To give you context, I learned how to do my NPC mod by first learning all of the little parts that I knew I would want to include with any NPC I made - making maps, crops, furniture, etc

royal stump
#

SVE does that for some stuff like bushes in config toggles, bushes they only want removed after a quest, etc

dusk mulch
hard fern
#

my npc making has been... largely stalled by the fact that

  1. i hate writing
  2. i hate making sprites
    😭
blissful panther
#

The fake bush thing will be very simple, don't worry! It's just a matter of finding the bush tile in the tilesheet, and drawing them on the map.

inland loom
#

What exactly is making your own mod includes? Like coding? Drawing? You need specific skills?

rigid musk
#

I published my first mod in June of 2022 and I only am having my NPC mod being beta tested by some people

dusk mulch
rigid musk
#

Depending on if you want to commission other people to do certain things you aren't good at you need a bit of a lot of everything really

slender badger
# inland loom Yikes......

Why is this a "yikes"? People don't have to create an NPC and it doesn't matter how long it takes to get there if they do want to make one

rigid musk
#

Pixel art is a big thing if you want to add... most things to the game aside from dialogue

#

I think the yikes was more of a metaphorical 'oh wow i didnt realize'

#

not easy to tell without tone tags though I suppose

blissful panther
dusk mulch
#

i cannot do pixel art for the LIFE of me

iron ridge
rigid musk
#

Map making doesnt necessarily require pixel art skills, but if, like me, you want specific tiles that arent anywhere else and no one has made youll need to know how to make said tiles (or pay someone to do it for you)

#

If you want a specific fruit and dont want to pay someone to make it you gotta make the fruit y'know?

inland loom
#

(Answer to Airyn )The yikes is for me cus damn.... I'm a bit tooo excited and idk how much it may take for me to go through allllll this if I wanna create smth...

dusk mulch
#

what would be the general price for 3 64x64 pixel arts?

rigid musk
#

If you like it enough then I believe in you

#

If you want it enough you can do it

hard fern
#

depends on how detailed, probably?

rigid musk
#

I wanted Qi to be an npc and goddamn did I do it

hard fern
#

and what exactly the 3 pixel art pieces you want are

dusk mulch
rigid musk
#

^ prices will vary

inland loom
rigid musk
#

And depend on the artist you commission

#

Do you have any ideas for what you want to add into the game (aside from an NPC since that's big work)

#

I was just about to type out an example of a mod I was going to make and I think I just scope creeped myself thinking about it oh god

dusk mulch
#

@inland loom I would recommend either starting off your first mod with a framework or sprites, then looking at the mod idea depo and go from there.

inland loom
hard fern
#

😭

rigid musk
#

Everything cool takes time

hard fern
#

ive been working on mine for like... a good few months lol, im definitely not consistently working on it though

inland loom
naive wyvern
#

modding requires a bunch of skills sure, but as long as you treat it like any other skill (something that needs practice, research, and learning) then youll eventually make something

rigid musk
#

^

#

Again starting off small is the best idea

#

If you have a large idea, like making a set of sixty crops, just start by making one

#

Starting off by just making the pieces is also great too!

naive wyvern
#

start with small retextures, study the tutorials on the wiki, maybe use mods and see what youd like to do

vernal crest
#

I started modding by adding a bathroom to the farmhouse lol

inland loom
#

Thankss for the advices

rigid musk
#

You want to add neon grapes to the game? start by spiriting the grapes :3

dusk mulch
inland loom
rigid musk
naive wyvern
#

I started modding by editing a UI mod because I wasnt happy with the contrast, and then before I knew it I started making my own UI theme mod

inland loom
#

I'm sorry I have to get used to no reply or do reply thingy..

vernal crest
# dusk mulch isnt that on the mod idea depo?

No idea, I don't read it haha. I wouldn't be surprised though because a) there are already a bunch of bathroom mods for the farmhouse and b) everyone loves the idea when I mention it xD

rigid musk
#

It's usually in folks' names :3 I just make sure to read em first before sending my message if Im not sure

vernal crest
rigid musk
#

though ive been in here so much I mostly know who likes pings and who doesnt by now...

#

Again my first few mods were literally just me messing with a framework that I liked

inland loom
slender badger
#

You can reply without pinging

rigid musk
#

Mmm I know what I can work on now...

#

Gold statue time

inland loom
#

Oh I didn't know this was for that reason

dusk mulch
inland loom
#

Damn is that why I don't see when ppl ping me here some times? Okay good to know

rigid musk
vernal crest
rigid musk
blissful panther
dusk mulch
#

why did i open GIMP to edit maps?

inland loom
# dusk mulch On.

I always get your ping but I noticed sometimes I don't get from others

inland loom
dusk mulch
blissful panther
#

(You can check to see if a reply was a ping or not!)

blissful panther
#

Ping and no ping. Just look for the @!

rigid musk
#

Oh that's really cool actually i didnt know that

dusk mulch
inland loom
blissful panther
dusk mulch
#

ty sm!!

inland loom
rigid musk
#

Yeahh some people just don't enjoy the pings. Others like myself prefer to be pinged because I also struggle with seeing messages sometimes... or in get distracted and forget what I was doing or if I was helping someone so if they don't ping me then I forget I was even here

#

Everyone has their reasons:3

inland loom
#

I find it hard to answer a message if I don't see it pinged.. That way it's easier for me too..

dusk mulch
#

me downloading an old mod to salvage old code:

unique sigil
hard fern
#

farmhouses are terrifying

unique sigil
#

highly do NOT recommend starting mapmaking from a farmhouse. you need to have like lv 5 in the debugging professsion minimum because you will run into a bajillion issues SDVkrobusgiggle

mystic sparrow
#

Heyo, I keep getting this message in my smapi log and I'm not sure what it means cause my dialogue still seems to load fine...
[Content Patcher] Ignored HakanNPC > Haki_Dialogue > data/dialogue/dialogue_hakan.json > EditData Characters/Dialogue/Docky: one of Entries, Fields, MoveEntries, or TextOperations must be specified for an 'EditData' change.

blissful panther
unique sigil
#

maybe we could make joke certificates that list what frameworks every contentsmith is proficient in, lol

vernal crest
#

Fortunately patching very small things into farmhouses is actually not tricky at all or I would've possibly given up modding immediately lol

unique sigil
#

oh yeah, that's just like any other simple map edit

vernal crest
ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.

When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.

unique sigil
#

even then farmhouses still have more 'no touchy this' tiles than any other type of map SDVkrobusgiggle

vernal crest
#

I did make a location with changeable wallpaper and floors for my first mod though which I would now not advise others attempt first lol

unique sigil
#

yeah uh, i started from farm maps, and imo even replacers are,, a little complex for someone who's going in blind

#

maps have too many moving components

vernal crest
#

Yes it's a pity that the things that people generally want to attempt first are in fact some of the worst to try first haha

unique sigil
#

imo easiest things to start with are retextures/object recolors SDVpufferowo

vernal crest
#

Though I guess that partly depends on how much you enjoy the process of troubleshooting and learning new things because running into problems was enjoyable for me so it didn't really matter that what I was trying was more difficult.

mystic sparrow
vernal crest
unique sigil
#

(i did start with personal retextures/AT, but my first published mod is a farm map, so i consider that my starting point SDVkrobusgiggle)

slender badger
#

If you've copy-pasted your code to the other NPC though, you've likely got the same error in that one too though

#

You're the author of Hakan, right?

mystic sparrow
#

oh i think i found the issue actually

slender badger
mystic sparrow
#

Sorry qwq

slender badger
#

What's the reason your mod requires SVE, by the way?

mystic sparrow
#

I had events that took place in SVE locations

#

and I wanted to play the mod with SVE

#

I'm almost done making it stand alone tho

slender badger
#

That's good to hear πŸ˜„ There's a lot of people that prefer not to use SVE

mystic sparrow
#

Yeah I got alot of people asking me to drop SVE dependency

blissful panther
#

If you had events in SVE maps, that's a huge amount of work to undertake. Good job on pushing through that. SDVkrobusgiggle

#

Are all of the events just taking part in vanilla maps now, or are you keeping multiple versions of each event? One for vanilla and one for SVE? SDVpuffereyes

#

Because if it's multiple... hoo boy, that's even more.

mystic sparrow
#

I'm keeping multiple versions of the events. If SVE is detected it will load the events for SVE

#

it wasnt too hard tho bc many of my events are still on vanilla maps

dusk mulch
blissful panther
#

Double quotes around "Paths"!

dusk mulch
#

Uh, how did you answer so quick? But thank you!

hard fern
#

magic

dusk mulch
#

Still getting the same error

uncut viper
#

"Layer": "Paths",

blissful panther
#

Oh, when I say double quotes I mean "Paths", not two double quo-

#

Yes.

dusk mulch
#

Oh

blissful panther
#

" being a double quote, and ' being a quote.

dusk mulch
uncut viper
#

oh, MapTiles is a list of objects is it not

blissful panther
#

Actually, @dusk mulch, for this item pickup thing... do you want it to refresh after a certain number of days? Or do you need it to be a one-time-only thing?

mystic sparrow
uncut viper
#
"MapTiles": [
  {
    "Layer": "Paths",
    "Position": {
      "X": 27,
      "Y": 25
    },
    "Remove": true
  }
],

i think this is how it should be

#

[ ] means a list and { } means an object, so a list of objects looks like that

dusk mulch
#

it worked but thats a weird way for json to work

#

ohhh

uncut viper
#

thats how json works in general

blissful panther
# dusk mulch One time only

Okay, I'll add a quick tweak so you can have it set a mailflag, so that way you can make the patch that adds the tile property conditional on not having that mailflag so it can be really one-time only.

vernal crest
#

Help this map is 12mb everything is laggiiiing

hard fern
#

😭

#

uh oh?

hard fern
#

..wait are the special item reject/accept lines called something different

dusk mulch
#

ok

hard fern
#

like acceptgift vs rejectitem

ocean sailBOT
#

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

dusk mulch
#

The interaction still isnt working

vernal crest
blissful panther
# dusk mulch One time only
{
    "Action": "EditData",
    "Target": "PEEM/ItemPickups",
    "Entries": {
        "PEEM.Test.Pickup.BackwoodsArtifact": {
            "ID": "PEEM.Test.Pickup.BackwoodsArtifact",
            "ItemID": "(O)101",
            "Quantity": 1,
            "DaysToRefresh": 3,
            "LocationName": "Backwoods",
            "MailFlagToAdd": "MyMod.MyMailFlags.PEEM.Test.Pickup.BackwoodsArtifactObtained",
            "OneTimeOnly": true,
            "Tile": {
                "X": "29",
                "Y": "26"
            }
        }
    }
}

It'll look like that now. Only changes are the "MailFlagToAdd": "MyMod.MyMailFlags.PiereTomatoThingObtained", line, and the "OneTimeOnly": true, line.

Just rename the mailflag to be whatever makes sense for your mod, and then make the patch that adds the tile property (not the ItemPickups model here) conditional on that with a When condition.

blissful panther
dusk mulch
hard fern
blissful panther
#

The priority shouldn't matter here. It's just more important that it's definitely being removed at some point. As long as there is a tile on the Buildings layer at the point the patch tries to add the tile property to it.

dusk mulch
#

may have fund the issue

#

found*

#

hmmmm

#

thats weird

#

OHHYHH

#

wait no

vernal crest
#

Ah the map is so large because the game adds tile data about the tile's flip and rotation to every single tile now

#

So much unnecessary information

#

Such laggy Tiled

brave fable
#

flip and rotation have always been recorded by tiled. the only barrier to using them ingame was SMAPI.

#

in any case, default values aren't saved to the file

#

you can open the tmx for yourself in a text editor to verify

vernal crest
#

They are when you do a patch export

blissful panther
#

...holy.

mystic sparrow
#

what the

brave fable
#

tiledata βœ…

rancid temple
#

TileData all the way down

vernal crest
#

I think this is a change as of 1.6.9 - ooh I was going to say I can't check that but actually of course I can because I still have 1.6.8

brave fable
#

i certainly don't remember being able to patch export maps

blissful panther
#

I think Atra PR'd that a good while ago?

vernal crest
#

Only I can't check right now because the entirety of my computer's resources are going into deleting those object layers haha

rancid temple
#

I wanna say it exported like that in 1.6.8 too

vernal crest
#

I don't remember it doing so roku but my memory is terrible so...

#

I've definitely never had a patch export of 12mb before though. That might just be SVE.

dusk mulch
#

...

rancid temple
#

Yeah, probably just that lol

dusk mulch
#

for once silence in the console...

#

it feels so good

#

IT WORKS

#

YIPPE KY YAY

rancid temple
#

I still have my 1.6.8 install and I'm not doing anything else currently lol

dusk mulch
#

Thank you @blissful panther and @uncut viper !!!

rancid temple
#

It does not in fact put TileData on every single tile

vernal crest
#

I AM A HERO

brave fable
#

that doesn't look good SDVpufferthumbsup

vernal crest
#

The reason I thought it might be 1.6.9 is because that was when we started having the thing with rotating tiles too

rancid temple
#

So clean

dusk mulch
#

funny thing about modding is if you change 1 letter/number/character, the whole thing breaks, every character counts

vernal crest
#

In the meantime, Tiled has made zero progress on deleting those object layers.

rancid temple
#

Might be too much for your poor computer

vernal crest
#

It is, my poor little baby

brave fable
#

maybe you're better off with the text editor after all SDVpufferfush

vernal crest
#

I'm just sitting around while I wait for another patch export from the person I'm helping

#

Which means I should kill Tiled so I can view the next one

#

Oooh it wasn't even trying to delete the layers! Rude

dusk mulch
#

i have school tommorow and instead of sleeping im hurting my head making mods, trying to get this next version done

blissful panther
brave fable
#

is it not possible to chain question dialogues SDVpufferthinkblob

unique sigil
dusk mulch
dusk mulch
vernal crest
brave fable
#

ooh actually i think i need to reset Game1.currentLocation.afterQuestion

vernal crest
#

Oh

#

Of course you are using C# haha. Well I have nothing for that.

brave fable
#

forgot i needed to say in cs haha

vernal crest
#

I was so excited and now I am so crestfallen SBVSob

unique sigil
#

oh well at least we can have multiple tile-tiledata now SDVpufferowo

blissful panther
vernal crest
#

Wow, I can't believe my attempt at using TextOperations for MapProperties was right first go

gentle rose
#

I love when that happens

#

you get some weird syntax right on the first go and it feels like you've mastered the ancient arts

vernal crest
#

Yes it's excellent. I give Pathos the credit for having such great documentation and examples.

calm nebula
#

It is supposed to exclude flip and rotation if they are zero

#

I'll add it to the nine things I'm supposed to take a look at

vernal crest
#

Do you want me to get you copies of my map (that has flipped and rotated tiles) exported from 1.6.8 and 1.6.15 for comparison atra?

calm nebula
#

Just the 1.6.15 would be great+

vernal crest
#

Will do

calm nebula
#

Thank you so much SDVpufferheart

vernal crest
#

Hmm or I will immediately crash my SMAPI instead lol

dusk mulch
#

@blissful panther I have to go to sleep, just ping me with the instructions and i will do them when I can

vernal crest
#

Oh symlinks again. I am going to keep tripping myself up with those

unkempt bluff
#

https://www.nexusmods.com/stardewvalley/mods/16767
Is a bad Idea to make rubber shooting less than lethal ranged weapons that have very poor damage, but have 100% stun chance and have infinite clips/mags?
How much this concept does hurt the concistency of the game lore? (I know its not a lore-friendly idea)

#

I would like to further develop this idea

#

You craft them

gentle rose
#

is that your own mod, or someone else's?

#

the one you linked

unkempt bluff
#

Someone elses mod

#

But Im a bit familiar with it

gentle rose
#

oh right, it's a peacefulend mod

#

lore-wise I personally don't want guns anywhere near my game but I guess you can do whatever you want for yourself?

slender badger
#

It's your mod idea, so it's your decision whether or not it's un-immersive or matches the game's lore. Personally I would never install a gun mod regardless of what type of gun it is.

#

That framework also hasn't been updated to 1.6, so it may or may not work.

gentle rose
#

there goes my staple gun mod /lh

lucid iron
#

I think archery's borked yea

slender badger
# gentle rose there goes my staple gun mod /lh

Reminds me of this random image I saw one time where someone had legit asked "what type of gun would Jesus use" ( πŸ’€ ) and someone else replied with the only legitimate answer of "a nailgun, for carpentry" πŸ˜†

gentle rose
#

I'm still confused about how this is mechanically much different to a slingshot, except for the specific bit about 100% stun chance

#

"what type of gun would Jesus use" is a hilarious question ngl

unkempt bluff
#

Infinite ammo but you still need to reload the magazine

lucid iron
#

You will probably need to do C# hm

#

Im not sure if reusing slingshot is best way

unkempt bluff
lucid iron
#

Also farmer anim will be cursed (as usual)

#

It's broken in 1.6

gentle rose
#

maybe my instinct to reuse slingshot is because writing a handler for a projectile weapon sounds like literal hell

slender badger
devout otter
#

There is actually a fairly new (uploaded December 2024) firearm mod for Stardew that adds an AK-47. but

#
  1. It's on Curseforge.
#
  1. I only heard about it when it broke a user's save file.
unkempt bluff
#

Ok

hard fern
hexed bolt
#

wait, you have to adopt children in stardew valley?

hard fern
#

hm, so my current map is 75x80, and i want to make it bigger... but is that too big? (and no, it's not a farm map)
idk if i should instead just make a second map and just warp between them or not

lucid iron
#

It's about the vibes u r going for i think

#

I don't think 75x80 is that bad

unkempt bluff
#

so anny stardew valey mod you can expand or use as base like the archery one filosofy, but working?
No need to be weapon related specifically

lucid iron
#

Esp if there's a lot of scenery

slender badger
lucid iron
#

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

See list of framework mods

calm nebula
hexed bolt
lucid iron
#

Are you making a mod

slender badger
calm nebula
#

how much pain would it take to add command aliases

#

(hey Pathos...I kid, I kid)

#

(ngl, I think Central Station is great)

unique sigil
#

(agreed, i spent too much time sifting through the flavor text to try and find more funnies)

hard fern
#

(badly drawn sketch)

calm nebula
#

Hey @blissful panther , what do you think of a SpringOnionZone x y w h map property?

#

I'm totally not asking for stupid reason I promise

lucid iron
#

Seemed fine to me

unique sigil
lucid iron
#

Seems fine to make 2x size I mean

hard fern
#

yeah i think i'll just go ahead and elongate the map... this is all bc i dont want to fight with warps

normal trout
#

Is there somewhere I can go to find more help with making a custom farm map and adding the location to the game as a new farm type rather than overriding an existing one? I'm super confused with the info I've found so far, and I feel like I keep getting confused by the different data I need to edit/create/add and accidentally keep adding multiple versions of the location or something? I'm not super sure. But I know I'm doing this wrong, and https://stardewvalleywiki.com/Modding:Location_data hasn't been super helpful for me.

lucid iron
#

You need to add an additional farm

normal trout
#

Yes, I gathered that much πŸ˜‚

calm nebula
#

(matching: GingerZone x y w h x2 y2 w2 h2....)

lucid iron
normal trout
#

I was hoping there's a more specific wiki / documentation for modders for the farm

#

YES thank you

lucid iron
#

Here's page on that

normal trout
#

That's hwat I need.

hallow prism
#

i suggest looking at a mod doing what you want

normal trout
#

Thank you πŸ™‚

hallow prism
#

and see how they do it

slender badger
lucid iron
#

Besides this take a look at kisaa's farms they r all additional farm type

hallow prism
#

(i usually try to have both : documentation and a mod as a example)

normal trout
#

If you're talking to me, I have looked at examples, and ended up confusing myself. I keep losing track of when I have to use an ID like Froststar.MapNameHere and when I need to use a _ instead, and it's just a mess πŸ₯²

unique sigil
lucid iron
#

They r all-1 additional farm type

unique sigil
lucid iron
#

It helps if u use tokens

unique sigil
#

perhaps develop a specific system

lucid iron
#

{{ModId}} and stuff

normal trout
#

I know. Thus why I asked for documentation help rather than showing someone my json and having them help me fix it lol.

#

Ugh typos sorry i'm not awake yet

unique sigil
#

i dont think there would be any proper docs for that, unfortunately

hallow prism
unique sigil
#

like chu said try prepending {{ModId}} to all the names, and use exclusively . or _ as a separator

#

you have to develop your own system. i prefer _ myself because . is for UniqueIDs in my system

normal trout
#

Like, I just literally need a good example of the names people have used, and the {{ModID}} and such because tokens are a new concept for me as an older modder before that was a thing I could do in this application. So my biggest struggle is like... "this field should be the same as that field" and so on. Like, a really nicely commented json example would save my life rn πŸ˜‚ And sadly not many people comment their jsons the way that would help me.

#

Yeah, I think my system is to use . for unique IDs for myself like you do Kisaa, and then the _ is for like... different locations within that ID? If that makes sense?

unique sigil
#

mine's like this

        "Action": "EditData",
        "Target": "Data/AdditionalFarms",
        "Entries": {
          "{{ModId}}/MystwoodHomestead": {
            "ID": "{{ModId}}/MystwoodHomestead",
            "TooltipStringPath": "Strings/UI:{{ModId}}_MystwoodHomestead",
            "MapName": "{{ModId}}_MystwoodHomestead",
            "IconTexture": "Mods/{{ModId}}/Icon"
          }
        }
      },```
lucid iron
#

I think everyone's got their own idiosyncrasies with their mod organization

unique sigil
#

slashes for entry names and the ID field, underscore for names, dot for UniqueID

slender badger
lucid iron
#

It might be better to just look at someone's mod first then ask here "why did they do that"

unique sigil
#

(but try not to make me an example because i'm very anal in certain aspects of my workflow and an absolutely disorganized heathen in others)

normal trout
#

I'll play around with it and if I am still stuck, I'll come back and post my broken ass .json so someone can help walk me through it in a more specific way, I guess lol.

unique sigil
#

(i do not have a template because 1. i'm lazy to set up my github and also github is confusing 2. i forgor SDVpufferpensive)

slender badger
lucid iron
#

Everytime I open some cp mod i see they mixed space and tabs and i take 5 psychic damage

normal trout
#

Yeah I definitely plan on making a template, once I actually figure out how it works, so I can use it in future.

lucid iron
#

This one is bad example

#

It's c#

hallow prism
#

i agree that sometimes it's not easy to get why people have a modid_stuff and then a modid.stuff

calm nebula
slender badger
calm nebula
#

Enjoy!!!

slender badger
#

Ahh, it is too πŸ˜… Okay, disregard that one then, Frost, haha

lucid iron
#

Yeah it's old

unique sigil
#

yeah i feel like it all comes down to figuring out what works for you specifically

calm nebula
#

(When I open CP mods I usually have vscode fix the formatting)

normal trout
#

I think I'm often mixing up when I have to reference a location vs the map name in these fields, honestly. That's most likely my biggest issue. Is just not knowing what to use in what circumstances. Like I said I'll play with it and come back here when I've tried everythiing I cna think of πŸ˜‚

hallow prism
#

there's a bit of personal preference and a bit of what is suggested in wiki and such in term of format

vernal crest
#

For me it's important to understand why the conventions are what they are so I understand how to use them in new contexts too.

unique sigil
#

my only advice is: stay consistent.

brittle pasture
reef kiln
#

@unique sigil is the mine cart bundle in mystwood map suppose to take a weird type of stone? Because I don't know how to get that stone. The picture looks like stone on the ground before you break it. Not sure it is actually something I can get.

normal trout
vernal crest
#

Every time I copy someone else's code and they've used spaces I have to delete them all and replace them with tabs

brittle pasture
hallow prism
#

me and my map patches :
"let's name it basemapmappatch"
me a month later :
"i will name it basemapbundlepatch"
me another month later :
"i will name it bundlepatch"

unique sigil
vernal crest
calm nebula
#

(I use four space tabs personally, but I also set VS to enforce spaces)

#

AND make whitespace visible so I can see this

#

god I can't with mixed tabs/spaces because then github janks it all up

normal trout
hallow prism
#

remind me in 30 hours to remember to do the github thing i forgot about, uber pls

patent lanceBOT
#

Oh okay, lumisteria (#6510076) (30h | <t:1738700695>)

tiny zealot
#

i fought in the whitespace wars once, but i retired. i don't care anymore.
"that's a job for clang-format", i say, and then usually i'm too lazy to remember to set it up (cf. not caring) so sometimes i'm consistent and sometimes whatever

unique sigil
gentle rose
#

why does the word clang give me a sense of terror. I can't even remember what it is just that I hate it

unique sigil
#

clang as in,, clanging sounds?

calm nebula
#

because it's the sound of dropping dishes on the ground

#

also it's the llvm cpp compiler

gentle rose
#

that does ring a bell

tiny zealot
#

(i also fought in the editor holy wars. i still quietly prefer modal editors, but i don't particularly like vi/m, it's just the best one that i already know how to use)

calm nebula
#

look, I don't care what you pick as long as you're consistent

#

my coworker has been doing 2space tabs in python and ...

brittle pasture
calm nebula
#

well

gentle rose
#

atra can I put your coworker in jail

brittle pasture
#

that day will be at least after march 4th 2025

gentle rose
#

they are a danger to society

hallow prism
#

being consistent is very hard for me, i am glad i don't do code πŸ˜„

calm nebula
#

it's fine in non-whitespace-has-meaning-languages

#

but in python it fucks shit up.

gentle rose
#

what are they editing on that lets them do that...

calm nebula
#

vscode

tiny zealot
calm nebula
#

I'm sorry, ichor, I didn't pick the programming language

#

if I had a choice I wouldn't have picked python 3.6

gentle rose
#

anyone who uses tabs in code instead of spaces has some answering to do

velvet narwhal
#

-# yaml

gentle rose
#

thinking about it, I actually don't edit python directly in IDEs any more since I almost always use jupyter notebooks SDVpufferthinkblob

velvet narwhal
#

yk if my cruddy dinky custom additionalfarm is gonna get subjected for "tutorializing" i should probably add comments to it

gentle rose
#

I rarely need to do anything that isn't very quick and standalone

brittle pasture
#

at least I'm glad this chat seems to have picked a side in the tabs vs spaces war
(the only people who even thinks this was a discussion are CS undergrads prove me wrong)

velvet narwhal
#

all i know is: i hate manual harmony patching because vs22 gives me ugly whitespace

brittle pasture
#

/s for legal reasons

gentle rose
#

any cs undergrad that thinks it's up to debate should be punished by becoming a 100% front-end dev for the rest of their career /lh

#

front-end devs are very talented it's just a bit like drilling holes into my skull

normal trout
velvet narwhal
#

in all fairness it was me uploading all of my projects so i could reformat my computer and me going, "i don't need any of my shit to be private, actually"

velvet narwhal
true coyote
#

hmm, ok so I adjusted my sprite sheet to properly have the sprites aligned, however I'm still getting this sprite. doesnt even change to the corner sprite when changed. someone said something abouta sprite index, but im not sure if I should change it or what to change it to (its currently 0)

brittle pasture
#

have you spawned new items

true coyote
#

yes

brittle pasture
#

sprite index must correspond to the position of the sprite you want

#

is the sprite you want the top left sprite (ie pos 0)

true coyote
#

yes..... I think? its not at exactly 0,0 .. none of the other fence tile sheets start at 0,0 though.. so its a bit confusing

drowsy pewter
#

fenceshave another sprite for the object dont they

#

in springobjects

#

they dont use the fence image directly

#

you need to draw something like that

true coyote
#

I never made anything for spring objects and its pulling from my tilesheet, is that just a work around it does in that case?

drowsy pewter
#

you need a separate image for the object when its in your inventory

#

doesnt matter what image it is

#

a fence is two tiles high but inventory items are not that big, thats why theres a completely separate sprite

true coyote
#

yes, I know, I'm just saying because I never made one, why is it still pulling from my tilesheet (even if in the incorrect position)

#

I feel it would still give me the 🚫 if I didnt have the thing

drowsy pewter
#

it's pulling from your tilesheet because you put it in the object code somewhere

#

it only pulls from where you tell it to pull from

#

likely you listed the tilesheet without understanding what it would be used for

true coyote
#

yes, this is true

drowsy pewter
#

just change the Texture field in the Data/Objects edit that you do

true coyote
#

because I only have like 1 thing to pull from for reference for a custom fence object and that is SVE. I'm just working bit by bit as I can since the guides for custom fencing aren't fully there SDVpuffersquee

#

so lemme go change a thing I suppose. for the sprite I'll have to save it as edit data to spring objects? correct?

brittle pasture
#

edit it to point to your own tilesheet where the fence object can be fit into a 16x16 box in the top left

hard fern
#

one last wip before i collapse X.X

unique sigil
#

looks great! i like the shoreline SDVpufferheart

radiant flame
#

is this a thing already? I can't find a ref to it in smapi docs

radiant flame
#

thanks!

drowsy sorrel
#

@lucid iron Hey

lucid iron
drowsy sorrel
lucid iron
#

Translating content patcher docs

gentle rose
#

chu hmmmm why is your nickname chu root e but your username chu(e as a decimal)?

#

where did the other factor of root e go

lucid iron
#

I ate it

gentle rose
#

fair enough, continue

#

no further questions

drowsy sorrel
lucid iron
#

Translating Content Patcher Docs

velvet narwhal
gentle rose
#

is there someone to report a website that's publishing pirated versions of stardew to...?

#

like idk if this is a junimos thing or what

velvet narwhal
#

maybe the public forum?

gentle rose
#

uh I don't have an account on that, maybe I'll have to make one

#

of COURSE this website is using aigen art for stardew

velvet narwhal
true coyote
gentle rose
#

final screenshot. mooding

tiny zealot
wanton pebble
#

Mood

gentle rose
#

the literal only thing you do is share a pirated copy of a game...

tiny zealot
#

god it's so bleak when a website has to put that up as some kind of CYA even though every person writing or reading it knows it's a lie

gentle rose
#

oh sorry it's a leagle page ichor, my bad

velvet narwhal
#

Thats my one legged beagle's nickname

gentle rose
#

well if you put it that way, go right ahead! huhvorgar

#

I am morbidly fascinated by this website

brittle pasture
velvet narwhal
#

Leah if she were a lawyer

gentle rose
#

the actual youtube IP lawyer legal eagle would like to have a word SBVLmaoDog

true coyote
#

I was gonna send a gif of him but I wasnt sure anyone would understand lol

gentle rose
#

they have social links at the bottom but they've already managed to get suspended from reddit lmao

brittle pasture
#

(the vanilla one)

true coyote
#

I made a custom gate for to go with my fence

brittle pasture
#

not a gate item that you put on a fence to turn into a gate

true coyote
#

mm no, I suppose not. I see what you're saying now

brittle pasture
#

if you mean the gate sprite in the fence png, yes, but I assume you already have that

gentle rose
#

AirynDisgust anyway I'm done, will find someone to send this website to

brittle pasture
#

:airyndisgust:

slender badger
#

I'm famous UUwU

iron ridge
gentle rose
iron ridge
#

What site is this? I am interested in wasting a monday evening looking through this (probably shouldn't share here tbf)

gentle rose
#

but I'm like 99% convinced you already own a legit copy /lh

iron ridge
torn beacon
#

@ivory plume any chance of getting an API for Central Station to add destinations?

faint ingot
#

So, I have a couple of food items in my mod that are not intended to be available through cooking (similar to magic rock candy), however I have a report that they show up on the cooking tab even though I do not have recipes for them in the mod. Is there a property I can apply in data\objects so they don't show up? They don't seem dissimilar from the objects entry for magic rock candy.

gentle rose
lucid iron
#

Well, there's always the question of how do ppl do c# content edits on custom data models

#

I don't know if there's good answer there

ivory plume
#

It's a bit tricky in C#, since you need to somehow add instances of the correct type to the data model (since you're working with the actual data instead of a JSON representation like Content Patcher). It's something I want to look into more, but not sure if that'll be done in Central Station 1.0.0.

torn beacon
#

I was using Train Station's API, so I was just looking for a lateral change. I will look at CP API

ivory plume
#

I wonder if we could do something with Pintail for that.

lucid iron
#

But that part wouldn't be api boundary anyways right

#

It's 2 mods leverage same game system

ivory plume
#

Yep, but Pintail isn't technically restricted to API boundaries (that's just how SMAPI uses it).

lucid iron
#

I was kind of wondering if just giving the edit an object would like, work

#

Since the type would be known via the initial load by framework mod right

ivory plume
#

Unfortunately not. The data asset has a specific type (e.g. Dictionary<string, StopModel>), so C# will fail when you try to assign a non-StopModel value (even if you use reflection to cast it).

gentle rose
#

how does content patcher convert these things? some very complicated code, I assume?

ivory plume
#

Yep, converting between arbitrary data and JSON is a big chunk of the Content Patcher code.

brittle pasture
gentle rose
#

a content patcher api would be interesting if almost entirely unnecessary 99% of the time

ivory plume
#

Usually the approach would be to bundle both a C# and Content Patcher mod in the release, but that might be overkill if the only content edit is adding the Central Station destination.

brittle pasture
#

(yeah I havent found a good solution for this that doesnt involve a hard dependency)

rancid musk
#

I have a generic Dictionary wrapper for use with pintail for modifying data assets

gentle rose
#

I wonder if there are some super hacky ways to do it. Like make your code generate a content patcher pack on the fly

ivory plume
#

You could use reflection to create the StopModel instance. It wouldn't be hard, just tedious (especially if many mods need to copy the code).

brittle pasture
ivory plume
#

I added a TODO to look into adding a C# API for Central Station in the meantime.

gentle rose
lucid iron
#

It would be nice if content patcher has like

#

C# facing "load this particular json for me"

#

Would be hard to support tokens and stuff though

rancid musk
gaunt orbit
#

Wouldn't it be simpler to just use assets in that case?

tiny zealot
gentle rose
#

you can't Include an asset instead of a file, can you...

#

every time I talk about content packs I am reminded that I know nothing about them

tiny zealot
#

(i haven't updated the readme about it. that's a todo, don't @ me)

lucid iron
gaunt orbit
faint ingot
lucid iron
gentle rose
brittle pasture
ivory plume
faint ingot
#

why would they not show up in mine then?

brittle pasture
#

the farmer collections screen? or the cooking menu?

faint ingot
#

oh yeah I just realized that. they do show up in collections

#

i was thinking of the cooking interface

ivory plume
#

Though I guess Content Patcher could have a C# API which lets you pass in a temporary content pack. It'd still require a bit of rewriting to support, but much less than a C# API to apply arbitrary JSON data to an asset.

gentle rose
#

what we really need is a content patcher IncludeAsset patch type that takes in a string asset of the json and includes it like it was a file /lh

tawny ore
ivory plume
#

(But on the gripping hand, at that point you may as well just create an actual content pack so it's properly tracked/versioned/etc.)

gaunt orbit
#

Cp proxying would only be narrowly useful if you're doing lots of complex edits to many different foreign assets

gentle rose
hallow prism
#

ah well yes you did, i didn't scroll enough

lucid iron
#

Yeah it is a bit silly given that the point of doing edit in c# was to avoid dependencies

faint ingot
ivory plume
gaunt orbit
brittle pasture
ivory plume
#

You don't have direct access to the type though (unless you have a hard dependency on the mod).

gaunt orbit
faint ingot
#

Oh I still have them as "Category" -7 that's probably why

gentle rose
#

(pathos, while you're here, do you know what's the best way to report a website uploading a pirated version of the game is? we found not one but two today, though I didn't share them here for obvious reasons)

tiny zealot
gaunt orbit
#

Alternatively, you could lazy-load the delegate and read the asset datatype directly

rancid musk
#

This is why you include in your API a method to construct one of your backing model instances, and whenever someone tries registering one you do a type check (and possibly force pintail to unbox things)

faint ingot
ivory plume
#

Well, actually this isn't too difficult with dynamic if you create the type:

IDictionary asset = new Dictionary<string, StopModel>();

dynamic entry = Activator.CreateInstance("Pathoschild.CentralStation.Framework.StopModel, Pathoschild.CentralStation");
entry.DisplayName = "Test";
entry.ToLocation = "...";
...

asset[$"{modId}_Example"] = entry;

Just very fragile.

#

I'll probably just add a C# API which takes the values and registers the destination itself, it's a lot safer and versionable.

gentle rose
#

I think so far Khloe's pintail method seems the most durable (short of an actual api)? unless I'm missing something SDVpufferthinkblob

rancid musk
#
public interface IStopModel {
    string DisplayName { get; set; }
    // ...
}

public interface ICentralStationApi {
    IStopModel CreateModel();
}

public class StopModel : IStopModel { ... }

public class ApiImpl : ICentralStationApi {
    public IStopModel CreateModel() { return new StopModel(); }
}```
#

You'd then want to ensure any IStopModels passed back into the API are actually StopModel instances if that matters, of course, but that's a pretty easy assertion.

#

Removes the need for people to do weird reflection things to grab your type and instantiate it.

#

It could be problematic for versioning depending on how you change your model, admittedly, but for that matter so could people accessing it with reflection.

lucid iron
#

You can add fields fine right

ivory plume
#

Well I was thinking Central Station would just add a simple API like this:

void AddDestination(Func<string> displayName, string toLocation, Point? toTile, string toFacingDirection = "down", int cost = 0, string networks = "Train", string? condition = null);

And if the data model changes later, I can just add an overload and deprecate the old method.

gentle rose
#

ducktyping is a fun idea, programming languages should do more of that (not in the javascript way. never in the javascript way)

rancid musk
#

-# monkey's paw curls. it's the javascript way.

brittle pasture
#

got it, every class is now a Dictionary<string, object>

gentle rose
#

I will be the first person to defend javascript but not on this

rancid musk
gentle rose
#

if I use c# and run into the nonsense where "2" + 1 = "21" but "2" - 1 = 1 I swear--

fathom hound
#

is there a small generic npc schedule mod i can dissect from to help make my mod? i have no brain power right now but i also really wanna work on this SDVpufferflat

gentle rose
#

(and yes that is 100% true javascript)

hard fern
#

im kinda confused

fathom hound
brittle pasture
#

hmm is that something that's part of avi's template?

#

wait is that even possible for non-spouses

hard fern
#

wouldn't you have to get them to spawn in the farmhouse first

brittle pasture
#

I don't think that's a thing without C# I'll leave this to the npc georgs

rancid musk
faint ingot
#

@hallow prism Could I get you to look at something else for me? I based one of my special orders after one of yours in VMV, and I can't say I completely knew what I was doing. Someone is reporting they can't turn in the SO

hard fern
#

i know of one npc mod where they straight up live in ur house

#

but that was... oh way before 1.6

fathom hound
#

Relationship:NPCName & "HasValue:{{ChildNames}}": "true" would be my conditions

hard fern
#

idk if anything changed

gentle rose
ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.

When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.

fathom hound
#

but i wasnt sure what i would replace with npcname since its generic

faint ingot
hard fern
#

hmmm... SDVpuffersweats i feel like it would be more straightforward to just do it for each vanilla npc

faint ingot
#

This is the bit that I used from your example that I don't completely understand: "AcceptedContextTags": "{CropType:Tags}"

hard fern
#

because i know you can %spouse but idk if you can do that for your ex

hallow prism
#

have you tested it?

gentle rose
#

or am I blending memories of defining operators inside new classes and doing unrelated extension methods for other things SDVpufferthinkblob

hallow prism
#

if you haven't tested it, you may have something not working

fathom hound
faint ingot
#

I thought I had tested it but I'm sure I didn't/couldn't test all possible permutations. I will take a look at it some more I just thought you might have noticed something wrong with the AcceptedContextTags line idk

fathom hound
#

and if its multiplayer, would the npc go to the main farmhouse even if they didnt divorce that npc?

#

or would they go to the cabin

hard fern
#

SDVpuffersweats... im... not sure? i now want to test something like that

hallow prism
#

i don't spot anything wrong at first glance

#

and for what i remember of this report

#

the person had no trouble collecting the eggplants

#

just donating them

faint ingot
#

I wonder if they are trying to submit a different quality other than gold. thank you for checking I will do more testing and ask for more information

hallow prism
#

either the donation has issue with tag, or that, or the box is already used by another quest (but you seem to have the proper exclusion for that case)

fathom hound
#

well maybe not possible for MP with CP

#

or maybe it is??? im not sure how to check the code for npc going into players cabins

hard fern
#

well, i feel like the only way to know if it works or not is to test

fathom hound
#

true haha

#

if i wanted to make this mod compatible with bachelors/ettes from other mods, i would just need their ModID, right?

hard fern
#

youd probably need the npc's internal name

#

(which may or may not include the ModId)

tiny zealot
hard fern
#

huh

#

πŸ˜… i started making it a habit to stick my modid in front of everything just in case

#

i know that sve and rsv's npc don't though

#

maybe its because they havent tripped over duplicate names yet

fathom hound
#

should i only do this for vanilla characters then? sorry if im not understanding right now, head's foggy

gentle rose
hard fern
#

i think sticking to vanilla is a good place to start imo

gaunt orbit
# gentle rose I think so far Khloe's pintail method seems the most durable (short of an actual...
private static Dictionary<string, Action<IAssetData>> adders = new();

public static void AssetRequested(object? sender, AssetRequestedEventArgs ev) {
  if (ev.NameWithoutLocale.IsEquivalentTo("x"))
    ev.Edit(a => AddEntries(a, "assets/x.json"), AssetEditPriotiry.Normal);
  else if (ev.NameWithoutLocale.IsEquivalentTo("y"))
    ev.Edit(a => AddEntries(a, "assets/y.json"), AssetEditPriotiry.Normal);
}

public static void AddEntries(IAssetData asset, string local) {
  var name = asset.NameWithoutLocale.ToString();
  if (!adders.TryGetValue(name, out var add)) 
  {
    if (TryCreateAdder(asset.DataType, out add))
      adders[name] = add;
    else
      return;
  }
  add(asset, local);
}

public static void AddEntriesImpl<K, V>(IAssetData asset, string local) {
  if (asset.Data is not IDictionary<K, V> data)
    return;

  var toAdd = Helper.ModContent.Load<Dictionary<K, V>>(local);
  foreach((var key, var val) in toAdd)
    data[MOD_ID + '_' + key] = val;
}

public static bool TryCreateAdder(Type type, [NotNullWhen(true)] out Action<IAssetData>? adder) {
  adder = null;
  if (!type.GetGenericTypeDefinition().IsAssignableTo(typeof(IDictionary<,>))
    return false;
  
  adder = typeof(...).GetMethod(nameof(AddEntriesImpl))
    .CreateGenericMethod(type.GetGenericArguments())
    .CreateDelegate<Action<IAssetData>>();

  return true;
}

Will work with any dictionary asset, including custom models. Adds new entries from a local json file.

hard fern
#

if it works, you could always work on adding modded npcs to it later

fathom hound
#

okay thanks forsy

tiny zealot
hallow prism
#

unique string id convention?

tribal ore
#

Speaking of which, ichortower, just wanted to shout out quickly about how much I'm learning from looking at Hat Mouse Lacey. It's been an incredibly valuable learning tool for me

tiny zealot
hard fern
#

SDVpufferpensive im so indecisive i just changed my npc's name lol

hallow prism
#

ah yes, i did follow the convention in a lot of place but this one i didn't

ivory plume
#

(See unique string ID on the wiki; all the wiki docs should be updated to link to it for ID fields.)

hallow prism
#

i think basically all VMV is a stellar (pun intended) example of following the naming convention (AND i didn't have modid token) except the npcs

fathom hound
#

thank you

tiny zealot
hallow prism
#

to be fair i started the project before the naming convention, and for npcs i didn't have the courage/hearth to adjust

#

(it was already weird to have VMV in their internal name, it was the best compromise i could do)

hard fern
#

(what kind of crimes? mouse crimes?)

tiny zealot
hallow prism
#

admiting my crime in advance, in future npc mods i may have, i likely will keep the namefamilynameshortacronym

hard fern
#

πŸ€” come to think of it, are there actually any npcs who share names

fathom hound
#

i hope not

#

that would make this sm easier lolol

hallow prism
#

so for example SuHyeonFaycombeSereneAFS, rather than Lumisteria.AFS_SuHyeon, which, admitelly isn't SHORTER

#

but still

gentle rose
hallow prism
tribal ore
#

Modding a vanilla villager is hard enough. Adding a whole new one sounds like a whole can of words. Mad respect to y'all for doing it

fathom hound
ivory plume
#

(Tip: Content Patcher has a MigrateIds feature which lets you safely change NPC/item/etc IDs without breaking existing saves.)

tribal ore
fathom hound
#

SDVpufferwow oh thanks

hallow prism
#

i admire pathos' patience, not judging us for our crime and trying to gently nudge us instead

ivory plume
tribal ore
#

Nice. That will make testing one of my events so much easier

#

I've been making manual changes and copying save files around

#

I have on event with ... 5 branches? Depending on which version of a letter the player received earlier

ivory plume
#

(Oh, apparently it doesn't work for NPCs yet? I'll add that in the next Content Patcher update.)

fathom hound
#

woohoo thank you pathos SDVpufferheart

#

ill work on my vanilla ones for now then hehe

gentle rose
#

oh speaking of crimes, there were some central station related crimes I was intending on testing out yesterday I never got around to SDVpuffersquee I should go do those (shh don't tell pathos) /lh

ivory plume
hallow prism
#

i don't think i can really accept to entirely follow the convention for npc naming, for whatever reason it feels so weird

tribal ore
hallow prism
#

(to be fair some mods still use the internal name in place so this may play a part)

slender badger
fathom hound
#

off my memory i think every single npc in the big expansion mods im looking at dont share the same name

slender badger
#

It's definitely helpful to have a naming convention, particularly for new modders, but as long as people are sticking to the spirit of it, then it's fine

ivory plume
tribal ore
hallow prism
#

oh i agree it's simpler

#

mind doesn't always care about what's simpler πŸ˜„ but well, i can still change stuff if needed anyway

gentle rose
#

pro tip: make your npc internal names unique by dynamically setting them to an unused name using c# every time!

-# terms and conditions apply. This is not a real pro tip. Side effects include not actually being able to do anything, people looking at you weird, and wasting a lot of time doing nothing.

ivory plume
slender badger
hallow prism
#

i think recently there was something with zuzu having a character of a certain name and another mod needed to change their or something

slender badger
#

I can't remember the character's name, but there was, yeah

fathom hound
#

dropping this for a personal note for later heh, marriage candidates in every major expansion mod and vanilla stardew

(12) vanilla: abigail, leah, emily, penny, haley, maru, alex, harvey, elliott, sebastian, sam, shane

(7) SVE: claire, lance, magnus, olivia, scarlett, sophia, victor
(22) RSV: ian, jeric, june, kenneth, philip, sean, shiro, alissa, blair, corine, flor, kiarra, maddie, ysabelle, anton, bryle, daia, faye, irene, jio, paula, zayne
(10) ES: aideen, barron, hector, jasper, juliet, kataryna, mateo, sen, sterling, tristan
(1) VMV: aster
(6) downtown zuzu: cal, david, gwen, kristoff, sadie, selena
(6) passerby cemetery: nikolai, john, lyell, cotton, valerie, thalia
stoffton: alexandria, brina, clay, ebbe, fabiana, juliana, odo, quinn, silas, vasha, will, xen, dahlia, josef, mac, rolf, yosef
(12) Mineral town: Aja, Ann, Cliff, Doctor, Elli, Gray, Kai, Karen, Marie, Nami, Popuri, Rick

tawny ore
#

So I see NPCs have to follow Hollywood actors guild name rules

hallow prism
#

(i have more planned for VMV but this may take a random amount of time)

#

what is the hollywood actor guild name rules?

calm nebula
#

(Just use properly namespaced names and you'll be fine )

gentle rose
#

inb4 we get a David Tennant npc for the exact same reason David Tennant got his name

fathom hound
#

thank you SDVpufferheart

calm nebula
hallow prism
#

i have no idea if :

  • this is a real thing
  • how long it takes
#

or if it's a political joke

tribal ore
#

Science joke

slender badger
#

It's a scientific element SDVpuffersquee

tawny ore
#

To join the Hollywood Screen Actors Guild, you have to have a name that no actors has chosen before

#

Hence why actors pick new names for themselves

hallow prism
#

thanks for explaining πŸ˜„

fathom hound
#

huh, i learn something new from this discord every day lolol

slender badger
#

I don't know how long it takes to decompose, but from memory it's one of those ones that basically doesn't occur naturally and has to be lab-created under very specific conditions

gentle rose
#

a lot of actors, like David Tennant iirc, have had to change their names even if they weren't initially planning to because of that rule

hallow prism
#

this reminds me of the clowns faces on eggs