#making-mods-general
1 messages · Page 394 of 1
Swift
Taylor
Hottest pop star in the west
darn. I was hoping someone had seen something I'd missed. thank you :D
i mean there is in fact a swift Tool enchantment
I'm trying to spawn a monster when you go to get your crops
But I do not know how to compile things
I think you'll probably need C# for that
right click on your project and "Build"
Hopefully, Raven
do you mean this
let me quickly make screenshots
am i supposed to compile now?
I made a project in VSC
Do you have an IDE?
Ah ok
VSC can compile but if you don’t know any C# this will be much more painful than CP
that's a class library, right?
Yes
first, your main must be called ModEntry.cs and has to follow this template
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
using Microsoft.Xna.Framework;
using StardewModdingAPI;
using StardewModdingAPI.Events;
using StardewModdingAPI.Utilities;
using StardewValley;
namespace YourProjectName
{
/// <summary>The mod entry point.</summary>
internal sealed class ModEntry : Mod
{
/*********
** Public methods
*********/
/// <summary>The mod entry point, called after the mod is first loaded.</summary>
/// <param name="helper">Provides simplified APIs for writing mods.</param>
public override void Entry(IModHelper helper)
{
helper.Events.Input.ButtonPressed += this.OnButtonPressed;
}
/*********
** Private methods
*********/
/// <summary>Raised after the player presses a button on the keyboard, controller, or mouse.</summary>
/// <param name="sender">The event sender.</param>
/// <param name="e">The event data.</param>
private void OnButtonPressed(object? sender, ButtonPressedEventArgs e)
{
// ignore if player hasn't loaded a save yet
if (!Context.IsWorldReady)
return;
// print button presses to the console window
this.Monitor.Log($"{Game1.player.Name} pressed {e.Button}.", LogLevel.Debug);
}
}
}```
I typed it for myself. it has a really good explanation on how to get into C# development
What is it?
I don’t use VSC, sadly. I use Rider
Are you givng me a SMAPI skeleton?
public override void Entry is where you register events and what happens where
it's the basic template
You mod MUST have 2 things, 1. ModEntry.cs which is like your main, and manifest.json
yes, but I was wanting to see if there was an equivalent that could be put as a temporary buff on a consumable, rather than enchanted directly onto the tool
This is what i've got
and I apologize, I missed your no @ on reply request
oh! in that case, no there is not.
Okay, first you need something to run when your mod is being registered which is ModEntry.cs, this is what's called when SMAPI loads your mod
either rename class1.cs or make a new item
after you made ModEntry.cs paste this into it, this is a basic template. Entry is what needs to happen, whether it's calling methods on events or enabling different classes
Hold on bro
Im pretty sure Entry is just aa block
so i can have it anywhere
i'll write it in the Class1.cs somewhere down there
When SMAPI launches what it starts to check is for ModEntry.cs if I understand correctly.
You might be able to do it your way, I am not 100% certain but I haven't done so
regarding how to compile, you see at the top of the left menu there's a "build" button if you press it the mod will compile into your Stardew Valley/Mods folder
Automatically?
I didn't put anything in SMAPI's mod folder right now by the way, i've installed zero mods right now
if you have Pathoschild's ModBuildConfig package install it should do so automatically as far as I'm concerned
it looks for your Mod subclass and the Entry function within it. doesn't care what the file is named
The more you know
How to test if entry works?
did you add any events?
no
I think people keep linking to it because we're not sure if you even need c# for your project (yet)
they want to spawn an monster when going into the farm
spawn a monster when a crop is broken, sometimes
you can also register SMAPI events from anywhere
Do you mean my mod doesn't need to be in the SMAPI mod folder for it to work?
im only saying you can do things in more than just your entry function
so long as those other functions do run eventually
Ok
if you've compiled your mod then you test it by launching the game and seeing if your mod does what you told it to do
can they spawn a mob with content patcher, they need C# right?
im not familiar enough with FTM to be able to answer that within the context of their idea
fair enough
the way a code is "compiled" is by renaming it?
click build
I don't have "Stardewmod3"
Stardewmod3 is the name of my namespace
where do i find my namespace
your name space is StardewValleyCropJunkie if I am not mistaken
wait, are you using VSC or VS22?
if you're using Visual Studio Code it doesn't have a compiler....
Do i have to do it in some other way?
I think visual studio code doesn't have a way to compile, you might need to switch to visual studio 22
you can run dotnet build StardewValleyCropJunkie from a terminal in vs code
They probably know better
!gs i really just recommend folowing the docs for visual studio
(wrong command, oops)
If you would like a guide to setting up mods for Stardew Valley, check out the getting started guide! https://stardewvalleywiki.com/Modding:Player_Guide
From personal experience it doesn't give the most accurate information especially with this subject I really suggest you read the wiki, especially the get started and IDE reference. visual studio 22 for me is a lot more comfortable than code
!startmodding it really has everything you need and is easily digestable. I suggest following the "getting started with C# modding" and (and I am speaking from experience cause I sure as hell know I exhausted some people) people are really nice here and more than happy to help even if my questions are a little silly at times.
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
When we link wiki pages, usually it means that in our experience, that page has the information relevant to what you’re trying to do, so it’s worth trying to read it (maybe even multiple times). Programming and modding often require understanding multiple specific concepts in order to achieve things, so the more you read, the better.
ChatGPT can only know what it reads from the internet, and in this case, all the reliable information is on the wiki, so the wiki is literally just a more reliable version of what chatgpt would tell you without the mistakes. (Also, it’s worth pointing out you aren’t allowed to post code written by chatgpt in this server.)
@finite ginkgo "Introduction.Popper": "Hi! I'm Pop! Like Pop, Pop, Joja Pop!#$action Spiderbuttons.BETAS_Jump FC.Popper",
is it like that?
is anyone familiar with the mod NuclearBomb? someone sent me a log with no visible errors, but there are about a trillion mods they have loaded. there's one mod, NuclearBomb, which is editing my assets and i'm wondering if that's causing the player unwanted behavior
Is there a command like patch summary that shows which mods modify a tilesheet? One mod I have is messing with a certain type of tile but I can't tell which
patch summary "<modid>"
if they’re doing it via content patcher it’s still patch summary
I'm trying to specify the tilesheet rather than the mod itself, because I don't actually know which mod causes it, something like patch summary winter_outdoorTileSheet rather then patch summary "<modid>"
you dont need to specify a modid
you can just do patch summary and get a summary of all patches
but iirc you can also do it by asset as long as you have the asset name
but it would be Maps/winter_outdoorTileSheet
you can patch export maps/winter_outdoorTileSheet i think
wait no that's patch summary as well
it just showed up as it. what button said ^
Ahhh I tried Maps:winter_outdoorTileSheet as thats what lookup anything says the tile is on, that's why it wasn't working, thank you!
are there docs for this anywhere
(to see the summary for a specific asset the command is patch summary asset <asset name>)
ah, i missed the literal asset part
ooh, i see. thank you
Noted
does the asset name need to be in " "?
It seems that has not helped at all. it's filtered for the right asset, but it doesn't show anything that patches it, neither Maps/winter_outdoorTileSheet or Maps/outdoorTileSheet shows which mods patch them, when I clearly have on as I play with a recolour, odd, oh well
Whoops my fault, never mind it does actually work, outdoors is supposed to be pluralized
"Nuclear Valley" on nexus is NuclearBombLocations in the manifest, which is the only relevant one I see on any of the main sites
can't say I've heard of it otherwise
https://github.com/ApryllForever/NuclearBombLocations
oh thank you! unfortunately i doubt i'll be able to understand the C# code after glancing at it :/
someone using sushi project had this problem and i don't think it's fixable
Maybe! The CP docs list it quoted, but I assume the quotes are only required if the asset name has a space in it
is it specifically editing your asset, like one you made up yourself?
try patch summary asset "Maps/winter_outdoorsTileSheet"
you're confusin different people together bea
oh! wrong reply
if i'm reading this log correctly, then it's editing my maps. the user reported they couldn't find my NPCs or my locations https://smapi.io/log/f94c5c38b5f64ebe81ed469dcab3ed3f
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 177 C# mods and 363 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
apologies, was meant for atlas
no worries! i do that all the time lol
whats one of your NPC or location names?
who made betas?
button
button, right above you 
Not sure if I understand the C# code right but in NuclearLocation.cs is it taking all .tmx maps and modifying them?
i did
NuclearBomb edited Maps/handwrittenhello.dbda_Lighthouse.
i turned on trace and filtered by handwrittenhello
if you meaon on Line 36 thats just the GameLocation constructor
did it show something like this? am gonna spoiler that
I was indeed, gotcha
feel free to describe it either here or in my thread
so when I do this
"Introduction": "{{i18n:Introduction.Popper}}#$action Spiderbuttons.BETAS_Jump FC.Popper",
to make my lil mouse jump happily after introducing himself and then I exit out and load back in his sprite his invisable
it might not even be nuclear bomb's fault to be clear, i just have no idea what's wrong
Oh I fixed it, I wrote outdoor not outdoors, I missed an s by accident, thank you for the help though!
that wouldnt have anything to do with BETAS
oh! yeah that happens 
oh...I wonder why thats happening then
it suddenly says his sprites cant be found at all even though it just was found
even is like his portraits are gone! but its there and its his character sprite thats gone
all the Jump action does is call Character.jump() on the NPC. doesnt do anything else
as far as I can tell, NuclearBomb doesn't actually edit assets in the C#*; the author left an "on asset requested" event in the code that just says "edit" and never actually touches anything
i think it must be a different NuclearBomb mod? because the name of this mod in the manifest is not just "NuclearBomb"
their custom map edits could theoretically mess with yours, of course, but that "NuclearBomb edited [every asset]" text is unrelated
he lives
the github doesn't include all the manifests and the ID is actually "NuclearBomb" for the C# pack on nexus
I'm not sure which manifest is on the github, but yeah, it doesn't match the download
wouldnt that mean there could be a non-empty assetrequested in the nexus version then, if its different from the github version
OnAssetRequested is also blank on github but looks like this in a decompile (possibly as an artifact, but still)
public void OnAssetRequested(object sender, AssetRequestedEventArgs e)
{
e.Edit((Action<IAssetData>)delegate
{
}, (AssetEditPriority)0, (string)null);
}```
I assume it's just triggering on literally every asset, from the log
why would it do this
i dont think decompiling would lead to an artifact like that, that seems like whatd be causing that in the log
...oh
it has two dlls, I just noticed
two of em?!?!
so yeah, NuclearBomb just isn't on the github that I saw, and NuclearBombLocations is also in there
2 c# mods
nvm, searched bad, it's here https://github.com/ApryllForever/NuclearBomb
well on the bright side the empty delegate is doing nothing,, on the dark side it means it was a red herring for nic
good to know it's not actually affecting anything, but yeah i'm at a loss for what's wrong lol
except for that XNB error they had but it's for Data/Buildings
could be a mod conflict
they have enough mods that I'd basically just tell them to trial and error it
like remove half the list repeatedly until the issue goes away?
yep, though it tends to be hard to explain that with how required mods work
(e.g. someone removes FTM and it fixes their asset conflicts
)

