#making-mods-general

1 messages · Page 397 of 1

torpid sparrow
#

Couches are nice aren’t they

undone fable
hard fern
#

things ive discovered i need to fix:

  • i can walk on water
  • stairs suck
  • my house is dark because i forgot what lights are
  • i walked through walls
#

SDVpufferflat map modding experience

#

welp i feel satisfied enough. i did some work

#

time to not look at this thing for a month

uncut viper
#

I thought I'd already fixed this in the past but I guess not. it'll have to wait till I get home later though, but sorry about that

hard fern
#

the good thing is only one of my maps had something wrong with them so the rest being ignored didnt pose a problem

uncut viper
#

(though if you didn't mind sending the tmx files themselves that had those issues it'd make it easier for me to fix the fixer)

gray bear
#

i think it just has an issue when reconizing custom tilesheets?

hard fern
#

🤔 odd, cuz most of my maps had custom tilesheets, and it threw the error at one but not the other

#

i can send the tmx though if you need

gray bear
#

iterable? thonk

uncut viper
#

no, I recognize the type of issue, I just must have missed a kind of edge case somewhere

#

from not being familiar with every possible way that Tiled may format a valid tmx xml

gray bear
#

can never win with tiled

uncut viper
#

thank youuuu, I know you'll not need it by then anyway but I should have the fixer fixed to handle these by tonight/tomorrow

uncut viper
gray bear
#

thonk

hard fern
#

ignore the not-vanilla fruit trees, i threw in my recolor mods so i could see what my map would look like recolored but i forgot the actual main recolor... but my fruit trees work!

gray bear
#

nice!!

solemn lagoon
#

hi! I want to ask, is it possible to make an NPC's sprite glow like the player when they have the glow ring equipped?

lucid iron
#

I believe you need C# but it's actually fairly simple C#

solemn lagoon
#

Thank you so much! xD

cold marsh
#

Anyone else has noticed there's MarriageDialogue lines with very low priority that never get called if you have too much dialogue? I've been working on a NPC for years and I've never seen "season_<spouse>" or the "day of week" ones used even once.

#

Is this expected behavior?

gentle rose
#

I mean, the more generic a line is, the more it will be covered by non generic lines

#

kinda just how it is

hard fern
# cold marsh Is this expected behavior?

Yeah, the game will pick the most specific dialogue for the day, and it goes in levels. If you for whatever reason give your spouse dialogue for every day of spring, you'll never see generic spring dialogue because every day has its own unique line

vocal osprey
#

Hey all, still working on the RTL/arabic mod and so far things are going according to plan but I just need a better way to debug my code and I wonder if it's possible to debug smapi stardew valley instance using dnspy? On my end it keeps crashing

lucid iron
#

hm what system are you on?

vocal osprey
#

Windows

#

10 specifically

lucid iron
#

i think you can run debugger from visual studio (community) normally and it's all good

#

i am also kind of scared that you are the second person who apparently code mods with dnspy MedShook

vocal osprey
#

I don't actually but I find it a good way to prototype

#

Is it that bad?

lucid iron
#

ok that's not as cursed as the person who mods by using dnspy to modify an empty dll that they start with kyuuchan_run

#

but yes you can definitely debug smapi via VS

#

you can also hot reload

#

!hotreload

#

!reload

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

This reload thing I tried for content but I don't think it works for harmony patches/transpilers right?

lucid iron
#

hot reload doesn't work for transpilers but i think it should work for prefix/postfix

#

transpilers might work if u r just inserting a call to your own function? dunno im on linux and dont have hot reload anyways

#

should clarify that the c# hot reload is not the content patcher patch reload

vocal osprey
#

man you're a godsend

#

I need to try this out, thanks for advice

tiny zealot
#

hot reload works for any loaded C# code as far as i know, and i think in theory could work on transpiled code, but the problem there is the transpiler only runs once when you call Patch/PatchAll, so hot reloading doesn't help you

#

same problem is true for prefix/postfix; you can't add or remove a patch and get it hot reloaded, since the patch won't be applied or removed, but you can edit the functions you stapled on and those changes can be hot reloaded

#

if you had a way to unpatch/repatch your target methods after hot reloading i expect it would work. i don't have one of those

blissful panther
#

C# hot reload works unless you're Matt, basically. /lh

humble timber
#

lmao

gentle rose
#

I must confess, I've never tried hot reload

calm nebula
#

I've tried it on my sandwiches

#

Oh wait

gentle rose
#

and since I run the game the normal way even when testing, I can't even build my code while it's running SDVpuffersquee

calm nebula
#

That's hot sauce

hard fern
#

i do cold reload, personally

blissful panther
#

Some day debugging will work again.

#

Some day.

proven spindle
#

I got visited by the fairy modmother today

#

Some kind soul on Nexus downloaded one of my mods, looked at the code, saw a feature I'd commented out bc I couldn't get it working, and messaged me with how to fix it SDVpufferwow

gentle rose
lucid iron
#

-# justusevscode

blissful panther
#

I would, but when the debugger hits, there's a 50/50 chance that the window will break, making the cursor invisible and stop responding to clicks.

ornate locust
#

fairy modmother

gentle rose
#

6 more months and you'll get another reply!

blissful panther
#

That might be a Wayland bug, though.

lucid iron
#

oh rly

#

i had that bug for a while

#

it eventually stopped hapen

#

rolling release yay?

blissful panther
#

Yeah, it's on and off for me.

gentle rose
blissful panther
#

I mean you're welcome to try... then I will ask for a clone of your entire drive minus /home. SDVkrobusgiggle

#

But if run VSCode with the parameter: --disable-features = CalculateNativeWinOcclusion then the problem goes away. The VSCode window fires at the breakpoint correctly.

...surely it's not something that simple.

autumn tide
#

Hey! I need some help, would this line work? It's supposed to be for when you're roommates with Krobus, where Krobus gives you 10 squid baits on the 12th of winter, with only text boxes rather than speech because it's a friday

"winter_12": "%Krobus smiles at you, handing you ...something? [FLAVORED_ITEM bait (10) SpecificBait 151]#$b#%Wait.. 10 squid baits? Why-? #$b#%Krobus evidently notices your confusion, waving his hand to catch your attention, and then pointing at the calendar. Oh, SquidFest! You smile and hug Krobus in appreciation, who smiles delightedly.",

#

still new to modding and I wanna know if I did it right

lucid iron
#

can you give flavored item in dialogue NotteThink

autumn tide
#

?

lucid iron
#

[FLAVORED_ITEM bait (10) SpecificBait 151] this bit i mean

autumn tide
#

I'm not sure, really new lol

urban patrol
#

also is that the correct format? i thought it was like this: "niko_dialogue.Wed6": "I baked some cookies earlier! Although I couldn't taste the dough very well.#$b#You have to try them and tell me if they're good!#$action AddItem (O)223 1",

hard fern
#

I dont think you can

#

Like in dialogue

#

The flavors

autumn tide
lucid iron
#

i did make a mod that would let you do it but i dunno if you want a dependency for this

autumn tide
#

I like that!

#

where can I find the mod?

lucid iron
#

the thing you want is Stored Item Queries

#

after adding a {{ModId}}_SquidBait entry you can do $action mushymato.PeliQ_AddItemByQuery {{ModId}}_SquidBait in dialogue

autumn tide
#

TYSM!!!!

lucid iron
#

i think so anyways kyuuchan_run

#

let me know if it no work lol

autumn tide
#

You literally just answered the question I was typing lol

autumn tide
lucid iron
#

u can check the bait maker in Data/Machines for what the format for a flavored bait item spawn rule looks like

autumn tide
#

okay, for mod ID should it be the ID for my mod? sorry dumb question lol

lucid iron
#

{{ModId}} is a token

latent mauve
#

{{ModId}} is a token used by Content Patcher that automatically fills in the UniqueID you defined in your manifest.json

lucid iron
#

so in actual game it'd be auto replaced by claude.KrobiModdy or whatever you put in manifest

autumn tide
#

got it okay

#

thanks!

#

sorry, still pretty confused, so I put the PeliQ-main file in my Mod folder, what should I do next to make my dialouge giving thing functional?

uncut viper
#

i just assign that to a hotkey which immediately does another Harmony.PatchAll

#

iirc there is some attribute that can react to a hot reload event that can likely do that for you automatically

