#making-mods-general
1 messages · Page 427 of 1
I have notied that too 😭 but I could move it
you should make it align so that you don't have to do weird thing with warp
to move it just add more invisible pixels around it
turn on grid in ur pixel art software
Consider it done 🫡
now for finding the tile coords i recommend debug mode
that lets you see the coords in game 
especially helpful if u r dealing with a map patch
Fixed the tiles
Debug mode in tiled? Or just find the actual tiles in the game?
the mod debug mode
nice house
I also find it confusing to find the tiles first, and then resize? Because for now my house still fees a little too big and I'd love for it to be a little smaller
Thank you so much 🥺 I have never tried pixelart before, so the perspective is a little messed up
finish resizing and then handle the rest
I have debug mode already thankfully
resizing will in fact change tile location
Yeah, that seems like it would make a lot more sense. I don't know why getting the cooridinates and then resizing it is used that way
Figures :/ strange
So uhh, the guide didn't really show me how to make my house a little smaller, just how to crop and export it. Am I even supposed to be able to make it smaller or am I supposed to work in the right size right away?
so if you ever want to make it smaller but already drew the map, you need to kill the previous tileset and reimport it to tiled
it's not that bad since it's one entire house but you will see XXX tiles and have to fix it
How would I make it smaller through a reimport? Is there a setting that has the size?
not really you are just bringing in a new tilesheet
and if the png is smaller then it will be smaller
Oh, so reduce the size in my drawing software?
yea
i think u can do that later no worries, put house in game n check first so u know how it work
I can't really do that since reducing the resolution makes it super blurry 🙁 and reducing the canvas size doesn't really help with the overall size of the house :/ it's just a bit too big I feel like
Whelp, can try. Is it bad if the house is in the way of preset trees? I wanted to place it in the forest and there is just trees everywhere and my house always infringes somewhere
well, that's cus forest is disaster zone for real estate lol
i would recommend making a new map you can reach via central station perhaps
Like, a whole new map? That is so much to read into though. I don't even know how the software works 😭 or the game... or modding
Still for the initial question, is it bad for the house to infringe upon some set trees? Otherwise I don't think there is space anywhere
you can delete trees from the paths layer, but if you load an already existing save then you need to use reset terrain features to remove them from overlapping
Thank you so much for your reply. Even if the house is a little too big, I mostly intended it to be for my friend and I anyway, so I hope it doesn't lead to too many issues. Where would I use the reset terrain feature though?
it’s a mod you install that will respawn trees and bushes and stuff
ugh sorry for embed i’m on mobile
Oh, no worries at all. I appreciate the time. But that's only for an existing save? If I made a new save it would be fine?
yep!
I will keep that in mind, thank you so much for your insight
things on the paths layer are generated on save creation
Just one thing, I'm making this house for my NPC. In the guide it says {{ModId}}_ does that mean it's the mod ID i've given for my NPC or do I makde it ModId House name? I assume the mod id for my character, right?
Or is it supposed to be ModId_Forest since I'm replacing the forest map? It's a bit confusing
just put {{ModId}} and it'll get replaced with your mod id
What confuses me is that it says "This is what tells the json file which map to replace." But how does my ModId to tell it to put my house on the forest map? (And by ModId you mean {{ModId}}_NPCname, right? Just for me so I don't mess it up 🥺 )
@junior tiger You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
?
your mod id is a unique string that we use to prevent compatibility issues (for example, if i added an NPC named Bob, my {{ModId}}_Bob would not be the same as your {{ModId}}_Bob that you created, because our ModIds are different)
[[Modding:Migrate_to_Stardew_Valley_1.5#Paint_buildings]]
Thanks!
if you’re editing the forest map, then you want to target Maps/Forest using EditMap, defining a from and to area, and your FromFile should be the file path of your map patch you created in tiled
if you’re creating a new location, then you would edit Data/Locations and your location name should be prefixed with your mod id
maps and locations are different concepts
https://smapi.io/json/none/54620a361a4c4c389ef377c82925f5fe#code.79 it's giving me an error on line 79, and I'm not sure what is wrong :/
need a } to close the one on line 70
if you hover over it on the site it shows you the matching closing bracket; right now it's showing the incorrect one
am i missing something? it shows for me
I fixed it
I think...
I did something
yup this one works
I swear you guys got eagle eyes or something
God I love notepad+. It pains me to rememebr all the wasted time I spent trying to write things out in regular notepad
MOOD
Just real quick, this is my content.json but the house still doesn't show up. Does anyone have an idea what the problem could be?
https://smapi.io/json/none/cd91a14c4b214c708fbbeb04c1c8f5fa
The house file is in the Maps folder, it's supposed to put my house into the Forest map. And the house file is called Custos-House-Exterior.tmx
SpaceCore finally got a banner/thumbnail image! @blissful panther made it for me back in June
Thanks, let me know if you remember what that was, I've been searching for a while since I got home but haven't turned anything up
scurries away to hide in my crime thread and programming off topic once again
I had my target be "Maps/Forest" but that didn't work either
can you revert it to that and then send json again
the json looks right to me. did you 1. do a patch reload/restart the game after saving your json, 2. exit the forest and reenter it
also are you sure that your filepath is correct
I did restart the game and made a new save after every change. I haven't tried entering the forest and going back into it
Let me double check that too, thank you
if you’re making a new save then it’s fine. it’s just if you’re in the forest and then make a change, you might have to leave the forest and come back after patch reloading
All good, I'll do a few more checks, it might have been the filepath actually. I keep missing the tiniest details
lmk if it still doesn’t work after checking the file path
too late! you’ve been spotted
also @junior tiger this is unrelated but i think for your seasonal portraits you’re going to want to use the appearances system instead https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances
Last edited by AtlasVBot on 2025-09-13 18:56:09
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference ...
House works, the hitbox is a bit whack, but I can fix that in tiled later
Thank you so much for going out of your way for this 😊 I'll look into it too
Hi, I just uploaded a beta of LittleNPCs for content pack authors. This version supports up to four children. Unfortunately I had to remove the CP tokens of version 1.0 to make it work so your content pack might not work out of the box. Please report any issues you find. Enjoy!
(Development and screenshot was done using an old version of ChildAgeUp that runs modified on my local system)
OH MY GOSH
I could use some help figuring out what I'm doing wrong with the syntax here (at least I'm pretty sure that's where I'm going wrong). Instead of adding my object as an artifact to get it to show up in diggable spots, I'm trying to edit location data to add the item under the ArtifatSpots entry...but I'm pretty sure I'm not understanding how the syntax of Target Field works as I'm drilling down. Would someone be able to look at my log and the code to help me figure it out?
https://smapi.io/log/2c1632862a664074a7118f5ae93c4d1b
https://smapi.io/json/content-patcher/70d2ff2926204ea3a09ad3c0cd81468c
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24354 on Microsoft Windows NT 10.0.19045.0, with 21 C# mods and 20 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Quick question how do I activate an event in the smapi console? I wanna test if a custom event I made is working or not :0
For some reason that isn't working :<
https://smapi.io/json/content-patcher/2bcf2dc8b61d44358c83d1886e5eda0e Did I mess up the coding??
In my content json I did an include for this sdhdkla
Did you get any errors in SMAPI? Error reporting for events in SMAPI is pretty good. I am a little confused by your character set up. It looks like the Wizard is set to do stuff before he's been set up with coordinates.
I was following this tutorial https://stardewmodding.wiki.gg/wiki/Tutorial:_Events_For_Babies and the wiki, I didn't realize I needed to set up the wizard with coordinates before he could move :0
Lemme see if giving him coordinates first works 🤔
Last edited by AtlasVBot on 2025-09-13 18:57:22
This tutorial breaks down Sunberry Village's simplest and shortest event to help explain each command.
“20031402”: This is your event ID. Make sure it’s unique. You can prefix it with your update key (AKA the number on the link to your mod page). The way event IDs are formatted will be chan...
OH YAY THAT WORKED


Ima just,,, take a smol break n lay on the ground
What is the f included for?
in your code you have the music and viewport set, then the next thing should be coordinates. Then you can do commands. Events have to go in a specific order which the computer knows, if there's an error or things or out of order, the computer doesn't know it and tries to continue with the order it knows and nothing else beyond that will make sense to it.
conditions are included in the event "key" so if you want a friendship with wizard, bluejester, this isn't the proper place
i'm assuming, but explaining what you want to do can help a lot
Hallo, I've a quick question. Context: ContenPatcher and AnimalData. It's about the probability of items that an animal can produce. Example: Animal can produce eggGreen and eggBlue. With no further conditions it's a 50-50 chance, right? If I understand correctly, adding to both items a RANDOM 0.5 condition, would mean I've a 25% chance to not get an item at all, right? Since probability is multiplicative.
Don't animals have a percentage chance to not produce an item? so it would be Base item chance x Amount of items x RANDOM 0.5 right?
Oh wait that's the Fish Pond I'm thinking of
you are correct
every entry’s condition field gets evaluated, and of all the entries that remain one gets randomly selected
Okay, thanks a bunch.
(I just transferred the decompiled repos into the StardewModders organization on GitHub. If you had access to them, you may need to accept the invite email from GitHub to regain access.)
i assume it's so it's easier to manage?
It has three main benefits:
- We can use groups to organize permissions, instead of adding each person to each repo individually. In particular, that means everyone with access to one of the decompiled repos now gets both automatically.
- We can set more specific permissions (e.g. we don't need to give everyone full write access to the decompiled repos anymore).
- I'm not the only person with access to manage those repos anymore (e.g. in case I disappear one day).
i choose to read the third point as "pathos can be away for a week end more freely now"
thanks for the explanation 🙂
hell yeah
https://smapi.io/json/content-patcher/00065ac6e49448a2be79cf31d6ddd332 Could someone help me out? I'm not sure why it's saying this considering there's no line 1382

you need to close your changes list [ ] and the overall json file { }

a basic file will look like
"Changes": [
{
"Action": "blah",
"Target": "blah",
"Entries": {
"Entry 1": "blah",
"Entry 2": "blah",
}
},
{
"Action": "blah",
"Target": "blah",
"Entries": {
"Entry 1": "blah",
"Entry 2": "blah",
}
}
]
}```
including format if it's your content.json
Yippie! Fixed it, Thank you so much!
np!
Huh... so I made the recipe i18nifier read only the last part of the string, completely forgot about that, makes sense why it doesn't work with most furniture... (weirdly decent idea for me when it comes to recipes tho)
Boring announcement:
i18nifier now has a dedicated subpage for furniture for anyone who needs it!
https://nom0ri.github.io/sdv-i18nifier-app/furniture
I also recently made a thread for all questions/problems/suggestions regarding the app, so feel free to pop in there: https://discord.com/channels/137344473976799233/1415798030535491707
I'm still tempted to automate it, and can mostly repurpose old scripts I had from Dota modding which would poll steam, download game updates, run scripts and then commit the changes
and while its there could also do reference assemblies, though will need to uplift the base functionality to handle multiple repos (and wont be able to do android due to being built around steam as a data source)
https://github.com/ModDota/DotaTracking
The script can run in two modes, One mode where it runs self sufficiently and will keep running forever and poll steam, and second mode where it runs once checks for updates a few iterations and then turns off (This mode was added when SteamDB would send a webhook over to my cloud infra which would wake it up as it had to run on a windows machine with GPUs capable of running dota which was not cheap so keeping the expensive compute off as much as possible was important)
reference assemblies will potentially be easier as a github action or something else, as it wants to run when either smapi or stardew updates
For reference assemblies, one option could be to include them in the vanilla game build. Then we'd just need to copy them into a NuGet package.
(Automating it would be very nice though, especially if we could do it for Android too.)
vanilla only reference assemblies would mean still needing to solve smapi, as a mod project references smapi via game folder and not nuget.
though it could be possible for the github action to setup reference assemblies to download the smapi github release and manually extract it
I mean there are those of us who have already gotten mods building automatically using the existing reference assembly repo. Automating it would be amazing, though
I had some ideas on this in the shower before I saw y'all talking about this - like, once the reference assemblies exist, we could also autogenerate a "common reference assembly" which only has stuff that both game versions have.
And we could also have some sort of "shim" for the other stuff to some extent, so that android mods can use PC-only things and vice versa (where applicable) - or at least not fail to load and maybe get some sort of placeholder data in some cases. (There are tricks you can do for this in .net normally - or at least could in .net framework days - but SMAPI's validations prevent that from working.)
taking a look, it looks like none of my main mods would actually work with the reference assemblies repo as currently structured.
my mod collection that was released on 1.6 launch day can, but Profiler, SpeedySolutions, AutomateChest, and Debugger all can't
Hmm. What's the issue preventing them?
(Following message is unrelated to this conversation, it's just for a unrelated thread)
Still nothing to see here. Once again, move along
Profiler has a newtonsoft json reference via game folder, SpeedySolutions has TMXTile reference, and AutomateChest and Debugger have hard references to other mods
Speaking of GitHub and decomp, could I request viewing access for the decomp repo of the game please @ivory plume? I pass the requirements needed (mod maker role and above level 50), my GitHub user is AtlasV1224 and there no rush at all if I am able to given view access, thank you!
surely the spacecore banner wouldn't update without some kind of incredible update coming. surely
And the discussion of docs auto generation 👀
Done! See the repo readme when you accept the invite for more info, and feel free to ask if anything is unclear.
Thank you!
Silly question. What is the perk of the decomp repo vs viewing decomp on my own? I feel like I’m missing a step in between
For me, the main benefit is comparing to different versions and seeing when things change, but also it can be a convenient browser-only way to view the decompile particularly on mobile
when using ILSpy it can create some innaccuracies, for me personally, I like to browse the code on my phone when ever I'm free, without storing a decomp on my github or on my phone
Ahhhhh. Ok. That makes sense
similar mind there SinZ
(The repo also includes the unpacked assets, including effect files which aren't unpacked by the regular tools.)
Well damn…. Now there’s a reason I may need it
You qualify for it thats for sure
it was very useful during the 1.6 alpha as well for those reasons
:ducks in:
Level 50 right?
Soooo
All y'all have prime right?
The tl;dr is that Amazon gave me a free month of Prime
Which I'm going to milk for all it's good for before canceling
Ah. I do wish modbuildconfig would auto add a package reference, even if locked behind a config like Harmony.
Not much to be done when relying on other mods, though
No major features are coming until next major update since I want to do the SpaceCore split then.
The PRs will happen though (as you probably guessed from the emails you got)
Yep level 50, and the mod maker role
its still just a decomp and so still would have the inaccuracies, no?
its not source code
Oh I was under the impressions it had those inaccuracies fixed, never mind then, my point is basically null
(ooo, checked my emails just a moment before those came in. wonderful 😌 )
afaik it is tweaked enough to be able to recompile fine i think? but its not the original original source
The repo is also fixed compared to a normal decomp to be able to be recompiled for debugging purposes. (Though that’s not enough when transpulers are involved.)
bosss
I’m apparently 194 these days… neat…
im lazy and ilspy used to crash on macos
i just download the decomp repo and view locally though
is there a writeup on the spacecore split at all somewhere, planned changes, expected breakages, etc? pretty much all of my c# mods have a hard dependency on spacecore
Not outside of my head and a github issue that says “consider splitting SpaceCore into two?” With almost no description. 😛
The general idea is that anything “heavy” (uses new netfields and so framework is needed by everyone in MP, uses external libraries like some of my future ideas might, etc.) would be split, while anything else stays in the current mod.
I plan on splitting it pre-1.7 with shared projects, and then for 1.7 I’ll move the contents into the new mod while deleting the shared project itself (as well as namespace changes and any other changes that might be breaking like cleanup stuff).
I’m also thinking my repo’s debug build will use it already split, and then the release build only references SpaceCore. (One of the changes I made during reorganization earlier makes this much easier, since SpaceCore references all use a single .targets file now)
Anyways the main motivation is that mods that only use stuff like animated textures and UI library (for example) won’t be required by everyone client, so you could play with vanilla players using those mods like you used to be able to
(The split mod has a new name :P)
is it going to be kittycore
Another reason I’m waiting for 1.7 is so I don’t blow every mod under the sun up with compat issues
No, but you’re on the right track.
Catcore...
Technically closer but “in the spirit of the new name”, no
Same problem except without the technically closer part
No core involved
Madness, I know
What I'm hearing is we need to add back the concept of CoreMods that can register rewriters / cecil logic that runs prior to loading other mods to have an excuse to keep the Core suffix alive
you had me at "we need [...] cecil"
I think with how the SMAPI bootup seqeuence works, if it did its own coremod loader really early it might be able to touch vanilla as well
sounds spicy
It would be nice to be able to modify class definitions
good luck doing harmony patches on whats now a very moving target because someone might have done a cecil patch on it first
Pathos didn't like that idea despite me literally making a functional PR for it 😔
KirbyAirRideCore
Literally what my PR did
The main reason I wanted it was to make buildings able to exist on every location by making them all inherit from BuildableGameLocation or something, but that's basically vanilla now
i thought that PR was closed bc of 1.5 coming and major SMAPI rewrites with it
That too, but Pathos was never super fond of the idea to begin with
but I'll close this specific PR (without precluding Cecil-type mods in the future)
It was more of a begrudging thing because there were things I found I wanted to do that we literally couldn't do otherwise without breaking literally everything (or at least that's the impression I got)
I mean, yeah, he hasn't said it will never happen, but I'm 95% sure he still would rather try to find other ways to do things.
I'm sure I could pull a few examples from our DMs, technically 😛
Yeah using conditionalweaktable is... not great for performance when you need to access it a lot
I mostly joke regarding cecil patches as it doesn't take much imagination to blow up the modding scene very quickly with incompatible mods
Haha, yeah
"Here's my mod that adds a single underscore to every field, method and type name in the entire game! Including SMAPI and loaded mods!"
(Or even worse, ||a non-deterministic amount of underscores||) (spoilered to avoid giving nightmares to pathos specifically)
Bring back this PR so that we can finally have wallpaper everywhere
cwt is somewhat better than dict right
i can already break a lot of mods by prefix skipping every property getter and method in the games assembly
I know it will make values disappear when the key is no garbage collected since the keys are weak references, but performance re:fetching I'm not sure
Yeah that will just make them not run. You gotta make them not load for full points
All of them. Including Pong
(I'm not sure Pong even uses the game at all - just SMAPI/MonoGame, these days, I assume?)
i will prefix skip SMAPI from my ModEntry constructor to not run any mod's Entry()
Still loaded, doesn't count
My empirical experience is that things became better slightly when i changed a dict into a cwt but it is not like i was doing proper A B testing
i would say it counts
i did!
It needs to have the red text in the smapi console saying it wasn't compatible
Never even touching my computer's precious ram
i mean, i could log as SMAPI...
Also technically you could probably harmony patch stuff in the DLL static initializer
So if the DLL is loaded, I can still run code
the what?
Wait does that say it's a proposal
I'm not sure now
But I know it's possible
If not directly, then using native code crimes
it seems like a proposal
I tried this and it somehow ran after the just regular class static constructor
...weird.
but in terms of timeline theres no real benefit to any of them as your DLL is only properly loaded at the time its going to instantiate the thing extending Mod class anyway, there isn't really any logic you skip running slightly early
Does it not run until something from said assembly is actually referenced?
I think it has something to do with the fact that smapi uses activator utility or whatever its called
There is a very tangible benefit: you can still run your mod when button's mod crime (#making-mods-general message) is present
(That's how this whole discussion started, in case you forgot 😛 )
*this whole part of the discussion
I technically have 3 mods that do harmony patches in their constructor already to harmony patch the SMAPI mod registry mod loading functionality
Y'all are distracting me from documentation autogen
smh
I never should've come back in here. Should've stayed in my secret crime threads
casey would it satisfy your requirements if i just deleted every other mod DLL in the mod folder when my constructor ran
that would only work for mods that don't get rewritten by smapi
if smapi rewrites it its now using an in memory version of the dll
What about mods smapi loaded before your mod
And what SinZ said
I could use cecil crimes to make my mod always need some rewriting (for platform differences or something)
You can still do that by running code in the constructor
my mod will be named 000.dll and be in a folder called 0000. linux/mac not supported
No, because button is talking about preventing the mod object from being made
you reflection into SMAPI config and add your mod ids into the smapi config for mods to load first and then process exit and next time you now win
The humble underscore:
can you name a file or folder just an underscore
Yes
then ill just name my mod that instead!
But even a prefix would go before digits
Ah sorry I was confused because the post that got linked only mentioned stopping Entry
Hmm
(i couldnt remember if A or 0 went first)
smh, keep up with the fast paced nonsense that we're spouting
and dont need to do esotoric mod names or ensuring users didn't nest your mod in decorative folders
that would work every time but potentially the first time, though
and i feel like thatd be unacceptable to casey
thats why you delibrately crash smapi the first time
casey wants her mod to never touch her computer's ram 
Can't make people need to edit their smapi config.
Better yet crash it with an unrecoverable exception
The mod edits the config and then crashes so when the user launches again its pre-configured
while we're at it, ill turn off SMAPI rewriting mods in the config too
It needs to fail on a clean install
No second runs
well on a clean install there will be no mods present
therefore your mod shall never touch your ram
ConsoleCommands? ErrorHandler? SaveBackup?
what the heck is ErrorHandler
Did that get bundled into smapi again. I thought it got split out at some point
it was bundled in 1.5-era smapi. rip errorhandler
error handler died in 1.6 as vanilla ate it up
also none of those are your mods 😛
🧓
Ah
Offhand, does anyone know if using things like @a in the i18n for an event string will properly parse to the player name?
At least they didn't ask what TrainerMod is
if it works when not in an i18n token then it works with an i18n token
thanks Button
My point is, I need to be able to trick someone into installing this mod like a normal mod, and no other changes, and they immediately suffer
And suffering be deterministic
oh thats easy, name it "No More Lag Redux"
all CP tokens are just doing changes to the asset in the content pipeline, all the game sees is what patch export would spit out, which would be post i18n insertion
ie. not changing second+ run
You're ignoring the other criteria, like preventing my mod from running
im not ignoring it im considering it solved for various definitions of the term "mod" and "preventing"
Like what if I used a module initializer to spawn a thread or something that would tell the user there's a nefarious mod installed if my mod's Entry didn't end up being called
Given the fact that we may not get the event refactor for a while, I'm going back through and changing the vanilla events to use strings instead of direct dialogue myself for the Zelda NPC Overhaul mod, so that I can have translatable lines even when I am changing the character names. >_>
once my mod loads first, I can just ensure no other mod DLL actually executes by emptying out the mod registry
like sinz said, i18n is just a string replacement function. CP's i18n token means "go get the string from this key matching the current language (or best offer) and put it here", so whether or not @ works depends on where you are using the token
When the event refactor happens then I can just delete all the lines that don't use character names, but until then, this is a necessary evil for immersion. xD
I feel like y'all keep ignoring parts of this so I'm giving up. tl;dr: we need cecil so button can thwart my every effort to run even the slightest amount of code
i cant help but notice that Pathos was clearly here lurking but yet suspiciously silent on the topic of Cecil mods again...
pathos likes the mod compatibility number be a large number, and not need to deal with even more special cases when doing the monthly stat collection with how many mods need special care
also cecil patches could lead to more annoying to trace mod security issues.
harmony for the most part at least dobs in who made changes, but without a decently sized cecil wrapper who knows who made changes where to the vanilla dll
Have you considered: generally, less security is preferred when committing crimes
(suffering is already deterministic
)
also doesnt harmony only log who made changes according to the ID the changer themselves gave
you can somewhat lie about your id, but you cant lie about what method got patched
Cecil who knows what method you changed
what's different between harmony and cecil?
i'm also peeking in here periodically, but i don't know what cecil even is
Cecil lets you change an assembly itself
and alter its fields and members and classes etc
I'm guessing its this: https://www.mono-project.com/docs/tools+libraries/libraries/Mono.Cecil/
oh okay, so it's Crimes 2
while conceptually harmony is rewriting, it makes new methods and then does black magic to convince the rest of the runtime to call it instead of the orignal.
Cecil is actually rewriting the source, and so has pretty much no constraints compared to harmony, other than that it can't have it loaded when doing those changes
and as a result it also gets to do those rewrites before the JIT has touched it, so inlining and other stuff stop being a threat
Yeah, pretty much
SMAPI already uses Cecil for the mod rewriting
(And compat checking)
is it possible for me to change someone's config value from default to the other option when they have a specific mod installed?
no
or would i just put somewhere on the mod page "hey use this config option when you have xyz installed"
ok
You can have a config value like "Auto-detect", and if it's set then you use a dynamic token to choose the default value based on the installed mods.
you can set up a dynamic token to use the config OR a different option when the mod is installed though
ooh interesting okay
in general, is it a better practice to have compatibility be automatically applied, or to have it be a config option?
Best of both worlds would be to have compatibility auto applied if the user does nothing to change config options
Auto-detect being the default config option would let you do that behavior in a way that makes sense to the user.
As an example: I originally had Useable Community Center set to automatically create compatibility with CC Reimagined's layout changes, but when CC Reimagined allowed users to turn that layout off in favor of SVE's, I then had to add an extra option in my patch settings to respect a config option that chooses the layout they wanted to make compatible.
(that particular scenario can now be avoided with CMCT as a dependency, but it didn't exist at the time)
I had an auto detect option and a manual selection in a dropdown on my mod
do you know an example of a mod that uses auto-detect that i could look at for an example?
oh atlas which mod?
i don't mind giving you the download on nexus haha
Then that's fine by me 
It's the content.json and the TextureLoading.json that has the relevant parts
thanks!
I dont use dynamic tokens for that but I would simply make the patch take effect when "HasMod" is true AND the config value is also true
can someone double check my logic?
"Action": "EditMap",
"Target": "Maps/Town",
"FromFile": "assets/maps/TongueAndTail.tmx",
"When": {
"TNT_Location": "AutoDetect, TownSquare",
"HasMod |contains=FoodTruck.8BitAlien": false,
}
},
{
"Action": "EditMap",
"Target": "Maps/Town",
"FromFile": "assets/maps/TongueAndTail_Alternate.tmx",
"When": {
"TNT_Location": "AutoDetect, Cliffside",
"HasMod": "FoodTruck.8BitAlien"
}
},```
yeah i'm struggling to wrap my head around how i would do it with a token haha
Theyre saying you have to make auto-detect into a dynamic token if i understand corrwctly, it doesnt actuallu do anything if you just type autodetect
I think we'd need to see the whole mod to udnerstand what youre goinf for
Are you only wanting people to be able to use the alternate location if the food truck is installed?
no, i want them to be able to use it if they have the mod installed OR if they choose
do i need a third patch or to edit my logic
Ah ok
Well you can also write OR conditions in CP
without routing it through a dynamic token
The way you have it written at the moment, it will only be true if both TNT_Location and HasMod are true
youd need a query for checking two different tokens, in this case HasMod and the location config
let me look up how to do queries
I cant help check code currently, just wanted to sugget the alternate option to making a dynamic token
no worries! i appreciate it
(bottom of cp docs tokens page)
okay i think this logic is correct, but i'm not sure at all of the syntax when using queries to check a config option. do i need to set these as dynamic tokens, or are they added automatically? how do i check HasMod in a query?
{
"Action": "EditMap",
"Target": "Maps/Town",
"FromFile": "assets/maps/TongueAndTail.tmx",
"When": {
"Query": "({{AutoDetect}} AND {{!HasMod |contains=FoodTruck.8BitAlien}}) OR {{TownSquare}}",
}
},
{
"Action": "EditMap",
"Target": "Maps/Town",
"FromFile": "assets/maps/TongueAndTail_Alternate.tmx",
"When": {
"Query": "({{AutoDetect}} AND {{HasMod |contains=FoodTruck.8BitAlien}}) OR {{Cliffside}}",
}
},```
or do i set that as a dynamic token as well?
The syntax is not quite correct but first, whag are you hoping to do with AutoDetect?
I think you should upload your content.json to the website so people can see your config and dynamic token setup
So just to make it clear, AutoDetect is no sort of official token or anything
yeah, i wasn't sure if config options automatically became tokens
I'll have to let someone else help
They do
config option, not config token name
yay! that's what i thought but then i was unsure
ohh i see
so {{TNT_Location}} is a token then and i use query to check its value
or not query sorry
contains
Thank you for correcting me on that 6480
okay awesome
secondary question: can you use contains inside of query like i had up there?
By the way nic you should be able to use patch parse in game to check if you've written out a token expression correctly
ooh good to know
So to check just the HasMod part you'd do patch parse "{{HasMod |contains=FoodTruck.8BitAlien}}" and it should return whether that's a valid token string and what its value is.
the second thing wrong with the query is that it needs to be like this "Query: {{Enable Extended Crops Pack}} OR {{Enable Herbs Pack}}": true
where the whole query expression is in one clause and theres a second clause of true/false outside of the quotes
(in my case the config options are true/false values but you need to use contains for yours)
ohh i see because query resolves to true/false
yup
I think you'd have to experiment a bit to figure out how to write it for the entire query (for checking in patch parse). Maybe {{query: query goes in here }}
final question (hopefully): how do i check a negative? does the !go just before the {{ }} ?
since i can't do contains: false
I thought it would be !contains but i dont know for sure
(I am offering this info rather than help actually setting it up because I haven't tried setting something like this up before and tend to need to use trial and error to get stuff like this right.)
i still appreciate it!
Query lets you use NOT so if the exclamation marks don't work anywhere, try doing NOT {{HasMod |contains=FoodTruck.8BitAlien}}
ok
good news, i don't have to use patch parse if it throws an error about query immediately upon game load 
choosing the config option works! now to test it with the mod installed
it works! thank you both so much
now to repeat this like seven more times...
haha thank you
Nice one!
queries can be pretty complex so i always have to have the docs open while doing them myself
(moddota.. now there's a name i've not heard in a long time
hope you enjoyed ti '25!)
yeah, i found i had to write out (A AND !B) OR C to wrap my head around starting
(figures that's where you'd have used lua before)
taking me right back to high school math
is it possible to use query with some sort of ANY condition? like if the user has mod A, B, or C installed? or would i have to write each of those in the query as HasMod |contains=A OR HasMod |contains=B etc
(A AND NOT (B OR C OR D)) OR E
You can just put them into the same HasMod check
Like HasMod |contains=FoodTruck.8BitAlien, ichortower.FoodTruckNorm (not the real ID, IDK what it is), Mod3
That's an OR check
Good morning, you lovely folks, I come to you with a humble request again (I've been asking so much for the past few days, I appreciate you all 😭 ). I have 2 requests.
One is if anyone would be willing to look over my JSON file. I get a warning from the SMAPI that the location for the interior doesn't lead to anything. The exterior works though.
https://smapi.io/json/none/04e0f132fad245688956d1ee037b3ec8
The file structure is as follows: [NPC]Mod Folder --> Content.json --> Assets Folder --> Maps --> all the tmx files
2nd question. If I have multiple NPCs live in the same house, would it be better to have a separate content for just the house? Or do I copy/paste the lines into all of their content.json?
This is not related to either of your questions but line 54 is strange and should be deleted. I assume it is some gibberish that came from copying and pasting something without noticing.
Already done, thank you 🙂
As for the first question, you've accidentally used "Assets/Maps/{{ModID}}_Taq" as your Target on line 90. Same with your MapPath on line 105.
That's what had me so confused about the quide 😭 the comment talks about the mod id and that is the only one I have. I assume I need to put in the tmx file there?
No, that's going in the wrong direction. Neither of those should be a file, they need to be an asset name beginning with Maps/. So just remove the Assets/ part so they say "Target": "Maps/{{ModID}}_Taq", for the first one and change the second to match that Target (so "MapPath": "Maps/{{ModID}}_Taq"
Oh, wait. I edited the Cellar file, so it should be maps/cellar
Oh, hold on. I think I see
https://smapi.io/json/none/eac563dc7cca4f5aa55a599b92d7f484
Is this one correct?
It's not a super easy thing to grasp if you're unfamiliar with programming, but the only time you're putting an actual file and file path in your json is inside a FromFile field. The Target, even though it looks like a file path, is not one. It's just a name that you assign to the data that you're putting in the game.
For your second question: you can only have one content.json per mod, so definitely don't try to put any json in another content.json file. As for whether to remove it from the content.json to put it in another json file (that is named anything but content.json or manifest.json) - that's up to you! Your entire mod can be inside the content.json if you want or you can put everything into other files and then use Include patches to call them. The only deciding factor is whether you like to organise things by separating them into different files or if you like to organise them by having them in one big file.
So I would put all of the three npcs into the same content.json?
Could i change the folder structure? (I know I would have to change some of the file paths. From [npc]name to [Mod]-3bois. And then have the content.json at the top folder and then separate everything else into Folder-BoyA, BoyB, BoyC? I just wanna know what's best practice. I don't intend on adding any more npcs so it would just be these three in the same house
Best practice with regards to this specific thing is to do whatever works best for you.
If you want to have your main mod folder change to [CP] 3Bois you totally can (please use the [CP] bit though, the mod convention is to include the framework the mod relies on inside the square brackets, even though -cough @brittle ledge cough- doesn't adhere to that convention (and nor, to be fair to Tia whom I am tagging because I am teasing them, do many other people)).
You're correct that the content.json stays at the top level along with the manifest.json and the i18n folder. After that though, you can set it up however you like. You can have each NPC's info separated out into their own sub-folder. You just have to make sure you remember to put an Include patch into your content.json for each .json file you have in each of those sub-folders.
If I am not being clear enough, please let me know and I will provide examples!
My personal suggestion is that if the 3 npcs have a lot of interactions like events and dialogues with each other, you should put them in one mod folder. If you intend for them to be able to be played separately, you can put them in different mod folders (and different mod pages)
Since they share a house i assume theyre meant to be together
Oh, I absolutely am not suggesting she puts them in separate mods and I don't think she was asking that?
Oh, no no I think I understand. Big folder contains content and manifest and the three separate npcs with their dialogue and sprites and all get their own folder
I do have a slight problem with the interior still. It says the folder is ascending... which it isn't
It sounded like there were currently 3 separate content.jsons for three npc mods, but i did not get the chance to look at the ezisting file
Nope, so far I only have 1 npc and I'm trying to make the house interior and warp work. Once all that is set up I'd only need the 2 other npcs. The question was just how to best structure it 🙂
Are you using irocendar's tilesheet plugin?
got it
uhhhh, I'm not sure 🥺 plugin for the game? I followed the Dao guide. This one https://stardewmodding.wiki.gg/wiki/Tutorial:_Map_Patches_and_Warps#Creating_the_New_Map_(house_interior)
Ah okay no, it's a Tiled plugin. In that case, yes, the problem is that you have tilesheet climbing. Have you at any point in time edited your map while it was in your mod folder rather than in the Content (Unpacked)/Maps folder?
Possibly? 😭 maybe while I was fixing the tile layout yesterday night. It is in general very confusing. I can't edit the maps when they're in my mod folder at all? I suppose I'm only allowed to export them into my mods folder?
No, just cut and paste between your mod folder and the maps folder. Alternatively, you can start using iro's plugin and then you can use tilesheets from anywhere without moving anything around. I'll tell you how to do that in a moment if you're interested, but first we will fix your tilesheet climbing issue (just in case the tilesheet climbing interferes with the plugin setup).
Open your map in a text editor (right click, open with Notepad++ or VSC or whatever you use) and Ctrl+F to find the first line that says "image source". Send me a screenshot of what that looks like and I'll give you the next step.
Alright, you got it. I assume we're talking about the interior map, since the exterior works fine
in my experience roughly half of all mods that i download dont use the square brackets convention. for what its worth
(i can measure this because im trying to put everything in folders that start with _ and square brackets mods go before it which drives me nuts actually)
Yes and it makes me cross lol
(but like if at least it was all before instead of half before and half after)
So basically this .tmx is still referencing the unpacked maps instead of itself?
Yup that's right. So you need to change that so it's showing image source="paths" instead (don't delete the width and height fields though). And then do the same thing with all the others too. It doesn't matter if it's got the .png or not, it will work with that either way. It just can't have any forward slashes or any of the stuff before the forward slashes.
So do I really just put in the word "paths" or does it need the path to the Map from the content? And just edit it with notepad?
No, edit it with Notepad++. You already have it open.
And it needs to be exactly what I just said. Just the word paths. No forward slashes.
Okay, that should have fixed it for now, so you'll want to check in game that it's working properly
Then we'll set you up with how to edit and make maps using iro's plugin for future
I'd be very happy to hear about that while I test it again
Okay so SMAPI did not throw any errors, yippie! But I cannot seem to teleport in. The cursor shows the door as interactible, but I can't do anything. Yes, I did move the time forwards to 9 and 10 am (just in case) as I had put it into the content
We can check if the problem is the map or the warp if you put debug warp Modid_Taq into SMAPI, where you replace Modid with your mod's actual unique id.
That should warp you into the basement without needing the warp in the forest
Okay I'll check
Oh, something is definitely broken with the map
I can't even screenshot it in time, because when I print screen in stardew it's 8 seconds behind, but it warps me in. I see some path sprites and then it warps me back out
There we are
print screen in stardew can be dodgy in my experience too, yeah
for me it always shows what it should have shown the last time I screenshotted
That looks like your layers might be off
but yes what aba said, looks like your paths layer isn’t on paths?
Although why that would warp you out I don't know
The SMAPI says that no target could be found? So maybe it gets me in and then continuously checks and doesn't find anything so it gets me out
!log Can you share that log so we can see the exact error message, please?
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.
can you share a screenshot of your map in tiled, too?
ignore me then!
It seems that more than just the paths layer is messed up :/
(Otherwise it'll just be a screenshot of a massive number of error tiles iro)
I could never D:
I meant so we can check the layer names
but yes that also makes sense
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 4 C# mods and 1 content packs.
If she sets up the plugin using a vanilla map inside the unpacked folder, is that going to cause weirdness for her map in her mod folder?
it’s usually a good idea to ignore me if aba is helping tbh, aba is better at it than I am 
I don’t think so?
depends on if she has her own tilesheets in the mod folder
Don't say that, everyone has been helping me so well so far 😭 I appreciate anyone who can stand my constant questions
There's no map-related error or warning here. Are you referring to the ones from before you warped to the map?
I would recommend not keeping on editing in the content folder once you have the plugin though, because there’s no need tbh
10:35:54 INFO Console Commands Sent debug command to the game, but there was no output.
I was referring to this one since it was the only thing out of the ordinary I saw
That's not an error, it just means that your debug command didn't have any text to show you in the console. Which it shouldn't do because its purpose is to warp you in-game, not print something to the console.
Ooh, I thought the "output" was maybe something it was checking for, which then sent me back. About the plugin tho, let's get this show started
yes (I might have this one already. maybe but I'd still love to go over it again to see if I got it right). I'll report back in a few though
Yup I got it alr
But this does not seem right
Honestly I can just set up a new map, the old one was just the Cellar with some ingame sprites in it
Did you not use the plugin then after installing it?
You shouldn't have had the tilesheet climbing issue if you used the plugin 
Yeah if you have a tileset called "z-furniture-1" that indicates that you have something unusual happening so it might be a good idea to start again.
But before you do, can you take a screenshot of your layers in the map?
I'll start over, this time with my own tilesheet too, so it doesn't need extra references
Your own tilesheet as in you're going to draw everything for your map from scratch?
Yeah, same I've done for the house
These were the layers
The layers look okay
If you use any assets from vanilla you will be best off using the vanilla tilesheet for it
I didn't really do anything with the layers the "Front-1" and stuff I got from the documentation 🙁
If you copy vanilla assets into your own tilesheet you're a) distributing game assets with no real reason to and b) ensuring that your map will stay blindingly vanilla coloured if people use a recolour mod.
Dashes can be used in names? TIL
Oh, no no. I mean I'd make my own assets and put them into a tilesheet and then use THAT tilesheet to decorate the room
Probably better to delete them then, no point in having layers that you don't use (except Back, Buildings, Front, Paths, and AlwaysFront which are required)
Fair enough. If you make the room itself with the vanilla tilesheets you will still need to set up the tilesheets properly though
They have a specific purpose. They indicate that the layer's draw layer is below the non-numbered one. You can write the positive ones as Back+1 too
Oh, I did use them for some items. But just step by step. If I wanted to use the Cellar map and decorate it with my own tiles. In a really quick step by step how would I do that? Copy the Cellar into my maps first and then rename and edit there? Or open Cellar in the unpacked folder and export into my own maps later?
Oh that makes sense too!
Copy it into your mod folder first, rename it, then open it and set up your plugin settings so the tilesheets load properly.
Ohhh, I didn't know you could go below the layers, that's very useful!
(It is possible to edit the vanilla map and then export as to save your changes to a new map but I think it's too risky. Firstly, you could accidentally save over the vanilla map. Secondly, if you do "save as" rather than "export as", you'll cause tilesheet climbing issues right from the beginning.)
Got it, thank you!
And you probably want to check in with us that it is working properly before you go further than that, since your last map didn't work properly. Don't want you to have to redo again!
Okay 🥺 so I took the cellar from (unpacked) then put it into maps and renamed it
WHen you open it, it should be a big old pile of angry red tiles with an error message saying some or more files could not be found
I set the file for the default unpacked maps and clicked fix maps
Okay nice that looks okay
Now try that in game
The warps will be wrong but that doesn't matter, we just want to see if you can debug warp in and have the map act normal
The warps could work since I didn't change the placement of the stairs
The warp out wouldn't though
I don't think I even implemented a warp out yet
Okay, so the textures work (my character is at the top of the stairs). But it does kick me out immediately
Immediately even if you don't try to move? Or did you try moving?
If I don't move it stays
Yeah that's just because you're running into the warp out
But I moved downwards 🥺
Yes, and onto the warp out
But I haven't implemented the warp out yet. Or is it in by default?
Change your default arrival tile to be at the bottom of the stairs
It's already in there because you copied a vanilla map so it has the vanilla warp
Figures! That's so smart...
It does work 😊
Sadly, clicking on the main door to warp doesn't work still :/
Does it turn into the hand cursor when you hover over the door?
Yes, it do
But when you click, nothing happens?
Yup :/
OKay, can you share your log again please?
https://smapi.io/log/bf9c3e3001184e069225a7115132ea9c the log seemed unremarkable
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 4 C# mods and 1 content packs.
To check, you
- loaded your save,
- went out to the farm
- debug warped to your basement map
- went up the stairs on the map and warped to the farmhouse
- went out to the farm
- went into the forest
- tried to use the door to your basement map, which did nothing
That's right?
yis yis
Hm
I don't know if this could affect it, but you have a space in the LockedDoorWarp line after the 2200 and before the ". Try removing that space.
Okay, patch export time
Can you copy patch export Maps/Forest into your smapi console and then go find the file it exports, open that up, and have a look at tile 80, 79 to see if your TileData is on it?
"When": { "query: {{HasMod |contains=DaisyNiko.SVR3}} AND {{ReimaginedForest}}": false }
can someone quickly glance if im using query correctly here
(ReimaginedForest is a config setting with true and false as possible values)
I don't think that will work because you need to check if ReimaginedForest is false, not just whether it has a value
Eh, I'm not sure. Regardless, you don't need a query I don't think
oh yeah i can just. List them both.
wait but
don't i?
i need the AND query to be false
"When": {
"HasMod |contains=DaisyNiko.SVR3": false,
"ReimaginedForest": false
}
Then putting an AND in would not work
well your query wasn't doing that
There appears to be a lot of tile data
Use Merge
But now that Button is here I will leave you in her hands because she always knows more than me
I'm on mobile!!
wouldn't it? I am checking if the query is false
i originally structured it as query: NOT X OR NOT Y
then i realized I can AND it and invert the result
"Merge: {{HasMod |contains blabla}}, {{Reimagined}}": "false"
Oh that's interesting, I was expecting every single tile to have TileData. You'll need to select the TileData for tile 80, 79 and see what it says.
oh, there's a command that does that? awesome
and hten i can check it for being true or false?
Every tile should have tile data?
Your original query would have only worked if both values were false
oh wait no it's only map edits that has more tile data, thats a vanilla map and so wouldn't
no it wouldnt, true AND false gives false, which is what im checking for
You are correct
Either way merge is better
In the patch export, yes. And it sucks. Although maybe I'm out of date and that's fixed now.
I don't know it doesn't say anything special
merge will give me a true/false result, right?
If either of the has mod or the config/dynamic/whatever it is are false, then what I wrote will correctly detect that
You're not selecting the TileData. You need to click on the pink Buildings layer in your layer list first and then click on the box.
not to my knowledge it isn't with big maps it makes tiled lag so much
ty!
What merge does is just combine both lists of values into one list
Oooh it is fixed
that seems like it would not do what I want?
would I need to contains the merge
Unless it's only affecting maps with rotated tiles
Ah got it, well the warps appears present
For example if the has mod is true and the config is false, it'll become:
"true, false": "false"
When you write the false on the right side, what you are actually doing is checking if the set on the left side contains what you wrote on the right side
ooh, and this construction would be true?
Can you stretch out the properties box so we can see the entire string, please?
TY! right, that makes sense, i forgot content patcher worked like that ^^;
Merge my beloved
Right sorry
I'm pretty sure yes, as rotation is now baked in (Pretty sure I'm quoting someone else who said it)
If they're both true then there won't be a false in the left side set
And if they're both false then it'll just be a single value "false" on the left side
"When": { "Merge: {{HasMod |contains=DaisyNiko.SVR3}}, {{ReimaginedForest}}": false }
right?
should I "" the false?
since we're doing it as text now
yeah
Dunno if content patcher requires the quotes around false if you're specifically checking string values and not a bool representation IDK
can't hurt to add em
No worries! Hmm, I can't see an issue though. Is your map Target still "Target": "Maps/{{ModId}}_Taq",?
also its definitely more reliable to not have to worry about type transitions -_-
Night little Button!
Night button!
yay
the backstory of this question is that i previously had two edit patches that were both doing the same thing but checking for different conditions
i looked at it and said 'theres no way i cant do better'
Yes, but just real quick... can you even interact with tiles that are 2 tiles away? Because there is a tile that you cant walk on in front of the door, could that be it?
gnight!!!
Okay that is the issue, yes haha. I actually thought of that but then I thought you must have made the tile in front of it a Back tile and therefore able to be walked on. No, you can't reach tiles that are two tiles away.
...i should be using cross mod compatibility tokens instead of my own config here :o
🥺 I'm sowwy. I should be able to fix it though
those werent a thing when i was making this mod!
CMCT
Okay, it works :X but only one issue I am facing north when entering, but it would obviously make more sense to be facing south. Where can I change that?
I don't think you can
It might make more sense to rotate your map so you enter from the south
Since your door is on the south of the building
dont SDV coordinates have a third coordinate that sets the direction you're facing?
For events, yeah
anyway i just realized reimagined 3 hasnt been updated for 1.6 so i dont need any of this
it was a good exercise though -_-
Not for LockedDoorWarp
Future proofing! when it's updated (If it will be) you won't need to do it
I think Daisy said she wasn't planning to update it but definitely do not quote me on that
I guess???? I guess with CMCT it won't be player facing...
fine ill call it a CMCT tutorial for me
I was thinking to have it in a way that you enter normally into the house and then there is an extra spot that leads into the basement. Kinda like the expanded farmhouse. Slight issue though. When I leave the basement it sends me back into the farm house. Is there a way to change that in tiled?
Yes, you need to change the Warp map property to whatever you want it to be instead.
In tiled or in Json? 🥺
You get to the map properties by going up to the Map menu at the top of Tiled and then Map properties
either, I'm pretty sure you can do it either
You can do it in either but since you already have the map property there in Tiled you have to do something with that either way (either edit it or delete it)
Ah, Got it!
I'm pretty sure each cellar still rewrites normal warps to go to the associated farmhouse/cabin?
ah, nevermind then, I'm used to parsing basement->cellar
Haha fair and it did even use the cellar map
But it's named differently and has its own location data so it should be safe from hardcoding shenanigans
someone who has worked with CMCT pls tell me if this will murder me without SVR3 installed
"HasMod|contains=DaisyNiko.SVR3": true,
"Spiderbuttons.CMCT/Config: DaisyNiko.SVR3, Forest": "on"
}```
Yes it will
You have to put the CMCT check inside an Include, with the HasMod check for the Include patch
...nested Include patches...
Chu does 'em all the time
okay I have figured out CMCT and I am officially dropping support for Reimagined3 until it updates and someone asks again
fuck all of this
I'm really sorry, I am a bit confused to what format the warp needs to be in. So this right now will obviously bring me back to the farm house. But I need it to bring me to the tile 80, 80 on the forest map (the tile one down from the door)
literally the only thing I would be doing right now is turning off my mod if it's on for the maps im editing soooo. nope.
Warp [<int fromX> <int fromY> <string toArea> <int toX> <int toY>]+
Don't forget you can check the wiki page!
so 4 4 Forest 80 80 ?
Not 4 4, because that's the exact tile that your LockedDoorWarp is warping you onto from the outside. If you do that, you'll get stuck being warped out immediately again. It needs to be 4 3, the tile above the one you warp in on. The other part is right though.
Okay, I put it to 4 1 which is the tile that transitions into the black at the top of the stairs. That makes more sense, that also explains the "4 1" too since the stairs is 2 tiles, they included bot warp sets, just without any separation
@obtuse wigeon Ah yup there we go. Still terrible :(
Guys, Gals and other Pals. We got 'em 🫡 Thank you so much for your help, I am sure that I'll be back soon
I can feel the lag eminating from that image alone
I can feel TMXTile taking 3-5 business days converting that into xTile
oh god, this is "Oops! All TileData!"
patch export fun? 
Hi everyone I'm not really sure where to ask this, but I've been working on an expansive interpretation of my version of Zuzu City mod. And I was just wondering what players would want to see in a mod like that, like any silly little details, side quests, secrets and what not!
It's been kinda hard making up a bunch of stuff on my own for how big I'm making the mod
#modded-stardew might get you more useful answers since we don't play the game much lol
aurr okok thank you!
it may sound like a non-answer, but i like to believe most players would like to see a creator's vision, not their own ideas of what a mod should be
So, first time modder here. Well, sort of. I half updated a mod in 2022, but never finished it.
On a scale of 1 to 10, how intensive is a map recolor? 
Although in here you do tend to get suggestions if you begin by presenting info about something you're doing already but are struggling with implementation. That can get a lot of suggestions as we all descend to suggest how we'd do it lol
6 or 7 on art, 2 ish on code
There have been so many requests for extended quest mods and things that add more story and interaction with the characters. A lot of them have not been updated for 1.6.
If that's something that you're into doing
Code-wise, not much at all. Patience while you painstakingly go through every single vanilla asset...a lot.
yayy tyty I''ll defintely be coming in here for stuff like that, I've just been working on the art so far
I think that adding more quests and character background in Zuzu City would get you a lot of appreciative players
Actually 6 or 7 might be a little low. There's a lot of tiles
Okay, so it's more on the art side that's going to be tedious. Tbh, I will probably get sick of it about halfway through, if I make it that far, but I think that I might try it. 🤷🏻♀️🤷🏻♀️
The more you can automate or use tools for rather than replacing colours manually, the easier it will be I imagine.
Even if you stop partway through, youll still have learned things in the process, so i say go for it!
Very true! Thanks for the encouragement 
it's as intensive as you make it, if you're not too fussy and you're just after a recolour than a full redraw you could maybe get away with some liberal use of filters in photoshop/photopea or something similar
There are some beautiful recolors out there, but I've played them all and I'm ready for something new 🤣🤣
if you're redrawing the game with a whole new theme, that's going to take you a long time and a ton of effort
Something that I think can be learned from mods that haven't done as well as they should if you were just going by how much effort the mod author put in is: don't make a giant space full of cool art with very little for the player to do. Think about what you can do to encourage a player to actually come into the city. VMV is a great example for what to look at on the positive side of that.
Great point! Maybe a mix of both, doing redraws on just a few things. Start with filters etc. And see where it goes
ty for the feedback! yah I really want the mod to have a lot to do and fun secrets and feel like it really is just an extension to the real game!
i just want the mod to be enjoyable to people playing :))
I lurk on message boards and forums, and people love secrets. Hidden notes, puzzles, etc
It creates a really great sense of achievement when you figure it out
I think you're on the right path 🫶🏻
thank you 🥹
How are people on linux making C# mods given visual studio isn't available?
And the VSCode C# Dev Kit isn't available either
RIder
Ahh gotcha thank you
Vsc
the VSCode C# dev kit should work fine on linux afaik
with all the awkward problems it has in general
It really doesn't matter as long as u can setup dotnet n build stuff it'll go brrr
The dotnet setup is annoying though
I can't seem to find a way to download the dev kit, I shall have to look into it further to see if I can
the dotnet set up was quite a bit easier than the rest of it thank fully
Ah okay yeah just use rider
C# Dev Kit helps you manage your code with a solution explorer and test your code with integrated unit test discovery and execution, elevating your C# development experience wherever you like to develop (Windows, macOS, Linux, and even in a Codespace).
the marketplace page explicitly mentions Linux
I'm going to give rider a go for sure
I use that yeah
I have come back once more! Asking for feedback. Can anyone tell me if I have committed no piracy with this? https://github.com/DaanSelen/stardew-multiplayer
Intellisense stuff works
Thats so weird? Linux only has "Code" which is the open source version which doesn't have access to the regular marketplace
Which is VSCodium
I try to avoid Microsoft 🙁
But anyways u can just go use rider
Rider it is
although I do have to install a VM for photoshop so ill also install VS along side just as a backup
If anyone has time, before being buried in messages :*(
looks good to me
I only speak for myself here but I'm just confused by what the use case is
(in terms of piracy. in terms of use case, I continue not to understand)
So i have no useful comments besides check for skip intro updates
no game piracy but it does reproduce mods
those three have open perms iirc
all the closed perms ones are correctly being redirected to nexus now
actually, is the eris.cc site yours?
Hey, I use [CP] on everything except NPCs 😛 (Though some of my 1.5 mods may not be updated to that yet.)
except NPCs
I will put [🔋] and u can't stop me
Since when do you make json mods anyway chu
Before when I wanted to get feedback on my project. I got told off to fix the piracy first.
yeah, it belongs to the original author of the always on mp mod dw
Tell me, why not 🙂
why I don't understand? I just don't tbh
Interesting!
Imo the [framework] convention isn't as useful rn as everything shifts to content patcher
like, what's the point of an always on mp server in stardew
Which is fair, its just because me and my girlfriend wanted to play together but who hosts?
but this way you get the worst of all words imo
May I ask why?
So feel free to just slap ur name there n make stuff sort nice 
because you need the host to progress certain quests etc
and now time will pass when you guys aren't playing I'm pretty sure?
I think the always on server mod does fix some of this
ig [CP] is useful to distinguish from c# mods
(I'm still not going to do that though)
I just edit all my mod folders to fix everybody else's rude folder naming it's fine
But overall I don't develop mods for better usage in always on servers
Making things not blow up in mp is all I'm responsible for
I even do splitscreen support! I feel like that's plenty 
It pauses when nobody is online
That sounds cool
as in, I make my mods not break in splitscreen. splitscreen is already a stardew thing
If it's just u and 1 other tho
I recommend just playing coop the usual way
It's not that hard to schedule
The person who plays more can host 
there was some work in 1.6 for a first party dedicated server mode, but as far as I know is mostly dormant code, I don't think anything actually uses it
Yeah i did wonder about those classes
iirc myu was using it for the mobile multiplayer testing, as having the mobile host was a bad idea
my smapi is saying this?
SMAPI failed to initialize: System.TypeLoadException: Failure has occurred while loading a type.
at System.IO.DirectoryInfo.Init(String originalPath, String fullPath, String fileName, Boolean isNormalized)
at StardewModdingAPI.Framework.SCore.PurgeNormalLogs() in E:\source_Stardew\SMAPI\src\SMAPI\Framework\SCore.cs:line 2511
at StardewModdingAPI.Framework.SCore..ctor(String modsPath, Boolean writeToConsole, Nullable`1 developerMode) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\SCore.cs:line 192
at StardewModdingAPI.Program.Start(String[] args) in E:\source_Stardew\SMAPI\src\SMAPI\Program.cs:line 232
at StardewModdingAPI.Program.Main(String[] args) in E:\source_Stardew\SMAPI\src\SMAPI\Program.cs:line 45
Game has ended. Press any key to exit.
!log Can you share the full log please?
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.
And also explain what you did before this happened
That error is very early in lifecycle and not 100% sure if a log is actually present yet as it blew up trying to delete the previous log
are there any mods that use the dungeon features of spacecore? I might want to dabble and make one myself, but want to see examples of what's already done
moon misadventures might?
dungeon stuff was added in 1.6, and moon hasn't been updated to 1.6
ah
S&S may
i think [framework] is useful when you have a megamod that has six content packs inside it, so it's easy to tell which is which at a glance. but yes, that's less common nowadays since data is eating old frameworks and more frameworks are exposing data assets for CP to edit
I have my test pack too, technically. And a couple people I’ve talked to have been interested in using it. But the only released mod I’m aware of is S&S
The public moon misadventures never even updated for 1.6 (well, it was updated early in the modding alpha for it, so needs updating again).
Moon Misadventures Redux code isn’t public at the moment, and also isn’t far enough to have the dungeons yet
On the other hand, for me personally a Zuzu city mod is simply for making the world feel less claustrophobic. I don't really want to see a lot of NPCs and stuff there, I just want it to be a fact that it's accessible. In that, I really like that Downtown Zuzu connects to Walk to Desert Redux and also all the transportation mods and also the sewer.
(And also I need to add some things to SpaceCore specifically for the dungeon that’ll function like the original MM one)
(More specifically, a way for a c# mod to generate the maps instead of having to use predesigned map files)
(Though the full proc gen thing was kinda bad in some ways, so maybe I should try something more along the lines of the volcano dungeon instead. If that ends up being the case I’ll make it base SpaceCore for other mods to do too)
Oh, by the way, is the person who maintains SpaceCore for Android on discord? I’d like to give them a heads up on the future split (not that that’s happening soon, but still)
oh, there is going to be a spacecore split in the future?
Yeah I talked about it a little yesterday. It won't be released that way until 1.7, but I'm gonna split it locally using shared projects
(And probably use it as an actual split for debug builds locally, just to test it ahead of time)
(Though the namespace and other things won't change even in debug until 1.7)
The motivation is to let people who only have mods using features like animated textures or the UI stuff to be able to play with people without spacecore still (or even entirely unmodded players)
...and also if there's a split, I can add (small) external dependencies to the second mod with less guilt
But like anything adding new net fields will be in the second mod
Unsure about the skill API - technically it's not using new netfields because I wrote it before I started doing that, but it would be simplified a lot by switching to use them
(And also, I'm not sure if I ever got around to fixing it for splitscreen, and using netfields instead would do that basically automatically)
But like anything adding new net fields will be in the second mod
Unsure about the skill API - technically it's not using new netfields because I wrote it before I started doing that, but it would be simplified a lot by switching to use them
(And also, I'm not sure if I ever got around to fixing it for splitscreen, and using netfields instead would do that basically automatically)
please splitscreen fix T_T
I take it I did not get around to fixing it 😅
I get so many bug reports I just close / delete cause it's split screen issues
and I am like "that is outside of my wheelhouse to fix, I apologize"
I was just typing up a draft for what I want to do, and skill API was in the "unsure" section. But if that's the case, I'll definitely netfield-ify it and have part of the new mod
(I'll try to do the netfield-ify part sooner than 1.7 though)
(It shouldn't affect the public API for CP or C#, so should be safe to do now)
The person who forked spacecore is just the android SMAPI dev @ nrtnarathip
also got a link to the test dungeon pack? cant find it
It's not public, I can DM it to you. (It's my generic test-everything-SpaceCore testpack)
I'm not sure what the status of android smapi is atm, there's a 4.1.x stable and then a 4.2.x beta but pc is about to go to 4.4.0 
(sent)
please and tyvm
Notes on The Great SpaceCore Splittening™: https://github.com/spacechase0/StardewValleyMods/issues/529#issuecomment-3293144752 (also @brave fable since you asked about this, too)
For anyone using the serializer API, there's a note in there about that that might be interesting
testing the testpack dungeon. seems like shafts are broken?
just not usable

says "would you like to jump in" and I click yes, and it isn't letting me jump in
Must've accidentally broke them I was fixing a bug I found with them always appearing back when working on S&S
So I won't forget
quick video of it
(I started cleaning up the issue list last night, but never finished. I'll hopefully finish that soon)
Any errors in the console when you do try to jump in?
nope

also the elevator sprite isn't showing up...? dunno if that is intended or not
If I remember correctly, it doesn’t show automatically. You need to place the tiles yourself
okies
Since people may have wanted a custom look
hmmm
I wonder if there is a good way to make upward facing stairs/ladder instead of the downard one. So it would be possible to make a tower rather than something going down
Yeah that’s doable
Well, unsure about the random ones from breaking rocks
But if you do manual tile placement, it could look like an upward ladder
Or literally anything
SpaceCore doesn’t care about the concept of up or down, just next floor and previous floor
So you could make the rock tile ladder a teleporter or something for all it cares
What S&S does is it pre places all the ladder equivalents in map tiles on the map, but the map is still randomly chosen
mhmm
Sometimes they are ladders, sometimes they are tunnel entrances
time to make wizard battle tower dungeon
I wonder if flash accepts prs for c# sve stuff
Reason I'm thinking about it is that apparently sve has a warp pad thing that's normally in front of the warp statue, but a) players have to manually change the coordinates for custom farm maps that aren't flash's own, and b) other modders have no way of replacing/moving it themselves
Which makes it difficult to add compatibility for
I think I've seen him merge some ones from Pathos recently
(Since I was added to the repo back when I was helping, I get emails for all that stuff)
Maybe I'll look into that then. I could also clean up some of the horrible legacy code
Or the horrible casey code
god my wifi is so ass
everyone always asks why is the horrible casey code but nobody ever asks how is the horrible casey code 
I mean it’s in the name. It’s horrible, that’s how it is
xD
Gotta ask deeper questions, like who is the horrible Casey code (as a person)
luckily all of the horrible wren code is buried out back retired to a farm upstate
you aren't generating brand new horrible code?
there's new horrible iro code every time I touch a computer
I mean I'm definitely still doing crimes but my code itself is okay
unrelatable
there's definitely room to improve (as ever) but I don't think I've looked at any of my post-1.6 code and thought "oh that needs to go"
I write Hell Code and then fix it up
(except my transpilers)
going to try and work on a building mod soon
oh nice! what are you planning to put in it?
Clearly you aren’t trying hard enough
the other day I looked back at js I wrote like. a month ago.
I think I might have existed in a universe where logic worked differently when I wrote it
I'm honestly shocked it ran, and it wouldn't have in a sane language because I somehow did (if (thing) ) <= number

I mean okay. there is my monolithic IEnumerable god method in Better Beehouses for the flower locator logic but I think that's as simple as it's possible to make it and still maintain all the necessary features.
And there's still the happy home designer chatbox hack, but again no way to replace that without using some even worse harmony
Arguably there's my map layer transparency thing, but honestly I think that's mostly just used as intended
I dread to see what the compiler does to my flower locator method lol
js is a special kind of hell, and contrary to peoples' insistence typescript solves only a small subset of js's problems
steel smelter
…I just remembered an old mod idea while talking to a friend, and have new ideas for it
Please, I already have so much to do. Don’t do this to me
Hello, how are you? I have several questions, although some are more for getting your opinions.
As some of you know, Cornucopia and WAG add plant-based milks. Since I have a dairy processor in my mod, I wanted to give it the functionality to create plant-based milks, but I was thinking of making them exactly like the ones from those mods, including the aesthetics. This way, if someone has my mod and those mods installed, they won’t get confused about whether my milk works for the recipes of the three mods or the products to be crafted. No matter which mod the plant-based milk comes from, it could be used, and keeping the same aesthetics would make them easy to identify quickly. Each milk would have its own ID, so they couldn’t be stacked. Of course, if you think this approach is correct, I will request authorization to use the sprites. If you don’t agree or don’t authorize me to use the sprites, I will think of a way for them to be identifiable just by looking at them, perhaps something distinctive in the name of my product.
The other thing I want to ask is how to create new categories. For example, I need to add Herbs, among other things, and I don’t know how to create them. I seem to remember that SpaceCore is used (correct me if I’m wrong). The mods I mentioned add Herb and Spice categories; I suppose copying the code would work, but I’d like to understand what I’m doing instead of just copying and pasting code.
I think you should make this functionality depend on the other mods instead of duplicating it
like your dairy processors make plant based milks IF Cornucopia/WAG is installed
Maybe I be old
But I'm not sure i see the issue
are you in need of those items yourself or do you just want to provide compat? If it's the second, don't create identical items, this will just be confusing. Just produce their items if their mods are installed
you can't create new categories without C# (and even with it, i don't think it's done? or a good idea?), spacecore let mods replace the category text, but don't create a new one
you would just make a veggie and have the category of it being herb as display (and have proper context tags if needed)
Categories from spacecore and such are just text yes they got a secret internal category that is a valid vanilla one
I think the reason why people don't tend to make use of new category is because that field is an int
And context tag does 90% of the job now
I understand the idea. The problem is that this would require having the other two mods installed, or at least one of them, which would leave my mod without that functionality. My intention is for the mods to coexist rather than limiting my own mod.
For example, the way of making ice cream is different in my mod than in WAG and Cornucopia, which in turn produces a different product from theirs. Also, some people might not want to have to install the other mods just to get plant-based milk. I don’t mind creating my own plant-based milk sprite, although I try to avoid dealing with the artistic side as much as possible because I have poor vision—not to mention that I don’t have the hands to make things look nice—but mainly it’s more because of my eyesight.
C++ 🤝 javascript
The truth is that I want to give more functions to the processor, and eventually I will need the milks anyway. Even so, if I create them for my mod, I will make them compatible with other mods. For example, my mod can use any type of milk in my dairy processor, so that no one has to worry about remembering whether a certain milk is compatible with my machines or not.
I wanted to avoid using C# as much as possible because I don’t know anything about it, and since I saw that WAG and Cornucopia added new categories (in fact, I don’t remember which of the two mods adds them), my mod mostly uses context tags to maximize compatibility. In fact, I have my mod installed together with the others.
i don't believe you would need the milk, it depends very much of the approach you choose, but you of course can want the milk which is entirely different!
I think I understand. So, when an item has the category of Herbs or Spices, it’s just another existing category with its name overridden, right? But if I have a machine that processes herbs, that doesn’t mean it will process items with that “fake” category, does it?
however, same sprite will be a problem imo, so better to have either compat (and optional content) or different sprite
Context tags, my beloved
Hahaha
I understand, thank you very much.
I suppose they will be context tags, haha, but still I would like to learn how to make those “fake” categories so I don’t have to put a spice or an herb in the vegetables category or another one, because it would look a bit strange.
Spacecore can do that 
Any link that explains how? And/or an example mod?
Spacecore has docs that are linked on its mod page, I think. WAG and Cornucopia both use it, I think, unfortunately I don't know any small examples.
I just learned this myself for my Joja TV dinners. This format worked for me. Just have to use your IDs, and pick out some RGB numbers for what color you want the text to be. I just googled and went to this site for that: https://www.w3schools.com/colors/colors_rgb.asp
Super simple!
{
"Action": "EditData",
"Target": "spacechase0.SpaceCore/ObjectExtensionData",
"Entries": {
"Sable17.JojaBiteTVDinners_A_Cooked": {
"CategoryTextOverride": "TV Dinner",
"CategoryColorOverride": {
"R": 76,
"G": 80,
"B": 97,
"A": 255
}
},
"Sable17.JojaBiteTVDinners_Q_Packaged": {
"CategoryTextOverride": "Frozen Meal",
"CategoryColorOverride": {
"R": 21,
"G": 152,
"B": 205,
"A": 255
}
}
}
}
Yes, but the links to the documentation are broken 🙁
I couldn't find the readme for SpaceCore on the github (gave me a 404), so I just ended up downloading one of the mods that require it for custom categories and looked at their code.
New home for my stardew valley mod source code. Contribute to spacechase0/StardewValleyMods development by creating an account on GitHub.
casey has recently been moving things around
all in the same repo though just in different folders
Thank you! That'll make future stuff much simpler! 
Interesting, really very interesting.
Yes, that’s what I wanted to do with the WAG and Cornucopia one, but I got dizzy with so much code, I didn’t even know where to start looking lol.
(@next plaza you may wanna fix the readme link on spacecore's nexusmods page if you're movin stuff around)
Yeah it takes some getting used to. If the json is large or there's a lot of them, I grab a cup of coffee lol
Ty
Haha
Thanks = )
(I forgot I linked to it myself anywhere. Thanks for the reminder)
Is that all the code? How does it indicate the name of the "new category" and how do you specify which item it affects?
You know my productivity has tanked the past day or two since I opened making mods general back up. Maybe I should remute
Yeah, I try to give small examples for that reason
like if you want to learn how to make an NPC, do not use an expansion lmao
My idea is to create or override a category for some items I plan to add, mostly herbs. If it gets too complicated, I might just put them in the Foraging category and use a context tag like herb_item.
"Sable17.JojaBiteTVDinners_A_Cooked": {
is the item
"CategoryTextOverride": "TV Dinner",
is the category display name
Hi I am having issues making my custom npc appear in the custom location i think i have the correct code but they still won't appear, any help would be great! Thanks
I think I'll do that, and for spices or extracts, I'll use the Ingredients category. I think that should be enough for now.
That is, it’s the name that will replace the category, right? If so, how does it know which category it’s replacing?
!json can you please send your relevant json files using this link?
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.
Hi thanks i think this is the relevent code
{
"Id": "KatyDTK.CP.BakingLovers_Bakery",
"Location": "Custom_KatyDTK.CP.BakingLovers_Bakery",
"Tile": {
"X": 5,
"Y": 16
},
"Direction": "down"
}
can you please send the whole file using the link that governor sent
oh true
i’m not sure about this, but i think you may need to set the home ID to be Default instead of KatyDTK.CP.BakingLovers_Bakery
does your location work otherwise?
hmm i have tried it set to default but she still doesnt appear
have you given your NPC gift tastes? they’re a requirement for NPCs to function
are you following tia’s NPC tutorial?
i do have a gift taste file
You might have to set a TextureName otherwise it might try to load files with the whole character ID
what?
Is it an EditData patch to NPCGiftTastes? We had this confusion last week with someone else who thought the NPC in NPCGiftTastes was a placeholder and it's not
ignore that, I may be wrong
https://smapi.io/json/none/1e98cc484dc14986a965e0cddb3da058 here is the gift taste file

