#making-mods-general
1 messages ¡ Page 227 of 1
If you feel like learning another new thing you can reduce the amount you have to repeat by using local tokens, like Button said when she was meant to be asleep lol
Sounds handy, do you know where I can learn about this?
Hmm now I can't get MPS Casks to work đ¤Ł
//
//
// Machine Progression System
// Gold
//
//
{
"Action": "EditData",
"Target": "Data/Machines",
"TargetField": [ "(BC)nachonline.mps_GoldCask", "OutputRules" ],
"Entries": {
"agedbearhoneycask": {
"Id": "CaskHoneyMead",
"Triggers":
[
{
"RequiredItemId": "bonghits.Cp_BearHoneyMead",
"Trigger": "ItemPlacedInMachine",
"RequiredCount": "1"
}
],
"OutputItem":
[
{
"CustomData": {
"AgingMultiplier": "4"
}
}
],
}
}
},
Doesnt seem to work, even tho SMAPI throws no errors
Hey! MPSâ author here! I think itâs better if I do the compatibility patches for your mod, you will run into less isuess
(Also, MPS is in the process of a whole rework and the code is certainly going to change)
Whoa, that would be sick!
Good to know!
What mods do you want me to add compatibility with?
This is my humble mod :D
Got it! I will add compatibility in the 3.0 of MPS (it will take a while to release, though)
ETA is March/April
3.0 adds so much content and customization! 2.x feels bare in comparison haha
Hell yeah
what's the upwards limit for map size again?
There is none, according to the wiki
yahoo
farm maps generally get layering issues over 180 wide, might extend to other outdoors maps too
generally though 100 is already very large and 200 is incomparable
Nvm, documentation found
I'm too tired for this right now, but too awake to go to sleep
if you're not AEDST then you're up too late
suffering from success (having fluffy cats)
fluffy bastards, more like it
I'm disinclined to be generous to them when they wake me up at 4
cat tax:
<< ringleader
I'm inclined to forgive that beautiful face
Fair. He's both the sweetest and dumbest cat I've ever owned
A literal bleach sniffer
Anyway, I'm going back to randomizing dialogue because that's apparently what I do now
Mm random dialogue my favorite (it means i can have infinite more dialogue lines and nothing can stop me other than creativity)
I can't wait to see my cat đĽš, he's also super fluffy
This one is very adorable
I discovered the power last week. Now I am become god
Random dialogue is why Qi has over 800 doalogue lines... and I could add more >:] (i will not my brain will melt)
Btw, congrats on finishing the Mr. Qi mod! Saw it mentioned on reddit the other day
What is your cat's name? - ON rEDDIT?
i don't want to be perceived... and yet and yet
Yeah. Someone was lamenting that they couldn't marry Mr. Qi. Reponse was that there is now a mod for that đ
Screenrant made an article about it đ
Hey, good problem to have. Usually
Im glad it was a success I did put a lot of effort into it
Ngl, I'm looking forward to running it. But I can't run anything until I've finished mine
That's my motivation right there
i hope you enjoy
When you do
Apparently two people have had a weird issue where npcs just travel to and live in the desert and I genuinely have no clue how or why that was happening
I have to finish writing dialogue for Seb's family to comment on his 3 career paths this morning
Then test a bunch more
But it's only been two people so maybe they're just.. weird
Hmmmmm. Other mods messing with things?
O: your mod sounds like it's going to be cool/interesting
They both only had my mod and dependencies installed which was even weirder
Their logs didn't say anything weird, but I was able to get a save from one of the people so I'll be testing that when I (finally) get home
My plane got cancelled again last night so I'm still waiting to go home đ
This whole week has been a nightmare tbh I can't wait to go home .. then I can work on Honey and spriting like thirty apples
Wow!! Congrats, Lily! That's so cool!
Thank you Aba! It was definitely a shock to see it
I was typing in "Friendable Mr Qi" in Google on my phone to go to nexus (I look at the page enough it usually auto comes up) but I pressed enter instead of the little link that came up and I saw the article and almost ceased to be
I will say that I can't seem to get the "SpouseGiftJealous" dialogue line to pop up
I keep giving Harvey coffee and Sebastian doesn't say a word xD
Seb too busy trying to play it cool to act jealous
Ok, that's good to know. The wiki just says "gave a gift to another eligible NPC of the same gender as your spouse (unless it's their birthday)"
Okay, the Stardew NPCs seem less wildly unhealthy in their jealousy now lol
Also it's kind of bizarre that you're safe to date another NPC as long as you don't give them a gift.
I guess it's like they caught on to the adultery
My modding in a nutshell:
- Make some random fixes/changes, then forget about them without pushing it to nexus
- Don't update the mod for months
- Look at the board before prepping for a new version and wonder what the hell was this fix about

