#making-mods-general

1 messages Β· Page 561 of 1

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:

buoyant moon
#

I figured there was a command for that but didn't know what it was off the top of my head

fossil osprey
#

I wasn't sure either, I just tried it x)

buoyant moon
#

Personally, adding a new character requires new art and art is scary so I stick to working with existing assets

modest dagger
#

Frakenspriting my beloved

fossil osprey
#

There is the portrait maker too, you are allowed to use it (completely or as a base) as long as you credit it

buoyant moon
modest dagger
#

It's a great way to get started with portraits or any sprites really

vernal crest
#

You appear to somehow have a broken config.json file which I've never seen before. In a mod called Z_Vanilla?

subtle palm
#

Yes, it is. I'm checking the validation on the json and I think (hopefully?) that I have wrong symbols on the ending of the coding?

vernal crest
#

You shouldn't be editing the config.json at all

#

Just delete it

#

Is Z_Vanilla your farmhouse mod?

subtle palm
#

Yes

vernal crest
#

Okay, delete your config.json and then run the game again and do what I asked before and then grab another log

ocean sailBOT
#

Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 1 C# mods and 1 content packs.

vernal crest
subtle palm
#

Yes, every time I load up the game

vernal crest
#

Well, they're explaining why your edits aren't working. It's because you're trying to use files that don't exist.

#

Presumably either the file names or the filepaths are wrong

subtle palm
#

I have them under z_ XX should i rename them to the farmhouse1 etc for example?

vernal crest
#

Yes, they have to match what you have written in your FromFile field

dusk rock
#

thank you!

subtle palm
vernal crest
subtle palm
#

I think so? I only changed the extracted files by adding the z_ to them.
Here is a screenshot of the files, not sure if relevant

(Also thank you for taking the time!)

vernal crest
ornate drift
#

Are there furniture mods out there that let you add more furniture to your custom shop/house in Tiled?

calm nebula
#

Lumi's Indoor?

vernal crest
#

Anyway I have to sleep now so I hope that helped

ornate drift
barren tapir
#

Thanks! I was planning on allowing you to either make or dye cloth using flowers. I'm always looking for more uses for flowers (also, this may finally give me a reason to plant multicolored flowers πŸ˜…).

I'm still debating whether to go the easy route (add a machine that just makes dyes from flowers) or the hard route (add a machine that dyes cloth using flowers). An idea that also just popped into my head would be some way of making prismatic dye from a prismatic gem, but IDK if that's possible πŸ˜…

ornate drift
#

though, using another mod for my mod would require everyone to also download that mod...

#

Meh, I'm just gonna add custom tilesets

ornate drift
#

I don't like relying on other things to finish mine

barren tapir
#

SO YOU AREN'T USING CONTENT PATCHER?!?

ornate drift
#

I didn't mean it like that xd

barren tapir
#

lol

ornate drift
#

I'm gonna have to design a furnace....

barren tapir
#

I do not envy you πŸ˜…

ornate drift
#

Actually wait i can just use this!

#

Saves me a shit ton of time

brittle pasture
tranquil olive
#

I think I've made a lamp SDVkrobushappy might change the sprite, but I'm just happy it turns on

mortal blade
#

Watch out for moths.

#

But maybe your fairy feeds on them for snacks?

autumn tide
floral canyon
#

Hi guys! I have this dilemma as I'm making an update for my Workshop that I'm not sure what is the best solution to add a cellar to the building. Right now I have just made the map bigger and have a warp from one tile to the other. I saw that Aimon uses this method. What I noticed though, and this might be me being nitpicky perfectionist, is that this method moves the camera slightly up in a weird way, when you enter, since there's so much space under/behind the player. Is it better to do a totally new location+map for the cellar or stick to this? (this is inside a custom building)

lucid iron
#

Iirc there's some viewport clamp thing on maps tho

floral canyon
#

That's very good to know, thank you! I will test the ViewportClamp setting

heady crest
#

(sending a screenshot so i dontr have to ping them) is there a list of all these text symbols to emojis somewhere?

latent mauve
#

For quick reference:
Pressing < produces β™‘, a heart
Pressing > produces β–·, a right triangular arrow
Pressing @ produces ◁, a left triangular arrow
Pressing $ produces ⌾, a double circle
Pressing * produces πŸ’’, the "anger" symbol common in Japanese media
Pressing = produces β˜†, a star

#

They seem to also be the ones that show up in chat, but it's not called out in that section.

jovial jungle
#

what would happen if i gave an item a negative sell price

buoyant moon
#

You'd have to pay to get rid of it? Dunno if there's any lower bound on it SDVpufferthinkblob

fossil osprey
#

I think it's a way to make it unsellable iirc?

finite sequoia
#

I wanna make sure I'm not being crazy- this definitely reads scammy, right?

fossil osprey
#

yeaaaaah weird

iron ridge
#

im impressed nexus has a warning

lucid iron
#

Wow the discord scam bots got to nexus JerryWhat

finite sequoia
#

I'm not really interested in help in the first place or anything but I'd rather not report if it's just someone using google translate or something

iron ridge
#

but yeah definitely would be very suspicious

lucid iron
#

Including my dm with modsetti

finite sequoia
#

If nobody else has seen something like this I'm just gonna delete the message instead of reporting, then

iron ridge
#

they do have real mods though actually?

finite sequoia
#

I coulnd't find a Nexus account called RussetGwen, but truth be told Nexus forums have always been difficult for me to navigate

iron ridge
finite sequoia
#

Plus the pfp is ai...

#

Oh, huh! I guess they exist. It appears I blocked them though.... SDVpufferblush

#

I assume they just want to translate though then, since I used to block translators instead of translation category

ornate trellis
#

oh its the kartoshka person

lucid iron
#

What does that mean

ornate trellis
#

kartoshka

jovial jungle
#

for accuracy

ornate drift
#

god i really don't have the energy to make a bakery interior face_with_bags_under_eyes

near imp
torpid sparrow
#

yep

ornate drift
#

I'll check it out

near imp
#

it would add a dependency to your mod, i know you dont like that but its really not uncommon. some of the tilesheets available are absolutely sick (in a good way). i know HxW makes a lot of bakery and other business type content

tender bloom
ornate drift
#

oh my god this looks absolutely beautiful!!!

near imp
#

it does doesnt it!

ornate drift
#

I'm DEFINITELY using this, thanks

ornate trellis
ornate drift
#

i hope there's atleast a furnace πŸ€”

torpid sparrow
#

rmb to ask for perms

ornate trellis
#

theres

torpid sparrow
#

im not sure where wildflour and/or hime are most active

#

although i tihnk hime was around yst

ornate drift
#

I'll credit them :3

torpid sparrow
#

oh wait am i looking at the wrong one

buoyant moon
#

It seems like it's not possible to do an inline dialogue switch with Content Patcher to change just part of a string based on a token and I have to use When to patch separately?

Ideally I'd like to have something like the gender switch for the farmer, e.g. "I saw ${her^them}$ over there." but instead using Abigail's nonbinary flag from DSV or the like.

ornate drift
torpid sparrow
ornate drift
#

HxW tilesheets

torpid sparrow
#

ohhh ok

lucid iron
# ornate drift

You just require this mod and then u dont need to pack the sheets separately

lucid iron
ornate drift
near imp
# ornate drift Do most mods have dependencies?