molten summit
# autumn tide sorry, still pretty confused, so I put the PeliQ-main file in my Mod folder, wha...

I'm pretty new here so I likely cannot help, but this is likely too vague to get a response. Are you using C# or Content Patcher? Also, instead of "how do I make it functional", ask more direct questions like "How do I edit specific dialogue lines for a character's daily dialogue?". If you're absolutely not sure what to do next, it is likely best to go back to the Stardew Valley Modding Resource page or Content Patcher's modding documentation.

uncut viper
#

well theyre asking chu about how to use chu's specific feature so im not sure the CP documentation or the modding resource pages will really help

molten summit
#

Oh I see. A lot of people likely aren't going to have direct knowledge of that.

autumn tide
uncut viper
#

this dialogue mod was post-1.6 right

autumn tide
#

uhh

#

i think so?

uncut viper
#

not that it should matter TOO too much for dialogue but always good practice

molten summit
#

I'm hopping into the middle of this and haven't read exactly what you're doing, but if you're just trying to edit (or add) some lines of dialogue in the game, then it sounds like Content Patcher might work better as more people have used it and it has more support.

lucid iron
#

Yeah i have zero consumers using me mod like this

uncut viper
lucid iron
#

So any examples gotta come from me Dokkan

uncut viper
#

you can just start using that query if the mod is installed

#

you dont have to interface directly with PeliQ, just have to make sure its installed

autumn tide
molten summit
#

lol

lucid iron
#

for testing, after adding the data you need, you can type this in your smapi console
debug action mushymato.PeliQ_AddItemByQuery YourActualModIdWrittenOut_SquidBait

uncut viper
#

actually im correcting myself, if its a Stored Item Query and not the regular Item Query you would need to interface with it

autumn tide
#

I'm just winging it with my code lol, I have a google doc I put up earlier when I was aking for lore advice, once I get it at least partially done I'll put all my code there and ask for further advice

lucid iron
#

ill write u a example later SDVpufferthumbsup

molten summit
#

keep going with it and you'll get the hang of it. things like this can be hard to get started, but it is a lot of fun

uncut viper
turbid grotto
#

Oop! Super sorry. Can I share other stuff about it like the art and things?

uncut viper
#

you cannot share anything that goes against rule 6 of this discord

#

if you want anything more specific an answer than that you'd be better off asking a junimo

turbid grotto
#

Alr thanks

blissful panther
# turbid grotto Oop! Super sorry. Can I share other stuff about it like the art and things?

(If it's very specific snippets that you're having trouble with, those can be shared as long as they contain no NSFW content and allude to nothing NSFW, and the name of the mod is kept out of the server. Though keep in mind that it could be very difficult to get help without the ability to share large portions of the JSON/C#. Especially if, say, it's a line of dialogue that you need to heavily censor to keep it SFW, but that's specifically what you're having trouble with.

Overall, technically fine if nothing NSFW is shared or hinted at, but it would be tricky, and you would run the risk of slipping up and tripping over the rules.)

turbid grotto
#

good to know thanks

#

this was in all honesty a dumb idea i had that was not intended to be taken seriously so i will probably change things

celest salmon
#

I have a quick content patcher question, when using the "when" block, how do I get content patcher to check for if a user has mod a OR mod b?

uncut viper
#

put them both in the value separated by a comma

#
"When": {
  "HasMod": "ModA.UniqueID, ModB.UniqueID"
}
celest salmon
#

omg, ok thank you sorry for the dumb question SDVpufferwaaah

obtuse wigeon
#

I didn't realise how different android SMAPI is, I knew it was different but so far people have come across like 3 different issues that are completely seperate and that work fine on PC that I can't replicate

uncut viper
#

a lot of the code for the game itself is different on android, not just within SMAPI. notably anywhere that a menu happens

obtuse wigeon
#

Is the game on android built in C# aswell or a different language like java/kotlin etc? cause that may explain 2 issues, the third one I could only explain if maps start at 1,1 instead of 0,0

uncut viper
#

C#

#

its still the same overall codebase, its just a bunch of it has android specific tweaks

obtuse wigeon
#

damn you android!

uncut viper
#

im not saying its not bc of android SMAPI specifically, just that its hard to tell where exactly the problem lies sometime

#

s

#

i think a lot of modders are generally in the "if it works on android, great, if not, oh well" camp and i think thats a perfectly valid camp to be in

obtuse wigeon
#

It would be great to support android but with no real testing environment available to me, it's quite hard to support it. That's exactly the camp I'm in, can't provide as much support but I can give it a go atleast

uncut viper
#

i think android modders are used to it lol

obtuse wigeon
#

I remember when I used to play on android, there were so many mods I missed out on cause they didn't work, then I bought the game on steam and never looked back

lucid iron
#

i think the main thing is actually just menu?

spark garden
#

compatibility patch question here: i've been playing with soft slow seasons, and PIF. most PIF rooms don't have built in compatibility with soft slow seasons, especially because i think the seasons in soft slow seasons work differently [the recolor changes twice per season i think], than other recolors. i'd like to figure a way to add compatibility in the individual mod, but i don't know where to start.

for context here's how it's showing up in game. the ground shows up fine [though on some rooms it doesn't work either], but 2/3 trees are showing up vanilla. the trees work fine while just playing in the regular game, and so does the ground.

lucid iron
#

and haunted harmony nonsense

lucid iron
spark garden
#

i've been playing with it for a little. turning off the lock on spring didn't help with the trees.

obtuse wigeon
#

actually I have a question about testing multiplayer, when I don't have steam open I'm able to open 2 instances of the game, are these able to interact as if it was an actual mutiplayer game or would things not work as multiplayer should?

humble timber
#

i think 2 instances should work

#

but dont quote me on it

uncut viper
# lucid iron i think the main thing is actually just menu?

little tweaks where you'd least expect it too, like my transpiler that was broken in newDayAfterFade
it was a difference of one single opcode but thats enough to break a transpiler, ofc. who knows how many other random places have a single different opcode

#

and yes two instances of the game open is good enough

#

at least for practical multiplayer testing purposes

lucid iron
#

testing the scenario where mods are mismatched is harder but i think that's the user problem kyuuchan_run

uncut viper
#

you could do that too with SMAPI profiles

#

but i agree thats a user problem you shouldnt even need to test that

obtuse wigeon
#

Good to know, I'll be able to test multiplayer more extensivly in that case, guessing both games will write to the same log however though? is there a launch arg that I can add to write the log of one to another file? like 2 files alongside each other like SMAPI-latest.txt and SMAPI-latest-mult.txt

lucid iron
#

tbh i just read console blobcatgooglyblep

uncut viper
#

doubtful but shouldnt really matter since you can look in the SMAPI console

#

doubtful that theres a launch arg*

lucid iron
#

but what is the problem you have anyways

#

is ur mod no work

obtuse wigeon
#

it's no work for someone on android, CP componant works, C# one however doesn't, like at all, Button made the C# componant output when a building starts sorting to the trace, however that doesn't exist in the users log at all, but both componants are loaded with no other errors (thank you Button for adding that deature, I'd be lost without it) but it does work for other users on android

uncut viper
#

(for context: it starts sorting when a menu is detected and then closed)

obtuse wigeon
#

and another user (on PC) is having an issue where the warps to exit the building are off by -2,-2, I know I had the issue when making the maps but I fixed that before uploading, the latest is the only version with multiple interior sizes and I downloaded it and tested and I'm not getting that issue, No log from them yet though

lucid iron
lucid iron
#

so something you can do is, use a When HasMod mushymato.PeliQ on this edit

#

when peliq not there just give squid

autumn tide
#

okay!

zenith sapphire
#

Hey , I'm making an edit of that mod editing the ID as you suggested and its working great! I have just a problem about adding a modded location like : Custom_ShearwaterBridge, i tried to put it in this space like this:
but the fish doesnt spawn in that position like its not founding that place (i have no errors in the log)

unique tusk
#

Hey uhh I'm trying to add custom music for a custom NPC I'm trying to make and I'm lowkey lost 😭
I converted all the music to wav. and made a custom "music" folder but the tutorial I'm using is confusing me (https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Custom_Music) it says I have to replace an audio in the base game? But the mod it wants me to use no longer works in 1.6???

Stardew Modding Wiki

This a tutorial on how to add custom music to Stardew Valley

brittle pasture
calm nebula
obtuse wigeon
calm nebula
#

[[Modding:audio]]

zenith sapphire
calm nebula
#

(Selph still got it before I go all the way to "audio")

zenith sapphire
#

The TargetField?

calm nebula
#

Yup!

zenith sapphire
#

Oh idont know what is that field?

obtuse wigeon
#

It tells Content Patcher what to modify, if you replaced "Beach" with "Forest" it would apply to forest instead, you want to replace "Beach" with the location you want to modify

surreal skiff
#

Hello, I was wondering if anybody could point me to a mod that adds Json Asset Boots to the game, I'm struggling to get mine to work and I'd like to see an example, I've been looking at the Dinosaurs Shirts and Boots mod, but apparently I'm missing something.

brittle pasture
#

obligatory "why JA"

#

you can add boots and shirts with content patcher now

surreal skiff
#

Did not know that, is there a tutorial for that? Sorry, I'm new to this

lucid iron
autumn tide
brittle pasture
#

!startmodding if you haven't made a CP mod before refer to its tutorial

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
autumn tide
#

Gotcha, thanks :)