Not anymore!
True. In small towns, everyone is very discreet and nobody gossips so there's no other way they'd find out. /s /j
(Oop sorry for ping, your reply was way more recent than I realised.)
It's also weird that spouses are only homo-jealous. Bisexual/biromantic farmers rejoice!
I do think the small town vibes would lend themselves to jealousy
Thank you for updating the wiki!
I feel like it'd be the opposite in small towns 
Like news would spread like wildfire cause there's nothing else to talk about
What is Flashshifter, truly the age old question 
I should add the sarcasm tone indicator to my message huh lol
Ope
i didn't realize
Nah I should've added it in the first place lol
You had no way of knowing that I have read a great deal of Agatha Christie and James Herriot lol
(Both of which - especially Agatha Christie - expound on the extreme amounts of gossip that happen in small towns)
i dont remember what books I've read that mention it but I know I figured it out from literature .. at some point
Adding a custom file for the furnitures.
How can I reference my custom file in the editadata string?
do you mean the texture file you loaded for the furniture?
yes, idk how to add it to the string when editing the data of the furniture.json
it's the 9th (starting from 0) field in furniture data
make sure to replace all / in the texture asset to \\
https://stardewvalleywiki.com/Modding:Furniture
sprite index is 8th
they're after the display name
thank you a lot
Mine:
â˘promise to look at over weekend
â˘swamped with school
â˘promise next week
â˘swamped with school
â˘repeat
Send help i am NOT okay 
Thankful I can turn that off in 1.6 
so uh
generic mod config claims content patcher mods auto generate a config UI without any code, which seems
incorrect, given that i'd actually need to write what the mod config should, uh, do
is there any content patcher+generic mod config documentation i missed?
Yes there is let me pull it up
thanks!
I think gmcm mod page means no C# code needed lol
But there's still a json that needs written
being a perfectionist is spending wayyy too much time making my nexus page for my mod perfect. it's not even a big mod but it's gonna look pro goshdarnit (it's 6:30 am and I'm still up, making promo images)
(From a Content Patcher pack, you don't need to do anything for its config options to appear in GMCM. You do need config options for them to appear though.)
Speaking of promo screenshots... for a dialogue/events mod, is it cool to take screenshots with custom portraits or sprites from other mods that I happen to be playing with? I'm planning on linking a bunch of stuff as "suggested" mods anyway on my mod page. Or should I make sure to get screenshots with the vanilla portrait?
I don't want to mislead people, but I also really don't think the vanilla portrait fits anymore :/
Related: how common is it to bundle sprite/portrait mods (with permission) as an optional download? Worth the effort or nah?
I feel itd be better to simply link to the other mod so the author gets their downloads too
Screenshots with other mods is fine, just mention them in the description. It's better to link other mods portraits than include them I think, unless the whole mod is a collaboration .
Or if you're substantially altering them (with permission). But not just for convenience or whatever.
Cool, that's about what I figured for bundling. I asked only because I've seen a few mods that do bundle, and was wondering if that was standard or preferred
I'll make sure to clearly list any mods I'm using in screenshots!
i take screenshots using other people's mods all the time, and my "mods used in screenshots" section doubles as my way of endorsing those mods. to make sure the list doesn't interfere with the rest of your mod description, put it on the very bottom and optionally in a spoiler block like so [spoiler] Your text here [/spoiler]
Anyone have a tutorial or guide on how to modify the spouse outside area and room for a custom npc?
I think you will find some of what you are looking for here
The custom outside area is known as the SpousePatio. The inside area is the SpouseRoom
.choose system, worldmap, small tasks, detailing, code.
Choose result: worldmap
I take screenshots with DSV portraits all the time 
If it's not something that would be confused for your own mod (e.g., you have a furniture mod with other modded furniture in the screenshot) I think it's fine. If anyone asks "hey what mod is X thing in your screenshot" I'm happy to answer.
If it's an image in the mod's image gallery, you can also put the credits in the description. For example:
i'm unhappy to answer so i just list everything /lh
I did not know that Nexus had that feature! Thank you
A good number of my screenshots are from (sometimes multiple) play files so listing them all would take a while 
I'm only playing with my own mod and a couple of portrait mods. Trying to keep down the potential for conflicts during testing
So it won't be hard to list them
thats why i use a limited furniture list in my interior map mods, no way i could link everything and stay sane with the way the description box jumps to the top with every link embed 
Other side benefit of listing the mods used in the images is you have to deal with less questions of "What farm/Recolor is that?" "what mod is that item/furniture/crop from?"
reads up ah that was already mentioned.
i list them just so i can make a disclaimer that i dont answer anything that can already be answered by the mod description. but bold of you to assume average user reads mod description to the end /lh
I just don't use other mods in my screenshots unless its absolutely required 
valid
Absolutely valid. I think I probably will this time... if only because the vanilla portrait doesn't really reflect what my mod is about
i use them mods bc i cant be bothered to deactivate them before testing
Some of the lines I'm putting in Seb's mouth would sound very strange coming from a portrait that looks late teens/early 20s at best
just use imagination <3
The other thing would be that I'd suggest that if you take screenshots with a portrait, they probably should be similar to the vanilla art style
Portrait is going to be the first thing people see if they glance at your mod; if you take screenshots with an older sebastian anime style portrait many people might just click away from it automatically
QQ for anyone who might know, can setMapTile add a tile to a layer? Or only alter a tile already on a layer to a different tile.
or assume that the mod includes that portrait
I haven't used the C# equivalent calls but content patcher EditMap can definitely add new tiles wholesale
I'll check out what the source for that does, then đ Thankyou!
location.setMapTile does support adding a new tile, but note that adding changes manually through the location like that is fragile. In particular, your changes will be lost next time any mod edits the map through the content pipeline. It's usually better to make changes through the content events like AssetRequested instead.
i did that for some cosmetic mods when using other that weren't mine, but for mods that i play with and just happen to take screenshots when feeling it's natural/nice, i prefer listing stuff.
for crops screenshot i try to have only my crops and vanilla
to not create confusion
Thats fair.
I should also note that by choosing not to use any recolors or other mods in my screenshots i'm pretty sure it effects appeal, but since i really don't care much about downloads, just enjoy the process of creation, I'm easily willing to take that potential usage hit.
but one thing is sure, when i see a mod with lot of cool stuff on the first image and half is from other mods i feel "meeh"
especially if those other mods are gated/not on nexus
I'm the same way tbh, I'd rather see the raw and visualize the changes myself.
I'm too lazy to remove my other mods from my screenshots
(By that I mean other mods I've made)
yeah other mods i made, either i will be able to answer if people ask, or can mention "see my other mods" if i remember, or people can look at my profile
If i take a screenshot with recolors i like putting a vanilla screenshot too, just to show how it would look in both situations
I tend to have like 3 of my farm maps in my mods folder at any given time, Luckily they dont interfere with each other. I took out my proof of concept recolor test for now cuz it kept interfering with my ability to take screenshots.
(or a screenshot from my tiled workplace)
I rarely put up a tiled screenshot into the modpage, mostly reserving them for WIP screenshots.
The real reason i took screenshots with recolors was just that i ended up launching my main game instead of my mod testing one...
And then i just went with it like "oh well"
Honestly I think 90% of this whole convo is kinda summed up with, "How lazy I was feeling at the time, did X."
Lol XD
does anyone have a good youtube tutorial for modding?:) everytime i look it up i find tutorials on how to install mods - not make them myself
youtube tutorials tend to be outdated quickly
any that you find will most likely be outdated yeah
There aren't any good ones that are updated
The modding wiki is most likely your best source to get started, as well as github documentation and modder guides for framework usage, and us for when you get stuck.
"Name" isnt a thing and you shouldnt be loading the .tsx
ah yeah makes sense
so the wiki is just the best source then?
the asset name for your spouse room is just whatever you put as the "Target"
the .tsx contains tilesheet information but if you are using the default tilesheets from a spouse room then they are already present in the Maps/ folder and do not (should not) be loaded
if its a custom tilesheet then you load the png to the Maps/ folder instead
I've used "Name" to load in a furniture tho, it works there
"Name" is literally not a thing for Load actions
it doesnt do anything at all
it is completely ignored
it kinda also depends on what you want to make, if you have an idea in mind, if you tell us we will be able to better point you at tools and resources to do said thing.
perfect then
(fwiw, I find it is really really helpful to look at another mod when trying to do something completely new to me. If there are any custom NPC mods with spouse rooms and patios on Nexus, you might start by downloading them and seeing how they work)
mainly retexturing buildings for now :)
Then you're really mainly going to want Content Patcher Documentation, at least in my mind.
Main Content Patcher Doc https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md
EditImage Subpage https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editimage.md
Modding Page on Content Patcher https://stardewvalleywiki.com/Modding:Content_Patcher
And you're going to need a manifest like listed on this page https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest
would it be possible to block smapi console commands with a mod?
You can detect if console commands is installed easily if that's what you mean?
what i mean is to make so when I have the mod i wont be able to use any commands that i blacklist in the smapi console
Why do you want to do that
some of my friends want to buy sdv but i know at least someone will cheat so i just want to block that
there is nothing you can do to 100% prevent cheating
odds are if they're going to cheat it won't be with the default console commands either
There's cheats built directly into the game that can be accessed without mods
I'm not sure what's the point of being controlling when they could just, uninstall your mod
i guess youre right
They can just load cjb mods and you'd have no idea
any sort of anti cheat in SDV would be absolutely trivial to bypass and you're just straight up better off not caring about it
enforce it in the social contract instead
you can force your friends into streaming a copy of your game from a remote server
best way to guarantee no cheating, as well as ensuring they'd never play with you again
even then they can name an animal with an item code
In general I either play with people I trust
Or I don't play at all
"Now the question is, do you trust atra not to cheat? No."
Does it count as modding if I'm just altering the game file in the notepad? Like editing the stats for the golden scyth to make it a scyth of impending death?
well, just doing that wont alter the game
fyi that doesn't take effect unless you repack it back
so it wont count as modding, no
(which we dont recommend)
if you need help making the changes you make apply in game by converting it into a CP pack feel free to ask questions here
I remember editing my save file to make scythe do many damage
Okay so I've done some minor mod creation (for personal use at this point) and I am trying to alter the riverland farm map to add a bridge at the bottom. I can get the mod to load, I can get it to display the added bridge but it refuses to let me walk across it even though the tile rules for the bridge is to make it walkable
Its in the right layer in tiled and everything
if a back tile is marked passable it makes it impassible
Its a building layer
So yeah, The building layer tiles needs to be marked as Passable to be able to be walked on, I would still check to see what tiles are behind it on the back layer as some base game water tiles have passable on them to block movement over them, if memory serves.
Ah that might be it
Your problem tiles are going to be the 2 plain water tiles above the lilpads, inbetween the underwater land edge and the rocks.
I'm trying to replace one of the mine maps (right now I'm just replacing the whole map; if I can get that to work, I might try just making edits.) As far as I can tell, the json is fine (unless it's a game breaker to require an older version of CP): https://smapi.io/json/content-patcher/a551d2a59b0b41a3838bee66c4fbc4fd
But when I get to the mine level, SMAPI throws a ton of red text: https://smapi.io/log/620e55d198844ff691750afffd7c69ff
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 80 C# mods and 83 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
time for god knows how long of watching an NPC walk around so i know their schedule is good
So, first step: did I not save correctly in Tiled? I unpacked the game files, opened the appropriate map file, made the edits, saved to the same location, then copied it into my mod file. Was there a step I missed there?
the first red error doesnt seem to be yours, the second is bc you have an invalid tilesheet path in your tmx
The tile sheets are just the ones that come on the mine map.
so, the mine tilesheets are the exception that proves the rule of tilesheets being in the same folder and having no path in them
I genuinely think the MonoGame couldnt handle that the way sdv uses it x)
https://www.nexusmods.com/stardewvalley/mods/19458 install and press k
because those are inside the Maps/ folder but they are inside a folder inside that folder
then enjoy
(I'm not sure what's going on with the SVE error -- though it popped up the same time as I entered the mine level.)
so their image source needs to reflect that and not just be "mine"
this is iirc what i also ran into a bit of weirdness with when doing the map edits in my mod
Huh. I don't see a separate folder in the mines folder. Do you think that's unpacking incorrectly?
So when I go into Maps, I have one folder, which is Mines. That's where I made my changes.
so the image source for your tilesheet should actually be "Mines/mine" and not just "mine"
(In the Mines folder.)
that would normally be correct
How do I change the image source? (I literally opened up 19 and just made changes there.)
Mine maps just need extra attention
if you open up your 19-edit.tmx you should see a line somewhere that says image source="mine"
When you've copied it, you can just add the change to the image source by opening the TMX in a text editor. đ
just change that to image source="Mines/mine"
TIL you can open TMX files in a text editor!
one of the benefits of it over tbin! tbins you cannot
Yes, it makes TMX filepath/directory climbing errors so much easier to fix.
This is very cool! It's making me slightly less frustrated with Tiled
(Off to test.)
but yeah just to be clear, you did actually follow all the usual map making steps correctly and it wouldve been completely fine... if it wasnt a Mines map lol
I'm only overwriting the whole map for testing, because it's easy and I'm not 100% sure my edits are going to work correctly. Once I get everything working, I'll edit instead of replace.
rest assured they were learned against their will the weirdness of the mines already 
If I am loading schedule.json into the schedules, I can't use tokens, right?
well that would be why it isnt working
not in the file itself
damn it
This is why we Load a blank JSON and then EditData the target
I gota learn to do that more...
Blank JSONs are a wonderful tool and you should definitely make them a habit in your workflow. â¤ď¸
At least for files that don't exist yet.
If you need a spare one, I've got one here you can take:
{
}
Copyright (C) 2025 @tawny ore
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Except as contained in this notice, the name of @tawny ore shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from @tawny ore.
I think this is insufficiently blank
whatâs the license?
Extra \n for free
no license, so its all rights reserved
I will give credit, ty!
shame, I was hoping to use it in my MIT code
Sorry, added a license. There you go.
LOL
New quote added by spiderbuttons as #6323 (https://discordapp.com/channels/137344473976799233/156109690059751424/1343706068492095569)
thank you, i will use this in my mods
I am one with the joja
dammit, I was going to brand my mod as LeFauxMattâs Reduxed Expanded Content Pack
Some poor newly minted mod author is going to take the joking very seriously if we break out that quote xD
sorry, your license does not apply to me, as i've taken your code before you added one
It worked!!!! Now I just need to add more shortcuts and then figure out how to identify the x,y coordinates for a tile in Tiled. (Which I had assumed would be incredibly easy, and yet somehow I keep failing to figure out how to do it.) Thank you for your help!
{
"Action": "Include",
"Target": "Blank.json"
}
Easy 100,000 downloads
Hover over the spot in the map and look in the bottom status bar? I think that's where it puts it.
Thank you! (Now I feel silly, but also really glad I askedđ )
Oh, for -- now I have to go back into the text editor to set the tilesheets back to just plain mine. This is why I spend so much time yelling at Tiled. My next mod is going to be 100% text-based.
if you're editing your tmx in your mod folder, you can copy the whole Mines folder from inside the Maps folder into your mod folder
then itll find the tilesheet in that copy of the Mines folder
make sure to remove that folder before publishing ofc
(and by "into your mod folder" i mean "next to your map, which is probably in assets/")
Is there a way to make it so you can place things on a Building tile on a map? Such as a beach shoreline?
Put it on the building later? Or do you mean you have the shoreline on the Back layer and you want it to be not walkable?
Cant have shoreline on the back layer otherwise it gets the water overlay
Do you need it to be walkable?
mostly trying to fix the problem ive talked about in #making-mods-art but... idk i dont really like any of the options ive come up with
no its already walkable
I'm curious to if Buildings-1 might be of use here, since the numbered Buildings layers don't have collision.
Place on a Building layer? no, but you could make a layer of like Buildings1 and put it on that, and it shouldnt have the building code limitations, i believe.
nope, doesnt work
What were you thinking of placing on the building layer for the shoreline?
a chest. I need to figure out how to make my shoreline work with automate
ah, I usually use a dock as a linker if i need one.
#making-mods-art has some more options ive posted but idk im not sold on any of them
Passable on the Buildings layer should ALSO allow placing objects on it, unless there's a Back layer tile with an opposing property?
nope...
just water behind it
but that does give me an idea. maybe i can make it so it's passable on the back layer because water might not let stuff be placed on it naturally
I feel like Water might have Passable on it on the back layer, though, which would block the object placement...
also apparently Water I on the back layer makes it water without rendering the water overlay, I learned something new from the wiki today. xD
Yeah, I'd try adding a TileData object on the Back layer with Passable F or NoFurniture F properties on it.
I'll see if either of those work
neither of these work. so i think im just gonna have to make a little protruding area from the shoreline
Well I just wasted 20 minutes trying to fix a schedule when really, I was just trying to send the NPC into the wall.
is the caption supposed to read Hobby House instead of Hobbit House 
really though i wouldnt include other mods in my own mods' screenshots, feels wrong when screenshots are there to show what your mod does, it's just going to confuse people
wow i didnt know that would be blocked interesting
oh well, i'll keep my inability to read đ to myself
god can we please get a SMAPI/CP/SDV update where we can configure the NPC's speeds đ đ
(Without C#)
there isn't any extension mod for that already?
well if you count farm animals as NPCs
the thing is, schedule is already hell
Fixed; thanks for reporting it! (When Nexus gets around to updating its cache.)
just put the npc on a bike pffft
you got bike money?
yes i do
oh.
Something something scheduler rewrite
the hobby is eating breakfast
Hobbitses, my little Hobbies.
Work in tiled has been accomplished. Now I'm running into a wall trying to patch the map. I have four map edits in four locations. Attempting to use FromArea and ToArea four times did not work. The edits are all over the map so if I did a FromArea/ToArea that would cover all of the edits in a single edit, I might as well just replace the map. Any suggestions (or possibly other mods that also make multiple edits that I could use as a resource?)
could you share your content file at https://json.smapi.io/ ? it'd be good to see where you're at
maybe context of what you're trying to replace?
Sure! This is how I found out you can't do multiple FromArea/ToArea: https://smapi.io/json/content-patcher/c0a788ba5c9f4d25b9b10b56c5d6b728
For context: I'm adding shortcuts to the spiral map in the mines.
i believe this should work:
https://smapi.io/json/content-patcher/90c18b276dea49abac72cd217685e597
That's interesting! Let me test it. Thanks!
each {} object can only include each key (e.g. Action, FromArea, Changes) once at most, which tells you that you simply need more Changes {} objects to apply more fromarea/toarea edits
ooo i just got an idea for extra lore in my mod
It worked! Thank you!
who dug these shortcuts is there lore
duggies, naturally
Oh jeez I just realised I have to make ANOTHER event now...
Same boat. Just get in and row until we reach the shore.
finally got the dialogue for the mod done (until i decide to add more)
now to start on the event
SMAPI has reached 9999 comments on Nexus! Time to lock the page and abandon SMAPI to keep that number forever.
LOL
NO WAIT LET ME ADD A COMMENT
It just ticked up to 10,000. I guess I'll keep SMAPI going until we reach 99,999 then. 
:D
so re: my crop mod, i'm trying to capture the quality of the seed as the farmer plants it... am i on the right track with grabbing the active object and it equaling whatever?
{
if (!location.terrainFeatures.TryGetValue(tile, out var terrainFeature) || terrainFeature is not HoeDirt hoeDirt || hoeDirt.crop is not { } crop)
{
return;
}
switch (__instance.Quality)
{
case 1:
if (who.ActiveObject?.Quality == 4)
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Iridium";
break;
[...]```
Is SMAPI the mod with the most comments? đ¤
I'm kind of curious about that considering they had to shut off comment search to stop it crashing their database
SMAPI was only added to Nexus in 2018, so I wouldn't be surprised if another Stardew mod has more.
from a brief glance + my memory of the code I think that's a good start? you'll want to check that the crop on the dirt was due to the seed you planted and not an existing crop that was already there
Why are you not looking at __instance
Wait but doesnt SMAPI load the mods? How can mods be made without a mod loader?
It's page after page of random snippets copied out of smapi logs
you know you're so right
Usually not thr useful part
Say I want an asset such as wolfbane crop to have a texture. I have the image for the item in the assets folder but it won't show up. The item shows up though. Do I need a load on top of an edit data. This is what I have so far:
https://smapi.io/json/content-patcher/285d60335ae2446ea11755095d53d873
!json please use this
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.
SMAPI was on GitHub and smapi.io before it was on Nexus.
You should also bail if __result is false
Please use the JSON validator https://smapi.io/json/
oop-
looks like your issue is lack of Load
SpaceCore only has 2,863 comments so I feel doubtful any other mods would have more.
Oh, interesting.
Wait nevermind I"m stupid
Is this automated, my json is already validated?
I forgot SVE. SVE has 31,075 comments
anyway im going to eat lunch them torture myself with trying to get this event to look good
Brb adding 99999 comments to better crafting
It turns your JSON into a link so it doesnt flood the chat
So you need both an edit data and a load?
atra my most recent comment is someone trying to gaslight me into thinking pressing ctrl+shift+1 crafts a stack of 999 when that keyboard shortcut only works for the shop menu
I take one peek at Nexus and I'm super glad I retired
What mods did you make?
isnt that what the ! is for or am i stupid đ
You're missing out on all the fun of answering support questions though!
Nothing useful or good tbh
My likelyhood of fixing a bug or error is kinda proportional to how many I have to fix at the moment (and how complex it is)
so having smaller mods where i rarely get bug reports is good for productivity đ
or sometimes noone bothers to tell you that X feature isnt working because 500 people isnt enough for one to notice AND tell you. 
{
if (!location.terrainFeatures.TryGetValue(tile, out var terrainFeature) || terrainFeature is not HoeDirt hoeDirt || hoeDirt.crop is not { } crop)
{
return;
}
switch (__instance.Quality)
{
case 1:
if (__instance?.Quality == 4)
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Iridium";
break;
case 2:
if (__instance?.Quality == 2)
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Gold";
break;
case 3:
if (__instance?.Quality == 1)
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Silver";
break;
}
}``` ok ``__result`` is just checking if its planted or not in this equation im assuming, do i need to run an if __result to do the switch case?
or can i just do it.
wait i need to do if (!__result) return;
pretend thats there
Forgive me if my flu-stricken self has forgotten all C# coding, but why do the switch statement cases check instance.Quality being 1 and then again check if it's 4 inside the case?
Won't __instance.Quality always be 1 if you're inside case 1
none of your cases will run 
oh word.
switch (__instance.Quality)
{
case 1:
if (__instance?.Quality == 4)
means "if quality is 1, check if quality is 4, if yes then run my code"
wait so i dont switch instance.Quality then?
that will obviously do nothing, unless a number exists that both equal 1 and 4
I'm guessing GMCM doesn't like line breaks in descriptions? Since without them it wraps nicely 
case statements arent like, this is the first case, second case, etc. the case is the value of the thing you checked
https://smapi.io/json/content-patcher/1dcb7ff6c448447099e8496b03c1ac2c
My image won't load and I honestly just don't know why.
[game] Failed loading texture Mods/simplicity.cpmysticvalley/assets for item (O)simplicity.cpmysticvalley_Wolfbane: asset doesn't exist.
do switch, or if check, not both
ok time to torture myself with making more event
ok but how do i check in the switches for the quality number
i guess thats where im confuse
thats what the case is
case 1 = "in the case that the value of instance.Quality is 1, this is what you do"
case "test" = "in the case that the value of someString is "test", this is what you do"
Other things to note. Use ref only when you plan on modifying a value
Don't use it indiscriminately
but also
int cropQuality = __instance.Quality + 1;
if (cropQuality > 2)
cropQuality = 4;
crop.modData["HMMSCropQualityOverhaul_Quality"] = cropQuality.ToString();
ATRA IS RETIRED
then how come their name doesn't say retired anymore? /lh
i seeeee
(Also just for fun, you can shorten this:
if (!location.terrainFeatures.TryGetValue(tile, out var terrainFeature) || terrainFeature is not HoeDirt hoeDirt || hoeDirt.crop is not { } crop)
To this:
if ((location.terrainFeatures.GetValueOrDefault(tile) as HoeDirt)?.crop is not { } crop)
)
{
if ((location.terrainFeatures.GetValueOrDefault(tile) as HoeDirt)?.crop is not { } crop)
{
return;
}
if (!__result) { return; }
switch (__instance.Quality)
{
case 4:
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Iridium";
break;
case 2:
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Gold";
break;
case 1:
crop.modData["HMMSCropQualityOverhaul_Quality"] = "Silver";
break;
}
}``` bweh
OH thank u pathos
It's because you've loaded your texture into "Target": "Data/Objects/{{ModId}}_Wolfbane", but then when you're trying to use it you're referencing "Texture": "Mods/{{ModId}}/assets",. You've loaded the texture into the wrong place (keep the "Texture" one, change the "Target" one to match the "Texture" one).
ok shlebited, that's. ok now?
Yup
Yep, it's essentially checking if it's a non-null object with any properties, and saving it to crop.
possibly the least intuitive c# style i've come across hahah
I think it's intuitive when you get used to pattern matching in general (e.g. it's an extension of patterns like is HoeDirt { crop: not null }), but it's certainly weird at first.
How should I alter this? Does texture and target need to match?
(Just in case you want to shorten it more:)
private static void Object_placementAction_postfix(SObject __instance, ref bool __result, GameLocation location, Vector2 tile)
{
if (!__result || (location.terrainFeatures.GetValueOrDefault(tile) as HoeDirt)?.crop is not { } crop)
return;
string quality = __instance.Quality switch
{
4 => "Iridium",
2 => "Gold",
1 => "Silver",
_ => null
};
if (quality != null)
crop.modData["HMMSCropQualityOverhaul_Quality"] = quality;
}
(does it still count as intuitive if you need to already understand it and have gotten used to it?)
Yes, I edited my message to explain you should change the value of your load target to match the value of the texture field. They do need to match or the game won't find the texture.
i feel like ive always given a type (bc i desire the type)
(one more thing, just in case you aren't aware, you'll need to patch garden pots as well. if you already know then my apologies)
once i accomplish this i can do the rest i swear im strong enough now
also: the string quality = __instance bit errors out and says cs8600
True, you can create some truly unintuitive code with the pattern matching syntax:
Func<int, int> x = x => x switch { >= 4 => x };
change to string? quality
this is some haskell looking C# you got there
the compiler's warning you that quality can be null even though its type is string
Okay, I followed that but now it tells me my asset does not exist.
[game] Failed loading texture Mods/simplicity.cpmysticvalley/assets/simplicity.cpmysticvalley_Wolfbane for item (O)simplicity.cpmysticvalley_Wolfbane: asset doesn't exist.
This seems like it is working in terms of hitting the same place but maybe I am missing something?
(to be pedantic but hopefully in the aid of learning: the code before wasnt erroring out, it was just a warning, that you could ignore if you wanted to but you shouldnt hence the squigglies)
yeah i realized that lmao
thank u tho muah
Reading you all talk about c#, is like reading a conversation 1/2 English and 1/2 in a different language.......well I guess it actually is. It is interesting to try and understand.
I can understand a little bit because I did some GML so its like 1.5/2 english and 0.5/2 another language
But it is still hurting my brain
-# ow
That looks like you've possibly not actually made the two fields identical yet, because it should only be trying to find Mods/simplicity.cpmysticvalley/assets (assuming your mod id is simplicity.cpmysticvalley).
Are yall proud of me? 1 new NPC, 2 events, Lore, A new location, and I am not done yet.
1 problem I may face... It isnt compatible with SVE
Huh, does that not yell about not using the entire pattern space
Technically it'll fail at runtime. If you want to avoid that, you can just toss in more = and > characters:
Func<int, int> x = x => x switch { >= 4 => x, _ => x };
(For those who don't speak C#, that's a method which does absolutely nothing. It just takes a number and returns it.)
https://smapi.io/json/content-patcher/5bba0c440ab046a08bad71876a22cbc0
They are matching, but the from file isn't. Could that be the issue? I am looking at the docs on github for content patching and its example uses assets/Abigal.png without specifying the mod id
This is my file structure too
It is not a problem, just put it in big letters in the description. That will cut the question about compatability in 1/2. đ lol đ if only that was not true.
Right at the top, Bold, Massive letters, Red text:
NOT COMPATIBLE WITH SVE
And people will still ask...
In your FromFile, you shouldn't have the / at the start of the path.
Huh, must have been thinking of rust
content patcher loads are relative to the manifest.json file, so it would just be assets/Wolfbane.png
Why isn't it by the way? I thought you made your own map? That should be compatible.
Yes the problem now is your FromFile. Remove the forward slash from in front of assets/Wolfbane.png.
Well the warp is on that cliff where the bridge to the flower dance is and since SVE replaces that with a forest, it doesnt work.
Whoops, slight bombardment of advice there, sorry Simplicity!
Why not just make a patch for SVE to put the warp somewhere accessible in SVE if it's installed?
that example could also be {{InternalAssetKey: assets/Wolfbane.png}} rather than Mods/{{ModId}}/assets/{{ModId}}_Wolfbane for the places asking for texture and skip the load all together, unless you have a usecase for needing to do EditImages later on
If you want people to not bug you about compatibility, it's not too hard to solve that problem
Thanks @vernal crest @ivory plume @lucid mulch ! I really appreciate the hel Abagaianye.
I mean, obviously you don't have to, but I also patched with a "I'd rather not be bothered about this" sensibility
This seems super useful!
I am not that experinced to be able to do that so...
And one bridge/one festival isn't bad for that kind of patch
Ah, that makes sense. I guess you could make some sort of entrance in the added map that SVE uses if you wanted. But they don't really have that cliff any more.
Time to learn something new! You've already been doing that for all of this, so an extra thing like this won't be too hard.
It isn't much harder than just patching the map to add the warp to begin with
(This is why I like trainstation and by extension Central Station, being able to do custom npcs and locations without needing to do any vanilla map edits for max compatibility)
I say this being super new to this kind of modding
And I cant really put it anywhere else that makes it lore accurate and gives proper immersion.
SVE doesn't load their maps, they patch them in (I am pretty sure)
SVE loads every map
Really? Interesting
and regardless that doesn't stop late edits
You can load in over it, just make a late edit
that's what I did anyway
Patch in over it, I mean
This is also a factor
Your choice! If you're happy to accept the big loss of downloads that will come from not being compatible with SVE you definitely don't need to add compatibility.
Has anyone made a content patcher form yet to build things. Like a program that generates the json and puts in the format of a form?
heck it, you can put the cliff back if you want. World's your oyster. If it's too much bother, of course, it's your choice. But I found it easier than I feared when I worked it out
Eh, its fine. There is no way to know how many downloads I don't get, only know how many I do get.
I squashed Pierre's whole garden over in mine
I think several people have tried yes
gui's that go on top rarely end well.
delaying teaching the basics means when they run into something the gui doesn't offer, they get thrown into the deep end of the pool without any of the basics learnt
Miss Coriel has made one for NPCs that I think she's recently updated for 1.6. Otherwise, no. Since people ideally would be providing user support for their mods after making them, it's helpful if they actually understand what their mod does and a tool that does the work for them means they are not likely to do so.
Fine, I will see if I can patch in something for SVE
!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!
the closest I would get to a gui would be a vscode extension to add better intellisense, but that's really hard to do with everyone violating the json spec left and right
firereadlily's spreadsheet might be close to what you want but its just npc
Me running at Pierre's garden with a steamroller and a pallet of grass to put down
i think if you get too many layer of abstraction
then the tool starts to suggest one and only one kind of mod
which would be pretty sad
(not for 1.6 yet)
idk, its just json. Not the hardest thing ever. Might be good to have a gui manager for larger files tho. Could enable bigger mods to be made more simply.
as long as the cp format version is <2.0 a 1.5.6 npc should work still, though that isn't a recommendation to delibrately make new tech debt
tools like this can be great time- and effort-savers, but it is very important to understand what the tool is doing, as explained here
i think personally there is nothing wrong with abstraction layers if it allows the creation of mods that would otherwise not exist
everything on the computer is just registers of 0 or 1 then
(not "not exist" due to complexity or anything ofc, but bc s ome people will simply not Create if they do not have it)
This is what I am thinking. Might honestly give it a shot.
anyone making it is condemming themselves to years of support
That's modding in general
i would be thrilled to have intellisense for content patcher tho
thats modding in general yeah. and if it were open source, anyone could pick it up later if the original author no longer wishes to
cus otherwise i just keep copying snippets from mods i made previously
I might make it as an experiment with the constraint that it only works on legal json (and maybe jsonc if easy)
I personally dislike having to deal with poorly made mods in support so I'm not a fan of things that encourage people to create stuff that's so poorly made it causes users problems.
i dont disagree that learning and understanding the fundamentals is important and it isnt how id recommend learning to make mods. but i also dont think theres a downside to making mod-making easier
there will be poorly made mods with or without a GUI to help do so
Tbh, it's a time and effort saver until you have to debug the tool
People can make things badly with or without tools
if anything, users who need that sort of handholding would make them even more poorly if they didnt have the guidance
it is true that sdv mod isn't exactly building production software 
(Like, I managed to accidentally run 27 sims through the work gui today instead of 3 because I wasn't paying attention and it replicated my temperature conditions twice lol)
so not hueg deal if someone never learns more than what tool offers
i think its important to understand the content pipeline and stuff too, but i wouldnt say i wish Content Patcher didnt exist to make things too easy
(smapi and content patcher is more mature than pretty much any of my work codebases)
Well, you don't need to help people write invalid json
It's fine if the intelligence is more narrow
the problem is everyone loves their trailing commas, multiline strings and not using double quotes when they don't feel like it
Oh I thought she showcased it the other day but it looks like it's some other tool whoops
Jsonc
jsonc doesn't do any of the above, only allowing comments
yea i just mentally ignore the trailing comma warns
i don't love multiline strings, but we're stuck with events as string->string dicts so i will use them, dammit /lh
json5 vscode extensions abandoned
Other than the multiline strings
or was the last time I was going down that rabbithole
I cant remember what I ended up with that almost could do most of newtonsofts insanity
another mystery thing i notice with vscode is the https://smapi.io/schemas/manifest.json not regexing quite right
Anyways. People have tried. There was an attempt using unity earlier.
this seems legal to me
Remind me in 92 hours to experiment with vscode extension for cp intellisense
I was JUST about to sit down for the end of the day. but FINE (#6546147) (92h | <t:1740777860>)
I switch to jsonl for my events page so I can multiline without warnings. I'm happy to sacrifice error checking for the ability to read my own dang event.
how would the extension know about the data models?
Load the GameData dll (endsnark)
future me problem, though I did have some historical work on statically dumping that from stardew binaries https://github.com/Pathoschild/SMAPI/pull/922/commits/7b0ea11bebca2c97bf9498118ae70aaff1c16851
i was actually imagine like
the language server just runs sdv with a specific mod in the back
prob too expensive for potatoes tho
heh, I could have stardew itself be the LSP
good way of racking up your steam playtime hours even more than mod testing already does
not actually a dumb idea though, I might look into that
ty i stole it from focustense 
did focus put his idea under MIT license
several months ago wren was talk about a mod making tool they want to make
and this was one of the suggests
the stardew LSP mod could then also auto trigger patch reloads and clearing caches etc on file save
and give preview hover of token values
Where can I find some documentation on this?
i'd like ability to register custom data models
or for tool to discover what type perhaps
if I have a stardew LSP you wouldn't need to
vscode extension or the gui thing?
if it can inspect the content pipeline (and if the model isnt doing something silly)
There's not really documentation for doing a second patch with different details but my mod Apollo's Trick or Treat does two patches to add a warp depending on the presence of SVE if you want to check that. It's just adding a second patch with a "When" condition checking if SVE is installed.
Alright, ty! I will check it out.
If your model is a jsonobject I hope you enjoy đ
You're a đ, right?
I'm not going to build any WhatYouSeeIsWhatYouGet editor, it will be json.
json is not a steep learning curve, but I can make some of the CP specific behaviours more... inspectible
my crime is that there is a Dictionary<string, object> that i round trip through newtonsoft to dynamically turn it into different model class
I just remembered I have it on GitHub if you want to look at it without downloading it. https://github.com/Abagaianye/AbaStardewMods/blob/main/ApollosTrickOrTreat/ApollosTrickOrTreat/[CP] ApollosTrickOrTreat/data/aba_maps.json
I only need the mod to analyse types once, as a .NET type can't change at runtime.
and if I'm lazier I dont even need to do it myself and just hook into the internals of CP that does this already
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/Framework/Patches/EditData/KeyValueEditorFactory.cs#L25-L49
đ
i suppose a lesser version of this crime does come up with using CustomFields
cant rly know anything more than its a string
(To be fair I have custom jsonconverters)
Okay, so I want to work on the CPMod and the C# mod to be editable in the same workspace. However, if you put them in the same folder, this does not work (conflicting manifests). This is mostly a problem for once a build begins. So, how could I edit the build process to ignore the CP folder when dealing with the C# mod but move it into the mods folder with the c# mod after? I am mostly just looking for a starting point.
(For a functioning example of how this is done)
It is not huge deal to not be SVE compatible, if you don't mind people bugging you about it. Though Lore wise that area does exist, just not in the same place. As SVE does use the flower dance map. Only there is no on the map way to get to it.
Thanks! You too @brittle pasture !
My only issue with bundling a content pack is that I have to edit the built copy of the CP mod to be able to patch reload and then I forget to update the copy inside my project folder :/
I need to find a way to put some sort of screaming red text in my face to remind myself about it.
(same)
(why isnt this working why-oh I had to build)
Yup it's either remember to edit the built copy and forget to transfer the edits or forget to edit the built copy and wonder why my changes aren't showing lol
back to mapping... my favorite thing... (me trying to find the tile to get it to look just right)
I will make a way to get in, its fine
(Does hot reload not?)
not for the bundled CP pack
I generally don't have mods that have a major c# component and a major CP component tbh
Hmmmmmmm

Well, there is a way around that
Remind me in 52 days to look into making content pack deploy a symlink
https://imgur.com/gs8Db9t (#6546178) (52d | <t:1744940975>)
note that stardrop already deploys mods via symlinks so not entirely sure how they will play together
It's fine to simlink to a simlink
Hi, I've made a Content Patcher mod to replace the greenhouse with a better version, but it won't load because the tilesheet isn't in the mod folder, the wiki says however that it will use the vanilla tilesheet if it isn't present in the folder, Why is this not working? I've currently downloaded another greenhouse mod and just directly replaced their greenhouse with mine for testing and it still causes this issue
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Unix 6.5.0.23, with 24 C# mods and 40 content packs.
Thanks, Selph, you're the greatest
You need to embedded your tilesheets
your tmx was made with tilesheets not embedded and so it expects a tsx, however you do not have a tsx file in your mod folder
a tsx is not a tilesheet, it is information about a tilesheet
or well rather, its not the tilesheet image
the tilesheet image is what you want to not include in your mod
I didn't know an SDVConcernedCA reaction was a legally binding agreement
Awkward for you
I'll get to it after our next tape out
How do I go about fixing my issue? I followed the wiki (or at least I thought I did), I'm not sure what you mean, .tmx =/= tilesheet? how do I make it use the vanilla one?
ye, I still have it
I haven't deleted it, I just didn't move it with the tmx file becuase the wikiw said not to include it because it will use the vanilla one
the wiki says dont include the tilesheets
the .tsx file is not the tilesheets
the .tsx tells your .tmx what tilesheets to use
The wiki means the pngs
and other info about the tilesheets
how come other mods are able to not include a .tsx or tilesheet and still work?
It's weird
if you embed your tilesheets when making the map, all the info inside the .tsx is just placed inside your .tmx instead
because they embedded their tilesheets
They embedded theirs
Tiled will give you the option to embed when loading a png as a tilesheet
You can embed after the fact too with the third? (I can't quite remember) button in the tilesets box.
My brain has thoroughly melted into a pile of mush, how do i embed the tsx into the tmx?
tangentially related to more fertilizer I browsed the code and I can't believe I wasn't the first to come up with the idea of "sprinkler that acts as mini greenhouse" (casey's theft of the winter star mod)
(/s, I definitely know I wasn't the first I just didn't know that mod existed before now)
speaking of deploying mixed mods, lacey's makefile installs both mods directly and i don't use SMAPI's bundling feature. i only ever edit the copy in my work directory (git repo)
Ah perfect timing thank you
(i use a couple XCOPY commands in the post-build step for BEB
)
Casey has a lot of cool mods
the tilesets page now has these 3 tabs, of the duplicates, one can be deleted and the other can't, the one i just embedded is the only one that can be deleted, should I just leave all 3 of them? or deleted specific ones?
I think if you just save and close the duplicate will be gone when you open the map again.
assuming untitled tile sheet 1 and 2 are the same, u can delete the 2nd one but may end up having to redraw some of the map
i have no idea if there is easier way
Also please don't browse More Fertilizers
The code is insane
No don't delete the embedded one, that's the one you want to keep.
insanely good you mean
nope, not the case unfortunatly
ok attempt #1 at trying to make it SVE compatible
they are Identical but the embedded one is the only one able to be deleted
Did you close Tiled entirely when you closed the map?
yes
how to get the list of all building from all location? thinking about case user use build anywhere
how do I tell which is the embedded one? I've immediately forgot after closing and reopening
Try what Chu suggested then, but make a backup of the map first
The embedded one is the one that has the "embed tileset" button grayed out
Utility.ForEachBuilding
Ahh gotcha
I work with tsx files so rarely that I always forget what to do when they do this silly repeat thing
The only tilesheet I can delete is the Embedded one, the none embedded one has the delete greyed out, so I can't do what Chu suggested without un-embedding the tilesheet
Chu suggested deleting the embedded one which is why I said make a backup first
Ohhhh gotcha, sorry I miss read it
Because it might work or it might not work and just set you back to where you were when you started or it might not work and wreck something lol
I think I fixed it though, completely removing the tsx from the file path instead of trying to delete it through tiled forced it to rely on the embedded one
[doesnt know shit about Tiled vc] maybe its undeletable bc its loaded from the .tsx so just delete the- yeah
Weird that it doesn't remove the reference to the tsx in the source when it's embedded.
well, it doesnt know its the same tilesheet
or same image rather
you could in theory have both an embedded and a tsx which would be... weird. but you could!
i think it just wants to err on the side of "the user has kept this file in the folder, i trust they know more than me"
I think it could probably pretty safely assume it's going to be the same one though. Still, hopefully this time I will actually remember this.
I guess it's useful is you embed the vanilla tilesheet that doesn't change but a modified one that changes regularly?
the tilesheet metadata will not be changing
you can change the tilesheets present in a map but that wont have a difference between tsx and not tsx
the benefit of a .tsx is that it stores data about animated tiles
so you can use em in multiple tmx's easily if desired
Good thinking but it makes no difference. You can change a tileset's image source in the tmx file just as easily as in the tsx file.
Yeah tsx files are amazingly useful for the specific case where you actually want to transfer the metadata and a useless, annoying faff any other time.
How can I remove the bushes and trees from the map edit area? I have tried ReplaceByLayer
Yeah see? It's not so bad to get running! I was surprised too
you dont. you use Reset Terrain Features or a new save
Now that I know how to make them work, if this does work for me I may use them more often
BETAS also has an action to clear them but again still not somewthing you do in the map patch itself
Lol I forgot about this the other day when I was testing a beach from Goat's mod and I'd loaded the forest map into the location before loading the beach map and I thought he'd just put trees in the middle of the ocean for his mod xD
If you don't want to use the tile animation or tile properties, don't use tsx. It gives you no advantage at all over just adding the .png file but does make extra work.
I defo want to use tile animation and properties, but it has worked now though! Thank you all for your help
its not required to use them
if you start your map by editing from a vanilla map that has the animated tiles, the animations are already embedded into those .tmxs
you can also re-set them up manually if not and keep them embedded
using the .tsx to store the tile animations (not properties, btw, properties are not stored) just means you can start a map from scratch and get them easily again
Re setting up tile animations sounds like helllllll
You are making me question myself here because I've used tsx files just to transfer tile properties before...
Now I have to wonder if that happened or I dreamed it
Not as bad with the bulk tile animator plugin but still not ideal
what kind of properties are we talking about then because i was thinking of TileData and such which is a property on the map itself and not a property of the tilesheet
I refer to those as tile object properties because tile properties are the things that are set on tiles in the tileset themselves, not on the map.
Okay update the mod sort of works, the "Buildings" layer, supposed to be impassable, which is is, "Buildings1" layer however is passable, without the passable tile property, shouldn't "Buildings1" inherit the same properties as "Buildings" but just overlayed ontop?
Things like dirt, stone, diggable, water, passable, etc. They're all set on a tile in the tileset and apply everywhere in a map that the tile is used.
very clear and not at all confusing in an already confusing ecosystem /lh
(i dont blame you for that)
every day i think more and more about the theoretical Stardew-centric Tiled fork
Nope, none of the numbered layers inherit the collision of the non-numbered ones. It's just not written into the game code.
Ah, so I should put things I want to have collision specificly on the layer without extra numbers?
Ha I know right. The wiki says "because you're going to be dealing with object properties rather than tile properties most of the time, we will just call object properties tile properties!" I have considered changing it but that's a biiiig change for me to decide on my own haha
think of the extra-numbered layers as just setting up image layering
no functionality, just visuals
Gotcha, That makes more sense, minor modifications need to be made, nbd though thankfully
in the game there's not any difference between TileData and properties you set in the tilesheet afaik
u could stick an Action on a tile in the tilesheet if u want
It's tricky because it is an important distinction when making the map even if it isn't different in game.
Because if you want a warp on one single map tile and you add it to the tileset instead you're going to be warping every time you move if it's on an oft-repeated tile.
yea TileData is like, local position only props
whats your build error
also is this a C# mod?
now i have to research gift tastes
Yes, but I am trying to include my content pack with it. I looked up Nuget docs on this earlier. Where do the build logs go? I couldn't find mine when I went looking.
if you did a build there should be some console output, though i dont use VS so im not sure where
This is the console output, but it was empty. I figured this would've generated a log for the error.
weird VS thing maybe
VS normally shows me the error in a box down the bottom
If I don't specify an item in the gift tastes, what does it get classified as?
Try view -> error list
@lucid iron
This is as verbose at is will give me.
Its universal taste if it has one, and it looks like neutral if it doesn't. If I've read the code right, at least.
Alright, ty!
something is up with file perms then, try just restarting VS first
XD You are an actual genius
did turning it off and on work lol
oh
just suffer vscode instead 
you're on "totally not just a vscode reskin"
small recommendation to try Jetbrains Rider, it's free now
i also thought mac VS is kill
Yeah
I am just used to it at this point tho. Might migrate soon but want to get something made first. Gotta at least start on this since the reward is far more tangiable. Nothing like making your first item! JetBrains products are just better tho.
what did u need the C# for 
Nothing right now. Just doing small steps but I will be having to add mechanics for what I want to do.
i ask cus u can do a lot without any C# now, though if i was set on using C# the part i'd consider not having is the CP component
Would you do your items without content patcher? Would you do any data editing/adding without it?
it depends
if it's (a) a small amount of data editing, I would just do it in the C#
it does depend on how elaborate i think the data edit will be, i wouldn't attempt edit map lol
if it's (b) a large amount of data editing or (c) the example pack for a framework, CP
and my first mod has a CP part that i cant be assed to remove now
I honestly don't think it will be a small amount. I think it will be bigger. But I am going to look into editing through the content api rq.
Well every string in my mod has now been i18n'ified.
I have been meaning to ask what i18n is. I keep seeing it.
It is an extra folder inside of the mod to translate the mod to other languages for more accessibility.
I am brand new, so will these steps also work for mobile mods too?
this is about making a mod, i believe the mobile version also has the content pipeline yes
thank you, still reading docs, haven't attempted anything just yet
I just finished all the gift tastes, the stars are aligning
and im still keeping the mod at a compact 0.312 mb
@cunning kiln Congrats on the release of your mod! Want me to showcase it for you?
Question about custom warps in tiled, do I do "23 45 Town 29 67, 23 47 Town 29 69" in one map property box or can I add each warp in a separate map property box i.e. "23 45 Town 29 67" | "23 47 Town 29 69"
I actually don't know what happens if you have multiple. Give it a try!
Comma separated?
eh Ill give it a go too
So like this
Value Value Location Value Value Value Value Location Value Value
If you're just doing the one, no commas.
Ahhh gotcha, Thank you
"23 45 Town 29 67 23 47 Town 29 69"
It's hard to read, which is why I am encouraging you to try adding the property multiple times so if it works I can do that in future xD
It's entirely probable that multiple will not work (either it will complain or the last will overwrite the earlier ones) but I live in hope and dub you my guinea pig xD
I just doesn't even add it into the map properties, just edits the warp already present
Can the warp locations be changed via GMCM when using this?
Oh by the way if you're doing an EditMap patch over an existing map, your map's map properties will not transfer so you have to apply them with AddWarps.
I am not, I'm doing the none recommended Load, entirely because it's just the greenhouse, and I have no other mods nor plan to add any other mods that modify it
I'll probably change it to EditMap in the future for compat with other mods people may have so I'll keep it in mind
Yes, you can use your config token in the "When" field if you want to have multiple patches depending on config and I think you could actually just put the config token itself into the value of the addwarps field so it's one patch with different values depending on config.
But iirc the greenhouse has hardcoded warps...maybe?
oof actually good point, I haven't tested more than one warp yet
@obtuse wigeon You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
At least to the farm. If you're warping to other maps I think it'd be fine.
Oh ye I'm using it as basically a warp nexus because content mods are MASSIVE, even though they add methods of warp
customising it is a bit more fun
Yes, that is such a great thing about making mods. You can just do stuff you want.
buildings have their warps adjusted if it's to their parent location yea
ahem, Pam horse mod, Ahem somethings should never be made
so regardless of where the <ToX> and the <ToZ> points too as long as its to the farm from the greenhouse, ill always be warped right outside the greenhouse?
wait I already know the answer, it's happened multiple times and I didn't realise
yea just for the parent location (farm if u built it there)
Yeah, it's to avoid problems now that you can move all buildings around I think?
if it goes to somewhere else then it's not adjust
now that's a smart feature
I think there is actually a mod that cancels that behaviour but I can't remember what it is right now
I see how it could be useful but I feel it would cause a lot more issues unless you're intimately familiar with how it works
Does that not get intercepted by the hardcoding, chu?
i dunno havent tried 
Too bad I cannot allow myself to check right now and will therefore never check lol
Sleep on it
More dialogue!
Might hurt my back, the Content.JSON is a bit chunky
(In the past I would not release a mod unless I've played at least one real in game day with it)
Thing is I can't play it since it is lore based and I already know all the lore-
WAIT! I can put in a shop!
yeah but dont you want to make sure the dialogue works as intended and all?
Ive already tested it
It's not for functionality
And I have got a beta tester to help
It's for feel
Ohhh fair enough
At that point I've checked the functionality
Well I will play it then
dialogue feel is definitely something I never get until I play it myself, I notice a lot of games mods also miss this out too
I really need to speedrun getting Hiria to a playable point because I want to leave a few months between that and then testing her for vibes and at my current rate of completion I may die of old age before I get to do that lol
Hi loves! A user is having an error in split screen. This code should make it so the code does not run unless it is the person in the split screen who is doing the thing?
if(!Game1.player.IsMainPlayer)
{
SMonitor.Log("PSL - Player is not main player!");
return true;
}```
i think you gotta use Context.ScreenId 
Try Context.IsMainPlayer
But we will need more context than that
For short periods of time, Farmer.IsMainPlayer is not accurate
But that does not feel right
join the club, pull up a chair, gather around, and share screenshots of content forever trapped in progress purgatory
It's a baby birthing event patch, I'm trying to make the patch not run if the person is not the one giving birth to the baby/having the baby/whatnot.
Ok! So use the !Context.IsMainPlayer then?
Ok!
The user is getting an NRE from here when on splitscreen:
if (___babyName != null && ___babyName != "" && ___babyName.Length > 0)
which seems like a pretty good thing to check for if you want to skip the event for players who aren't currently having a baby
although how on earth are they getting an nre from a null check
That I do not know! They did not provide a full log, regretably.
did they at least share the full error message?
Yes,
(can you share the full code)
may i see it đ§ââď¸
(And the full error message)
just fyi, error messages are not accurate in release mode (nothing special of split screen, I mistyped)
also, like
if (string.IsNullOrEmpty(___babyName))
Sorry, here's the error message , took a second to find
12:21:39 ERROR screen_0 game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
at PolyamorySweetLove.ModEntry.BirthingEvent_tickUpdate_Prefix(GameTime time, BirthingEvent __instance, Boolean& __result, Int32& ___timer, String ___soundName, Boolean& ___playedSound, String ___message, Boolean& ___naming, Boolean ___getBabyName, Boolean ___isMale, String ___babyName) in C:\Users\Apryll\source\repos\PolyamorySweet\Pregnancy.cs:line 276
at StardewValley.Events.BirthingEvent.tickUpdate_PatchedBy<ApryllForever.PolyamorySweetLove>(BirthingEvent this, GameTime time)
at StardewValley.Game1._update(GameTime gameTime)
at StardewValley.Game1.Update(GameTime gameTime)
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)```
(and the code)
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
(I meant a link to your github, sorry)
hard to tell what "line 76" could possibly refer to otherwise
Lemme see if I have pushed lately, hold on...
I really want to know what is going on here https://github.com/ApryllForever/PolyamorySweet/blob/e3b096fa7bb15ec7982d5a156a644cc58405a20b/Pregnancy.cs#L58C21-L58C31
that seems suspect at best
not convinced f can't be null
Right there what I am doing is figuring out if a spouse is a farmer spouse
there are 4 GOD DAMN PIXELS I FORGOT TO PLACE ON THE MAP
That always sucks! It's like that unmixed bit of flour in a brownies where it's just waaaahhhhhh and the rest is good!
exactly
.choose system, worldmap, Forest design, code, relax.
Choose result: Forest design
can you tell which image is which
call of the woods
one has a plant.
Its not possible to create a map that soneone can put beds in without C# is it?
You can do it with CP
the one on the right has less pixels i believe.
Ur tent on the left got bit by a hungry mermaid...
You can?
I played her a song! How dare she!
Yeah, its a tile property. Bed T
We are feral no matter wat!
wrong its the left
shrug
its on the wiki, but all it does is mark a tile to be considered in a bed for passout and stamina regen logic
Can I run multiple $action commands in a single line of dialogue?
time to learn how spacecore dungeons work 
sure can, though I haven't pushed my code either of the times I've used it
you may need to / separate them if it doesn't seem to work, I don't recall atm
need Esca's Modding Plugins
spacecore dungeons do not do what i want unfortunately 
what do you want to do? 
I was wondering if it would let me make more of a lost woods scenario, but it seems to be primarily focused towards mineshafts, ladders, and elevators for transit between stages, versus walking off the map.
otherwise i think it kinda does everything i want.
Either way my idea can work without it, i just wanted to see if it was usable for the concept i had
Ah, I Was gonna say it doesn't work
Let me try AllowBeds
the property does also mention something about furniture restrictions as a reminder, likely also needs to be edited.
it works đ
Heyo, is there a simple mod, that would be a good example of adding universal gift tastes? I just need something to glance at to make sure I am formatting this correctly?
Tried looking at SVE's but I think it is too complex unless that is just how it should nomally look XD
đ sve is probably not the best example specifically because of how complicated it is
Yea I looked and was like I have never seen any of this XD
off the top of my head (yes very specific) the one mod i can think of that has a universal love is the sushi project
perfect I can work with that thank you 
how does Forest Design relate to Spacecore Dungeons?
Hi guys, I'm currently working on a map and I'm trying to make the campfire and fireplace work, like in the vanilla where you can turn it on and off. I've checked the tile properties on the vanilla maps and there doesn't seem to be one on those that I'm missing. Any ideas where to look for to make it function?
extra map actions has the EMA_Fireplace Tile Action that can do this, but is intended for regular fireplaces (2x1 tiles wide)
https://github.com/rokugin/ExtraMapActions/blob/main/docs/author-guide.md
I'll look into that one, thank you!
what's the hardest thing in creating custom npc mods? coding or the art?
Everyone has different skills, so it differs from person to person
In terms of just stuff we can do in CP, probably the writing
Coming up with scenes to make a character interesting is super time-consuming on their own and then implementing those scenes involves writing schedules and events with all the commands involved
I'm trying to make a postfix for the Utility.TryOpenShopMenu function, but I'm getting this error, and I'm unsure how to differentiate between the overloads. I want to call the one with more parameters, and I thought putting all the parameters in there would differentiate between them. Is there something I'm missing?
Mod Entry Code
harmony.Patch(
original: AccessTools.Method(typeof(Utility), nameof(Utility.TryOpenShopMenu)),
postfix: new HarmonyMethod(typeof(HarmonyPatches), nameof(HarmonyPatches.TryOpenShopMenu_Postfix))
);
Harmony code
internal static void TryOpenShopMenu_Postfix(ref bool __result, string shopId, GameLocation location, Rectangle? ownerArea = null, int? maxOwnerY = null, bool forceOpen = false, bool playOpenSound = true, Action<string> showClosedMessage = null)
{
//todo verify that the method is being called properly
Log("TryOpenShopMenu_Postfix called");
}
A showcase would be much appreciated! Thank you
No worries! One sec while I get the link to the mod
your HarmonyMethod signatures can have a wild number of different optional parameters, so the signature of your method isn't used to match the target method.
instead, you'd use the AccessTools.Method(type, name, parameters) overload with some list of types matching exactly the method signature you want, e.g.
AccessTools.Method(typeof(Game1), nameof(Game1.newDayAfterFade), [typeof(bool), typeof(int), typeof(Farmer)]);
(or new Type[] { typeof(bool), typeof(int), typeof(Farmer) } for older language versions)
or maybe it's a parameter on harmony.Patch()? I forget atm
Is there documentation on these different types of parameters? Unfortunately, I won't be able to test again for the next 8 hours
you basically look at the code you're trying to patch, and create a Type[] containing the parameter types of the specific overload you're patching
also you can remove the = null parts from your patch's parameters
they're never gonna be used
Why's that? I understand they're optional, but are you saying the TryOpenShopMenu method never uses those parameters?
no, your patch never does
I see. Yeah that makes sense
it can never receive the optional parameter values, because it will always receive the actual values from the real method
you can also just remove any parameters you're not using in your patch - Harmony will match the rest just fine by name
Idk if what I'm planning to use this postfix for will even work. I'm trying to check what the parameter values are if the results are true. I'm then planning on using parameters and extracting the code from the TryOpenShopMenu to make my own method that will tell me if a specific shop is open given just the seed id.
I was hoping to test that I could at least see the values of the parameters when the method was called, but I got caught up with something and wasn't able to test it in time.
@dusk mulch since youâre posting a lot of showcase stuff for other people, it might be good to ask them to give you a one-line description of their mod? otherwise itâs hard to know what their mods do
Alright, sorry. Will do in the future.
if it helps at all, it's worth noting that the method signature you write isn't actually used when calling the original target method at all. it's simply used to create that HarmonyMethod instance you use in harmony.Patch(), and the signature you write (params and return type, mainly) is just your way of describing the trickery you need to harmony itself
obviously simplified explanation here, in no small part because I couldn't begin to understand the specific inner workings of harmony
good morning!
For me it's definitely the creative writing, but after that it's the art because I'm new to drawing. The coding (json) has some tricky bits because I want to do much fancier things than vanilla NPCs but there's so many great people here to ask for help from that pretty much any coding difficulty can be overcome, I think.
Making NPCs definitely requires you to stick your fingers in many pies to make them fully fleshed out
making an npc is a lot of work but none if it is technically hard