if anyone else manages to reproduce the same issue, comparing their lists can help, so you could save that log for later
good idea
Thank you for reporting! I couldn't find any errors with my mod in your log, and there are too many mods you have installed that I'm unfamiliar with for me to know the issue. If it's a mod conflict, I recommend trying to narrow down what is causing the issue by removing half of your mod list at a time until you stop seeing the issue. You would have to be careful not to remove required dependencies, though. If you're able to figure out what mod is causing the conflict, I'd love to know so I can take a look at compatibility!
is this clear? i don't think english is their first language so i'm worried
if you think they speak another language you can tell them to mention if they need a translation and you see if someone can do it
we cover a lot of different languages here after all
they commented in (good) english, so i suspect they speak it but it may not be their native language
(That's why I keep all the library/core mods seperate, tbh I seperate them more then neccessary but it helps debugging so much)
(can't expect everyone to do that, would be nice though)
(So organised
)
Only when it counts?
iirc that makes tools refund stamina if you don't successfully hit something
nice
Yep! if you dont hit sucessfully or use the wrong tool it refunds the stamina, it's been a life saver (literally) as I miss click so often cause my mouse is a bit naff
im trying to use the tiled extension for the tile sheets of the island farmhouse interior but it's saying the files can't be found even tho that's where they are? (first is before I do "fix stardew tilesheets", second is after)
anyone know where i can find the ||abigail drumming sprite from sam's 8 heart event||?
Its in her spritesheet
oh im dumb, thank u
and I get this error in game
!log
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:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- 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.
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 66 C# mods and 280 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
!tilesheetclimbing
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"/>.
I did this and im not getting the error anymore but it isn't showing up in game at all
what are you trying to do, create a new map/location? we won't be able to help without knowing what you're trying to do and probbaly seeing your code as well
island house interior. I referenced an existing mod for the code bc I've never made a mod before and this is all it had in the content.json
was it showing up before?
when I was getting the errors?
ever
uh no but I didnt try it before I replaced the map with the one I edited from vanilla
by replace do you mean you were using EditMap? or were you still using Load
I mean I replaced the map file that was in the mod I referenced the coding from
is it wrong? idk what im doing ngl
well tbh i'm not sure if the island farm house is weird like the normal farm house is. if you're not seeing any effect then it's time to figure out why. one possible reason is Load is exclusive priority, so if another mod is also trying to Load the island farm house then neither will apply. if there are no errors in your log, then we'll have to figure out why. you can see if your patch is being applied by typing patch summary YourModId into the SMAPI console, replacing YourModId with your actual mod id
using Load has advantages and disadvantages. your mod would not be compatible with any other mod that loads the island farm house, and anyone who edits the island farm house would edit on top of your map
well, if you don't intend your mod to be compatible, then using load is fine. load also allows you to set your map properties inside of tiled instead of editing them in with CP patches. most of the time for maps though people use EditMap and specify the width/height
okay so your load is being applied
can you send a screenshot of what you see in game vs what your map should look like?
game is just the vanilla farmhouse and this is what the edit should look like
that's in game
it's been a while since i made it to ginger island in game lol
I'm using vpr if that matters
i believe VPR just targets tilesheets and wouldn't have anything to do with the layout of maps
what's up with the floor though? are the tiles supposed to look like they have grass underneath?
no idk some of the flooring is just wonky like that I just dont use those. this interior is untouched tho
okay i see
let me check the wiki in case i'm missing anything special about the island farm house
oh I'm also using expanded
if that makes a difference
but I dont think that edits the farmhouse interior at all
i'm wondering if your target is wrong, but i also suspect that the island farmhouse may have something going on behind the scenes because i can't even find data for it in Data/Locations
I found the file but it's empty
oh wait it's under IslandHut
the map path is Maps/Island_Hut
try changing your target to that
I thought that was the hut leo lives in
thats Leos house
oh
never mind
oh here it is IslandFarmHouse which is what you have
i had match whole word on in my original ctrl-F
can you try patch summary? i wonder if your load is being overwritten by another mod. we're looking for things that edit Maps/IslandFarmHouse
you could also try patch exporting the asset
idk what that means sorry 
!patchsummary
Can you do these steps to provide more info?
- Load your save and view the content that should be patched.
- Type
patch summarydirectly into the SMAPI window and press enter. - Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
- Post the log link here.
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 66 C# mods and 280 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
for future reference, this is usually why people test their mods with minimal mods in their mod folder! that way you can see if what you're doing is working without worrying about a billion other things
oh sorry
should I remove everything else?
you have another mod that edits the island farm house in there. i think it's Tikamin557.CP.ApartmentHouse
if you recognize that mod, it's doing edits on top of your load
so you either need to remove that mod or make yours compatible with it
I dont recognize that at all
wait i misread the log on another line
hallway fix?
Unless it’s not that one after all 😛
yeah the line wrapped around and i was looking at the latter half of a HasMod condition by accident
I wish patch summary would print line by line
So that you could use the cool filter tools more easily
yeah i'm resorting to firefox search bar lmao
so yeah you need to look at how hallway fix patches the map and either remove it or change how you implement your mod
yay ok I removed it and it works now! ty! I think making it compatible is a bit over my head atm
it's fine if you don't want it to be compatible with that mod! that sounds passive aggressive but it's not
Big same, but on mobile I honestly just give up
oh god yeah
Usually compatibility is 2nd priority to the mod working, in my opinion
Once you get it working you can worry about whether to add compat or not and if so, how. Some mods just are inherently incompatible.
looks at the people who install fifteen farmhouse map mods
“Make Shane Bright Purple” and “Make Shane Bright Orange” just don’t work together
Got flashbacks to trying to run all the mods together and the arms race the recolours had on cursors was insane
if you were curious, though, the way i would do compatibility (depending on how much hallway fix changes) would be:
- use EditMap instead of Load, and define your area as whatever about the farmhouse you want to change
- make patch priority Late so it applies after hallway fix has already patched the map
Can anyone help me troubleshoot what's going on here? The wall of Tiny Farmhouse 1.6 is default vanilla colour despite Seaside Interiors loading after and affecting the rest of the house normally. I've disabled everything but Tiny Farmhouse, Farmhouse Fixes, Seaside Interiors and GMCM. It's driving me nuts.
can you change the wall paper
Yes, but the wall is still yellow at the base.
Is anything else patching the farmhouse interior or farmhouse_tiles still?
No, just Tiny Farmhouse and Seaside Interiors.
The "wall" looks more like the floor? The flooring doesn't seem to extend all the way properly
Its probably missing a row of tiledata
The bottom tile of the wall is usually partially exposed like that to allow the flooring to show under it.
patch export Maps/FarmHouse and see what tile it's using on that wall?
If it's missing tiledata, that would also be a way to check that. 🙂
for visualization...
Not sure why you're pointing that out specifically, Shrimply? That is vanilla behavior, though, and is why the bottom-most wall tile is on the Buildings layer, so the flooring on the Back layer peeks through.
I might be confused here, as im not sure what's being talked about here
The issue here is that both the wall and flooring tiles on the top wall are not being recolored.
The "yellow still being at base" could very well be competing tiledata
I dont know where the "top wall" is here
When I say top wall I am referring to the section of wall visible at the top of the screen, sorry for the confusion.
as opposed to the beams/borders at the sides or bottom
What i was looking at was the floor, just looking at the floor and how it doesn't seem to be replaced all the way back properly (i dont think im explaining this right...)
And i know in a map, the floor tiledatas extend up into the wall
None of the tile data is missing. TBF, maybe it's a hardcoded thing, because the vanilla farmhouse walls and floor aren't being recolored at all when I checked. "/
ah, gotcha Shrimply, just reread the original post and see where they only said wall.
Seaside Interiors is 1.6 compatible, right?
It's not something silly like the tilesheet not being fully recolored for farmhouse_tiles.png, or Tiny Farmhouse using a custom tilesheet for the walls?
Yes, Interiors is 1.6 compatible.
Tilesheets are fully recoloured and there aren't any custom tilesheets. So IDK what'sgoing on. :/
hmm
and you're absolutely certain nothing else is patching the farmhouse at this point
No kitchen mods or anything that might be overreaching?
No other mods. Just Tiny Farmhouse, Farmhouse Fixes {which is a req'ment for TF}, and Seaside Interiors.
So the issue was something simple like a vanilla tilesheet not being recoloured?
Seems that way, since Tiny Farmhouse or Farmhouse Fixes might be using the wallpaper and flooring from walls_and_floors instead of farmhouse_tiles in that spot?
If you right-click on the messed up wall in your patch export, which tilesheet does it say the tile is from?
walls and floors =_=
so, easy fix.
(I'm also not surprised, since vanilla uses walls_and_floors for that section too, and there is no 'clean' section of wall in farmhouse_tiles without a cabinet or something on it to use instead)
and not using walls_and_floors makes it not able to be decorated with new wallpaper later
I'll just have to make a personal patch then. Half my visual setup is personal edits and patches anyway. /sigh
Thank you for troubleshooting with me. :3
Yep, just make a personal patch over walls_and_floors for those specific pieces.
Or if you're gonna make a personal edit anyway, you could go the extra mile and make them brand new wallpapers and floors instead of replacing. xD
Honestly, I just wanna play the game at this point. I've been futzing around for months trying to get everything just right and I'm mostly just done at this point. After this patch I'll finally be able to play pretty Stardew. o0o
I'm learning to make a map using Tiled and trying to add some text to it when you right click a building yet some reason it isn't showing up in game. Am I doing something wrong?
Is your TileData object on the Buildings layer?
the grid-alignment of your TileData also doesnt appear to line up with how it appears in game
in game the tile is smaller and perfectly under the window
Width and Height being 0 is definitely an issue.
Is View > Snapping > Snap to Grid on?
oh in fact when opening the image and looking closer instead of the discord preview i can see they are not aligned to the grid
and way too large
Are you editing the vanilla map?
or at least, visually large. not sure whats up with your 0 width 0 height one
Yes
Custom map
If it’s not aligned to the grid, it just isn’t registered at all pretty sure
Not sure how to make it a different size
I would remake them aligned to the grid
it looks like you mightve tried to select your existing TileData but accidentally created a single pixel sized new tileData object
Okay, you may need to double check that your grid is matching a vanilla map so that the size is correct.
How would I double check?
This is from the vanilla Town map if you look at the Map Properties pane
Does anyone know how I could bypass the blue night filter + rain overlay and have these window overlays stand out like they do in my photoshop sketch ? Right now they're getting ruined by the in game overlay
Thanks
the outlines of the actual tile grid are there, just hard to see in your screenshot, its just that your TileData objects themselves are way off
Decided to manually resize them to be 16 by 16
they also need to be perfectly grid aligned
Yeah, they need to be 16 width and 16 height in the properties.
(they can be bigger if they're covering multiple tiles, but that's the minimum, and you want to keep them at multiples of 16, since that's the defined Tile size)
(tangential question: if i make a TileData larger to cover multiple tiles, but its like, 3px wider than it should be, does the entire TileData get removed, or just the 3px on the right?)
(like if it covers 3.7 tiles wide, do the other 3 stay safe and its just the .7?)
(I have no idea, that sounds like something to science)
i think it depends on the top left corner

one time i helped someone who had ??? passable settings
and it turns out it's cus their rectangle is 0.3px above where it should be
so the whole thing got applied to 1 row above 
it definitely does that, I had something barely off like that and it applied a full row over too
New quote added by atravita as #6549 (https://discordapp.com/channels/137344473976799233/156109690059751424/1405344670896230541)
nou
then I found the setting in Tiled that snaps those things
Fixed it and it's showing up in game. Thanks you guys
what. why does TileData normally get yeeted if its misaligned then. does it just matter that one Entire Actual Tile is covered?
or was it ONLY applying to the row above?
i have no idea tbh 
ill blame the Tiled fairies
So I had a 16x16 tile that was just placed like .3 px off
And it fully moved it that tile over
I don't know what'd happen if it's just too big
and didnt apply it at all to the tile you intended?
Correct
huh
It applied only to the other tile
i dont think about this very much cus i just turned on snapped to grid and never looked back
definitely do that LOL
Was a headache to figure out what was happening and when I did, I instantly looked for snap settings
We blame tiled/tmxtile
SMAPI should patch it to fix it
If one tile is fully covered and the square also covers a little of the next tile, it MIGHT apply to both fully, I dunno. It seemed very all or nothing
I didn't mess with it more when I realized what was happening
I suspect it doesn't do part-tiles at all either way
hm so
cp migrate building traction(taaction(trigger action action))) more or less works when I change building.buildingType.Value
however i feel like i get orphaned farm animals if it had an interior 
taaction....
move them into a global inventory first
a global inventory for characters is a waiting room 
special integration with animal husbandry, turn them into m-
m
sending them to the darkwings dimension
the shadow realm
Just dump them on the faem for now
also while im at it maybe i should make migrate crop tree fruittree
sending out a request for help 🙏 i want to set up a forage item that only shows up near the dragon skeletons in the volcano similar to the vanilla dragon tooth. is this something that's possible with farm type manager/how would i do it
so, the decimals first get lopped off the TileData coordinates since its cast to an int, and then divided by 16 and then the decimals of that result lopped off once more
so if your TileData is at tile x5, y5 and aligned itll be x80 and y80. if its slightly off, at say x82.99 and y79.14, then xTile will take 82 / 16 = 5.125, lop off the decimals, 5 is the x coordinate of this TileData
then 79 / 16 = 4.9375, lop the decimals, 4 is now the y coordinate of your TileData
then it checks if there is a tile on the correct texture layer at 5, 4. which there probably wont be, since that wasnt the tile you cared about. but if there was something painted there, then the TileData would exist, it would just be 1 tile higher in game (since positive Y = down) than you thought it would be. this is assuming your TileData is still 16 wide and 16 tall, though, just misaligned, but the same applies for larger TileData spans
basically: if the TileData is a lil to the left or above, things will be shifted one tile to the left or above respectively. if its a lil to the right or below, itll actually still turn out fine. if you have TileData that spans multiple tiles that is a little to the left, the entire block of TileData is shifted to the left, and similar for if the block is a lil above. but if the block as a whole is a lil to the right or below, itll be fine. if things are shifted and there are tiles on the right layer where the data was shifted to, itll still appear, otherwise its yeeted
as for TileData that is mostly aligned except for one edge that peeks over the grid, thatll also cause the same shifting if its peeking out on the left or the top edge. if you have a 3x2 grid of TileData but the right-most edge is 3px too wide, it'll just ignore those 3 pixels
pictured: TileData that will actually work believe it or not (itll cover the top half of the cactus and the tile to the left of that one)
does anyone know where I can find a list of event IDs that will work with the PLAYER_HAS_SEEN_EVENT game state query?
vanilla event IDs
Any event ID?
Go to Data/Events/ and then open the desired event location file and find the event id you are after?
yeah, I want to find the ID for the scene during the community center unlock where you learn to speak Junimo. unless there's an easier way to check that game state?
what if I patch xTile to make it simply round to the nearest multiple of 16 in this calculation to fix it
any event ID works, the community center one is no different. there is probably a mail flag for it too, but i dont know it off the top of my head
...I suppose PLAYER_HAS_MET works for that, too, because you meet the Wizard during that event and can't meet him any earlier
if you find the event ID for that community center event itd be just as viable
you can definitely meet him earlier with mods
Anyone know what these blocks are? I don't seem them in Tiled
Thanks
Isn't it the event in the wizard tower that lets you read the junimo language?

He gives you that potion
(i actually dont think its that bad of an idea, aside from whether or not you think itd be bad to make people NOT worry about grid alignment)
That's the Forest Magic wallet item/power.

yes
Then you need to look in Data/Events/WizardHouse to find the event ID
(and aside from, yknow, the fact that itd really need to be SMAPI that did it for it to get any use, and it doesnt seem like the kind of thing Pathos would want SMAPI to do)
thank you :D
i think you need to add a light source for this, which you can do with MMAP
mail flag: canReadJunimoText
You can also check PLAYER_HAS_MAIL Current canReadJunimoText (see list of useful mail flags).
just barely ninja'd Pathos. 
ah, thank you very much, as well :D that looks a lot more straightforward!
because my brain does not want to cooperate, this is the correct formatting for the letter to be sent once the player has both unlocked reading Junimo text AND has combat level 2, correct? I'm not missing anything in the Conditions line?
missing the player argument on the combat level
if i add lights to the farmhouse window via map edits, would a player be able to move the farmhouse and the lights move with the farmhouse? I'm thinking I may have to use some c#? I saw some code on github for a mod that added lights to ladders, so of course it was positioning the lights dynamically but there was a render infront function (drawAboveAlwaysFront = true) , now i'm wondering if i could mahe that apply to my content patcher overlay without having to position the png. via making it a TemporaryAnimatedSprite or something, I haven't done a script mod for stardew and I've been trying to find a way around it for such a simple effect but it's not looking good
it's not a map edit
it's a building data edit
that is why you needed extra framework
(it's my docs)
Okay thank so much, I'll try to get it workin'
Does anyone know why the house looks like this? Modded
DId you start a new save after adding the house to the map?
Ah makes sense i didnt
Things on the paths layer of maps are generated at the start of a save so anything placed by Paths stays there
At least it works yayy
hey I'm trying to load my npc but I keep geting somekind of error while loading into the map. I think it's something to do with the portraits, but I have no clue
[game] Failed to spawn NPC 'Aiden.Haydel_NPCAiden'.
Microsoft.Xna.Framework.Content.ContentLoadException: The content file was not found.
---> FileNotFoundException: Could not find file 'D:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content\Portraits\Aiden.Haydel_NPCAiden.xnb'.
File name: 'D:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content\Portraits\Aiden.Haydel_NPCAiden.xnb'```
I can use the PLAYER_HAS_MAIL query to check to see if a player's recieved a modded letter, correct? I'm assuming the mail id argument would be the ID of the modded letter
yes
as with most things, the game has no way of telling the difference between something modded and something vanilla
thank you, I just wanted to double check and make sure before I went off on this line of thought :D
is there some kinda schedule thing that turns the npc invisible
assuming your NPC is Aiden, it says there in the error message that you have two patches trying to load the same thing
Specifically you have two Load patches with a Target of Characters/Aiden.Haydel_NPCAiden
That would be something to fix with my content.json right?
your content.json or wherever else you put the patches
Could that affect what I have in my disposition?
And thank y'all for the help as always 
No, they're not related to your Data/Characters patch (your disposition)
I just don't see where it would attempt to load the character twice when I don't have any errors? :o https://smapi.io/json/content-patcher/1a2efc5d1c3d4890a2216a325eda30c4
your first and 3rd patches
its loading to Characters/{{ModId}}_NPCAiden twice
the validator will never tell you about an error like this, it only warns you of syntax errors
not really logic errors
Judging by your third patch having a logname of "base portraits" and you having no portraits Load, I think you accidentally set the Target of that one to "Characters/{{ModId}}_NPCAiden" when you meant for it to be "Portraits/{{ModId}}_NPCAiden"
i was just about to ask that. Let me try that out :)
It loaded!! I needed "Portraits/{{ModId}}_NPCAiden" instead. Now I just need to make the NPC interactable
any guide on how to make npc mod
!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:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
in what context?
Didn't smapi used to patch that to add mod npcs lol
Has anyone made a sourdough mod
Or a realistic melons mod. And by that I mean vines everywhere
oh, a base game method. there's a few of those around, no clue which are vestigial and which are still used by SMAPI
Smapi patches nothing no more, iirc
i think there's a bread mod that adds sourdough but not a whole range of different sourdoughs
ok atra i was gonna say it has one harmony patch left which is to make harmony work lol
Ichor! Man of the hour! I'll have some free time this weekend so I'm considering making bread!
Bread sounds tasty 🥖
Hi classical!
i see people have been discussing sourdough without me. shame /j
do you have any idea how many bread mods there are
But, consider, realistic sourdough mod
sourdough system where u feed the starter and must knead every n hours
Also it's incredibly unrealistic that stardew melons only produce one
I think Elizabeth once make a zucchini mod
we have one (1) pumpkin plant in our garden and it has become the emperor. the garden belongs to the pumpkins now
That's about right tbh
For some reason SMAPI is ignoring the warp I created for my mod that I put in the town. Any reason why?
remove the colon after EditMap
also id suggest using a name thats a bit more unique than Custom_Village for compatibility reasons
Will do, Thanks
more than just the name, you should not be using format "1.23.0" or the old "CustomLocations"
oh yeah that too lol
What should I be using? Is there an updated list?
can you tell us what guide you used, so we can excise it?
Hey! In this series, I'll guide you through everything you need to know to make a Stardew Valley mod! In this episode, we add some more things to our map, including interactable items, music, and warps!
Things I mentioned i...
@astral peak thanks
Just a tutorial that I've been following
got 1.5.6 loaded up.
Not sure whether other mods like SMAPI or PyTK would be patchcing it or not, but it specifically diffs the main content managers version of NPCDisposition with a true vanilla version and spawns them into the game
It predates the more generic code in Data/Characters which spawns all villagers, vanilla or modded.
as 1.5.6 was all hardcoded spawns of locations and NPC's
Game1.locations.Add(new GameLocation("Maps\\AnimalShop", "AnimalShop"));
Game1.locations[Game1.locations.Count - 1].addCharacter(new NPC(new AnimatedSprite("Characters\\Marnie", 0, 16, 32), new Vector2(768f, 896f), "AnimalShop", 2, "Marnie", datable: false, null, Game1.content.Load<Texture2D>("Portraits\\Marnie")));
Game1.locations[Game1.locations.Count - 1].addCharacter(new NPC(new AnimatedSprite("Characters\\Shane", 0, 16, 32), new Vector2(1600f, 384f), "AnimalShop", 3, "Shane", datable: true, null, Game1.content.Load<Texture2D>("Portraits\\Shane")));
Game1.locations[Game1.locations.Count - 1].addCharacter(new NPC(new AnimatedSprite("Characters\\Jas", 0, 16, 32), new Vector2(256f, 384f), "AnimalShop", 2, "Jas", datable: false, null, Game1.content.Load<Texture2D>("Portraits\\Jas")));
Game1.locations.Add(new GameLocation("Maps\\LeahHouse", "LeahHouse"));
Game1.locations[Game1.locations.Count - 1].addCharacter(new NPC(new AnimatedSprite("Characters\\Leah", 0, 16, 32), new Vector2(192f, 448f), "LeahHouse", 3, "Leah", datable: true, null, Game1.content.Load<Texture2D>("Portraits\\Leah")));
AddModNPCs was a more generic method to do it based on disposition info but couldn't delay doing it (eg Kent)
ofc
ye that video is three years old, way before 1.6. in general video guides arent recommended because they can very quickly become outdated
Noted
Would this be the updated guide to use?
spreading crops would be a real nice feature. itd be neat seeing pumpkins and melons spread out with weed-like vines and pop up fruit here and there
the sdv wiki is generally up to date yeah
Thanks
You can use this tutorial instead of the video (in addition to the wiki page you found): https://stardewmodding.wiki.gg/wiki/Tutorial:_Map_Patches_and_Warps#Creating_the_New_Map_(house_interior). It's specifically for making a house but the concepts are the same. Instead of a house interior, it's your custom village map.
Thank you
okay, so, I'm Trying to load my .png and have it glow using MiscMapProperties and I'm not getting an error with this json but it's also not working https://smapi.io/json/content-patcher/a24e9f7c917a4e45896c89f06620efa3
is that all of your code, or is there more? you're missing Changes in that (but if you just put the snippet in there, ignore me)
yeah it's just a snippet
okay. are you sure that your FromFile path is correct?
That doesn't look anything like the example chu gave you
I can send the rest, cause it could just be a careless mistake somewhere else
It looks like you may have mixed up map TileProperties and building TileProperties
i did have a mistake in the fromfile and i've fixed it now, still not showing up, they sent me a part of the docs that referenced "Front or Back layer: mushymato.MMAP_Light [radius] [color] [type|texture] [offsetX] [offsetY] [lightContext]", it is true i have 3% idea what I'm doing so, i'm just tryna figure out how to like properly implement that
Chu also sent you an example of how to implement it
{
"Action": "EditData",
"Target": "Data/Buildings",
"TargetField": [
"Well",
"TileProperties"
],
"Entries": {
"{{ModId}}_Light": {
"Id": "{{ModId}}_Light",
"Name": "mushymato.MMAP_Light",
"Value": "4 Green Characters/Junimo",
"Layer": "Front",
"TileArea": {
"X": 1,
"Y": 1,
"Width": 1,
"Height": 1
}
}
}
},
oh gosh I totally missed this
Thanks 😅
Your patch should look like this but edited to match what you need (e.g., TargetField "FarmHouse", not "Well", etc)
Hello uh is this like the proper way to do the updated dialogue question? A bit struggling to understand the one in the wiki so i had doubts https://smapi.io/json/none/6f844f1c01c44191a0a65f5711748c8a
I'm getting an error that "FarmHouse" doesn't exsist in TagetField, is there an alternative name for the farmhouse in this context?
Oops sorry
I see okay! np
(Blame CA for Farmhouse but TileSheets confusing me /j)
don't feel bad. the location is called FarmHouse, after all
it's just the building that has lowercase h
i need a "how cursed is this" check 
Close! You can only have one fallback (that's the line that plays next time the player sees the Mon2 dialogue) so "Badfarm_fallback": "I'm sure you'll do great, practice makes perfect.$4" will never get seen. Instead, write it like this:
{
"Mon2": "Good day, @.$4#$b#$q {{ModId}}_GoodFarm/{{ModId}}_BadFarm FarmQuestion_fallback#How do you manage the farm so far?#$r {{ModId}}_GoodFarm 10 Goodfarm#It's great! I'm slowly getting the hang of it..#$r {{ModId}}_BadFarm 0 Badfarm#It's still hard for me to do.. there are so many things to do at once",
"Goodfarm": "That's great to hear. I'll be looking forward to your best product$1",
"Badfarm": "Oh... that's too bad..$8#$b#well.. if you need anything, I can help you with some of the stuff if you like.",
"FarmQuestion_fallback": "$p {{ModId}}_GoodFarm#I see that you already adjusting to the responsibilities of a farmer. Well done.$11|I'm sure you'll do great, practice makes perfect.$4" // This will check if the good farm answer was chosen. If it was, it will play the line before the | otherwise it will play the line after it.
}
(I also changed it so you're using unique IDs for the dialogue answers instead of numbers, because that's the recommended practice.)
Thank you so much!! 
atm i made Child -> NPC work like this
(dw about multiplayer for now)
- at
LoadStage.SaveLoadedLocationsi iterate all the child (which are Characters in FarmHouse and loaded at this point) and build a childId -> childNPCId (which contains the unique multiplayer id of the parent farmer) mapping (ChildToNPC), then invalidateData/CharactersandData/NPCGiftTastes - in asset requested i do edits to those based on
ChildToNPC, i also forward some assets fromCharacters/Dialogue/childIdtoCharacters/Dialogue/childNPCId - in day started, i force reload the child npc instance (which would have spawned with no dialgoue/schedule/gift taste)
there's some additional jank like giving a default Portraits/png or Characters/png asset
now im wondering if it'd be a lot easier if i just store info about children on the farmer, who i understand is initialized much earlier in the save load
Oh but wait, last time i used the | for it, it just suddenly included in the dialogue instead being a separate response
Did you have the $p {{ModId}}_GoodFarm# at the beginning of the line last time?
ohh I didnt, instead I used the old numerical ID, think that's the problem oops
you might be able to do at least the id mapping in here, since you're probably stuck with string->string for arbitrary farmer data
all i actually need is a list of child ids
i have a second Dictionary<string, CharacterData> for children, so it's the key to this asset
and child npc id is just mod id + child id + unique multiplayer id
using loadstage and forcing cache invalidation to reload affected assets smells fairly cursed to me (classic J-Club-level shenanigans) but the j club is sort of supposed to be cursed and i'm not sure there's a better solution for this sort of thing tbh
yea i dunno™
even in the farmer moddata case im gonna have to do it at some wacky load stage
...Does anyone see any glaring issues with this? https://smapi.io/json/content-patcher/d2fd015856b546909796e461d53f2f69 no errors but still nothing is showing up where I think it should?
but it'd be earlier, SaveLoadedBasicInfo
you installed mmap right
oh the name's wrong too
"Name": "mushymato.MMAP_Light" this is important 
in the example, Characters/Junimo is the light texture, you'd have to load or {{InternalAssetKey: assets/windowfeatures/lightson.png}}
yes it is installed, okay I will revert name to what it should beee
little npc does it a bit differently (i think it constructs the npc at 6:10?) but it's partly cus that mod's pre 1.6 i feel
i feel it would be useful if there's no particular restriction on the NPC version of the kid, while the Child is still in use for "stay home" days
you can now ez bz beb all your bobbers with bebber bobbers
i actually made a mod to go with it this time, too: Pokéball Bobbers!
please be in awe of my preview image, graphic design is my passion as you can clearly tell
this is about the limit of my artistic ability
boble
bibble
Should my Content.Json file have anything else before I code in the map?
Yes, right now you have no location for your map so it won't really exist in game. You need a Data/Locations entry,
if you are offering yes since i have an actual mod to go with it that i edited into the message 
Also, you should not replace {{ModId}} with your mod's ID. It's a token that will do that for you.
done 
(is it not missing the format and changes field, aba?)
It is, you're right iro
I had to check because I'm on mobile and it's showing up as a total of three pixels haha
(i forgot the showcasing would remove the nexus embed text, i probably shoulda edited in that its a bobber style framework to actually, yknow, explain what it does. oops. oh well)
hard to tell like this
And yet you still spotted it and I didn't haha
you cant read that? it says LogWvmr, Artior, Targul, and FronF1lo
i finally got a light to show up!
(🔎 "Targul": "Maps/{{Wackowy[yoshi egg emoji]2004.TheMedical}}Map")
Copy this example and edit it to what you need it to be (you may need to remove some patches).
(Also, are you using Visual Studio on purpose? That's usually overkill for CP modding.)
Yes. and Thank you
Before I take the time and go down the rabbit hole. Are there any pre-existing frameworks or anything I should be aware of for things like auto watering or auto fertilizer
I checked the wiki and did a small search on nexus and found nothing
What is the title of gus's job? Is he a bartender?
he calls himself a bartender in one of his liness
though I assume he does more than tend the bar
Thank you!
Perfect!
his intro line also has him introduce himself as a chef
food and drinks, he does it all basically
Cant wait to add his famous zucchini fritters to the game
Artichoke Dip! This is a delightful way to get more artichokes into your body. Personally, I don't even dip anything in there. I just guzzle the sauce down like it's a milkshake. Delicious.
The queen of sauce is too real for this
yeah i assume his job is similar to my first one (i was a hotel restaurant worker who did cooking, bartending, being a barista in the mornings. we did it Aalll)
Plus he's probably the owner and manager
tru. busy guy
I don't have a source for that. It's just an assumption
he does talk about the finances
How's this look?
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.
Thank you, will do
bery bleased sombeone bade a bod to bake by bobbers bebber
bhat
blueberry baving a bronk, ball an bambulance
the "Bondulance" meme flashed into my brain and I've been laughing for 5 minutes
That's exactly the meme that came into my head too, I love it so much, always makes me giggle
You clearly have a life and aren't chronicly online, I envy you
all I can imagine is James Bond popping out of the back of an ambulance to do Cool Spy Things to some bad guy who thinks he's won the war
like, that 'someone call an ambulance! ...but not for me!' sort of deal
edit: also looked it up, my guess was halfway right, at least XD
The recipe I got keep showing wrong on the shop. Here's the patch exported the Data/CraftingRecipes
"ItsBenter.ShellCollection.CP_SandBucksParcel": "ItsBenter.ShellCollection.CP_SandBucks 5 428 1/null/ItsBenter.ShellCollection.CP_SandBucksParcel/false/null/",```
This the patch for fish shop:
"{{ModId}}_NauticalScarecrow": {
"Id": "{{ModId}}_NauticalScarecrow",
"ItemId": "(BC){{ModId}}_NauticalScarecrow",
"Condition": "PLAYER_HAS_SEEN_EVENT Current {{ModId}}_GiftFromWilly",
"IsRecipe": true,
"Price": 500,
},
"{{ModId}}_SandBucksParcelRecipe": {
"Id": "{{ModId}}_SandBucksParcelRecipe",
"ItemId": "{{ModId}}_SandBucksParcel",
"Condition": "PLAYER_HAS_SEEN_EVENT Current {{ModId}}_GiftFromWilly",
"IsRecipe": true,
"Price": 550
},```
should be for #modded-stardew, this channel is mainly for making mods
you may need to have a match between your item NAME (name, not id) and your recipe id, which is done either by changing the name
or by using the field in the addition to the shop
let me search the field
"ObjectInternalName": "Cookies",
@hallow prism adding the ObjectInternalName works... Thank you 
you're welcome 🙂
i got puzzled a lot by this error early on when i first did recipe on 1.6, so now i tend to be a little goblin when i see the "my recipe is sap and wood" issue 😄
Appreciate ur testing on 1.6. Now I can sleep soundly
can attest lumina is a goblin for the torch recipe
So I stumbled upon a bug in one of my events that used the changeLocation command. The event happens at night, but when the character warps into the change location, the environment changes into day. Can anyone help me on how to fix this or does this have something to do with the ambientLight command?
Nevermind, fixed it!
production ready /lh
looks like some 1.5.6 code I looked at earlier
(this is just a placeholder until I design the data model I'm going to use for this)
Looks like some code i wrote last week before I abstracted it to json
Why r u doing this instead of 1 spritesheet wouldn't it be easier 
these are spritesheets 
I may have a look a merging them at some point but for now it's easier to leave them separated
Yeah I think chu was asking why separate sprite sheets and not one unified sprite sheet 
Don't personally see how separate is easier
I am bully iro again dw about it 
mostly because these are frames of an animation for the entire spritesheet which already has a set format, so it was easier to just work with the existing format until I get around to thinking about data models etc and will also think about this kind of stuff
each one of these is a portrait sheet
Just steal the draw layers logic maybe
it wouldn't be complicated, this entire thing is just a placeholder for now
while I implement the actual logic
making all the formats sensible is the next step on my todo list after making it work in splitscreen
Hello! I have a quick question, as someone who's knowledge of programming and modding in general is very limited, how hard would it be to make my own simple ressource pack/mod that replaces textures to the game ?
Is there a documentation or some guide somewhere to make the process easy ?
you wouldn't need real coding, but will need to learn how Content Patcher is working
!unpack is also a needed step
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!
!startmodding uuh is this the right command
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
I see, i'll look into this
Also if you're familiar with the process, how hard is it to change a texture and then see how it looks ingame; like does it changes it instantly ingame or do you have to relaunch the game every time?
thx!!
haha
lmao
!reload
- 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 theConfigSchemaorDynamicTokensections if you use them). - Translation files: enter
reload_i18nin the SMAPI console window. If it's for a Content Patcher pack, also runpatch reloadafterwards. - C#: see the Visual Studio hot reload or Rider hot reload feature.
wow awesome
most stuff should be able to be refreshed this way
i'll look into all this and come back if i have issues, thank you everyone
yee , we'll be here if u need help
oh and last thing, i don't know how the tilesets works in stardew but is the process to change the ground textures like the grass and paths as easy? because from what i've seen there's a bunch of mods that changes buildings and assets but few that changes the actual tiles
it's a bit easier to change separate pieces like buildings
than grass and such that are scattered everywhere
if you wanna make a recolor specifically yea thats a bit more involved (speaking from experience here)
id recommend starting with a simpler patch first to get the hang of json
i was thinking changing the texture themself, not just recolor but yeah if the process is complicated i'll try to make something easier first
ahhh yeah that would be even more effort depending LOL. same amount of work 'code'-wise tho
i guess my recolor is more of a retexture technically speaking. but its really just a Frankenstein using fall grass but recolored to replace winter snow 
haha possibly i have a random assortment of mods!
good to know that i can directly ask very experimented people lol
anyway thanks for the help
of course!
Hello! Sorry, I have a question. How does one know the coordinates of an object in TileSheets? I'm reading the Content Patcher GitHub tutorial, and they give this example:
FromArea": { "X": 0, "Y": 0, "Width": 16, "Height": 16 }, // optional, defaults to entire FromFile
"ToArea": { "X": 256, "Y": 96, "Width": 16, "Height": 16 } // optional, defaults to source size from top-left
}
But how can I know the areas of the object I want to edit in a tilesheet?
progress/more new toys to play with
(ian portrait by @safe kraken) it even works in splitscreen now
Open it in an image editor. Almost all of them will show pixel coordinates when you hover over a point with your mouse. You most likely will want to set a grid to whatever the most likely tile size is for the spritesheet, which you can usually work out by looking at the size of the sprites but can also ask in here about if you can't figure it out.
Ohhhh, I see. Thank you! I'll try to see if I can manage it. ^^
argh i tried using alternative texture but content patcher is much easier for what i'm trying to do
For testing purposes i'm using daisyniko's earthy recolor and modifying the textures but i can't reload it, it says the id is wrong althought i'm using the unique id found in the manifest.json
Can you share exactly what you're entering into SMAPI?
Remoce the <>
(No worries!)
Is there a way to easily change every asset in the game using a prebuilt structure and some already made code?
I really don't want to have to manually put every single asset in the game into a json file.
Your usecase seems fine for TargetWithoutPath
{
"Action": "EditImage",
"Target": "Animals/Blue Chicken, Animals/Brown Chicken",
"FromFile": "assets/Animals/{{TargetWithoutPath}}"
}
You can keep putting more , delim targetd
Nice, thanks.
The only problem now is that there are still way too many assets in the game to just do that manually.
When I say every asset, I mean every asset (the images at least).
I forgot about that
Time to think of a new funny mod idea then
Is there a simple framework (not many things it's able to do) that allows content packs to modify things they couldn't without it, thats also source available? I want to have a look at how content packs access frameworks and how they return data
if you need a guide on how to make frameworks: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Framework_Mods
Didn't realise there was a dedicated wiki page, thank you!
oh it's on wiki.gg that's why I didn't realise
What's the thing you wanna make
Ok I feel like I'm going crazy- can anyone tell me if I'm doing something wrong? This is a mod that adds HD portraits to an existing custom NPC. All other festivals are working fine, but for some reason the flower dance portrait just won't show up lol. It just defaults to the spring portrait. I've got this code in my config.json file alongside the other festivals, and they all seem to work fine. It's just this festival which is broken for some reason lol
"Action": "EditImage",
"Target": "Mods/Duruz/Quinn_base",
"FromFile": "assets/Portraits/Quinn_flowerdance.png",
"Update": "OnLocationChange",
"When": {
"DayEvent": "flower dance",
"LocationName": "temp",
}
},```
I'm using the HD Portraits format for Portraiture because PortraiturePlus conflicts with a bunch of other mods, so using that instead for festival outfits is kind of a no-go.
Sorry haven't looked back at the server in a while, I have an idea in mind but I'm nowhere near to actually starting it, I just wanted to read up on how frameworks function and get a general understanding behind them for when I do make one
The png is correctly named, I know that much. And I have it listed properly in the portraits.json file too so it should load using Portraiture's HDPortraits compatibility
Like, for all intents and purposes this should override the default portrait, right?
do you have a location called "temp"?
Hey, Quick question if you null out an event does it still count as seen?
because this requires the player to be in a location with that name
no. the event doesnt exist anymore.
if the player has ALREADY seen the event before installing your mod, itll still count
from what I know, that's what you use for any festival location, no? That's what I've seen all other mods use. Is the flower festival in a different location?
awesome thanks. Thats exactly what I wanted to hear 🙂
just don't include a location in the "when" field I think
idk though 
the location is called "Temp" not "temp"
The base mod is using the correct portrait, it's just the HD portrait that's not working
possibly relevant
didn't fix it either, still won't use the flower dance portrait :/

this is so weird. Like, this should be working, right? It should be automatically applying the portrait as soon as the festival starts
what are we looking at? 
Closeup interactions on items!
oh nice, yeah I thought I didn't recognise that message!
We're looking at Dh's farm
The farm is also a sneaky backdrop, yes. 
DH can you add paged close ups
Yup, that's the next step!
To items, at least. They're already a thing in general obviously.
Yay
{
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"DH.Test.PurpleSlimeEgg.CloseupInteraction.Trigger": {
"Id": "DH.Test.PurpleSlimeEgg.CloseupInteraction.Trigger",
"Trigger": "spacechase0.SpaceCore_OnItemUsed",
"Condition": "ITEM_ID Input 439",
"Actions": [
"MEEP_CloseupInteraction_Action"
],
"CustomFields": {
"MEEP_CloseupInteraction_Image": "Mods/MEEP/SlimeEggCloseup",
"MEEP_CloseupInteraction_Text": "Maybe I can hatch this..."
},
"MarkActionApplied": false
}
}
},
{
"Action": "EditData",
"Target": "spacechase0.SpaceCore/ObjectExtensionData",
"Entries": {
"439": {
"UseForTriggerAction": true
}
}
}
I think it's about the nicest way I can do it as far as the CP goes... without changing too much.
Dh it looks like to get yarn i need to go to London myself 🙁
Oh yeah, hold on!
is it possible to have a "when" field that references a specific day, not just an event? Is there somewhere that I can see the syntax for that?
so I could brute-force the portrait to just load on spring 24 instead of the flower dance. It's not perfect but it's better than nothing 🤔
yes there is
awesome, thanks for the link! This'll be super useful
So for some godforsaken reason, that didn't work
but this does lmao
kinda brute forced it. no clue why Spring outfit was being prioritized over the festival outfit no matter what lol, but it works!
Hey all I could use help. I've been staring at https://stardewvalleywiki.com/Modding:Buildings for a while...and to the best of my knowledge i'm doing this right...Robin registers and processes the upgrade. Everything completes and goes through...but it still only shows my default map. Im not sure what im missing:
//Load Greenhouse Maps
{
"Action": "Load",
"Target": "Maps/Greenhouse",
"FromFile": "assets/EG_Greenhouse0.tmx"
},
{
"Action": "Load",
"Target": "Maps/Greenhouse1",
"FromFile": "assets/EG_Greenhouse1.tmx",
},
{
//Add To Robin
"Action": "EditData",
"Target": "Data/Buildings",
"Entries": {"Greenhouse1": {
"BuildCondition": "PLAYER_HAS_MAIL Any ccPantry Received",
"Id": "Greenhouse1",
"Name": "Greenhouse Expansion 1",
"Description": "Slightly Bigger",
"Texture": "Buildings/Greenhouse",
"DrawShadow": true,
"UpgradeSignTile": "4.8125, 2",
"UpgradeSignHeight": 20.0,
"Size": {"X": 7,"Y": 6},
"FadeWhenBehind": true,
"SourceRect": {"X": 0,"Y": 160,"Width": 112,"Height": 160},
"Builder": "Robin",
"BuildDays": 2,
"BuildCost": "1",
"BuildMaterials": [{
"ItemId": "(O)388",
"Amount": "2"},],
"BuildingToUpgrade": "Greenhouse",
"MagicalConstruction": false,
"HumanDoor": {"X": 3,"Y": 5},
"IndoorMap": "Greenhouse1",
},},},
]
}```
Oh, that's because you put the spring patch under/after the flower dance patch. So the spring outfit got priority and patched over the flower outfit.
There is some funky stuff that happens when you upgrade the greenhouse with robin. The interior stays the same until you reload the save, but when you reload the save the game has your custom upgraded greenhouse, but also adds the default greenhouse back in. I found that out when redoing my greenhouse upgrades mod recently.
So there's no way to have it force load without reloading the save?
not that I am aware of, I got around it by making it an entirely new building and removing the base one on save load after moving everything over to the custom one.
You can fake an upgrade sorta
Rather than construction, do some other thing to set a mail flag and then do a map edit by that flag
I have a question about how SMAPI parses the manifest.json files, does it ignore white space, new lines, and indentation? can a manifest be written entirely in one line if it ignores these? Or are these needed for the manifest to be recognised correctly?
It's a json file, so it doesn't care about whitespace normally
I initially did that with special orders as well.
perfect thank you!
If you want to look at the code I have to replace and transfer greenhouse contents, you can check my github for greenhouse upgrades. Otherwise I would suggest trying to use mail flags.
Does anyone know why when I force a crop to harvest stage the sprite vanishes?
any other stage the sprite simply updates to the correct sprite, but not havest
How are you forcing it?
Vanish sounds like you have transparent sprites at the expected position
I am updating the dayofCurrentPhase and currentPhase for the crop and then running updateDrawMath on the crop
let me look at the sprite sheets again
I see what I did. TY. I didnt check if it was null so for some crops the final value works and others it is 1 befoe final
Hello. Am currently trying my luck with making a CP mod that changes some UI elements of other mods using EditImage to use recoloured ones to make them fit some recolor mods better. I got lucky with Generic Mod Config Menu's buttons because the path for the button assets were spelled out in its AssetManager file, but there's no such thing in Deluxe Journal so I'm having a hard time figuring that one out. Still barely beginning to learn to read c# but it seems that I might not be able to because it's in an 'internal sealed class'?
Also is doing something like this ok? Currently it's for personal use but I'm wondering if it's worth turning it into something others can use so that people can just do a quick install instead of having to backup/delete/replace the original assets.
Thanks for this. I wound up getting it working with { "Action": "EditData", "Target": "Data/TriggerActions", "Entries": { "{{ModId}}_SetFlag": { "Id": "{{ModId}}_SetFlag", "Trigger": "locationchanged", "Condition": "BUILDINGS_CONSTRUCTED All Greenhouse1 1 2", "Action": "AddMail Current {{ModId}}_GH1" } } }, { "Action": "EditMap", "Target": "Maps/Greenhouse", "FromFile": "assets/EG_Greenhouse1.tmx", "FromArea": { "X": 0, "Y": 0, "Width": 39, "Height": 40}, "ToArea": { "X": 0, "Y": 0, "Width": 39, "Height": 40}, "EditMapMode": "Replace", "Update": "OnDayStart", "When": {"HasFlag: CurrentPlayer": "{{ModId}}_GH1"} },
I think if you were to share it you would have to ask permissions first 🤔
Ok! I'll be sure to do that.
Also an example of what worked and what didn't if that helps:
{ "LogName": "GenericModConfigMenu - Keybinds Button Swap", "Action": "EditImage", "Target": "Mods/GenericModConfigMenu/KeyboardButton", "FromFile": "Assets/GenericModConfigMenu/keybinds-button.png", "When": { "HasMod |contains = spacechase0.GenericModConfigMenu": true } }, { "LogName": "DeluxeJournal - Building Icons Swap", "Action": "EditImage", "Target": "Mods/DeluxeJournal/BuildingIconsTexture", "FromFile": "Assets/DeluxeJournal/building-icons.png", "When": { "HasMod |contains = MolsonCAD.DeluxeJournal": true } }
It doesn't really have anything to do with internal sealed class or whatever, the author simply didn't load the ui texture to the content pipeline
This means you will have to separately pack replacer pngs unless the author of deluxe journal do something about it
I see! Thanks for explaining that.
I managed to get my NPC to load last night, but now SMAPI tells me "[game] Removed broken NPC 'Aiden' in BusStop: villager with no data or sprites." and that it can't load my potraits so it just removes any function from the npc
!json
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.
I've tried that already, but I still get the same issue. Could it be my portrait.png itself?
https://smapi.io/json/content-patcher/ef56e1ba773449dab509a86401df6691
I guess you renamed your NPC from Aiden to {{ModId}}_NPCAiden and then loaded a previous save, in which case it's just the game notifying you that it sent the old Aiden to the shadow realm
your NPC data otherwise looks fine, go to sleep and they should show up
(I noticed you're loading a file named dispos.json and also specifying their Data/Characters entry below, is that intended)
I don't know if i supposed to. I've only been told to really follow the guides and thats what they state. Yet I don't really know the purpose of it, but heres what i have in my dispo.json
"Changes": [
{
"Action": "EditData",
"Target": "data/NPCDispositions",
"Entries": {
"Aiden": "adult/polite/neutral/positive/male/datable/null/Town/spring 13//BusStop 15 22/Aiden"
}
}
]
}```
I was told I was also using an old character creator that only worked because SMAPI was able to convert it, so I'll try it w/o the file and report back o7
Miss Coriel's creator isnt updated for 1.6, its CP that converts it for you
the conversion is turning it into a Data/Characters (and stuff) entry, which you're doing below
just yeet it yes
Content Patcher has migrators that will handle things from older versions as long as the "Format" is old enough, but it doesnt give you access to all the new features
yea you already did the new way good job 
it just ensures bare minimum functionality
It was helpful to start and lay the ground work, but man was it tricky to do the new way after Miss Coriel's got it working with Content Patcher
to me that sounds like it was anti-helpful 
It atleast gave me the motivation to push forward 
i will not deny it that in this instance, then
well im just speaking of what you showed us here
which is you did the Data/Characters good job, and thus don't need the data/NPCDispositions
That was fast lool
it was like BAM SPAM
Freaking love AI Mr. Beast
oh they have evolved their images
there are a few, I think?
i know spacecore does but casey is gone right now i think
casey's active enough
spacecore is still around though, so if it already does what you want it to do you may as well use it
i dont think there's anything that makes it rain in an event
it*
casey is on modding hiatus
(not in the "making changes to spacecore" sense afaik)
or even makes it rain in middle of day in general
spacecore makes it rain but it keeps raining
ah you cannot unrain?
nah you cant unrain
youc an unrain?
When working with the schedule since that's the newest error from SMAPI what does the last number mean in the string from the wiki?
"Wed": "1000 BusStop 24 23 3/1800 Town 47 87 0/"
i have no idea then 
besides actual weather effect
i suppose you can just make a big temp anim sprite that looks like snow?
lag though
this is the second time i have heard about temporary animated sprite being laggy but i dont do events so i got no idea what is real 
it can be if its super big and has lots of animated parts
i could make a location that is always snowing that you cant get to
thats just for some events
XD
yea that was my thought 
ayyy we sharing a brain cell today
tho i was thinking temp map + the mmap steam thing, but again with a snowy looking texture
there's nothing to turn it on/off rn tho it is only map entry/exit
yea i dunno 
i think u should just do this for now
itd be easier to make a location that just is labeled as not always active
yea
(most locations should be not always active unless they really need to be, ftr)
is there a list of frameworks like the list here (https://stardewvalleywiki.com/Modding:Content_pack_frameworks) that require a content pack rather than adding tokens and other stuff for other content packs to use? Or do I need to go through each on and have a loot to see if they need their own content packs?
!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:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
that is the list
Ahh okay gotcha, I shall have to go through them all then
the "is CP extension" field differentiates them
Atlas, what is your end goal
learning by seeing what others have done, as i understand it
though it may be a good time to warn that you shouldnt really make a framework that isnt a CP extension nowadays
like, you can, but people are going to wonder why, and theyll be valid to do so
Ahh gotcha okay, just got confused bc some of the are able to use custom content packs and add tokens for CP
you can make content pack for if you enjoy not having easy to content patcher tokens and conditions, and having to manage all assets by yourself

Oh this is a seperate goal, this is an automation for making content packs for various/multiple frameworks and a converter for converting them between different frameworks, making a custom framework is a seperate project that's on a very slow timeline
what would that do that the existing converters in !converters aren't doing
im not sure if i misunderstand but "convert between different frameworks" sounds like trying to convert an apple to an orange to me
or an apple to an automobile depending on the frameworks
This is just a personal project to brush up on python and the json library, exisiting converters can easily be used instead of this, but I like to test my skills
i mean you could make stuff like AT to CP or CP to AT, but yea have you looked at !converters
Apple into an aeroplane
I mean more like CP to AT/AT to CP, or old frameworks to newer/updated ones
well have fun i suppose 
why do you need to know which are CP extensions then and which arent?
(this isnt me trying to dissuade you or anything, im just genuinely curious why you'd need this if you need to look at them all anyway)
i did think there should be a AT to CP skins converter for buildings and farm animals
but the output is just json so
all the same in the end
it was just to see if there was another option that would save a bit of time instead of going to each nexus page/ documentation for each mod on the list if only a few required their own content packs
right but what does it matter when making a converter if a mod needs its own content pack format or not
you need to read both their docs anyway
and like chu said its all json so the process isnt really different when it comes to actually converting
I'm working on the first module, which is making basic templates for multi-framework mods without a lot of rewriting and without inputting a lot of indentical information, so finding a list of frameworks that don't only add tokens was the goal, I'm quite tired so that explanation is probably no where near comprehensible, but I can't think of a better way to word it
im confused by your definition of multi framwork mod
the trend is moving towards CP does data stuff for everyone, so there's 1 unified json format
i think i only partially understand but i dont wanna make you keep explaining if you're tired and also would just rather work on it, so i will just trust that you have your reasons 
Like mods that require different content packs in a single parent folder, Using SVE as an example, it has a CP content pack, FTM content pack, and a SMAPI folder, they all require seperate Manifest files, but I want to add support for a variety of different frameworks so that if I make a mod that needs CP and AT, then it can generate those repetitive files, or if one uses FTM, CP, and SF it can make them too
well hm for C# mods there's already a ModBuildConfig thing that lets them pack in a content pack with the C# 
there is, but this still helps me develop my skills which really is the intension of this "excercise"
maybe you could make it a nuget thing too 
ig im perhaps conflating "thing for personal use" for "actual tool to be published in hopes of being useful to many"
i have a quite a lot of little personal use things just like this 
oh ye this is entirely just a personal thing, there are other programs, scripts, tools, that can do what this does but better in ways I wouldn't think of, it's quite fun making small personal use cases like this
Can I make a custom wedding ceremony only using CP?
thanks!
is there a guide to what goes on which layer for farm maps? the higher ones with the details around the edges confuse me
[[Modding:Maps]]
Back goes behind the player. Always Front is always above. Building blocks the player from walking. Front is in front it is in front of the player. Paths is metadata
I'm more confused with how there are two alwaysfront and two buildings layers and which goes on which of those
If there are multiple than the highest one will show first
But they still fundamentally do the same thing
Relative to the player
A layer suffixed by a number is entirely visual, it doesn't carry the properties of the layer without the suffix, the highest suffix is displayed on top
If there are numbers they are esthetics only
ok ty
i think i've confused myself. do i add new digspot artifacts through data/objects, data/locations, or both?
Either iirc
ok cool ty
...Oh my god, that was it. it works even with the old code 💀
thank you so much lmao
lmao rip
For content pack mods is it possible to have multiple types of mods in a single pack? E.g a new map with new cloths, food etc?
Rule of thumb is to put the things with the wider conditions up top. 
sure, if they are done via content patcher
1 mod per content pack type.
so 1 content patcher, 1 ftm, etc
but the 1 content patcher pack can do items, maps, npcs, etc
you'll probably want to use includes for organization sake
but yeah very doable to do multiple things in one
Thank you.
I just keep running into new errors. Am I supposed to have more to my schedule even when I'm just trying to get my NPC to load?
"Changes": [
{
"LogName": "Aiden Schedule",
"Action": "EditData",
"Target": "Characters/schedules/{{ModId}}_NPCAiden",
"Entries": {
"spring": "610 Town 15 23 3"
"Wed": "1000 BusStop 24 23 3",
}
}
]
}```
missing comma at the end of the spring line
I still get the same error though even with the added comma
any idea why my custom npc might not be moving and unable to speak to ? i have all the basic stuff just to test the bot out rn but theres no error that shows on smapi
Could it be my content.json that's causing it to load improperly?
I'm having the same issue right now. It's failing to load my schedule.json, but I can see that my npc is on the map
well at least im not in this alone 😭
oh my- he breathes!!
Yaay!! That's awesome
Anyone know what the texture dimensions, size etc for making a new building is?
Need to design a new building but not sure how big to make the texture file for it.
They can be any sizd i think
depends on how many tiles wide/tall u want it to be
If youre looking for a starting point id say just grab a vanilla building that you like the size of and base it on that
Thanks you two
So the only limit that really exist is the size of the map it's going on?
Technically there's an upper limit of 4096x4096 pixels iirc but i doubt youd be going that high anyways
Tbh it's "make it any size you want" but if you make it unreasonably big you might get complaints from mod users. And the threshhold for unreasonable is really dependant on what youre making
Also are we talking farm buildings or npc houses
both of you, did you load a blank.json first for your Characters/schedules/<npcname> and Characters/dialogue/<npcname> files?
^ to shy also
(I did this earlier, made an EditData action for both of those and forgot to load the blank JSON to create the file I was using as the target first)
hello, need a bit of Tiled help
So i usually make my tilesets with a lot of allowance, and im sure now that this is final
on Tiled there's these white boxes and i dont want them there its kinda ugly uisgiugs how do i clean my file q.q
Just resizing the PNG that Tiled is referencing didn't remove the white space?
nope 😔
wow, rude, Tiled xD
and when I tried re-adding the tilesheet as a new tileset, it treated it like a separate thing
so when I deleted the first iteration, my entire map is gone

What does your actual png look like
like this now
It was previously super long