uncut viper
#

(these errors have been fixed thank you for getting them to my attention)

zenith sapphire
#

in the previous version 1.5 i understood but since they changed the format i dont know

#

Is something like this?

hard fern
lucid mulch
# zenith sapphire

Season would be the name of the season (though I think technically it wont explode if you did 0->3 for spring->winter, 4 would anger it)

lucid iron
#

did you use a different xnb unpacker

zenith sapphire
lucid mulch
#

yes

zenith sapphire
#

i need to put some specific syntax? because just with spring it give me a syntax error

lucid iron
#

!json

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.

lucid iron
#

did you forgor comma

zenith sapphire
#

no no i put comma, i wrote "Season": Spring,

humble timber
#

dont you need quotes?

uncut viper
#

you would need quotes yes

zenith sapphire
#

yes it worked!

#

sorry for bothering , thank you so much!

heady hull
#

Hi, I am new to modding, and want to make myself some dress
but I don't understand how the image layout works!

#

I am so confusedSDVpufferdead

#

would really appreciate some help

lucid iron
#

in general there is something that tells game what to use rather than just image itself

#

it would be more helpful if you tell us what kind of mod you want to make/what effect you want

heady hull
#

Just a really simple dress

lucid iron
#

do you care about the walk cycle (i.e. will you do all those frames)

heady hull
#

similar to the dress in the game itself, but shorter and with different trims

lucid iron
#

ah you gotta fight pants.png theng 😔

heady hull
#

if I don't do all those frames, what will happen?

lucid iron
#

you will get to see the dress go up n down when farmer runs

heady hull
#

like will I suddenly go naked when I walk?SDVthinking

#

oh I see

lucid iron
#

if you dont need these, then you only need 4 sprites for the 4 facing directions

heady hull
#

so if I don't do those frames, the dress would be like, doesn't move when the farmer walk?

lucid iron
#

yea

#

which is alright for long dress

#

up to you basically SDVpufferthumbsup

#

you can also start from a base dress, unpack the game to see them

#

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

heady hull
#

some mods I downloaded have about 20 frames for a dress, that seems like a reasonable middle ground between 4 sprites and the game's hundreds of frames, but I don't understand which frame corresponds to whichSDVpufferchickcry

zenith sapphire
#

guys if i in my fish mod put the :IsBoss option, the fish will just be spawned 1 time or can be recatched?

brittle pasture
#

IsBoss gives the fish icon a crown, grants 5 times the XP and gives you a notification when caught. the actual catch limit is CatchLimit

drowsy pewter
#

mod idea, every fish is boss

lucid iron
#

Oh no

#

But some fish are big boss

calm nebula
#

All fishies deserve the crown equally

unique tusk
#

Hiiiii does anyone have a tutorial on how to SPECIFICALLY code a custom map you made??? into the game??? Like, I know Stardew Valley Expanded did it and I've been looking at its content.json but bro I'm so lost 😭

lucid iron
#

You got the tmx?

zenith sapphire
# lucid iron Oh no

oH I have a question, i want to put specific fishes in specific season of the same map, but what i did was copy and paste the same code more times but it just didnt worked well, it gave me the last season i put , how i can do it in this code? :

unique tusk
zenith sapphire
#

because i can put just one season per location, right?

lucid iron
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.

lucid iron
#

Can you please send your json with this instead of screenshots

brave fable
#

(one day i'll understand why everyone sends screenshots first. one day)

zenith sapphire
#

The mod works, but i wanted to add different season for the same location (Shearwater Bridge)

vernal crest
#

You have to change the ID otherwise you're just replacing the entry

lucid iron
zenith sapphire
tiny zealot
vernal crest
#

And it needs to be the entry key as well as the ID.

calm nebula
#

(You could also gsq instead of the season field)

#

(Or put the season constraint in data/fish....i think....)

vernal crest
#

I think they want different fish in different seasons

#

But not necessarily for all locations? IDK

zenith sapphire
vernal crest
zenith sapphire
#

Ohh ok i see i need to put Fisherman.AYCFCP.seabass.ShearwaterBridge.Spring also in the ID

#

Right?

vernal crest
#

Yep

zenith sapphire
#

Thank you for your patience xD I'm getting used i promise

unique tusk
#

Does anyone know what this means???? owo

obtuse wigeon
#

It seems to have a dependancy on itself

#

or 2 mods that are dependant on each other, and SMAPI doesn't know which to load first, cries, and doesn't load either

ornate locust
#

yeah a mod can't require itself, SMAPI will explode

unique tusk
#

Wait I'm still so confused why is it dependant on itself??? SDVpufferwaaah

#

Did I mess up the manifest????

brave fable
#

in one or both of your manifest files, you've listed either both mods as dependencies of eachother, or the same mod as a dependency of itself

obtuse wigeon
#

If you included it's own ID as a dependancy, then yep!

brave fable
#

you simply need to remove the unnecessary extra dependency/ies to allow it to launch

uncut viper
#

(im surprised a dependency on itself doesnt have its own error message or isnt just like... ignored as harmless maybe with some warning text)

unique tusk
#

I can't figure out what to remove cryign

uncut viper
#

its a ContentPack for Pathoschild.ContentPatcher

unique tusk
#

OOOOOOOOOHHHH

#

TY SO MUCH

uncut viper
#

though thats two different unique IDs, do you have two mod components?

unique tusk
#

Define mod components? owo

#

Sry I'm still vry new to modding ksgdkajs

obtuse wigeon
#

two folders, each have their own manifest

calm nebula
#

(There is a mod out there that claims to be a content pack for SVE)

unique tusk
#

Oh! No I don't :0

uncut viper
#

i dont think that manifest alone would result in that error message, since its not depending on itself

obtuse wigeon
#

(does smapi use an exact match or is a partial match alone checked for? I can't see why a manifest like that would do it)

uncut viper
#

(also, while not relevant to the error itself either, just a heads up that the NPC Creator you are using is very out of date)

#

it would never use a partial match

#

that would defeat the entire point of a uniqueID system

obtuse wigeon
#

That's what I thought, BlueJester do you have 2 of your NPC mod in your mods folder?

ornate locust
#

hm

lucid iron
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

lucid iron
#

consider taking a look at some guides SDVpufferthumbsup

lucid iron
#

rmbr to test in minimal mod list if you can

obtuse wigeon
#

Hmm, not sure why it decided to throw an error like that besides incorrect content pack for field

unique tusk
ocean sailBOT
#

Oops, couldn't parse that file. Make sure you share a valid SMAPI log.

obtuse wigeon
obtuse wigeon
#

that link provides better validation for json files, where as the one you used provides validation of the log itself

unique tusk
#

Ty!! :)

obtuse wigeon
#

Whats happening is when you added the include files, you actually escaped the "Changes" field, you need to add the include files inside "Changes" field

unique tusk
#

How would that look in coding? :0

obtuse wigeon
#

Infact a lot of it seems to have been escaped multiple times, it needs to go above the ]

#

everything starting on and after line 34 needs to have the [ and ] removed, then everything from line 34 down needs to be placed before the ] on line 32

uncut viper
#

(just to reduce potential future confusion: the process to fix it thats being described (removing the brackets and moving things inside changes) is correct but "escaping" is a different concept entirely)

obtuse wigeon
#