it depends on what kind of mod it is. a lot require content patcher (obviously). but ive seen maps and other similar mods that require a tilesheet to be downloaded in addition to their map (the tilesheet is downloaded through nexus and put in the mods folder like any other mod). you add a dependency in your manifest file to make it required. but as wem said make sure you figure out the authors specific permission policy

ornate drift
#

HxW gives you like a 100 times the amount of decorations you can use, it's amazing

lucid iron
#

Usually the main reason to use a dependency besides content patcher is bc it provides something you can't do with just normal game data

torpid sparrow
#

i love BETAS

ornate drift
#

Mmmm on my side it's more of laziness

lucid iron
#

Or you wish to use shared assets on a map yeah

near imp
#

having the playerbase download the tilesheets like a mod and other mods having them as a dependency is a nice and fairly organised way to avoid making a bunch of copies of someone elses work. plus it keeps things updated

#

(not even mentioning it would break many peoples permissions to include their stuff in your mod directly) as i said you gotta figure out specifically what use they allow

barren tapir
#

Am I correct in my understanding of game state queries wherein PLAYER_FARMING_LEVEL Target 8, RANDOM 0.05 would return true 5% of the time when the player is farming level 8?

ornate drift
barren tapir
#

Great!

lucid iron
#

If u want OR u would use the gsq ANY

ornate drift
#

Now i need to design the interior itself and then add door data to my shop to warp the player to that interior

torpid sparrow
#

interior mapping is fun

#

i love making interior maps

ornate drift
#

it's basically like making a custom map from scratch, right?

#

Instead of editing an existing one

torpid sparrow
#

no u can edit interior maps

#

like haley's house

#

or any other house/interior

ornate drift
#

oh

#

wouldn't i need to copy it first

torpid sparrow
#

no people just recommend to do so

#

i think ive built an interior map from scratch before

ornate drift
#

I mean, interior mapping from scratch sounds easier for me personally

#

idk

#

you'll just have to add a bunch of PNG tilesets lol

torpid sparrow
#

yur

#

i mean its like four

near imp
#

i think they recommend always starting with an existing map? i guess take some random villagers house and then make sure to change all the bits that identify it so (but probably dont listen to me im having terrible luck lately SDVpufferchickcry )

torpid sparrow
#

town interior town interior 2 paths

#

furniture

ornate drift
near imp
#

no you change all the bits that makes the game think its haleys house

torpid sparrow
#

yeah

#

make a copy

#

and then change the warp(s)

ornate drift
near imp
#

but it ensures you start out with some of the default tilesheets, some map properties, that kind of stuff

torpid sparrow
#

was what i meant

ornate drift
#

oh ok

#

i wonder if there's already existing NPCs who already are bakers and sell pastries

buoyant moon
#

Oh right that reminds me, is there a straightforward way to change someone's house to be locked for the rest of the day after an event?

torpid sparrow
#

well peeta

#

tilly does sell desserts too i think she sells like one pastry (a maple bar)

#

uuummmm i feel like theres probably others

#

uhh maybe malaya although idk if she makes the pastries or desserts

ornate drift
#

I'll be the first one to sell donuts! teto_evil

#

...i think

torpid sparrow
#

OH there's haley's bakery

torpid sparrow
#

malaya does sell 1 donut as well i think

#

the thousand sprinkle

ornate drift
#

SDVpufferchickcry damnit

ornate trellis
#

there used to be uhhh

#

what was the name again..

torpid sparrow
#

no one specializes in donuts tho

#

at least afaik

ornate drift
#

mwehehehehehe
nows my chance

ornate trellis
#

bread lovers, focused on bread but yeah

near imp
#

you dont have to be the first to sell donuts, you just have to sell the best donuts SDVpufferwoke

ornate drift
#

can NPCs visit your shop?

torpid sparrow
#

whose

ornate drift
#

base NPCs

#

like abigail alex etc etc

buoyant moon
#

I imagine you'd have to edit their schedules to make them do so

ornate trellis
#

you'd have to edit their scheules or make fake versions of em, i guess

buoyant moon
#

there's also the Merchant mod that does something like that but haven't used it so dunno the details

torpid sparrow
#

yeah i make npcs visit my shop

ornate drift
#

it's moreso optional, to make the interior feel more lively

#

i imagine adding custom food must be very easy

near imp
#

thats tempting fate if i ever heard

hard fern
buoyant moon
#

by default I assume nothing is easy and if it is I'm pleasantly surprised

ornate drift
hard fern
#

Compared to other games a lot of them are surprisingly easy in Stardew

buoyant moon
#

that's true, I was talking with my coworkers about how convenient it is to just be able to write a JSON file for a lot of things

hard fern
#

sweats in needing to install like 5 different programs just to mod one game

ornate trellis
#

food is so eqsy to make i made someone called foodgal because i had so many foods laying around unused

hard fern
#

Would anyone here want to eat a bean jelly cube with beans in it

mellow laurel
#

I pass

hard fern
#

Ok i wont publish mod 😌

lucid iron
hard fern
#

No bean cubes for the masses

lucid iron
#

You get fake actors during the minigame

buoyant moon
#

that's what I figured but didn't want to assume

ornate drift
#

oh layering is way harder in interior wtf

ornate drift
#

okay now i have something to work with

#

apple SDVkrobusgiggle

tranquil olive
#

How would you/is it possible to make a furniture catalogue with Spacecore? I think I understand that you need to add the item as furniture, but I'm not too sure on what to do to get it to work like the retro/wizard catalogues SDVpufferthinkblob

lucid iron
tranquil olive
lucid iron
#

Naw u use the spacecore furniture tile property thing

#

It's less common to see this approach vs calcifer but both of them fundamentally require u to just make an actual shop

#

If u use smithy the furniture catalogue is built-in checkbox PecoSmile

tranquil olive
#

ohhh, that portion, so would it be in a