(Gotcha, thank you, I couldn't think of the right words to describe it, I shall keep that in mind)

unique tusk
#

I think I did it?? But it's still not working concern

lucid iron
#

missing comma

#

},
{

obtuse wigeon
#

Line 32 you're missing a comma

#

Beat me to it chu

lucid iron
#

it's recommended to use a text editor with json support when you edit files

unique tusk
#

OMG THAT WORKED

#

YOU GUYS R LIFE SAVERS

#

Wait nvm it still failed SDVpufferwaaah

obtuse wigeon
#

What error did you get this time?

unique tusk
obtuse wigeon
#

Artifacts of the old NPC creator tool, unfortuantly this is where my knowledge ends so someone else will have to take a crack at helping you

unique tusk
#

Yeaahhh I might need to do the content.json from scratch cryign

lucid iron
#

again i really recommend taking a look at a guide

#

it helps to understand what each bit does

lilac kestrel
#

How do you add a weapon with a projectile? I think I'm doing something wrong...

tiny zealot
#

npc creator claims another victim 😔

humble timber
zenith sapphire
#

Guys, can fish ID's be with space? like Atlantic Herring etc..?

dusky sail
#

Names? Yes. IDs? No.

zenith sapphire
#

Cause i have a weird error in smapi when i open my fish journal , it crash the menu and i get this string in SMAPI:

uncut viper
# unique tusk

(this error mentions WrenSong though, isnt that from the guide then?)

dusky sail
#

I recommend camelCase (AtlanticHerring) or underscores (Atlantic_Herring)

uncut viper
#

i dont believe theres anything technically stopping you from putting a space in it

#

its just likely not recommended

#

as it may break parsing in other areas

obtuse wigeon
uncut viper
#

emphasis on may

tiny zealot
calm nebula
#

Oh the parsing for the collections menu is Really Fun iirc

#

I wouldn't do spaces

zenith sapphire
ocean sailBOT
#

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

tiny zealot
#

Only use alphanumeric (a–z, A–Z, 0–9), underscore (_), and dot (.) characters in string IDs.
please

uncut viper
#

im not sure where it'd break in the collections page

calm nebula
#

Got it. Using emoji

uncut viper
#

mind you, im not advocating you try, i am with ichor here

calm nebula
#

The way the shading is done

uncut viper
#

just that the question was "can" not "should"

calm nebula
#

The filled not filled

#

It's just the name concatinated with two bools

#

And I think it uses space as the separator

#

But I'm not getting out of bed to check

tiny zealot
uncut viper
#

i think in the interest of expanding ones knowledge that its more beneficial to know why something shouldnt be than to simply be told it cannot be

#

otherwise, people may take these incorrectly stated cannots as immutable fact in other situations where it would actually be perfectly fine

calm nebula
#

The game has Fun Ideas of how string parsing works

uncut viper
#

see the not-uncommon way people correct others jsons by providing corrections that wont actually change anything at all

calm nebula
#

Often incoherent Fun Ideas

uncut viper
#

bc they dont know theu nderlying reason of why it was broken for them in the past

tiny zealot
#

Only use alphanumeric (a–z, A–Z, 0–9), underscore (_), and dot (.) characters in string IDs. This is important because they're often used in places where some characters have special meaning (like file names or game state queries).
this seems good enough to me, from the link i posted

uncut viper
#

not to mention that, if the only example of it breaking is the collections menu, it could be argued that its a bug in the collections menu that should be fixed

tiny zealot
#

"if you don't do this, your shit might explode and it's on you"

uncut viper
#

i agree thats enough! but that came after my initial answer (where i also said it may break parsing in some places)

brave fable
#

what was the question again

uncut viper
#

can a fish ID have a space in it

brave fable
#

maybe ✅

vernal crest
#

But don't ❌

#

(My reason is: I will be cross at you about it and then you'll feel sad)

calm nebula
#

Collectionspage.draw

#

Read it and reconsider

#

please dont

brave fable
#

so does atra fall into the 'low brainrot' or 'low friction' category for posting code screenshots 📝

vernal crest
calm nebula
#

what the fuck is happening with tab 5

uncut viper
#

to be fair, reading that i dont immediately understand why its fine for Cooking recipes, which all have spaces in them

calm nebula
#

high brainrot.

uncut viper
#

(or well, a lot of them)

calm nebula
#

because the cooking recipes don't matter.

#

the cooking items do

#

also what's up with tab 5 doing some random shuffling

uncut viper
#

right, makes sense

#

i dont remember which one is tab 5

calm nebula
#

achievements

uncut viper
uncut viper
#

"Something Halibut" gets split by spaces and the second one is parsed as a boolean

calm nebula
#

I love this game

#

CA, never change

uncut viper
#

because the name of the texture component would be "Something Halibut true true" or w/e

#

also where is the tab 5 shuffling

#

oh i see

#

thats choosing the random star icon

#

each achievement gets a random face on its star

tiny zealot
#

oh yeah aren't the faces seeded to your unique multiplayer id or something

uncut viper
#

("random" seeded random but yknow)

calm nebula
#

y'all made me get out of bed to find that code and post that screenshot smh

#

I'm going back to bed now

uncut viper
#

no theyre seeded by achievement name

tiny zealot
#

oh lol

vernal crest
vernal crest
obtuse wigeon
#

I have a question about migrating from a config based method of changing the size of an interior to an upgrade bade method, Currently I have a config setting to change between and small, medium, and large interior for my autosorter, however someone mentioned changing it to an upgrade method using robin, for people who have the large size enabled, is there a way to automatically detect this and change it to the fully upgraded? so that if they don't have a way of accessing their chests remotely they arn't locked out of retriving their items?

#

or would having a "legacy sizing" config option be better?

gaunt orbit
#

You could keep the option in the config, and conditionally add a trigger action to upgrade the building based on the config value

#

@obtuse wigeon

#

Probably the simplest way to do it, and just change the default value to "no upgrade" or something so only people with existing configs get auto upgraded

uncut viper
#

what trigger action can do that?

obtuse wigeon
#

I'm not seeing a trigger action for a building upgrade on the wiki, guessing there needs to be a dependancy for that?

gaunt orbit
#

Oh huh, I thought for sure there was a TA for that

#

Oh wait I'm thinking of debug commands

#

Well, damn.

#

You could maybe do something janky like use the current building id as the upgrade and add the new building as the base for it?

#

So your existing buildings would be grandfathered in as upgrades

obtuse wigeon
#

I'm not opposed to jank, most of my most are held together by tokens and tape

gaunt orbit
#

Or just say "tough luck, use noclip, sorry."

obtuse wigeon
#

It may effect how the auto sorter works, I may have to modify the C# code too, it will certainly be a learning experience

gaunt orbit
#

Oh if you have access to c# that's a lot easier

#

Just iterate buildings and apply upgrades if needed

obtuse wigeon
#

I did think of no clip but I'm not too much of a fan of telling people to install a "cheat" mod

#

the mod consists of C# and a content pack but I don't know C# so I was looking if there was an easier way using content patcher, I really should put a good chunk of time into leaning C#

gaunt orbit
#

Basically "if building.id is oldid applyupgrade" and use only new ids for the new buildings

#

The game has a helper method to run code on all buildings everywhere

#

And IIRC you can just apply an upgrade to a building directly without doing the whole song and dance of construction

#

If the config file is on the cp mod though you'll need to put that info somewhere the c# can read it

obtuse wigeon
#

I'll keep that in mind, I'll have a look through the game code again and learn some C# and see if it's feesably something I can do

#

The config is on the cp mod side but can't C# mods read custom fields? so I could just add the config option to the custom fields section using a token or something so it can be read (ovs just a basic idea, not sure the erxact implimentation)

inland rain
#

on-the-fly map generation (and lakes, sort of)

obtuse wigeon
#

ayyy nice work! so you're making this procedural rather than placing maps in certain locations and manually making the connections?

inland rain
#

it's procedural, but you can add fixed maps to it as landmarks

#

like if you wanted to add a cave or a mountain, or a town

obtuse wigeon
#

Infinite space for expansions!

lilac kestrel
#

Trying to make a weapon that fires a projectile but I can't seem to make it work

brave fable
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.

inland rain
brave fable
#

actually, moreso ^

#

preferably both

obtuse wigeon
#

You've got {} when it expected [] in the first entry somewhere

lilac kestrel
uncut viper
#

you need to send a link to your uploaded json here in this channel for people to look at if you want help with your json

inland rain
#

yeah post it there, then send a link here

lilac kestrel
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 9 C# mods and 1 content packs.

brave fable
#

that one's on me

obtuse wigeon
#

firstly I think the "action" field is case sensetive, you've got some wthi load instead of Load

lilac kestrel
#

Those are fixed

#

However its not related to what I was trying to do

inland rain
#

use [{}] around your projectile

lilac kestrel
#

Ohh

inland rain
#

because it's a list of projectiles

lilac kestrel
#

So like this?


                    "Projectiles": [{
                        "Id": "{{ModId}}_ChujinStaffProjectile",
                        "Damage": 10,
                        "Explodes": true,
                        "bounces": 0,
                        "MaxDistance": 4,
                        "Velocity": 10,
                        "RotationVelocity": 32,
                        "TailLength": 1,
                        "FireSound": "dwop",
                        "BounceSound": "breakingGlass",
                        "CollisionSound": "breakingGlass",
                        "MinAngleOffset": 0,
                        "MaxAngleOffset": 0,
                        "SpriteIndex": 11
                    }],
inland rain
#

I think so

lilac kestrel
#

It worked!

#

tysm

tired matrix
#

is there any tilesheet tutorial for making custom objects?

haughty charm
#

Question for y'all: I know there's a GSQ to check for shipped items (PLAYER_SHIPPED_BASIC_ITEM) if said item is tracked by the game for the shipping stats; can this apply to mod-added items?

brave fable
brave fable
haughty charm
tired matrix
#

Wtf is happening why does my custom npc just leave the map

#

HE LEFT THE GAME

haughty charm
#

Thank you!! SDVpufferheart

tired matrix
urban patrol
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.

obtuse wigeon
#

I'm overriding the catagory of seeds using Calcifer and SpaceCore (Independently in seperate patches) and I'm wondering if I can override multiple items at once in the same entry, rather than having a seperate entry per item, I see I can set multiple targets, but that targets "Data/Objects" not "473" etc

gentle rose
dire kestrel
#

where is this large rectangular message box in Cursors used? 652, 1685

brave fable
#

oh, that's the fishing minigame bubble

dire kestrel
#

thanks, never played jpk past abby's event so wasn't sure

obtuse wigeon
#

can local tokens be comma deliminated like this for entries?:

"LocalTokens": {
    "SeedID": "473, 474, 476"
}
lucid mulch
#

it would become a set with 3 values iirc

obtuse wigeon
#

Gotcha, shame it wouldn't work, Even tried ["ID1", "ID2"] but it doesn't like [] at all in token values

#

Struggling to understand SpaceCore's CategoryTextOverride, this is not how I do it because I get an error that says there's no record matching key '473' under Fields.:

{
    "LogName": "Catagory Overrides for seeds",
    "Action": "EditData",
    "Target": "spacechase0.SpaceCore/ObjectExtensionData",
    "Fields": {
        //Spring Seeds
        "473": {
            "CategoryTextOverride": "{{i18n:SpringSeeds.category}}"
        },
    },
    "When": {
        "HasMod": "spacechase0.SpaceCore"
    }
}
#

For reference this is what the SpaceCore docs say reguarding CategoryTextOverride:

Objects - These are in the asset spacechase0.SpaceCore/ObjectExtensionData, which is a dictionary with the key being an object's unqualified item ID, and the value being an object containing the following fields:

    CategoryTextOverride - string, default null (no override)
urban patrol
#

are you sure it’s supposed to be fields and not entries?

#

i know i’ve used object extension data before, let me see how i did it

obtuse wigeon
#

It was entries 🤦 thank you

#

I didn't even realise it was fields, I just copied what I did for Calcifer which uses Fields not Entries

urban patrol
#

oh easy fix then yay

obtuse wigeon
#

I'm glad it was ngl

#

Is there a way to set the i18n to a vanilla string? or does it have to be in my own i18n folder

urban patrol
#

why not just have the data refer to the vanilla string?

#

since the game has its own translations

obtuse wigeon
#

Thats what I mean, sorry, quite tired but determined to finish this small ultility for my mod

#

I'm just not sure how to direct the translation to the specific string

urban patrol
#

use localized text

vernal crest
#

LocalizedText

urban patrol
#

then direct it to whatever the file and key are

brave fable
#

simply copy what the vanilla data entries do

#

everything they do, you can, too

obtuse wigeon
#

Okay that's tomorrows job then cause I am not comprehending basic things, oops

gloomy lake
#

if I move the graveyard on the town map via Tiled - do I need to change Abigail's event location in the files somehow?

obtuse wigeon
#

I think I messed up the formatting somewhere?

"473": {
    "CategoryTextOverride": "[LocalizedText Strings/Objects:SpringSeeds_Name]"
},
brave fable
#

ah. well in that case spacecore just doesn't respect localizedtext, which needs to be parsed manually by the c# component

obtuse wigeon
#

Ahh, okay, A bit annoying, but oh well, I'll just include it into the i18n files

drowsy pewter
gloomy lake
#

would you know which file I need to change?

drowsy pewter
#

Events/Town or something like that, I cant help more than that though

#

you'll want to read up on events modding

gloomy lake
obtuse wigeon
#

Turns out the catagory overrides from Calcifer and SpaceCore don't work with Big Craftables

gentle rose
obtuse wigeon
velvet narwhal
gentle rose
faint siren
#

Hello!
The shipping bin mod is cropping the pet selection icons, I think it’s because the size values are set incorrectly. Could someone please share a guide or info on how to determine those values?

hoary lake
#

Idea: genetics mod!
Cow is given chicken genes, cow chicken is born!

#

Their children could have a chance of inheriting their parents genes

vernal crest
# faint siren Hello! The shipping bin mod is cropping the pet selection icons, I think it’s be...

!unpack Yeah I think you're right. If you unpack your game content you will find the LooseSprites folder. Inside that will be Cursors.png. You'll be able to open it up and find the correct coordinates that way. You'll probably have to change it to two patches instead of just this one, because there's no way to cover the entire shipping bin and lid in one rectangle without covering the pet icons.

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!

hoary lake
#

Could you boop layers for sprites? Like a chicken head on a layer so you can boop it onto any animal sprite?

vernal crest
hoary lake
#

Gasp!

#

Can you make it so I can juggle my eggie farm animals?

#

The ones logo friend and panda friend made!

#

I hope everyone is doing good!

swift belfry
#

Hello!
Can someone help me with GMCM integration? I'm trying to specify a formatValue field on a number option (0, 1, 2, 3) and I can't seem to find an example anywhere. And I'm just not used to write c# to guess it on my own :(

gray bear
#

are you going for a dropdown menu?

#
{
"Thing": {
"AllowValues": "0, 1, 2, 3"
"Default": "0",
},```
bleak spade
#

I've modded my forest map, but the hat mouse is now non-interactible

#

Does anyone know how to fix that?

gray bear
vernal crest
bleak spade
#

Oh wait a minute this is weird - I've earned only one acheivement (Greenhorn 15k) but the hat mouse letter hasn't arrived, but the sprite has shown up

swift belfry
#

I'd like a dropdown menu, with text instead of the numeric values my mod is using, that's why I'm trying to use formatValue

vernal crest
#

Are you doing this in C#?

#

(Sorry that was to MartinD)

bleak spade
gray bear
#

is formatValue a thing

brave fable
#

yes. in c#.

stark spindle
#

formatValue is a Func<float, string> as I recall so you can just pass it the name of a method that takes in a float parameter and returns a string

gray bear
#

ah ok, that is much above my skill level, leave it to the c# people

gray bear
bleak spade
#

I haven't edited the map since last booting up the game and I've slept. I might try earning another achievement and see if that pushes anything through

vernal crest
bleak spade
#

Actually I'm just going to reboot the game and see if that works

vernal crest
#

Try a new save

brave fable
# swift belfry Hello! Can someone help me with GMCM integration? I'm trying to specify a format...

in any case, to make a text dropdown you don't want to use AddNumberOption, you want to use AddTextOption with the allowedValues optional parameter to change it from a text entry to a text dropdown, and then parse the selection to a number on set. i think it'd look something like this:

gmcm.AddTextOption(mod: mod,
    getValue: () => ModEntry.Config.MyNumberValue,
    setValue: value => ModEntry.Config.MyNumberValue = int.Parse(value),
    name: () => "My number option",
    allowedValues: ["0", "1", "2"]);
#

int.Parse will throw an exception if the value can't be parsed, but given you're using a limited set of values you define it's probably fine

bleak spade
#

Would adding a nighttile have affected it?

swift belfry
#

@vernal crest @brave fable well I can use a TextOption, if I can replace display something else than what I use in my code. Or it would create issues with i18n right ?

brave fable
#

not sure what you mean by display something else. do you mean the name or the values?

swift belfry
#

The values. My code is using a number but it has no meaning for the user so I wanted to make them choose between explicit options

vernal crest
swift belfry
#

I think I got it. I was just bad at c# lol

bleak spade
# vernal crest Did you add the NightTile using CP or did you Load your map over the existing Fo...

I've edited the forest using Tiled and this is what is in my content.json
{
"Action": "EditMap",
"Target": "Maps/Forest",
"FromFile": "assets/Custom_NewForest.tmx"
},
{
"Action": "EditMap",
"Target": "Maps/Forest",
"MapProperties": {
"DayTiles": "Buildings 86 14 248 Front 86 13 196 Buildings 87 14 16 Buildings 87 13 116 Buildings 90 14 124 Buildings 90 15 149 Buildings 92 14 248 Front 92 13 196 Front 101 12 196 AlwaysFront 101 13 248 Buildings 94 13 248 Front 94 12 196 AlwaysFront 78 20 907 AlwaysFront 93 20 907 AlwaysFront 105 20 907 AlwaysFront 117 20 907 Front 35 93 1923 Buildings 35 93 1923 Buildings 35 94 1948 Buildings 90 14 124 Buildings 90 15 149",
"NightTiles": "Buildings 86 14 298 Buildings 92 14 298 Buildings 94 13 298 AlwaysFront 101 13 298 Front 86 13 263 Front 92 13 263 Front 101 12 263 Front 94 12 263 Buildings 87 14 139 Buildings 87 13 140 Buildings 90 14 293 Buildings 90 15 131 AlwaysFront 78 20 908 AlwaysFront 93 20 908 AlwaysFront 105 20 908 AlwaysFront 117 20 908 Buildings 90 14 293 Buildings 90 15 131 Front 35 93 1546 Buildings 35 93 1546 Buildings 35 94 1547",
"Light": "86 14 4 92 14 4 94 13 4 101 13 4 86 13 4 92 13 4 101 12 4 94 12 4 87 14 4 87 13 4 90 14 4 90 15 4 78 20 4 93 20 4 105 20 4 117 20 4 35 94 4 35 93 4 90 14 4 90 15 4"
}
},

vernal crest
# bleak spade I've edited the forest using Tiled and this is what is in my content.json { ...

Does your edit to the hat mouse house intend for the mouse to be sitting at that little counter in front of the house when they do arrive? In other words, are all the tiles that you have placed on the map in that area on exactly the same layers as the vanilla ones? I don't know how the hat mouse works but it's possible that the mouse is always there but in vanilla there's tiles over the top of it before the house gets fixed.

brave fable
# swift belfry The values. My code is using a number but it has no meaning for the user so I wa...

pretty simple, just use formatAllowedValue:```cs

gmcm.AddTextOption(mod: mod,
getValue: () => ModEntry.Config.MyNumberValue,
setValue: (value) => ModEntry.Config.MyNumberValue = int.Parse(value),
name: () => "My number option",
formatAllowedValue: value => ModEntry.Instance.Helper.Translation.Get("my.number.option", new { value = value }),
allowedValues: ["0", "1", "2"]);

here it'll take some i18n entry with the format```json
{
  "my.number.option": "{value} eggs per cat"
}
dusky sail
#

Forgive me if this is short sighted but... could you not just have the AllowedValues as "one, two, three, four" instead of the arabic numerals

#

Then it would do the drop down menu right

#

And if they need to be integers for something else just set up dynamic tokens

bleak spade
brave fable
#

i'm not sure what advantage using "one" would have over "0", since then you wouldn't be able to just parse it from string to int without some weird extra behaviour for reading english language to numbers

swift belfry
vernal crest
dusky sail
#

Ah! I didnt realize that part my bad

vernal crest
dusky sail
#

Would that still do a dropdown menu instead of a slider? Now im just curious

vernal crest
#

I am not sure. I've done it with numbers and it's been a drop down, but they weren't an evenly stepped range anyway so I don't think they would've ever been a slider

dusky sail
#

Once im at my computer i oughta type up a fake little mod to test this

vernal crest
swift belfry
dusky sail
#

U got it boss o7

calm nebula
swift belfry
#

you mean c# enum?

calm nebula
#

Yeah

bleak spade
# vernal crest Are you testing with any content mods other than your own?

Okay update: I slept and the letter from the hat mouse has now arrived. I have removed the day and night tiles from the hatmouse house just in case it was interfering, and restarted the game. The mouse is still non-interactable. There are now no edits to the hat mouse house except the tilesheet aesthetic change

swift belfry
vernal crest
swift belfry
exotic ledge
#

Hey everyone, making a CP Mod to replace Cat3 and Cat4 to resemble my GF's Cats.
The error: "13:35:06 ERROR Content Patcher Can't apply image patch "Cleo and Lilo > EditImage Animals/cat3" to Animals/cat3: target area (X:0, Y:0, Width:1128, Height:1288) extends past the right edge of the image (Width:128), which isn't allowed. Patches can only extend the tilesheet downwards." pops up in SMAPI Log but i dont know how I would have changed the image size if I just replaced some colored pixels."

nimble marlin
#

this took me so long to make but finally manage to get this cooking minigame working with @brave fable Love of Cooking! at the moment it's just something I made for fun because I thought cooking could be more fun with a minigame, there are still a couple things I want to do for example making the green zone size smaller the better your frying pan, add some effects and improve visuals overall

#

love your work btw Blueberry! it's all amazing!

stark spindle
lucid iron
cedar turtle
#

But I honestly don't have the right size in my head

nimble marlin
# stark spindle Thats a really cool idea. It looks great.

thanks! with Love of Cooking if you fail the minigame you'll get burned food, (without LoC you'll get coal), depending on the number of meals you create you get the same amount of minigames and the stars represent the number of ingredients used on the recipe

#

each round the arrow gets a bit faster too

gray bear
#

guess who decided to edit the ||summit|| map? it's me. wish me luck

#

(do i need to spoiler this here?)

exotic ledge
tiny zealot
bleak spade
vernal crest
bleak spade
cedar turtle
nimble marlin
exotic ledge
cedar turtle
#

Ah. I don't know how Photoshop works but when I do a reference image I just have it be an extra window outside krita/gimp 🙃

brave fable
brave fable
bleak spade
#

I've removed all the extra mods apart from my own and now he has a sign showing up, but still won't talk to me

#

As an experiment I deleted the section of building to see if that did anything, and now I can walk on his face but still won't talk

brave fable
#

is there a tile with index 1972 on the Buildings layer on your map? if not, you can't use the shop.

bleak spade
#

There is

calm nebula
#

Does the game check for tilesheet name

brave fable
#

ah, yep - outdoors

bleak spade
#

For full transparency - I have created a custom tilesheet that is in Tiled as 'outdoors' (file itself is named spring_outdoorsTileSheet.png) that replaces the building designs with ones similar to Way Back Pelican Town

#

Which is why the house looks different to vanilla

#

I don't know if there's some kind of clash between the 1972 tile in that and the vanilla?

calm nebula
#

Can you use lookup anything to see the tilesheet name as seen by the game

bleak spade
#

I'll do that now hang on

#

I've done it

tiny zealot
#

ah, okay, z_outdoors is the culprit

bleak spade
#

Aaaah

tiny zealot
#

the forest map (hardcoded) checks for interaction with tile index 1972 on the tilesheet "outdoors" on the Buildings layer to do the hat mouse shop/text

steep valve
#

I'd like to check something that I've begun to suspect- does Haley's sprite with index 26 just never get used, at all? Or is there some usage case that I'm not finding. Searching the unpacked contents for even just the number 26 shows it only in the fonts and one showFrame Emily, neither of which would actually be relevant fo rshowing Haley's sprite with ID 26.

bleak spade
#

It's all spring_outdoorsTileSheet.png

lucid iron
#

That's the name of the tileset inside tiled

calm nebula
#

Yeah

#

Remove the tilesheet from your mods folder as a test

bleak spade
#

These are all the tilesheets in my Tiled map

calm nebula
#

Hmm

#

You seem to have outdoors twice

lucid iron
#

(why are there so many)

bleak spade
#

(I don't know, I'm not very good at this)

calm nebula
#

The z isn't your doing. It's smapi doing some sort of intentional moving mod added tilesheets to the end

bleak spade
#

So how do I fix it?

dusky sail
#

it just ignores the i18n names for the values if theyre all consecutive integers 😔 but i learned something today

vernal crest
#

Well poop

gray bear
#

am noob map maker. guessing you can't rotate tiles when placing in tiled right?

dusky sail
#

you can actually!

gray bear
#

:o how

dusky sail
#

or well. you can only rotate a single tile before you place it but

gray bear
#

thats what im after

dusky sail
#

these buttons

gray bear
#

ah! thank you <3

dusky sail
#

yw! glad i could help

gray bear
#

this might, take me a while

dusky sail
#

but itll be worth it. probably

gray bear
#

hopefully

#

wonder if i could make it so it only gets green™ after the player achieved perfection

#

so that ||spooky qi scene|| looks more cursed

nimble marlin
brave fable
#

honestly it's probably way better off as its own extension/patch, i take forever to make updates to LOC and it'd be easier to support and improve it independently

lucid iron
#

In the meantime though, you can harmony patch LoC

gentle rose
# gray bear ah! thank you <3

just fyi, rotated/flipped tiles (can't remember which one or if it's both) seem to break in winter for some reason

vernal crest
#

I still haven't had that issue

#

Having used both rotated and flipped tiles

brave fable
#

it's not that they break exactly, isn't it? just that they don't align well

vernal crest
#

I think Kisaa was finding that they unrotate?

#

(But I thought that was due to using an older version of SMAPI or something and then it was fixed in a subsequent update)

gray bear
#

well i got here

#

i'll see if i can like, replace all tiles so i don't use a rotated ones

calm nebula
#

Tbh for grass to dirt you don't need to rotate

#

There is a full set of grass to dirt

gray bear
#

yeah i don't think i did? thonk

#

who knows tho

#

i'll find out

#

my memory is issue

#

[stares at cliff edges]

#

nvm i need to redo it cause i accidently built on the buildings layer.. well i can just

vernal crest
#

You can cut and paste

#

Using the rectangle select tool

gray bear
#

yeh i fixed my mistake :3 now to continue

hard fern
#

hm no they look normal, what tiles are supposed to be rotated?

gentle rose
calm nebula
#

(It was due to "old smapi version new game version")

hard fern
#

o

vernal crest
gentle rose
vernal crest
#

That's why we now get patch export giving us TileData for every single tile reporting on its rotation status

calm nebula
#

Well that too

calm nebula
#

That is atra being dumb tbh

vernal crest
#

A bunch of the winter tiles aren't well aligned

calm nebula
#

Tmxtile reads in the tile rotation into a tiledata

#

And I didnt know it at the time when I made that PR

#

But it doesnt reverse that process even though it should tbh

vernal crest
#

It certainly makes patch exporting maps more of an adventure now lol

gray bear
#

what are u,,,

#

seriosuly i can't find a similar looking edge peace and idk about them rocks

#

oh tiles,,,,why

brittle pasture
#

Animal Husbandry is one of the most popular mods of all time, so it's probably a combination of the overlap + Reddit not being rather active overall
if you want to feel free to post on Nexus too. even if it doesn't get too popular if it's a mod you like to play with then it's still worthwhile

oblique meadow
gray bear
#

i guess vanilla matching should account for, some tiles

brittle pasture
#

my advice is that the only audience you should be making for is yourself; worrying about reception/what others think is a shortcut to frustration

gray bear
#

also don't use reddit

#

dunno about these though

#

confusing tiles

fading walrus
#

I suggest uploading it even if you're afraid no one will use it! There's always someone out there looking for something new

oblique meadow
#

I learned early on. Reddit will spin you in circles just to leave you more confused than you were before

fading walrus
#

My mods are fairly niche but I still get downloads

brittle pasture
#

yeah, maybe there's someone out there who appreciates a lighter, leaner approach to AH

gray bear
#

are they like two seperate rock pieces, is there like an empty edge

#

i do not see

fading walrus
#

I'd be happy to add compat with your meats too for an upcoming release of mine as well hehe

oblique meadow
#

Agreed. I make mediocre farm maps compared to the big players who make them and I still have people. The biggest mistake you can make is thinking you're the only one who wants what you want.

fading walrus
#

I have some foods in the works that need meat, and I intend to cover my bases compat wise so people aren't locked into using one specific meat mod

gray bear
#

!twocakes

ocean sailBOT
#

If you discover that someone has made or is making a mod with a similar concept to yours, don't stress! Our community promotes the idea of "two cakes", where two versions of the same idea can peacefully co-exist. Your mod will have your own unique stamp on it that makes it special.

gray bear
#

more meat b_nod

brave fable
#

i make

#

i usually don't get much further than that, so publish away, the world is your kingdom

brittle pasture
gray bear
#

i am fighting tiled atm

#

make mod, be happy

fading walrus
#

It's as simple as "create mod page, make nice promo images and screenshots, upload file, set version, publish

#

Very easy

oblique meadow
#

Nexus is incredibly easy to get comfortable with. Just make sure you add your update key into your manifest once you get your mod id before you upload or you'll get like 20 comments early on "Hey SMAPI says there's no update key and to tell you"

gray bear
#

that seems,,, wrong

oblique meadow
#

~totally havent done that several times~

gray bear
#

then i do the udpate

#

if you have any questions feel free to ask in here

#

we r nice

oblique meadow
gray bear
gray bear
#

is confused

fading walrus
#

My tip is to take it step by step

gray bear
#

uhh what are the new tilesheets added in 1.6 called

oblique meadow
gray bear
#

buh

#

this map already uses both

oblique meadow
#

Id try and be more help, but im in office for work today. So no tiled or Stardew :p

gray bear
#

lucky

#

can't believe i said that

oblique meadow
#

It's the tiled anger talking

gray bear
#

ok seriously what,,, do i do here

oblique meadow
#

Weird

#

If it makes you feel better, I have to figure out c# shenanigans because CP won’t auto water my crops for me 😝

gray bear
#

og looks like this

#

what even is it

humble timber
gray bear
#

me: ok im gonna green-ify the summit
me now: end me

#

this looks a little better but the edge is like, akward

oblique meadow
#

Question. Could you just hide the weird edge behind a bush or a tree?

#

im not sure your specific vision...but if it's behind a tree, not an issue

calm nebula
#

Use a back-1

gray bear
#

?

#

back-1?

#

tree sounds like a good idea too

#

how do tree go in layer? all in front?

oblique meadow
#

You can create additional object layers in tiled. So you have the back layer. You can create Back-1 and that gives an additional layer

gray bear
#

o

gentle rose
#

isn’t it Back1 rather than Back-1 though SDVpufferthinkblob

oblique meadow
#

Like on my farms I have Buildings, Buildings2,and Buildings3. Just so I can have multiple layers

bleak spade
# calm nebula

Won't the mod work if the tilesheet is missing?
I've replaced the tilesheet in the mod folder with the vanilla one and it's still not working

gray bear
#

how will back1 help me with this cursed cliff

#

nope, map will be taking them from the game

oblique meadow
gray bear
#

doesn't that depend on the layer order

bleak spade
#

I'm currently trying to figure out why the hatmouse won't open his shop to me. I've modded the Forest map to move some things around, using some custom tilesheets - but the hatmouse is now non-interactable and I don't know why

gray bear
#

how does the hatmouse work, map wise thonk

oblique meadow
# gray bear doesn't that depend on the layer order

My understanding is (and I could be wrong) there are really only 4 main vanilla layers (AlwaysFront, Front, Buildings, and Back) and they always draw in that order. Adding additional layers just creates the map regardless of the listed order in tiled.

bleak spade
#

I think we've narrowed it down to the tile index 1972 which is what makes the shop work (in the outdoor tilesheet), but I don't know how to fix it

gray bear
#

ah yes, hide the mess evil_smirk

oblique meadow
#

So if you had AlwaysFront, Back-1, Front, Buildings, and Back in that order, it would still draw Back-1 last

gray bear
#

so it goes by name, i see. thanks for letting me know

oblique meadow
#

Im just as shocked as you are that I actually know something 🤷‍♂️

gray bear
#

knowing good

violet valley
#

What is the best method for me to make a config option to allow skipping a certain event?

bleak spade
#

Oh wait a minute, deleting the tilesheet DID work

But how the hell do I keep the custom tilesheet without breaking the shop???

oblique meadow
#

You should be able to use Content patcher to modify the event to make it skippable . But if the player is supposed to get anything from the event you'll want to make sure you also set the setSkipActions

violet valley
#

How would I modify the event with content patcher?

gray bear
oblique meadow
#

Should be a good place to start

gray bear
#

loading will allow you/other people to edit them if needed

violet valley
#

No an event in MY mod

#

i know how to mod

gray bear
#

are your events NOT content patcher?

violet valley
#

they are

gray bear
#

best way is a when condition i'd imagine

lucid iron
#

You just use a token then

violet valley
#

i was just wondering how do I modify my event with a config option

#

oh

lucid iron
#

When config token true

gray bear
#

when condition t_pray

violet valley
#

yeah but like how do I modify the event? with a load action?

gray bear
#

how are events formatted

violet valley
#

are you asking me or chuve

gray bear
#

in general, really

violet valley
gray bear
#

can gsq use tokens

bleak spade
#

How do I implement a custom tilesheet without breaking the hatmouse shop?

violet valley
bleak spade
#

I need to replace spring_outdoortilesheet with my custom version, but doing it via Tiled causes the shop to become inaccessible

gray bear
bleak spade
#

Neither do I, but removing my custom tilesheet from the mod folder made it work again

gray bear
#

you can do it via VP

#

CP*

#
  1. load your tilesheet
  2. editimage spring_outdoortilesheet
gray bear
violet valley
#

i figured out what i was asking tho

gray bear
#

-# please don't tag me in replies

violet valley
#

oops sorry i just did it

#

my bad

gray bear
#

anyone, really.

violet valley
#

ok

#

sorry

gray bear
#

nw, happens. you do need to disable it every time

violet valley
#

ok SDVpufferthumbsup

bleak spade
gray bear
#

please don't ping me. and add a .png in the from file, seems fine

bleak spade
#

sorry

oblique meadow
gray bear
#

nope

#

struggling

oblique meadow
#

if you don't figure it out I get out of work at around 2pm MDT. I'd be more than happy to lend a hand

gray bear
#

that's 11pm for me but like

#

don't sleep well so myahaps

#

what r edges

#

they kish

#

im adding a tree

#

no harm no foul

oblique meadow
#

Funny enough, that's how i fixed an issue on one of my farms. I couldn't get this corner how i liked:

#

so I added a bush

gray bear
#

ur a map making genuis

oblique meadow
#

No. Im creatively lazy

gray bear
#

are trees only on buildings? or is it like, trunk on buildings, leaves on front

oblique meadow
#

I tend to put the lowest part of the trunk on buildings and the rest of the tree on the front layer

#

can't walk through the tree, but can walk behind it

gray bear
#

i actually quite like this edge

gray bear
#

where is the rest of that stump

bleak spade
#

Okay so the hatmouse works if I don't have the spring_outdoorstilesheet.png in my mod folder. But how do I editimage cp it into the game? Do I create a separate mod folder just for it?

#

Because having it in the same mod folder as my custom map edit breaks the shop

oblique meadow
gray bear
latent mauve
#

I usually just create a Tilesheets folder under my mod's assets folder and dump my map png files there with the assumption that I will be Loading them into the Maps folder via CP.

gray bear
#

load good b_nod

gray bear
#

yes i do have 1k+ hours in the game

oblique meadow
#

the one on the left

bleak spade
#

Currently I have all my .tmx files and tilesheets all in one assets folder. Having that specific tilesheet in the same folder as the forest.tmx breaks the shop, but I still want that custom tilesheet

gray bear
oblique meadow
oblique meadow
gray bear
#

pants got leaf husty

latent mauve
#
  • If you're using a vanilla tilesheet with no changes, then there is no need to include the vanilla png file in your mods folder at all after you have finished editing the map.
  • If you are editing the vanilla tilesheet png, then you can put the png in a different folder than your Maps and do an EditImage action to change the vanilla tilesheet.
gray bear
#

should be good

#

but again add .png to the FromFile

gray bear
#

where are the mahogony trees even

bleak spade
gray bear
#

remove vanilla tilesheet + the edit you made

#

run the editimage

#

actually no

#

save the edit

bleak spade
#

But where does the custom tilesheet live?

gray bear
#

i usually go assets/tilesheets/name.png

#

you would need to change the map to use the vanilla ones

#

think that's breaking

#

am i missing a tilesheet,,, where is tree stump

bleak spade
#

If so, then it's these two tiles (the lower half on the Buildings layer, the top half on Front layer)

pine elbow
#

interested in knowing which programming language does sdv use

#

google says c# but does it use any more for it's NPCs

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

lucid iron
#

It's true that sdv uses C# however you don't need to write C# just to edit content and that's what npc mods are usually about

gray bear
#

where is.. small bush

#

i may be blind

lucid iron
#

Bea what if u just spawn these by paths

gray bear
#

would that allow people to take them down?

#

i am hiding my awful mapping

lucid iron
pine elbow
lucid iron
#

Bushes not really without mod

lucid iron
#

(the answer is broadly yeah it's in the dll which is made with C#)

pine elbow
#

i thought it used somethig like py

lucid iron
#

But it helps to be more specific

#

No

pine elbow
#

aight

gray bear
#

it's a mouth

lucid iron
#

But they become shakeable if they r bush

tiny zealot
gray bear
#

so it wouldn't do that if you just edit the tilesheet using CP right?

tiny zealot
#

correct. if you just edit the tilesheet image, the tilesheet in the map stays named outdoors and anywhere you put tile 1972 will trigger the hat mouse shop

#

oh, for completeness, wizard's tower door and traveling cart are also hardcoded in Forest.cs

gray bear
#

hey ichor u know anything about maps

#

bc i don't

tiny zealot
#

a little. i am intimately familiar with hat mouse, though, as one might expect

gray bear
#

finding edge pieces is akin to torture atm

tiny zealot
#

honestly it's looking very good. get those last few jaggies and you should be fine

calm nebula
#

And some stuff with the festival maps?

gray bear
#

i will then figure out how paths work and then like, hopefully fix it

calm nebula
#

(Hey Pathos can have named Tile actions instead?)

gray bear
#

issue is i can only test in my perfection save which has, a few mods

#

a few...

lucid iron
gray bear
#

which layer do paths go on

tiny zealot
#

what do you mean by paths

gray bear
#

thems

hard fern
#

They go on paths

lucid iron
#

Bea check a map like say mountain

gray bear
#

ah ok. sorry summit map did not have a paths layer

#

am add

tiny zealot
#

you may not need the Paths layer at all, if vanilla didn't have it

#

if you want to have debris, trees, grass, lights, etc. then you'd need it

hard fern
#

Yeah, you can just ignore it if you want

gray bear
#

i want paths

#

tree

tiny zealot
#

also important to note that the things on that layer are parsed when the location is first created and baked into the save file afterward, so just patching in new stuff won't do anything without RTF

#

(lights might be redone on load, unsure, but those are also for interior maps so)

gray bear
#

froggy_notes
use RTF

#

what if it's a save where you haven't reached the summit yet?

#

or would that not matter

tiny zealot
#

good question. locations might be loaded all at once on new save but maybe it's only some of them. don't know

gray bear
#

thonk

tiny zealot
#

if any location should be loaded only when you need it, summit is one

lucid iron
#

Can you enter the summit if you debug perfection

gray bear
#

debug perfection doesn't actually give it

#

is broken

hard fern
#

🤔 its borken

#

?

gray bear
#

the console command

lucid iron
#

That's unfort

#

But bea you can just make custom location for testing

gray bear
#

how do

lucid iron
gray bear
#

ty

lucid iron
#

You dont need to add warps cus u just debug warp there

#

And debug sleep

gray bear
#

zzz

lucid iron
#

Condemn test farmer to limbo zones

gray bear
#

o-o

#

oop left my map and the warp was to mountain so tried going back

#

qi pls

#

looks alright? i think

#

too much tree mayhap

#

assuming the non bg is cause it's custon and not the summit

lucid iron
#

Yep

gray bear
#

so apeart this one tile is passable sweats