"Changes": [
        {
            "Action": "EditData",
            "Target": "spacechase0.SpaceCore/FurnitureExtensionData",

kind of section?

#

also thank you, the example is helpful, I was wondering if there was one when I was searching 'spacecore/spacecore catalogue' here earlier ^^'

void aspen
#

is there any video guide or documentation on how to create custom objects with all the properties with CP?

#

The one example in wiki is not enough for me to understand the whole thing

#

like custom food or ores or animals

latent mauve
#

If the wiki example isn't enough, you might have better luck with the modding wiki tutorials: https://stardewmodding.wiki.gg/wiki/Category:Tutorials

Stardew Modding Wiki

Interested in making a mod for Stardew Valley? Then you've come to the right place! Check out the list for step-by-step tutorials to make your very own SDV mod.
Have you made a mod before and want to share what you learned? Awesome! Just create a new page on this wiki, call it "Tutorial: How to do a thing," and put in your advice, screenshots ...

#

You usually will not find video tutorials because they become outdated so fast and most don't bother to update them.

finite sequoia
#

Would anyone be interested in their NPC cameo'ing in this event? It's gonna be about Pierre getting overwhelmed with business after Joja shuts down and I'd like to add some modded NPCs into the line 😸 They'd be replacing scarecrows

trail wave
#

Does anybody know if there are any mods that let you till and plant where there isn't already open dirt? That little fenced in area up by the community center is just BEGGING for a little community garden...

barren tapir
#

@brittle pasture Am I correct in thinking you made EMC? And if so, would it be possible to do the following for an output item's cost:

Price = 200 + B*(1.25 + G/1000)

Wherein G is the cost of the provided item for RequirementTags.1 and B is the base price of the input item?

near imp
barren tapir
trail wave
uncut viper
#

Though ofc if you're asking for like "are there any examples of mods that do this?" then modded-stardew might know better anyway

uncut viper
#

Depending on the ask

barren tapir
near imp
#

@trail wave actually hold on i see it says Fruit trees here now, it might not do wild trees, im not sure SDVpuffereyes but theres a bunch of mods to pick from for wild trees too. but if you want more suggestions we could move to modded stardew so we dont clog up this channel SDVpuffersquee

barren tapir
brittle pasture
#

roll some C# yourself I think
adding hyperoperations and arbitrary arithmetic is kinda beyond the scope of what I wanna do with price modifiers lol

lucid iron
#

I think as a user I wouldn't actually notice this SMCPufferjail

#

If it's a case where you really want player to go ah that makes more money

#

I'd simply bump the quality

trail wave
uncut viper
brittle pasture
barren tapir
#

I had a feeling it'd come to C# πŸ˜…. Would you say this would be an easy first foray into C# modding? I have some experience with C (granted I'm rather rusty, no pun intended). My original first foray resulted in absolute failure (I was trying to modify tappers and it was a whole thing).

brittle pasture
#

well congrats, you'd be doing nearly the exact same thing as what you tried

#

(custom output method)

#

(but this time you'd need to call EMC API to get the fuels that would be used for your calculations as well)

brave fable
#

for the record this is the first and only time in almost 7 years ive used CP query expressions so yeah you might not actually need to lol

karmic gust
buoyant moon
#

I'll have to figure out how warps work but good idea, thanks

trail wave
opaque cobalt
#

In appearance modding, for the condition line. Do I just use IS_Event for an event script like weddings or is there a proper way to do it? I tried IS_Event with the words EventScript and default pulled from the Weddings.json file of which neither worked. I do not think I should need to make edits to the Wedding json as I am not changing attendance or where the NPC stands, just what sprite sheet they use for the ceremony.

floral stratus
#

Hello, I'm trying to make a wallpaper mod, but my artist made the designs 96 x 96 as shown in the wiki. Unfortunately the only mod I can find that was set up for dependants to make wide wallpapers is out of date. Do I have to have them redo all their art as 16 x 48 to work with Alternative Textures, or is there another way?

fierce vault
#

how does courtship.reject A and B work? Is B the second response given if the farmer tries to give the bouquet again after A? πŸ˜…

daring skiff
#

I think it's based on hearts?

#

One is if you barely know them. The other is if you are closer to reaching the heart level. The wiki vaguely references this.

fierce vault
#

Oh, i think it might be something that this npc does specifically, because what the wiki says is different.

#

thanks

uncut viper
#

People who know the decompile better than me: I could've sworn there was some utility function or something where I could plug in a starting vector2 and a target vector2 and it'd emit a TAS at the starting point and accelerating in the direction of the target. Is my memory just completely making this up
It's not difficult to make my own to do this obviously but I thought there was an already existing sort of thing for it, but I can't find it so I'm only like 40% confident it was ever a real thing

calm nebula
#

I have no inkling of that

uncut viper
#

Sad for Button

karmic gust
calm nebula
#

It might exist! I just haven't seen it

#

I also wasn't aware of a tas pool

#

Until fairly recently (2025)

ornate drift
#

gonna stream making the bakery interior for a bit

#

oh damn, theres no voice channel

#

HxWs spritesheet is a godsend, im loving how this is turning out

fierce vault
#

anyone know the command to cheat in a hat by the item id? Or is the same as the objects one?

#

wait, I'll see if I can find it in my history

#

I'm sure someone's told me the cheat before

calm nebula
#

(Just use debug fin)

#

debug fin <some random part of your hats name>

fierce vault
#

thanks, I'm actually going to be cheating in a vanilla hat thought to get an idea of wear mine will sit on the farmer's head first πŸ˜…

calm nebula
#

You can use this for vanilla too

fierce vault
#

oh, sorry, I knew that, I just wanted to talk about what I was working on

#

...is there a reason whydebug fin H 2 is giving a herring instead of a hat?```Added Herring ((O)147)

near imp
#

Big Fish has lobbied against the alphabetization of the code /silly

fierce vault
#

Oh, so how do I specify that the item id I want is a hat then?

#

If h doesn't do it?

#

oh, would it be T 2 since I want the Top hat?

calm nebula
#

Use the name

#

Not the id

fierce vault
#

Oh ok πŸ€¦β€β™€οΈ

#

thanks

calm nebula
#

debug fin tophat

fierce vault
#

aha! it worked!

brave fable
#

i made some shorthand Vector2.PointAt method for the one mod i needed this in like 50 different places so i never remember it

barren tapir
crisp jasper
#

hello! I'm making a recolour of Big

#

fuck

barren tapir
crisp jasper
#

I'm making a recolour of Bog's haunted animals + products, with permission, and idk what I'm doing wrong but it won't work

hard fern
#

recolor of Big.

crisp jasper
#

I pressed enter too early okay XD

hard fern
#

(why do they put the apostrophe so close to the enter key...)

uncut viper
near imp
crisp jasper
#

config and manifest?

barren tapir
#

Or before. IDK

near imp
crisp jasper
#

ah yeah no there's a config.json

#

lemme link em

near imp
#

but like, the config choices dont do any changes to the game for the most part, theres two changes to chickens but all these other animals?

crisp jasper
near imp
#

ah that makes more sense.

crisp jasper
#

this also makes more sense 😭

#

I am admittedly a noob in json and I was doing it like other simple config jsons I've seen

ornate drift
#

nvm i should post this in art

near imp
#

not sure i would pay much attention to what it says about the config.json, that one is from what i understand something of an end product. the validator might think youre trying to make changes with the config.json and tell you its doing diddly squat (which it sorta is)

crisp jasper
#

interesting

near imp
#

its just a summary of the saved config options. so personally id focus on the content.json

crisp jasper
#

okay

#

how do I fix the content.json then?

ornate drift
#

and now i have to make that interior load inside the game

#

er.......

#

does anyone have the wiki link for patching and loading interiors

near imp
near imp
#

validator is taking offense at my content.json that im currently successfully using to replace animals with πŸ˜… what the heck. is it not updated to accept Patchmode yet since its so new? Anyone know?

#

oh i think i see your issue

torpid sparrow
#

[[Maps]]

#

fuck

#

[[Maps_data]]

#

what IS IT

near imp
#

aside from the config bits that dont do anything yet.
"Target": "Animals/BrownChicken.png",
"FromFile": "assets/Brown Chicken.png",
only the FromFile should have .png on it

torpid sparrow
#

oh yeah

#

i forgor that

proven spindle
#

Oh whoops, that wasn't supposed to be a reply lol

crisp jasper
#

omg thats so stupid

proven spindle
#

Sorry Phoenix

crisp jasper
#

is okay lol I was facepalming at my dumbass

near imp
# crisp jasper omg thats so stupid

friend i spent 5 hours today just banging my head against the wall trying to get a custom path ingame so youre definitely not alone 😭

proven spindle
#

Anyway while I'm here does anyone know if modpages have word limits
Edit: in case anyone else is wondering similar, I have successfully pasted 10,132 words onto a modpage

calm nebula
#

Your users have concentration limits rbh

proven spindle
#

Chu inspired me to try doing a tutorial but those get pretty long lol

gaunt heath
#

Hi Pathos, I know it's been two years, but it appears that this didn't work.
While helping me troubleshoot footstep sounds still being thudStep despite my map being marked TreatAsOutdoors and my tiles being marked Grass, @lucid iron figured out that this dehardcoding didn't reach FarmerSprite.checkForFootstep.

near imp
# crisp jasper JFEHJEIUL I KNEW THAT I SWEAR

if its in some small way a bonus i feel a little bit better just because i actually managed to help someone out a bit instead of just riding the struggle bus all around town SDVpuffersquee SDVpufferheart (so thank you for that ❀️ )

ornate drift
#

do the modIDs for the house interior and exterior have to be different?

torpid sparrow
#

yes

#

its two different locations

ornate drift
#

wait what about the dependency

#

hows that gonna load

torpid sparrow
#

wdym?

#

you load two different locations

ornate drift
#

im using hxws tiles

torpid sparrow
#

wait

#

sorry

#

you load one location

#

exterior is a patch

#

i forgot

ornate drift
#

oh so same IDs

torpid sparrow
#

uhh

torpid sparrow
#

i mean there's no id for the exterior

#

since you just patch it in

#

interior is a location

#

which you have to load and name

ornate drift
fierce vault
#

Ok, so if anyone is willng to help with loading my hat in, this is what I have { "Action": "EditData", "Target": "Data/Hats", "Entries": { "{{ModId}}_JacksHat": { "Name": "{{ModId}}_JacksHat", "Displayname": "Jack's Hat", "Description": "It's old and worn", "show real hair": "false", "skip hairstyle offset": "", "sprite index": "20 80", "texture name": "{{ModId}}_JacksHat" } } },and I'm wondering what to actually put in here for the hat's texture to show up, because the crops example on the wiki doesn't look right, even when being modified to be used here. { "Action": "Load", "Target": "Mods/{{ModId}}_JacksHat", "FromFile": "assets/JacksHat.png" },would the target be Hats instead of Mods? And have I done anything else wrong? (also not sure if I need a "skip hairstyle offset" for this hat too)

torpid sparrow
#

yes same name

calm nebula
#

C# properties don't have spaces is a first guess....

near imp
# crisp jasper it didnt work ;-;

youre trying to put your own recolored version of the chickens in the game right, not to edit another mods textures after the fact?

crisp jasper
tranquil olive
fierce vault
#

Oh, yeah I am doing it with content patcher

ornate drift
tranquil olive
#

let me see if I can find the page

torpid sparrow
#

if u have an arrival tile then yeah

tranquil olive
#

this might help @fierce vault since it has a different layout (each hat is like one line)

#

the way I forgot the link-

ornate drift
#

ah shit i forgot to set that up

ornate drift
torpid sparrow
#

for what

ornate drift
#

for the arrival tile

#

?

fierce vault
torpid sparrow
#

you put it there already

#

"DefaultArrivalTile"

ornate drift
#

thats for the

#

actually idk why i put that there

near imp
torpid sparrow
#

well its ur default arrival tile xd

ornate drift
#

i was copying a patch to load my bakerys exterior

torpid sparrow
#

i imagine if u debug warp itll take u there

#

wherever that is on ur map

crisp jasper
tranquil olive
near imp
ornate drift
fierce vault
#

Oh, that's how it's supposed to look? SDVpufferfush

torpid sparrow
ornate drift
#

ok so that didnt work

torpid sparrow
#

thinks

#

let me open my json

fierce vault
#

how does the mod know how to find the actual texture? SDVpufferthinkblob

near imp
#

oke give me a min to find it (organised and professional here)

tranquil olive
ornate drift
#

this is specific to the load command

#

i think

torpid sparrow
#

err it should be fine confused

#

did u load it again somewhere else

#

you have two loads targetting the same path

ornate drift
#

oh?

#

uhhhh

torpid sparrow
fierce vault
torpid sparrow
#

you dont need to load ur exterior afaik

#

and yeah you cant load to the same name

tranquil olive
ornate drift
#

wait im supposed to put the maps in different folders

#

or

fierce vault
#

It's fine, explaining can be hard!

torpid sparrow
#

no you're loading TWO things to the same thing

#

which is {{ModId}}_SpeedyShop

#

also its {{ModId}} not {{ModID}}

ornate drift
fierce vault
#

I've sometimes taken forever trying to write an explaination for something that almost no one will hopefully mess up

torpid sparrow
#

ur interior and exterior have the same name

#

and you dont need to load your exterior at all

ornate drift
torpid sparrow
#

you shouldnt be loading your exterior

ornate drift
#

oh

okay

torpid sparrow
#

but yes, in general, use different names if you're going to be loading two different things

ornate drift
#

so do i delete the load speedys map patch?

torpid sparrow
#

if thats the exterior yes

#

that doesnt actually do anything visual btw

#

just loading it doesnt make it visible on the map

#

you either have to also create a location, which you are doing with your interior, or patch the map into the Town

ornate drift
#

i seee

void aspen
#

Evening wem!!

torpid sparrow
#

hi!!

ornate drift
#

very helpful to know next time, many thanks!

void aspen
#

Have you seen my finished mod

torpid sparrow
#

no what is it?

#

school is kicking my ass

ornate drift
#

also doesnt help that i made my exterior name into Speedy while the interior is Manny

#

thats gonna be confusing af

void aspen
torpid sparrow
#

finals are coming up

void aspen
void aspen
torpid sparrow
#

OH THE EMILY DREAM

#

YAY

void aspen
#

Yuss

torpid sparrow
#

so whimsy

void aspen
#

Planning to learn some more CP stuff to make some custom things to go along with it

ornate drift
#

oh

tilesheet climbing

void aspen
#

Maybe some dream ore you can mine

hard fern
ocean sailBOT
#

When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.

If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.

void aspen
#

Okay it's 3 am I gotta go sleep

#

Gl yall, byee

torpid sparrow
#

goodnight!

#

hope u explore a dreamscape

void aspen
#

Need some more inspiration yeah

ornate drift
#

oh the tilesheet climbing is gone all i did was change the modid

#

but uhhhhh

torpid sparrow
#

i have never seen that error before

hard fern
#

U know what this means...

#

Show Jason

ornate drift
#

whos jason

#

oh u mean json

void aspen
#

Content json

torpid sparrow
#

jason

ornate drift
#

bro πŸ₯€

#

Jay Son

hard fern
#

Yes im sorry lol sometimes my phone connects it to jason

#

Corrects

void aspen
#

Had same issue yesterday

#

Jason sounds fun tho

ornate drift
#

there

#

wait i dont even have a i18n why do i have that patch

#

string 43

hard fern
void aspen
#

What's i18n I still wonder

gaunt heath
#

You're telling it to use a file that you seemingly haven't loaded "MapPath": "Maps/{{ModId}}_SpeedyShop"

hard fern
ocean sailBOT
#
Creating Translation Capability

So you'd like to stop writing all of \"your strings straight in your content.json?\" and/or you'd like the capability to see all of your strings across all of your .jsons?
Introducing i18n!

  • How to make your mod compatible with other languages: stardewmodding.wiki.gg

  • The file where you can put all of your strings is called default.json, and it sits in a folder at the same level of your assets, named "i18n".

  • If you're converting from an older version of the game, there's a converter for ease-of-access.

Not to be confused with {{DynamicTokens}} since these require the specific {{i18n:<KEY>}} modifier

onyx panther
#

so I just came up with a cursed way to randomly change Abigail's hair colour after a random period of time using events and conversation topics and I hate what I've come up with but it would work while also meaning I can have other NPCs comment on her hair, so..... imma do it anyway lmao

gaunt heath
ornate drift
#

which tmx?

#

the interior?

gaunt heath
#

{{ModId}}_SpeedyShop.tmx

#

See line 49

ornate drift
#

thats...the exterior though

gaunt heath
#

WIth MapPath, you're telling the game "look here for the map file to use", but you haven't put a map file there

gaunt heath
# ornate drift

It's the only place I see you editing Data/Locations, so it's the only location that could be malformed and causing this error

ornate drift
#

weird
ill remove that patch

gaunt heath
#

If you're trying to create a location you need that. If that tmx file exists, you just need to load it like you've loaded everything else above.

torpid sparrow
#

speedy change that to mannyinterior

#

ur still referring to speedyshop

torpid sparrow
#

oh wait

#

yeah

#

"MapPath": "Maps/{{ModId}}_Manny_Interior"

#

instead of "MapPath": "Maps/{{ModId}}_SpeedyShop"

gaunt heath
#
      "LogName": "Load Manny's Bakery Interior Map",
      "Action": "Load",
      "Target": "Maps/{{ModId}}_MannyInterior",
      "FromFile": "assets/Maps/Manny-Bakery-Interior.tmx"
    }```
Above you load the file to `Maps/{{ModId}}_MannyInterior`, but here:
{
  "LogName": "Add custom locations",
  "Action": "EditData",
  "Target": "Data/Locations",
  "Entries": {
    "{{ModId}}_SpeedyShop": {
      "DisplayName": "{{i18n: location.Speedy-Shop.name}}",
      "DefaultArrivalTile": {
        "X": 12,
        "Y": 28
      },
      "CreateOnLoad": {
        "MapPath": "Maps/{{ModId}}_SpeedyShop"
      }
    }
  }
},```

You tell it to use a different file, Maps/{{ModId}}_SpeedyShop

#

Also, I'd put all your loads at the top of the json file, before the lines where their assets are used. It's just good form.

ornate drift
#

you guys are really good at JSON coding sweat

#

really appreciate the help

torpid sparrow
#

we've been doing it longer xd

gaunt heath
#

We've been doing it for years

ornate drift
#

its my first time

torpid sparrow
#

and we're both, canadian

#

thats important write that down

gaunt heath
#

My first time ended in tears, so you're doing well!

hard fern
#

Im not canadian

gaunt heath
#

Yes, you've got the canada help squad tonight 😌

void aspen
#

Oh so i18n just creates a dictionary for keys to grab strings with from a single file

hard fern
#

Im also not doing anything here XD

#

Just watching

ornate drift
void aspen
#

And it works with localization too?

ornate drift
#

i like autumn

gaunt heath
torpid sparrow
#

slow blower

hard fern
#

Slow blower...

torpid sparrow
#

i have a fast blower for u

ornate drift
#

blow slower

fierce vault
#

So, I think this is a partial success, because I hear the plop of the item in my inventory when I summon it, but it's still invisible, so idk what's wrong now πŸ˜… { "Action": "EditData", "Target": "Data/Hats", "Entries": { "{{ModID}}_JacksHat": "{{ModID}}_JacksHat/{{i18n:JacksHat_Desc}}/false/false/{{i18n:JacksHat_Name}}/0/Mods\\{{ModID}}\\hats", } },

onyx panther
ornate drift
#

NOO I FUCKED UP THE JSON

#

hold on

gaunt heath
#

The humble json file subsists on a diet of stray commas and unpaired brackets

onyx panther
#

ooooo I love quote marks

gaunt heath
onyx panther
#

jason be like {"":"","":[{"":""}]}

ornate drift
#

i hate brackets sooooo much bro

hard fern
#

(it will happen again. This is a threat)

gaunt heath
#

You're just missing a }

onyx panther
#

I hate how notepad++ does not automatically insert closing brackets for me

#

like I'm gonna need them, just add them pls

ornate drift
onyx panther
#

maybe I'm stupid and there's an option to do that I should just turn on

near imp
hard fern
#

The tilesheet kailey....

gaunt heath
#

yes

hard fern
#

You have a legacy

near imp
barren tapir
#

It's a lil guy!

gaunt heath
#

I am known for my tilesheets and my tendency to spam cat pictures. Such is the way of the worm.

lucid iron
#

and worms

near imp
# gaunt heath yes

i just wanted to say theyre great and i love the froggos SDVpuffersquee shant disturb you any more

ornate drift
#

that didnt work

fierce vault
hard fern
#

The sneeb

gaunt heath
#

It is not an arrival tile coordinate, it must be escorted out SDVpuffersquee

torpid sparrow
#

alright back to nyapu portrait mines

#

also known as HELL

ornate drift
gaunt heath
ornate drift
#

i still have to go through map data, events, festival placements, schedules....

ornate drift
#

well atleast the hard part is almost over

ornate drift
hard fern
#

SwaPom'

gaunt heath
#

I think you just need to swap the order of those two lines, but I haven't checked

tranquil olive
# fierce vault So, I think this is a partial success, because I hear the plop of the item in my...

hm, with your sprite path (the part after the 0), based on your load action

        {
            "Action": "Load",
            "Target": "Mods/{{ModId}}_JacksHat",
            "FromFile": "assets/JacksHat.png"
        },

I think you would need it to be Mods\\{{ModId}}\\JacksHat in the hats code

and the target for the load action would be 'Mods/{{ModId}}/JacksHat, and it may need this for the "FromFile
"FromFile": "assets/{{TargetWithoutPath}}.png" so it can find the image?

Maybe the JacksHat.png is fine, but in case the name changes? Also making sure you have ModId instead of ModID may be helpful

gaunt heath
#

I'm glad you like my mousepad writing, forsy 😌

hard fern
#

I am a fan

onyx panther
#

ok this is dumb

hard fern
#

Thats a whole mouth

#

Month.

gaunt heath
#

HMmm no I screwed something up

onyx panther
#

but also, idk how to make it a normal distribution without just duplicating numbers

gaunt heath
# gaunt heath HMmm no I screwed something up
    "LogName": "Add custom locations",
    "Action": "EditData",
    "Target": "Data/Locations",
    "Entries": {
        "{{ModId}}_SpeedyShop": {
        "DisplayName": "{{i18n: location.Speedy-Shop.name}}",
            "DefaultArrivalTile": {
                "X": 12,
                "Y": 28
                },
            "MapPath": "Maps/{{ModId}}_Manny_Interior",            
        }
    }
},```
there, unscrunkled
ornate drift
#

inch-resting

gaunt heath
#

Note a) the comma after defaultarrivaltile's closing bracket, and b) the fact that defaultarrivaltile's brackets only surround the X and Y coordinates

ornate drift
#

hooray! it fixed

ornate drift
gaunt heath
#

To the arrival tile? Not as far as I know, it's a single tile

#
        {
            "Action": "EditData",
            "Target": "Data/Locations",
            "Entries": {
                "KaileyStardew.FootStep_Test": {
                    "DisplayName": "FootStep_Test",
                    "DefaultArrivalTile": {
                        "X": 5,
                        "Y": 5
                    },
                    "CreateOnLoad": {
                        "AlwaysActive": false,
                        "MapPath": "Maps\\KaileyStardew.FootStep_Test"
                    },
                },
            }
        }```
Here's the same process in a tiny mod I just made to reproduce a bug I reported to pathos earlier. Your arrival tile is just a single tile, no need to specify width or height.
ornate drift
#

i see

#

thanks! i really appreciate it

gaunt heath
#

No problem!

ornate drift
#

now to warp there

#

er

hard fern
#

Did you load your interior map

ornate drift
gaunt heath
#

debug warp {{ModId}}_SpeedyShop, replace {{ModId}} with whatever yours actually is in the manifest

ornate drift
#

speedyshop is the exterior

gaunt heath
#

You're using the location name, not file name, to warp

#

Ah right I pulled that off your unfixed json

ornate drift
#

right, sorry about that!

gaunt heath
#

Same principal, use the lcoation name and not .tmx file name

gaunt heath
#

...this is a bad example because I made the map and file name the same lol

gaunt heath
#

Whatever you have as your id in your manifest.json will always replace {{ModId}}

dire kestrel
#

would anyone know off the top of their head where i can find the bushy tree asset you can see on maps like secret woods?

ornate drift
gaunt heath
#
      "LogName": "Add custom locations",
      "Action": "EditData",
      "Target": "Data/Locations",
      "Entries": {
        "{{ModId}}_SpeedyShop": {
          "DisplayName": "{{i18n: location.Speedy-Shop.name}}",
          "DefaultArrivalTile": {
            "X": 12,
            "Y": 28
          },
          "MapPath": "Maps/{{ModId}}_Manny_Interior"
        }
      }```
Based on this, your location name is `speedy.mannynpc_SpeedyShop`
ornate drift
#

that....doesnt work either

#

weird

lucid iron
gaunt heath
lucid iron
#

also are u patch reloading and stuff when u change

onyx panther
#

I just wrote out a normal distribution for a random number in a dynamic token, there has to be a better way to do this aaaaaaa

near imp
finite sequoia
gaunt heath
lucid iron
#

i assume they wanted the bell curve

ornate drift
finite sequoia
#

(And also thank you again for your help with using spacecore to create ore nodes, I just pushed the update to Coal Point with that in and you saved me in regards to adding them!)

lucid iron
#

cus cp rand is linear

onyx panther
ocean sailBOT
#

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

Please share your SMAPI log file. To do so:

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

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

gaunt heath
#

Fair enough lol

lucid iron
#

send the whole thing via log parser

onyx panther
gaunt heath
#

Yeah we need your full parsed log every time

#

Ok, I'm off for dinner for now!

onyx panther
#

it's a range from 7 to 28 days, normal distribution

lucid iron
#

it is pretty niche

near imp
onyx panther
#

could make a hyperpecific NormalRange token that generates this

ornate drift
onyx panther
#

like with c#

lucid iron
#

yea sure, it wouldn't that much C#

#

altho it's gonna end up being {{gayannabeth.TokenMod/NormalRange: <args> }}

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 22 C# mods and 24 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

lucid iron
#

and require usage of the advanced mod registered token

uncut viper
#

also you'd need to parse the args yourself

#

you don't get to use the |arg=whatever syntax unless you recreate it from scratch

dire kestrel
lucid iron
ornate drift
#

howd you find it that quick damn

lucid iron
# gaunt heath

going by this image, the location name should be speedy.mannynpc_SpeedyShop, but yea i do see that debug warp speedy.mannynpc_SpeedyShop did not work NotteThink

#

the next thing u should do is patch export Data/Locations and look for speedy.mannynpc_SpeedyShop entry

gaunt heath
lucid iron
#

yea thats y we need the log parser cant ctrl f a image

gaunt heath
#

Content patcher has a lot going on, but you get an instinct for what you need to troubleshoot pretty fast

ornate drift
#

its there

lucid iron
#

ur create on load is fuggd

tiny zealot
#

CreateOnLoad: null is likely the problem

gaunt heath
#

It doesn't exist until you warp there from another map, and right now you can't warp there from another map.

lucid iron
#

u know how u wrote

"MapPath": "Maps/{{ModId}}_Manny_Interior",

it should be

"CreateOnLoad": {
  "MapPath": "Maps/{{ModId}}_Manny_Interior"
},
lucid iron
gaunt heath
#

I was just fixing the brackets, I wasn't checking the content lol

#

Blinders on fighting the curly bracket swarm

gaunt heath
ornate drift
#

aw the json fucked itself

#

hold on

lucid iron
#

something with json support like vsc sublime and such

ornate drift
#

i have notepad++

#

its just that i forget to use it

lucid iron
#

u need to turn on the json plugin for npp

gaunt heath
#

Notepad++ should be able to highlight bracket pairs for you if you do that

#

It's way easier

ornate drift
#

like i wish microsoft would make it so i load notepad++ everytime instead of having to right click

lucid iron
#

u can do that im pretty sure

gaunt heath
#

You can set it to the default program for .JSON files

ornate drift
#

oh?

near imp
#

yeah you can

gaunt heath
#

I have that set up no problem, but hell if I remember how

near imp
#

try right click, "open with", "choose another app", then select notepad++ but also the checkbox that says "Always use this app to open json files"

#

my OS is not exactly up to date cough but its late-ish windoze so should be something similar

gaunt heath
#

Notepad++ can run on 1/3 of a ham sandwich unchanged

ornate drift
#

managed to fix it by adding an extra bracket

#

please let me warp now LiveSob

gaunt heath
#

My current json is nearly 3000 lines long and none of you can stop me

ornate drift
hard fern
#

wow tilesheet climbing again

ornate locust
#

...I mean, you could always organize it with multiple JSONs :V

hard fern
#

maybe this is a good time to bring up the tilesheetinator

ornate drift
#

i have tilesheetinator

hard fern
#

oh

#

um..

ornate drift
#

i manage most tilesheets with that

hard fern
#

i wonder if i'd scare someone with how many jsons i have

patent lanceBOT
near imp
#

atra the quote sniper SDVpuffereyes

gaunt heath
#

I'm like half the quotes in the smaller server I hide in

#

Many of which were sniped by atra

ornate drift
#

something about null again as well

gaunt heath
#

Let's see the parsed json again

ornate drift
#

im never gonna be able to sell my donuts SDVpufferchickcry

#

sure

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 22 C# mods and 24 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

gaunt heath
#

Have you encountered and fixed tilesheet climbing before? I'd fix that first, one thing at a time

#

Plus, errors tend to cause other errors

uncut viper
#

if there is tilesheet climbing, then the map is invalid, which will make it fail to load the location

ornate drift
#

!tilesheetclimbing

ocean sailBOT
#

When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.

If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.

ornate drift
#

give me a minute

uncut viper
#

so you do need to fix that first

uncut viper
#

!mapfixer this as well

ocean sailBOT
#
Stardew Valley Map Fixer

There is a map fixer tool by Spiderbuttons that can fix common map errors such as tilesheet climbing.

Upload your map file(s) as .tmx and click FIX to run. Your fixed maps will be downloaded as a .zip file and will need to be extracted in order to replace your old versions.

Feel free to let Spiderbuttons know if you run into an issue it can't fix.

uncut viper
#

(don't rely on the map fixer if you also use .tsx files though)

gaunt heath
#

Do you mean tbin? Tsx is the map itself

#

Oh I can't read

uncut viper
#

no, I mean .tsx

#

though it wont read a tbin either SDVpuffersquee

gaunt heath
#

I fully parsed that as tmx, I think that's enough for tonight lmao

#

I've been staring down my own maps for hours

ivory plume
ornate drift
#

that was fast

gaunt heath
#

Will do, I also made a minimal repro pack. I was moving onto the alpha when I got distracted by chat SDVpufferheart

ornate drift
#

NO ERRORS FINALLY

#

the tilesheet climbing seemed to be the main issue

#

oh my god FINALLY

#

oh i can walk through this wall

patent lanceBOT
ornate drift
#

okay yeah none of the outer walls work LMAO

ornate locust
#

you want them on the building layer

ornate drift
#

i remember seeing Haleys house using the front layer for the walls

#

for some reason

ornate locust
#

It may use both

ornate drift
#

...oh

ornate locust
#

Or it may have something else as the building layer in places and that goes over it as the front

#

Building layer = you can't walk through it

#

Front layer = it goes over everything else

hard fern
#

it has the wall on front but the black void on buildings under it

ornate locust
#

Yeah the front walls use "front" because the blackness behind them uses buildings

hard fern
#

really though any tile on buildings will prevent wall walking

ornate drift
#

oh i thought they were back

hard fern
#

so you can just move the walls to buildings

#

there are black voids on back too.

ornate locust
#

Yeah you baiscally just need to surround your room with SOMETHING on building layers

ornate drift
#

πŸ₯€

ornate locust
#

Sometimes it's black ,sometimes it's a wall tile, sometimes it's half an interior wall like this bit here

#

just something to prevent people voidwalking

ornate drift
#

oh yeah also how do i make this door act like....well, a door?

ornate locust
#

It used to be locked to a certain number of layers, so stuff was placed VERY carefully and specifically, but now we're free of that

#

Interior door?

ornate drift
#

yeah

#

to another room

ornate locust
#

You need tiledata on the square that is the bottom of the door

#

on the Buildings data layer

#

and the property is Action, the text is Door

#

Here's Haley's. Hers has her name because you can only open it if you're friends with her enough

ivory plume
#

Two quick news updates for C# mod authors.

Mod build workflow 1.0.0

The (C#) mod build workflow 1.0.0 is now released!

This runs automatic actions on GitHub when you push code, just by adding a little YAML file. That can do things like...

  • check that the code is valid;
  • create release zips and build attestations;
  • run unit tests (if any);
  • upload prerelease downloads (if desired);
  • upload releases to GitHub and Nexus Mods;
  • and much more.

The 1.0.0 release means the API is now stable and safe to use in your mods. All the mod updates I posted over the weekend were created using the workflow.

See also:

Nexus mod upload API

The Nexus Mods upload API is now available!

This lets you upload mod updates to Nexus automatically. You can combine that with the mod build workflow (e.g. auto-deploy an update to Nexus when you push a version tag to your GitHub repo).

ornate drift
#

goatoschild

ornate drift
hard fern
#

you specify the heart level

ornate locust
#

I think it defaults 2 doesn't it

#

because Haley's is just "Door Haley"

hard fern
#

oh wait i was thinking about exterior doors lol

gaunt heath
#

Oh god speedy are you fighting door

ornate locust
#

Yeah, put the name there, it looks for 2+ hearts with them

hard fern
#

very amusing

ornate locust
#

Oh that one has custom interior doors too

hard fern
#

snake

ornate locust
#

nice

gaunt heath
#

I wrote it after defeating the concept of doors in hand to hand combat

ornate locust
#

sometimes it do be like that

gaunt heath
#

It has agonising amounts of detail 😌

ornate drift
gaunt heath
#

I am god's most autistic soldier

gaunt heath
#

I write lab documentation and stuff for a living lol. The doors one is my most elaborate one

hard fern
#

(it was quote worthy)

gaunt heath
#

Have you seen this server, we're a veritable army lmao

hard fern
#

i have seen at least 5 in this server

#

(conservative estimate)

gaunt heath
#

Lowballing that, I count for at least 3

hard fern
#

three nutellas in a trenchcoat

ornate drift
#

er

#

how do i add the data itself

#

i have the door itsel and im on the object layer

#

what button do i press on Tiled

gaunt heath
#

I am going to be completely honest

#

I always just copy an existing one from another map

#

I have no clue how to add a brand new one SDVpuffersquee

vernal crest
#

The blue rectangle button

slow basin
#

Do companion rings needs C#?

vernal crest
#

Draw from corner to corner of desired tile. Name TileData. Simples!

ornate locust
#

make sure Snap To Grid is on

gaunt heath
#

I've been copying them for six years now, and I strongly suspect that habit comes from my first ever map not having Snap To Grid toggled properly

ornate drift
#

oh not having snap to grid on sucks

#

wheres that

#

found it nvm

slow basin
#

or wait do you just need custom companions for it FerretThink

ornate drift
gaunt heath
#

It's really not a big deal to make new objects by copying and editing existing ones, it takes the exact same amount of time and I no longer think about it when I do

lucid iron
#

Mostly depends on whether you want the companions to do stuff

slow basin
#

oh cool!

gaunt heath
#

(You can edit an object to be any other object with two clicks, you don't need to grab a door object to make another door or anything)

ornate drift
#

that should work

hard fern
#

what is the internal name of your npc

eager tree
#

can "LocationContext" be used to only edit a tilesheet when the player is in one location?

as in
{ "Action": "EditImage", "Target": "Maps/summer_outdoorsTileSheet", "When": { "LocationContext": "Island" }, "FromFile": "assets/Maps/summer_outdoorsTileSheet.png" },

ornate drift
#

uhhh didnt work

gaunt heath
#

Ghost doors

ornate drift
ornate locust
#

Is your NPC's internal name just Manny?

#

Ideally you do YourModID_Manny

calm nebula
#

Kailey, those look like double doors

ornate locust
#

Which is fine as {{ModID}}_Manny in code but you have to type it out in Tiled

hard fern
#

(also you added the Door property to the map right?)

calm nebula
#

Do you want to talk about double doors SDVkrobusgiggle

gaunt heath
#

Oh god you're right, double doors are a whole thing

ornate locust
#

also those do look like double doors which makes me think maybe Kailey has some things to say

ornate drift
gaunt heath
#

You can't mirror the default door like that

ornate drift
#

aw...

#

damnit

hard fern
#

a map property

gaunt heath
#

See the saloon doors section of the tutorial

#

If you absolutely must have double doors

ornate drift
#

double doors are way cooler

gaunt heath
#

The Cursors animation of the Saloon Door (Right) is hardcoded to always be a mirrored version of Saloon Door (Left). This can be used to your advantage to make double doors without needing a second mirrored asset, but limits any other use.
And if you don't want them to look like saloon doors, you're gonna have to do the second half of the tutorial

ornate locust
#

If your NPC is just named Manny then another mod may add another Manny and if you both just use the internal name "Manny" then they will conflict. Thus the modID thing

hard fern
#

kailey you are doors to me now

#

doors and sneeb

gaunt heath
#

Now I gotta explain what the hell a sneeb is now SDVpuffersquee

hard fern
#

wow

#

old

#

(not you)

calm nebula
#

Plz explain sneeb

#

With pictures

gaunt heath
#

Behold: a sneeb

hard fern
#

a visual sneeb diagram..

ornate locust
#

that's a good void

gaunt heath
#

We call her the sneeb, she is beloved by all

hard fern
#

it's great that there are so many cats who are stardew modders

gaunt heath
#

She is 50% of the content of the group chat by volume, minimum

gaunt heath
#

Anyway double doors are evil and if your doors are transparent something went wrong with your setup

ornate locust
#

Yeah most people do {{ModId}}_Manny like that

gaunt heath
#

And yes, you need a unique internal id for your NPC. One time SVE didn't do that and caused the Hankpocalypse.

ornate locust
#

But if you use it in a Tiled map, you have to type out your mod ID instead of the token.

ornate drift
#

how about {{ModId}}_SpeedyManny

hard fern
#

hankpocalypse.....

gaunt heath
#

As long as it's unique it works

#

I think the SVE npc was hank, I don't remember

ornate locust
#

as an example, there are now two Zaynes. One is from a Love and Deepspace related mod and the other is Ridgeside

hard fern
#

i dont recall any hank

#

there is an old guy named andy though

ornate locust
#

so there's a double Zayne out there

hard fern
#

i can make it triple

proven spindle
#

Hey all just to check, 'IsRecipe' (boolean) is used to sell a recipe in a shop now right? It's not on the shops or recipe wiki pages but I saw it in a couple posts while searching

proven spindle
#

Thanks! I'll add it to the shops modding wiki then

proven spindle
#

Ah, that would be why

brittle pasture
#

anything that says "common fields" (like on the Shops page) links to this page

ornate locust
#

Yeah you can't just flip a door, it won't flip the animation. The same thing lead me to doing my tilesheet mod with the flipped couches so people can sit facing other directions

gaunt heath
#

The custom door process + saloon doors is your best bet for a double door without adding a whole other framework if you absolutely must have them

ornate drift
#

i think a saloon door looks better for a bakery anyway

#

what about the 2 heart requirement though?

gaunt heath
#

I haven't tested, but if you set up both with the NPC name like any other door it should still work

#

The saloon door animation mirroring is purely visual if I'm remembering the hardcoding correctly

ornate drift
#

fuck it ill just make it 1 door LiveSob

gaunt heath
#

As you can see, the saloon door is still two doors so you could just set them both to have the heart requirement

ornate drift
calm nebula
#

You need both

#

The map property and the tile property

ornate drift
#

well i put the tile property, but how do i put the map?

gaunt heath
#

The map property?

#

Click here

#

And then here

#

Sorry, this tutorial wasn't written with someone still learning Tiled in mind so it there are a couple moments like that

ornate drift
#

i get it lol, tiled can be a nightmare

gaunt heath
#

Once you add your door map property (the one that's a bunch of numbers), it'll appear in the bottom left where that red arrow is overlapping in the screenshot above

#

All four parts of the door at the start of the tutorial need to be done, or the whole thing won't work

ornate drift
#

like that?

ornate locust
#

maybe I could add vanilla double doors to the ol tilesheet mod... SDVpufferthinkblob

#

I only knew about the Couch Issue

torpid sparrow
#

Love ur couch I sit on couch

hard fern
#

πŸ˜” couch

ornate locust
#

(I say this before looking at the Kailey custom door zone, do not hold me to this)

gaunt heath
# ornate drift like that?

You only need one Doors entry, if you have mutliple it will break. To have multiple doors on the same map, you just add the data in sequence (see figure 6 in the tutorial for an example)

tiny zealot
ornate locust
ornate locust
#

thus why I made "same couch as vanilla but facing Other Way"

ornate drift
#

i used haleys room as a base when i first made this...

#

thats a leftover!!

gaunt heath
#

Lol that'll happen, you can just reuse that

ornate drift
#

or delete it :p

gaunt heath
#

And it has to be Doors, not Door

#

Even if you only have one

tiny zealot
#

my favorite is "if a couch is occupied in the real location, you will not be allowed to sit on it during an event"

ornate locust
#

oh no

ornate drift
tiny zealot
#

good news: there's no way to encounter this bug with vanilla event commands

gaunt heath
#

Sitting code my beloathed

ornate locust
#

SITTING SHAKES FIST

hard fern
#

i had enough fun with couches when i accidentally made onde

gaunt heath
#

-# furniture rotations

#

πŸ‘»

calm nebula
#

Smh

hard fern
#

ok actually furniture rotations arent that scary

calm nebula
#

I never rotate mg furniture irl

hard fern
#

<- has rotated a furniture before

gaunt heath
#

Yeah but they are evil

hard fern
#

oh right i need to make furniture

#

ugh but i cant just do 20 things at once

gaunt heath
#

There are hardcoded exeptions in the code for rotations that just look for a string in the larger item name. There are no guardrails.

ornate locust
#

No see rotating furniture on a map is fine

#

Rotating furniture that you can sit on does not rotate the sitting and that's the problem

gaunt heath
#

No, I mean the code for rotating furniture in-game under the hood

ornate locust
#

oh like House Furniture?

gaunt heath
#

Yeah

ornate locust
#

I never touched that, is it scary

#

My furniture's all tilesheet furniture

gaunt heath
#

Furniture.cs contains manmade horrors fully within my comprehension

ornate locust
#

Kailey is a cenobite but for doors and furniture

ornate drift
#

i cant leave get me outta here dracthyr_cry_animated

#

oh yeah when i gave manny the new ID it gave a few erroes

#

errors

gaunt heath
#

I don't play the game anymore, I just accumulate esoteric psychic damage

ornate locust
#

You need to change all the places that look for just "manny" to the new ID

ornate drift
#

i did

ornate locust
#

And is your wall where you leave on the top layer so you can walk through it and actually exit?

ornate drift
#

nyope i put it on buildings
ill fix that

vernal crest
#

I have a list of the hardcoded behaviours in furniture to add to the wiki but I haven't actually make it to the adding part yet

patent lanceBOT
gaunt heath
ornate locust
#

Yeah as long as you changed all the places that use it, the complaining should be harmless

gaunt heath
#

Also you need to set up warps on your map to leave lol

torpid sparrow
#

The map knows where I want to go

ornate locust
#

you do need warps.

torpid sparrow
#

It’s connected to my brain

gaunt heath
#

wem is just built different

torpid sparrow
#

I’m puter

slow basin
#

im tryin gto make a test companion but they arent showing up dang πŸ˜”

ornate drift
slow basin
#

FerretThink maybe i messed up the tilesheet

gaunt heath
#

You're gonna have to get very cool with your game screaming and flailing if you're gonna write mods SDVpuffersquee

#

My record for crashing the game is like 20 times in one minute

torpid sparrow
#

How

#

What happened

gaunt heath
#

I am very talented

torpid sparrow
#

Ugh icon

ornate drift
#

oh also the new ID completely reset Mannys progress

calm nebula
#

At least you didnt use __instance on a static method lol

gaunt heath
#

It was during the alpha. Early during the alpha. I was being very mean to it.

gaunt heath