#making-mods-general
1 messages · Page 370 of 1
Alright, I don't know what to make of that error code exactly so I will leave that to someone else to decipher. It's also 6 am and I haven't slept yet, so I should probably do that
Lol, it's 5:04 am where I am and I haven't slept either. Thanks for the help so far though!
dowe have some c# json object librarians around
I am absolutely not one but I am curious
say i have some data model i'm loading with partial definitions for overrides, e.g.
"Rules": [
{
"From": "BusStop",
"To": "Desert",
"Condition": "PLAYER_HAS_SEEN_EVENT etc",
"MaxSpeed": 50
},
{
"From": "Desert",
// ...
}
]
and i'm currently loading it into a data model with default values in C#
public GameRules Rules
{
public string From = null;
public string To = null;
public string Condition = null;
public int MaxSpeed = 70;
public double Acceleration = 1.5d;
public double Deceleration = -0.666d;
public double Braking = -7.5d;
// . . .
}
is there a reasonable way to have a single defined "DefaultRules": {} object in the data asset to move those default values out of the C# class file?
ideally loading a GameRules DefaultRules object with the values from data, and then overriding the fields as defined in a given other "Rules": [ { ... } ] object, without applying the undefined fields
so they aren't hardcoded?
ig you could make another data asset that's just the defaults? and then other packs can change them? but that seems annoying
well yes but that doesn't solve the field overrides onto an object if defined problem
which is the problem
oh right
I think it's fine But u should use a dict for rules
To make things easier 4 u tho I'd make it a property and check null in the getter on any not allowed to be null fields
a dict as in acces every property by string key, or a dict as in don't use a conditional waterfall to fetch the rules
if I'm getting this right, you basically want some kind of operator that goes value1 op value2 = value2 if value2 is not null else value1 ?
well not operator
but that's one way to do this
I'm not thinking in words rn, I shouldn't be messaging 
Not familiar with Farmhouse Fixes but my guess is that whatever is written there is giving values that aren't valid ones anymore. Have you read the Farmhouse Fixes docs?
I needed to go make sure but basically how the js || operator works
Hi there! I'm having an issue where I'm removing paths in tiled but once I load the game they still appear!
Im doing EditMap in CP I target Town and replace it with my edited tmx!
if this is for a mod you want to release, there will be some compat stuff we'll need to go over later, but in the meantime, are you making a new save every time you test?
things like bushes don't reset once they're in a save
I see. I'm starting the same save everytime I test it so that might be the problem. Also, the map edit is triggered via HasFlag so the changes are made at a later point in the game!
yeah, then it won't get rid of the bushes in that case
Dang. Is it possible to do with c# or basically no real work around?
Ah it's ordered ok
everything is possible with c#
i suppose so, i think though given the behaviour of null here i'd be better off working with json objects directly (assuming they can use undefined?)
Use the BETAS clear terrain feature action
I've also learned this the hard way 
ngl I know nothing about how c# handles json objects lmao
Haha I like that answer!😂
except for that they can use null
I am pretty sure what u r doing is fine
My only warning was against the not string? that u r assigning null
No I haven't. This is getting very frusterating....used the paths and other PNGs I was missing and added them into the mod so I could look at the Cellar. Obviously there's a warp point at the top of the Cellar steps....but NONE of the tiles with tile data on the steps have an action for warping on any of the layers. So I have no idea how I can even return to the main part of the house. ????
All the data states "No furniture"
It's a map property
Have you read the maps page of the wiki? Warps are map properties too. https://stardewvalleywiki.com/Modding:Maps
wait is the issue to do with farmhouse fixes and multiplayer
and warping to the wrong place
(because that's a known bug)
No. It's a greenhouse/cellar mod with one warp going to the wrong place and another not doing anything at all.
Single player save
Not sure how long ago the unofficial fix was made
@gentle rose These are the errors
if you've been trying for a while and are getting frustrated I think the best next step is to send your entire mod as a zip file tbh ignore me
That's already been done iro
wait, are you trying to get from the greenhouse to the cellar?
But Athanasia since you said you want to learn for yourself, I recommend reading the maps page of the wiki and also the Farmhouse Fixes mod page info.
But this is pretty hard mode for your first attempt at mod fixing.
I thought this would be a simple "Go in and change coordinates" and "Add warp point: X, Y, "Name of map here"
(the cellar is instanced and the greenhouse isn't iirc so that wouldn't really work)
(as in cellar to greenhouse should work, greenhouse to cellar wouldn't)
No, cellar stuff is not simple at all unfortunately
It's helpful for me if I can learn from others. I want to implement the fix myself, but if someone straight up said "Here's the problem and why it's not working, and here's how you fix it" like a teacher, I'd appreciate it. I just didn't want someone to fix it and then hand it back and say "There you go." Fixed, but I learned nothing...
We are not withholding the answer from you or anything. I, at least, don't know it.
I probably could find it out, but my brain fog is pretty bad right now so I have elected for an evening of minimal thought to give myself a rest.
I can go from the cellar to the greenhouse just fine. The problem is the cellar stairs warp me into a wall into the main house. There's no "Warp point" on custom properties to change coordinates like I thought there'd be....so I have no idea how it's warping me at all.
Then.....the green house main entrance doesn't work period. I can't go in or out.
I thought this was gonna be easyyy....TwT
so you aren't trying to warp from the greenhouse into either the main house or cellar?
the issue with some warps is that they are hardcoded
i don't know how the cellar warp is working at all
As chu has said twice and I have said also, there are warp map properties too and you need to check those. Plus I believe you need the Farmhouse Fixes mod to even allow a custom warp point out of the cellar to the farmhouse, hence why I keep repeating the need to read the Farmhouse Fixes mod info.
quick question, how costly it is to use trigger action that triggers on location change? i'd like to have maybe two, three quests that complete on reaching a location
aba is one of the more knowledgeable modders so if they suggest something that's always my first place to check
so please do what they asked
going to eat something then i'll be back, feel free to ping me!
Nah i don't think u need farmhouse fixes for that it's just multiplayer
Is modifying the cellar->farmhouse immune from the "warp you to the front door" issue that other warps to the farmhouse have then?
Yeah i believe it is special
So no Farmhouse Fixes required for the entire mod?
python screamer
it's not the 'what' that i'm looking at really, more the 'how' since there doesn't seem to be a builtin way of doing it (memberwiseclone? deepcopy? no idea)
can this GSQ be used on the quest instead?
PLAYER_VISITED_LOCATION <player> <location name>+
Lol
oh for a { ...other, ...this } collection syntax
Ok so made my greenhouse two wide, and making the door work right it's being really annoying, what's to stop me from just putting a warp to the farm there? Obv it'd be janky
But tbh i would read as jobject
Then do the ..
No plz don't actually use the nightmare reflection code
Read as jobject
Do the default application then
r u just making newtonsoft.json read it for u
or i guess cp 
i mean, the issue is to mark the quest as completed, and if it doesn't happen "immediately" people will report this as a bug
Iro no don't
it's simply loaded via GameData data = ModEntry.Instance.Helper.GameContent.Load<GameData>("Mods/blueberry.DesertBus/Data")
does it not work as expected rn
It's fineee but isn't there a quest type for this
atra i beg you rebind enter to period
wha
I'm in mobilllleeeeee ||not Alabama||
Actually use the nightmare reflection code you reacted to
my other suggestion was
private string? field = null;
public string Field {
get => field ?? "default value";
set => field = value;
};
i can look at what exists for quests, sure
lot of vanilla stuff is hardcoded so i figured that was too
but let's confirm
ok there is a field location
let's test this
thanks!
Isn't the greenhouse door supposed to warp to the farm? I don't see what you'd be doing that's different.
do I look like I use code ||just 1 energy a day is enough to help iro actually do some coding. donate now||
the real cost of this method comes from having to write .Value everywhere after nullabullying all my primitives
Miku does NOT talk to people who don't use nullables
New quote added by irocendar as #6500 (https://discordapp.com/channels/137344473976799233/156109690059751424/1395021719709814924)
You will take my energy drinks out of my cold dead hands iro
Okay chu was right, the cellar to farmhouse warp is very easy to fix. Just change the coordinates in the map property from 3 1 FarmHouse 4 24 4 1 FarmHouse 5 24 to 3 1 FarmHouse <new X> <new Y> 4 1 FarmHouse <new X> <new Y>.
energy drinks don’t work on me, I’m already on a ridiculous dose of stimulants 
I keep thinking I should get an adhd check but also I can read rust concurrency books cover to cover so
Ooh! I'm doing something new now. Instead of scrolling my phone between sets at the gym I knit
That's hyperfocusing 
i will likely need one trigger action on location change to give the actual quest but hopefully it'll be fine
(It's fine!!)
I'm getting the test done next month, I'm hoping I'll get explanations for a lot of how my brain works
And fixing the greenhouse to farm warp is just a case of deleting the Farmhouse Fixes properties that are present and replacing them with Action Warp <X> <Y> Farm. But make sure you don't make any edits to any of the maps without all the tilesheets present in the folder or you will break the maps.
Alternatively, you can make the changes entirely within the content.json using an EditMap patch, where you use the MapProperties field to edit the cellar and a MapTiles field to edit the greenhouse(s).
Maybe I'll become the modding weapon I know I could be
I self-diagnosed myself with ADHD a long time before I was officially diagnosed. My psychiatrist just confirmed what I already knew.
I don't put a lot of stock in needing official diagnoses...but maybe that's because I studied psych so I already know enough to self-diagnose lol
hmm
i got my quest but the location internal name is displayed despite my area having a display name
is it because i'm missing something or is the game just not using this field because of mentioned hardcoding?
neither of these work
i feel identified and attacked in ways i've never felt before
arg, i must have one field wrong
Ok, my greenhouse now works fine for my map, but id like to make the door actually work like a door
Just FYI, it's a good practice to thank people who are helping you ^_^
Oh yea! thank you, sorry, i havent been awake that long so im still a little frazzled
All good, I know it can be easy to forget ^_^ If you change that TouchAction warp to just an Action Warp it will require you to click on it to use. Is that more what you're after in terms of making it work like a door? (If you do change it, you have to move the Farm to after the numbers because for some reason they are the opposite way around lol)
@ivory plume hello pathos the schema for content patcher (https://smapi.io/schemas/content-patcher.json) has the wrong spelling for AddNpcWarps in properties, it is looking for AddNPCWarps instead
(Quick get, a PR in for credit before it's fixed manually!
https://github.com/Pathoschild/SMAPI/blob/develop/src/SMAPI.Web/wwwroot/schemas/content-patcher.json)
watch the video I pinged you to. In the mod I'm using, there is a ladder which does warp from the cellar to the green house and you come out of a little hatch. I cannot go in or out out the greenhouse front doors though- which means I cannot get in if I'm outside. the only way in is through the house and cellar.
nou im doing a tourism rn
Ooh, we like a tourism!
Nono, like how we were talking yesterday (i think that was you) where the door is a normal two wide. I got the fake door warp working, thats just for my own convenience while playing with my mod, it wouldnt work on any other farm but my modded one
Are you receiving notifications of my messages? I have fixed the warps and given you advice for how to do the same :)
(I haven't looked at the farm -> greenhouse warp because I didn't pick up that that one was an issue.)
Cutie!
A greenhouse is a building so you dont need a farm->greenhouse warp normally
Nope, this is the first I am hearing of it haha. I am not quite following what your issue is then 
Why is it a problem to have a two tile door?
It works the same way.
I have a 3 tile warp in my greenhouse mod it's fine
You do need a map property warp for Building HumanDoor reasons
I have no clue, but it was a a coding thing when i asked about it before, maybe i can find that convo
Is that specifically for it being more than one tile? The greenhouse I just fixed for Athanasia has it as a tile object property and it works properly.
Well if u don't have any map property warps then idk where the human door would put you
Maybe that is what is needed for the warp into the greenhouse, since Athanasia is also struggling with the warp in.
This is a general building entry thing
By default you are placed 1 tile above the first warp in the building
So wait, this AddNpcWarps... should it be Npc or NPC?
Aha, I see where the problem is!
It's right in one spot, but in another it's capitalised.
I don't know how to cheat my way into having a working greenhouse so I was just using debug warp greenhouse to get inside it lol
Cjb cheats has the option
Ooh thanks
Newtonsoft is case insensitive
The schema isn't tho I feel like it ought to remain consistent
I watched it like three times haha, I just couldn’t tell
It doesn't matter! Also the schema should be case insensitive
Then I hope that can be done yep
Enjoy your tourism+
It definitely isn't case insensitive in Rider, though maybe that's editor specific?
Bring us more souvenirs (pictures of random cats)
Importantly the cats.
This one i saw in China
Hm, yes. Adding a warp map property made it possible to warp into the greenhouse...but the player ends up in the wall because the door is in the north wall rather than the south.
couldnt find it exactly but i found this
Ah yeah I saw that. You were targeting the wrong assets there. Did that get fixed?
Probably not, but ive changed it now anyway
I made the first map have the same size map space as the larger one and put it so the entryways line up, so both of the entry points are at 29 66 now i think
It also makes all the crops line up when you upgrade it
This could be a very nice mod if i can finish it
I still am not sure what issue you are having, sorry
The door by default is a one wide, and i want it two
What is stopping you from making it two?
And i want that to work on any map its on, not just mine
Oh you mean the exterior door
Mostly that second bit
On the building?
I don't know why you are saying it wouldn't work on other farm maps
I don't think anything stop u and i literally have a mod that does it
Because this: Warp 10 21 Farm 28 16 11 21 Farm 28 16 works, I just tested it moments ago
(Chu is there any way to have a greenhouse->farm warp in the north wall without it being very strange?)
yeah if the game sees you exiting the "greenhouse" map it should automatically place you outside the greenhouse door regardless of where the warp is
So without a mod if you just put a warp there
You will be placed at the HumanDoor
(well 1 tile south)
Because the warp i placed there teleports outside of my modded farm where the greenhouse is in, i had to change the cords for that
humor me and change the warps to the wrong coordinates on your farm and see what happens?
bc it should just put you at the door regardless
Is it possible to get the sprites of your character the way you can the npcs?
If that's acceptable then you can put warps anywhere as long as the warp that should be used for entrance is the first one in the list
What's the context
Like for making a sprite set for an npc using character creation
You're not using the map property Warp, are you? You're using TouchAction. Can you get back into your greenhouse from the farm?
It teleported me about 20 tiles away. To the coordinates that it had initially before i had changed it.
Difficult
Darn
Can I edit this? If so, how?
If by "this" you mean a spouse room, yes, edit the Maps/spouseRooms asset.
it's possibly in the maps folder
Thanks
Remember to credit the artists
Make a copy of Maps/spouseRooms.tmx, edit whichever spouse room you want to change, crop the map down to just that spouse room, then use EditMap to patch over just that spouse room in game.
Chu answer me pleeeeeeaaase
I need your Buildings knowledge
So without a mod if you just put a warp there, You will be placed at 1 tile south of the HumanDoor. If that's acceptable then you can put warps anywhere as long as the warp that should be used for entrance is the first one in the list
Additional note is that AddWarps always prepend
Add the "first" warp last
That reply doesn't make sense though because I am talking about warping inside the building and I clearly warped 1 tile north of the warp.
Warping inside...
Yes, from the farm
Did you use an action warp
Yeah that's what i mean
You need a warp at the south that's meant as main entrance
No, my greenhouse (well, Who.M's greenhouse) has a greenhouse door that is in the north wall.
That is why I am asking if it is possible to have a greenhouse whose only door is north wall
That's what those special building warps are for
Okay, so that is the rub in fixing that map. It's currently using Lua to try to get around that issue and the Lua is not working.
They do not obey the normal first warp Y+1 so u can make em target any spot inside
Yep
This kind of thing is why i made those funny building warps
Okay thank you 🙏 My takeaway from this is to tell people who want non-south-wall greenhouse entrances to use MMAP
how do i pull up my crashlog again?
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
These are to be used inside a building's actiontiles
To just create arbitrary warp ins that aren't the human door
Although hm i should check if human door wins over tile action brb
Can I add a custom spouse room? I mean a new spouse room.
Pssst
I'm at work or I'd do it now, but anyone want to update the !freelove command
I am confused by your use of the term human door to refer to the greenhouse->farm warp because according to the wiki the HumanDoor is the tile on the exterior of the building which warps the player farm->greenhouse.
Yep
How
Yup, you just make your spouse room map and then define it in the character's Data/Characters SpouseRoom field.
You can see examples on several marriagable custom NPC mods if needed
I'd explain more but again, work 
Thank you for the information
(Ty Abagaianye)
I wonder why the wiki says that MapAsset is optional. Surely if you are defining your SpouseRoom you have to include a map for it to actually work.
Nah blank spouse room is default iirc
I guess it's optional in the sense of "the code will not complain" because it gives Abby's room as default.
But I think that it's slightly misleading.
Is it actually Abby's? Huh.
Hers is the first in spouseRooms
I was peering at the loadSpouseRoom code yesterday because glymr is having an issue with the spouse room not loading sometimes.
yea but it also affects where you leave
but hm it is good that you remind me of this feature aba i think i broke it a while ago 
since someone is potentially use it ill do a quick fix rn
i dont understand why it just started acting up
Log found, uploaded to: https://smapi.io/log/1a79815e8e4647f58c4ee0ab14753b19
please help
I think I am getting caught up in autistic pedantry here and I think I can see what you are saying so I will stop being pedantic haha
Did you do anything to do with your graphics card? Like did it do an auto update of some drivers or anything?
if it helps, i had a similar issue earlier this week. simply restarting the pc cleared it up
I already restarted it 😦 its been giving me problems for awhile and sometimes something just breaks
No i didnt touch anything but the tiled maps, and my content folder, but i undid everything i did so bleh
Well don't touch the content folder
Probably didn't cause your issue mind but
!xnb
XNB mods often break the game and are not recommended. See:
- using XNB mods for more info and a list of Content Patcher alternatives;
- reset your content files to fix problems caused by XNB mods.
For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).
I have no idea if verifying your game files could help but you do have a modified xnb in there so it's probably worth verifying to get rid of that anyway
lol Lyoko same brain
I do have one xnb mod, might just make a replacement for that next
Its a cellar replacement
If nothing else, you can just turn it into a CP mod by Loading the .xnb with Content Patcher.
Wait how do i do that
exactly the same as you would load a TMX map to the same target, but with your xnb file as the fromfile
Action: Load, Target: Maps/Cellar, FromFile: assets/cellar.xnb
Assuming this is something I'd have to do with C# modding.
But I'm wondering if any other mods have done it first.
Adding more travel options than just the bus or boat that you get on and go places. Like say, making the train station functional.
Theres a mod that does that i think
there's central station
it is a framework with a content pack associated, and people can do more of said content packs
!vmv for ex has it as optional compat, so you can use train to reach the place
Visit Mount Vapius (https://www.nexusmods.com/stardewvalley/mods/9600) is an expansion mod that adds a new region in the mountains. Accessible by train, you'll enter the hamlet of Glimsap, with its tight-knit group of villagers, that holds a market twice a week. You'll get to explore new places, fight monsters, get new crops and forage, trade local coins for exclusive goods, and complete tasks to unlock special items, including machines, buildings, and animals.
what's wrong with the bus..
you have to wait for pam to wake up?
blueberry boat game when
i'm literally publishing bus game
yes im already clamoring for sequel
was just wondering cuz the mod idea I'm thinking of tossing myself into the deep end on is kinda involves making a new town. The kind of project I might never finish but like to poke at just to practice skills.
Start out small, figure out how to add new NPCs and stuff. Eventually move on to figuring out the mapping stuff. Maybe make my crazy idea a reality one day.
then my suggestion would be to use central station to go/come from there
{
"Format": "1.5.0",
"ConfigSchema": {
"GreenhouseType": {
"AllowValues": "Garden, Orchard",
"Default": "Garden"
}
},
"Changes": [
{
"Action": "Load",
"Target": "Maps/Greenhouse",
"FromFile": "Assets/{{GreenhouseType}} Greenhouse.tmx",
}
]
this is fine right?
crazy idea for the mod was that the player would live in the new town and have it's own story associated with it. With a 'maybe if I can figure it out' pipe dream addition of adding in stardew valley as a vistable place though restoring the train survice 😄
its not working anymore
do you have a } at the end of the file that you didn't send in that message?
please do also send a link to the parsed file at https://json.smapi.io
it is ambitious so i would suggest having it existing first, then figuring the details of letting player start here
no
Even just making one single NPC is quite a big first project! So go for it but realise you're not just throwing yourself into the deep end but right into a rip lol
very basic barebones npc isn't too much but probably not what ppl have in mind when they say make an npc 🤣
@vernal crest ok i fixed the feature bolb
u add something like this to the greenhouse
"ActionTiles": [
{
// special alternate door
"Id": "{{ModId}}_WrpBuilding",
"Tile": {
"X": 3,
"Y": 5
},
"Action": "mushymato.MMAP_WrpBuilding 4 4"
}
],
Plus you have to remember that for someone making an NPC for the first time as their first modding project they're having to learn a lot of concepts. Once you know them it's quite straightforward but before then there's a lot of mystery lol
and from inside the greenhouse you can add a building layer action mushymato.MMAP_WrpBuildingOut 3 6 to leave by using the door
rather than regular map prop warp
u should move the default greenhouse humandoor somewhere else 
Okay that makes sense I will play with it...at some point if I do not die in the next few days
no die pls
Hi all! I'm trying to test a mod I've made that changes the look of the white cat sprite in game. Unfortunately, I don't have a save with a white cat and I can't seem to edit the save file to give myself one. Plus, the Shrine of Illusions in the Wizard's basement also doesn't let me change the cat. Any advice? Or does anyone have a save file with a white cat
I feel like there's a command to give yourself max pet friendship, then sleep a couple days and new cats available at Marnie's
I'd have to check what that is though
Ooh I didn't even know that was possible
It would be very easy to make a mod that tied this to marnie friendship i think
So if I just use that code, it'll unlock cats at marnies?
I've got a white cat in my save :D (tho I just had to make a new one, and I'm playing on Android so idk if there's gonna be issues)
Consider adding new pet breed instead of replacing white cat
That unlocks the pet store yes
If I knew how to do this, I would haha
^ see above. it's actually just as easy as replacing a vanilla cat but more compatible
I'm looking to add a repeatable event, but on random days. I am open to it being triggered by mail, or by dialog, but the idea is that you have to do it that day, and if you miss it, you need to wait for another random trigger.
Ideally I'd like to do this all in CP
My first thought was using an worldstate ID, but I dont know how to remove one of those at the end of the day if the event isnt seen.
Any ideas?
use flags and use trigger actions to remove them/enable them as needed
Take a look at Date Night Redux's triggers if you need examples. You can add the randomization in there easy with random flag applications
What would I use to remove certain flags at the end of a day?
Also triggers
trigger actions
Hence why I suggested DNR's if you need - I do exactly that for the dates
Ok Im starting to understand. Is there a trigger action that adds/removes a worldstate ID? I cant find one on the wiki
do you need it to be a worldstate id and not just a mailflag on host?
finally got back into finishing my mod 😄
And an event can have a precondition that is having a certain mailflag?
yes
ahhh ok i see. Thanks!
would you mind elaborating on this? i also have a quest that needs to update sorting immediately upon completion and resorted to using a trigger action on location change. if there’s a way around that i’d love to know!
if you have a quest with objective location and a location id in the field for completion requirement, then it'll be validated on reaching the location
i don't believe this is of much use for other quests however
For item delivery, you can put $action into the final dialogue
Ok, slightly different problem. The letter doesn't get removed at the end of the day. What is wrong with this code?
"Mail_HVAHL_Miss": {
"Id": "Mail_HVAHL_Miss",
"Trigger": "DayEnding",
"Condition": "PLAYER_HAS_MAIL Current HVAHL",
"Action": "RemoveMail Current HVAHL received"
},
did it actually trigger?
without something like MarkActionApplied set to false, a trigger action will only run once, store its id on the player and not attempt to run it again if its run before
oh smart 
still doesnt work. I made a new save, and the first time I got the HVAHL letter, it wasnt removed the next day
can anyone explain buff icons to me? i thought I did it right but I always get the first buff icon only from all the 8 i did. heres one of my examples
{
"Duration": 860,
"IconTexture": "Mods/{{ModID}}/vww_fishmonger_bufficons",
"SpriteIndex": 7,
"CustomAttributes": {
"MiningLevel": 10,
"LuckLevel": 10,
"CombatLevel": 10,
"FarmingLevel": 10,
"FishingLevel": 10,
"ForagingLevel": 10,
}
}
],
"SpriteIndex" should be "IconSpriteIndex", so it's just missing that and defaulting to 0
oh, really? i guess its wrong on the wiki then because i went by the example there, thanks!
it seems correct here, at least, though the modding wiki may vary
https://stardewvalleywiki.com/Modding:Buffs
I would probably get a patch summary on your mod if it isn't applying
ah i was looking at the objects page part where the buffs were
I think there's a specific way to check validity of a trigger action prereq too
ah, yeah, looks like that's incorrect
object buffs do have different fields, but it should be "icon-" there too
(edit: fixed)
with this when all of them are wearing it it clips is the only option to make the head thing smaller so it doesn't clip and or even touch?
What are you using to determine if the 'letter' is still there?
Looking at my collection to see if I have the letter
(the naming convention would like to have a few words with you. The words are "{{ModId}}_ as prefix pls")
},
"Mail_HVAHL_Miss": {
"Id": "Mail_HVAHL_Miss",
"Trigger": "DayEnding",
"Condition": "PLAYER_FRIENDSHIP_POINTS Current Abigail 1",
"Actions": [
"RemoveMail Current HVAHL received",
"MarkActionApplied Current Mail_HVAHL_Add false"
]
},
"Mail_HVAHL_Add": {
"Id": "Mail_HVAHL_Add",
"Trigger": "DayEnding",
"Condition": "LOCATION_ACCESSIBLE Railroad",
"Actions": [
"AddMail Current HVAHL",
"MarkActionApplied Current Mail_HVAHL_Miss false"
]
},
This is the current code
The first condition is just to make it so it always triggers
wooo my buffs have diff icons now, yippie
but letter only comes once, and is never removed nor resent
i got a bit artistic with them but yay icons! now i really gotta check why i have 500% crit multiplyer cuz i think i understood them a bit wrong with the buffing lol
(i also cannot unsee the purple log looking like a cat paw)
the last one kinda does too 
Paws everywhere with eyes to see
maybe my cats influence me too much lol
like is it okay if they are touching (I made it smaller)
might be a good idea to see if your program has grids
then you will know if theyre properly in their space
i mean i see some sort of grid in the bg but idk f thats jsut the programs general bg or something but yea
it's fine for textures to touch as long as they're in their bounding box (source rectangle) and those are all 16 pixels across so those are fine
I see the problem
You have "MarkActionApplied Current ... false"
But that's not the syntax for that
How I Can make this Look normal?
yes it is
MarkActionApplied is an action
MarkActionApplied is also a trigger action
so you should look at the docs for that too
Ah, misread the location of that - on mobile so the formatting looked strange and figured it was in another section. (I do know that's a way to do it - it's how Darkroom Portrait Shop was set up originally.)
MarkActionApplied the field allows an action to mark itself as not applied
MarkActionApplied the action allows marking other actions as not applied
Ok thanks
It does seem like swapping it to field on each would help with both code clarity and attempting to debug though
It doesnt work🥹
ty!
the way they want it done must be done as the action they have it now
because they want one trigger to unapply the other
Where should I put MarkActionApplied?
Right. Recieving the letter should allow it to be removed at the end of the day, and removing the letter should allow it to be resent the next day
That's not to your issue princessclara
I have no clue why it isnt working
Sorry for confusion
Oh ok
Not particularly. If you unapply immediately, it won't trigger without the mail flag in the first instance anyway. (God I hate being on mobile or I'd try and explain with DNR and DPS examples)
Or at the least just adding a "they don't have this mail and random is hit"
you AddMail action doesnt have a time set so it will send tomorrow. have you tried sleeping again
If this isn't resolved in like 5 hours I'll give examples, but button's a pro so I bet it will be
many times 😔
a trigger cannot unapply itself
not with the action
they can set it to NEVER apply, but theyu dont want it happening every day
That's why I said to use the field
that would make it happen every day
Only with the current preconditions. They said, at the outset, they want it on a random
Every day is the goal for debug
Here
Remind me in 5 hours - this
you bet your tail I will agentlyoko! (#6777675) (5h | <t:1752708539>)
(also im still on mobile, is why im not offering much more help right now. will be at my desk soon though for a proper look)
Ok, thank you so much. Yall are so helpful
You know how you have to escape certain characters for Content Patcher (and more) to accept them? If I have a string, is there a way to get the string with the necessarily escaped characters now escaped? Like if I input "my\string" the output is "my\\string" except the solution would cover all instances of needing to escape. (this was a weirdly hard question to phrase)
My goal is to be able to print out in one case the string that the user should be writing in their CP mod
you have to escape the character as n ormal, but then also add another escape before it, and escape that escape
so my\\\\string for example becomes my\\string when outputted
(i wrote it with 4 slashes both times)
i think the problem actually is that in order for them to even get that my\string input theyd have to know how to escape already
but if you're controlling the input then its fine
No lol
Maybe I still phrased that poorly - I'm making a framework mod in C# so I don't have to escape as many characters as a CP mod would have to. But my output to console is to instruct a CP modder what string they need
tbf this is a tiny "could be neat" feature that I can just drop if there is not a good solution
then you'd be controlling the input, so that way should be fine. you do have to still escape the characters when you're writing a string in C#
you can also try C#s way of writing strings literally that i always forget. i think you put a @ in front of the string like you would a $ for a string template?
Oh, true, I forgot that C# has that string literal - I think I'll end up just ignoring this for now and add it later if I have the brainpower to work through it then
basically you cant take a string and output it as it should be escaped bc the characters you're worried about will have already done their special effects (which is why you're even worried about escaping in the first place)
you have to come at it a bit backwards and construct a string that will basically escape itself into the correct form as the output
ive taken another look at this and i believe the problem is actually that since Data/TriggerActions is a list, trigger actions run in order. you have your Miss trigger action happen first, which removes the mail and marks the other trigger action as unapplied. then immediately after that, you have your Add trigger action, which has just been marked unapplied so its free to trigger again, which will immediately add the mail back to be received tomorrow. then DayEnding finishes and its tomorrow, so you have the mail again immediately
(and because your Add trigger action marks the other one as unapplied, the same thing will happen again the next night, and the next, forever)
Unfortunately, the mail isnt added every day
its the opposite. It gets sent once and never again
you said it was never removed
By that i mean the letter never dissapears from my collection tab
Unless that wont happen regardless
the collection page specifically looks in your received mailbox and looks for a matching entry in Data/Mail
if its not in your received inbox and its not in Data/Mail it will not appear in the collections page in the first place. if one of those things is not true then it will not be there
There is not a function to call that escapes a string for you
right, and the "Miss" action removes it with the "recieved" data, so why doesnt it dissapear from the collection?
is this your entire json?
No, the setup stuff is also there
!json
I have other actions in this file that work perfectly
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.
the relevant stuff is at the end
And the thing with the 1 point of friendship with abigail is because im not sure how to make a codition that always passes regardless
you can just omit the condition entirely if you want no condition
and have TRUE as an always valid condition
(but clean stuff is better, so i would go with Button's suggestion)
and you have the required friendship with all of those NPCs at once in your test save?
Yes
The letter appears once, but after you read it, it never is removed, and never gets sent again
can you try changing RemoveMail Current HVAHL received to RemoveMail Current HVAHL All?
Yay! It works!
Funny how it was that small of an issue
It fixed every problem with the system lmao
i have no idea why that fixed it, for the record
Ikr? “Received” is the only part of “all” that really mattered
Anyways, thank you so much
i feel like by all accounts "received" should have worked, especially if it was showing in your collections page, but... c'est la vie, i guess. those actions work with player netrequest fuckery stuff that im not qualified to debug, so. glad it works now lmao
where does making a custom dungeon fall on the scale of “do it with CP” - “wait for 1.6.16” - “learn C#”?
define "dungeon"
enter a location, fight some monsters (ideally custom ones), unlock next room, repeat
i don't believe 1.6.16 will help with that at all. My bet is either CP and compromise on a few things, or CP+spacecore and deal with the set piece feature
but this means tinkering a lot by yourself with documentation and S&S examples
it’s been a minute since i played the volcano lol iirc the difference is that the mines have different levels of difficulty?
sword and sorcery?
SpaceCore actually has an entire Dungeons component to it separate from set pieces, though how understandabl the docs are will vary from person to person
and its more like the mines, i believe, with floors
but ive not messed with it much so i dont know how customizable it is
and yeah what lumina said about the differences
volcano also has like gated exits with buttons you need to press
yes
the vibes of this one would be like a maze, so i guess it would be more like volcano
VMV has a serie of maps with fixed entrances/exit, and spawning monsters, for ex, no custom C# for that except a bit for some drops
you could probably do some stuff with FTM + BETAS
the BETAS for the monster-related triggers and queries and instant map patches
so it depends of how much you want custom stuff and how much ready you are to try stuff
makes sense! i’ll mess around with spacecore and BETAS since those are already dependencies and see where that gets me
related question: can i gate a whole section of game code behind a conditioned include? so like only include dungeon stuff when has mod framework
includes can have When conditions so yes
as long as everything that uses that framework is gated behind it, its fine
cool
(it might also be fine in some instances if some things are not gated, b ut why risk it)
yes, just a note that, as a mod author, if too much is gated behind a framework i prefer to make it mandatory
(easier to just say "gate it all" than list the exclusions)
i have one very dedicated player on android where BETAS doesn’t work and i don’t want to release separate versions from here until forever
it also depends of how much users may miss stuff
that makes sense, as long as you're fine with the downsides
downsides for the player or downsides for me
(ive still never been given an actual log for android for BETAS so i dont even know if it actually "doesnt work" entirely or if just a few specific parts dont)
well the player here has no downside since no mod at all is worse, and i mean more generally for the players, and so for you when they report stuff
oh i can ask this person if you want! unless you’d prefer to ignore it entirely which is so valid lol
ah gotcha
nah no need to do that, just more amusing to me that a couple people using BETAS have gotten reports about it but BETAS itself hasnt lol
that is funny
yeah, modders experimented will all sort of stuff so it's nice being able to, it's just about knowing what can happen sometimes
Can I quick ask what I have Done wrong here?
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Ican tell you already you're missing a comma after the } on line 28, but you should share your json in the link above so you can see all the issues that might be there
the comma won't actually help as the issue is that they have that bottom patch completely outside of the overall json object rather than inside their changes field
presumably just pasted the bottom patch at the literal very bottom of their content.json
(kind of on this topic, is your json tutorial still working? because I tried it yesterday and it wasn't working on my pc and idk if it's a firefox thing or if it's partially down)
Speaking of commas, looking into some mods' json files, I have found multiple instances of trailing commas toward the end of the files. Normally this would invalidate a json. Does Smapi just process it anyway?
Newtonsoft allows quite a lot of things like that
(the lib we use for JSON parsing)
trailing commas, comments
wait why do you have a warp set at -1
do i need read both the making a crop tutorial and adding a crop tutorial
you should really read as many tutorials as it takes for you to be able to do what you're trying to do
never hurts to read multiple
(<insert rude interruption>
We're thinking of a bit of a tweak to the !json command. Thoughts on this new version?)
!json2
If you need help with your JSON file
Please upload it to smapi.io/json to see automatic validation and share the link here.
Recommended tools
When making mods, it's recommended to edit your files in a text editor with JSON support. See the !software command for a list.
its says json is obsolete on the tutorial in favor of cp
JSON Assets, the mod, is obsolete
JSON is just a file format that both JA and CP uses
If you need help with your JSON file
Please upload it to smapi.io/json to see automatic validation and share the link here.
Recommended tools
When making mods, it's recommended to edit your files in a text editor with JSON support. See the !software command for a list.
also for what it's worth DH, this takes up nearly the entire screen on mobile
Yeah, that's not ideal... trimming the title down is next.
I'd say only the validator title should be big, everything else should be at most bold
but that's my opinion haha
i need help formatting a token for a when condition.
I want a patch to apply (token value)% of the time.
"Query: {{Random: {{Range:1,101}} }} <= {{TOKENVALUE}}": true
Would this be a proper format?
the logic is sound and I don't see any problems immediately with the syntax but I can't quite remember query syntax
Consider the extremes, and whether the logic would apply correctly. If token% is 0 then you want it to never apply, that checks out. If token% is 100 then you want it to always apply, that may not check out if the random value is 101.
Or is Random not inclusive?
still works fine for me in firefox
token max value will be like, max 30?
currently i think the max possible is around 20
maybe instead of headings, we could have the line about the validator itself be big and then everything else can be heading free normal text? like
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
Use smapi.io/json if you need help
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. See the !software command for a list.
oh I accidentally disabled ping lmao, hopefully DH sees this
i'm also ok with 1% of inaccuraty as long as it doesn't cause stuff like crashs or whatever
That's a good idea, iro
(personally i think any big text at all in the command looks kind of weird)
I'm just saying, it's not actually applying token% of the time if 100% does not result in 100% but 100/101 %. So it's just being nitpicky, but fine if close enough is all you're looking for.
I do too but people never see the validator text right now
so I think it's a necessary change
bold would help, and isnt big
thanks! 🙂
i am just one opinion though, thoughts were asked for and thoughts were given, i dont think its a necessary change
isn't random exclusive on the final argument?
same here 
yeah i don't remember exactly why the first condition i used was like that, what i care is having a stuff that works roughly, so i appreciate people confirming nothing is looking too amiss
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
!json2
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with your JSON file
Please upload it to smapi.io/json to see automatic validation and share the link here.
Recommended tools
When making mods, it's recommended to edit your files in a text editor with JSON support. See the !software command for a list.
Sorry, just wanted to see them side-by-side for comparison sake
it cantb e exclusive bc its not exclusive to numbers
{{Random: hood, jacket, raincoat}} doesnt make sense to have raincoat be non-chooseable
I meant range I'm just being bad at words, sorry
related to the json command, can we link buttons' json tutorial in it (if you're comfortable with that?)
and or have a separate command for that? i can never find it for people haha
I think that should have its own command tbh! so we can link it separately without adding a line to this already long command
~~or button can add a proper link to it on her website
~~ /lh
RE: this json2 command, i feel like the "See !software" part doesnt really make sense to put in it... like i get why it is, but its either not gonna be useful to the person anyway, or theyre just going to immediately do !software after it and then we have governor posting two commands back to back
in which case you might as well include it in the command
I agree tbh
but iirc the software command is quite long, so i think its fine to just leave off the last sentence, personally
it's not any shorter than the current !json version that does list it
or say "such as Notepad++ or Visual Studio Code"
There's so much information that would be helpful to cram, but then it becomes less useful when it gets too dense. Like showing file extensions, adding a json schema where applicable. It might be nice to list supplementary commands that bring up extra info, in addition to software.
my opinion is that we should have a command that just links to the json validator site
since thats... basically all anyone is gonna recommend
I'm 100% fine with removing it. It's just there because the previous version has that snippet. If the consensus here is to just not have it there, I'm good with it.
I'd say we should remove it then tbh
the vast majority of the time !json is used it's to beg request someone upload their json
the previous command links to three editors specifically, which i think is fine and better than directing to another command
We were discussing the possibility of having a !tools command
pay me to finish my tutorials /j
and if you want to tell people to install vscode or n++ I think most of us would just tell them that
rather than use a command
commands are useful when there's something we need to remember or that's too long to type
Yeah, I'm kind of thinking like a command reference, like !json_commands where it has links to different commands for diving deeper into json knowledge
is thier tutorial for making sprites
(i dont really know what peoples/junimos standards are when it comes to what should go in a command, especially one used that often as it kind of implies some sort of "endorsement" or vouching of whatever is linked in it, and the biggest issue with my tutorial is that it is not exactly mobile friendly)
I mean there's a lot of commands for specific mods
there are guides on pixel art you can view, or my advice is to use vanilla as a template and color over them
...I kinda want to add the tutorial.
The quick json response is mainly to get the smapi link out there for sharing, so it would probably be more effective with less distractions
i do agree with this myself as well
im assuimg for a format i need ot know how to make a manifest json
There are quite a lot of them honestly. You could go to #governors-mansion and use the !pixelart command as well as !pixelartinfo
Maybe json can be slimmed down, and json2 can continue to be the detailed response for someone wanting to learn json

like the !log command just tells you how to share your log
(Oh, json2 is just the staging ground for what will become json.)
making a mod is complicated all im gonna say
I like the idea of json being parser command and json2 being info command
Or like !jsonhelp or something I dunno
you can add command aliases, right? what about !sharejson and !sharelog
what if
!json
Use smapi.io/json if you need help to see automatic validation and share the link here.
!aboutjson
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
A JSON tutorial by button is available at ...
It's recommended to use VSCode or Notepad++ to edit JSON.
Maybe this needs a thread, actually... so that json command.
yeah good idea
give me a link to the json tutorial
(please goes a long way here, just fyi)
I can understand. Here's the link: https://stardew.button.gay/tutorials/json
you have also been linked the tutorial before as well
!patchparse using a command for myself don't mind me
well OF COURSE
it never works (i will ignore all the time it does)
now to test the token
but the patch is applied so progress 😄
it's not entirely new, more, a bonus way to access something existing, but i may have new stuff added too
now, if i wanted to have something perfectly clean i would need to patch coordinates back but hu
this is sounding like headache so maybe another day
I was looking at that new path opening/archway
||you see the random rooms at the end? the idea is that, on a given day, you already get access to one, then two, once you progress. It will be opening access to a third but randomly||
so it's not entirely new in itself BUT ||i want to add a fifth room||
we'll see how it goes 😄
Wishing you luck! 
thanks
current objective is reading patch parse doc
checking that i have all my tokens in a row like behaving little ducks
so far so good
and gusy if it not too much trouble to ask is their and art guide
ok tomorrow i'll try to look at the book stuff
and then the room maybe
hmm there was the sundrop one
i don't remember the command
try governor mansion
!artguide I try my luck
well OF COURSE
!pixelart
Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.
To start, you'll want an art program. See a list of recommended programs in the !software command.
Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab
To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.
Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396
SDV has a few quirks to remember too:
- Colour limits: Limit the number of shades you use - stick to six including the outline.
- Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
- Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
is this list correct? https://mateusaquino.github.io/stardewids/ 
Yes
are you noticing an error with it?
that is the recommended resource, if that's what you mean
No, no. I was just making sure, the mod I am working on seems to have an item outdated so I just wanted to double check
thank you for confirming!

ive got an idea
i think it will work
thank you modding community
your all amazing people i hope you achieve your dreams
i have an NPC who's unlockable after a series of quests/events. a player is getting errors about her not being added to festivals, presumably because she doesn't exist yet, is that correct? if so, do i need to conditionally edit her in when the mail flag has been set, or can i do some sort of optional add-in like Kent? for the festivals
Log Info: SMAPI 4.3.1 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 16 C# mods and 6 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it
I don't know if this will fix it, but you could just spawn her into the void on the festival maps? Seems like an easy solution (probably not, knowing how modding typically goes
)
oh no the issue is that i added her to the festival map like normal--it's not that she's there and she shouldn't be, i think it's that it's trying to put her there but can't find her since she doesn't exist
if that actually is what that error means
your NPC should exist from the beginning of a save, she should just not show up until you want her to
the NPC straight up not existing causes issues in multiplayer and other things
okay so i misunderstood what unlockable meant then
@calm nebula you know more about this
No that's fine that's how unlockable works
Just put a thingies so they don't get added to the festival if they don't exist
didn't you keep telling me that npcs should exist at the very beginning 
Now I will continue to not exist
okay cool that's what i thought the fix should be, thanks
Their base portraits and sprites
ah
i'm playing the game
I'm scrolling an app eating dinner
and i modded it too
I lost the game
illegal!
I'm eating an app and scrolling dinner
YES yes yes yes got a new idea kaiju
tasty
what kind of app? you need to have a balanced diet, not all apps are nutritious
just put a thingies
Discord, so junk food
(Too good to go, actually)
Not very promising ngl
I was hoping for heb or whole foods leftovers
I got something decent from that a couple times
I don't have one where I live now, back home it was a pokey little south indian place lol
is auntie anne's fast food? i am a huge sucker for their pretzels
hell yeah brother
Mhmmm... Mall pretzel
@wanton pebble: this (5h ago)
I saw it got solved we gucci
AUNTIE ANNE’S MENTIONED
god I could go for a cinnamon sugar pretzel cup rn
Hi! I'm kind of new to modding, and I'm working on an event for an NPC. I was wondering, how do I add an ID to a dialogue option?
what layer does IsGreenhouse T go on?
it's a map property, so it goes here instead of a layer
kk ty
does anyone know if i can (and how I can) plug in an animation from my animations file into spouse patio animation frames? The animation i'm looking to do is larger than the typical size, and I'm not sure how inputting that into the 'frames' section would look like
Can you add multiple /A preconditions to a single event? If so I suppose it would look like this? /A ConvoTopic1 /A ConvoTopic2
Sure
Good to know, thanks
So...that field needs to be a list of entries like "SpriteAnimationFrames": [[20], [20], [21]], optionally with a specific duration (in milliseconds) after each frame, which I think is the same between data animations and the patio (100ms).
If you're okay with the default durations, you can copy the animations you want (like the part between slashes) into a text editor, then use CTRL+H to replace the text like this:
(4 images
)
(also you can modify it slightly to add durations, if needed)
don't use the short preconditions any more please, they're deprecated. Use the long version
speaking of short/long preconditions
{{ModID}}_BillSeb/SawEvent {{ModId}}_BillLinus/Friendship Linus 1000/Friendship Sebastian 1000/Weather rainy/Time 900 1800":
Something seems to be wrong with the friendship bit? I get the feeling I'm using it wrong with multiples
(I'm converting my short preconditions to long ones and the previous way had /f for both)
Ive currently got an error that crashes my game, and it says that it can't find a xnb file for a custom spouse patio im trying to make. How would I get that patio? I assume its an issue with my content json or disposition json, but I can't figure out whats wrong
I think you can consolidate it into /Friendship Linus 1000 Sebastian 1000/, but that seems like the correct check for 4 hearts
in general that means it's looking for an asset in the wrong place, or one that hasn't actually been loaded when it should
probably necessary to share the log and dispositions for more specific help
https://smapi.io/log
https://smapi.io/json
the crash log is really long lol, its the easiest to search for the error by looking up 'phainon'
this tiled stuff is quite difficult 
you'll need to upload the log to the log link, not the json, it won't even load for me in the json one 
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on macOS Unix 14.5.0, with 29 C# mods and 21 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it
i forgot to remove a bunch of my mods while play testing so those are just gonna be there
!tilesheetclimbing
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
^ it failed to load the spouse patio map because it was last edited without the tilesheets in the same folder, I think
(not my area of expertise, but it's a common editing issue)
it doesn't help that my validator shows that one line differently from the others. Hm, wonder why
(not the online one, just the one in my text editor)
that error just means the source of the tilesheets is not in the folder bc you probably just navigated to your Unpacked folder from inside Tiled to select them
if the map was last edited and saved without tilesheets present (in the folder or otherwise) you get GID errors
(you can also try tossing it into my map fixer if you'd like, but you'll want to move the tilesheets into the same folder as your tmx if you plan on editing it further anyway)
would that mean just to resave the tilesheets inside the folder?
is your working folder different from your actual mod folder? i.e. do you copy the stuff into your mod folder after you make progress
bc that kind of tilesheet climbing is a little strange in that it does climb up and then back down into your mod folder
no, all my progress is done in the same folder, but I am pulling assets from other files to help me with my project
and the only way i can think of that happening is if you were using Tiled on a .tmx in a different folder somewhere else and selected your sheets from your mod folder
like one of the tilesheets in the folder is a sheet i created from scratch, but the other png is one I pulled from a different mod's folder as reference
ah thatd do it, same thing basically but with a different mod pulled from then
then yeah you dont wanna do that, you want the .pngs to be in the same folder as your .tmx when you select them in Tiled
if you fix your map by hand or with my map fixer and then just move the pngs into the same folder as your tmx, it should just work
alright, thank you so much 
So anyone know the chat debug commands to build buildings
no, you should strip the /../../ stuff out of the second one so that you just have SpringOutdoors.png
alright, ty -o-/
the ../../../ is what the "climbing" is in "tilesheet climbing"
.. is how you "climb" up one directory
the fact that there is more stuff between the ../ and the SpringOutdoors.png is a symptom of the climbing so it also needs removed
yeah, try to keep your tilesheets and your actual tmx in the same folder to prevent this!
or at least within the same group of folders (I think sve has their tilesheets and maps in different folders for organization’s sake, but theyre in the same general mod folder)
o777 thank yall
the image source must point to the same folder as the .tmx no matter what
the only exception is if you want to nest your sheets like Maps/Mines/mine.png
aside from Mines though this is rarely ever done
(and by "point to the same folder" i mean, SpringOutdoors.png when written as just that is pointing to the same folder as the .tmx)
I have a workspace folder I jam all of that in, then I copy the tmx files back into their proper folders when it's done. Your tilesheets don't have to be stored in the same place in the mod itself as long as everything is set up correctly
but when you edit them, they need to be in the same place
correct. so not enough to just keep them in the same group of folders when editing
(but, for vanilla tilesheets, you may as well keep them in the same folder as the .tmx, since they shouldnt be present in your mod folder at all when the mod is finished anyway)
The void beckons
i imagine its an issue with the tile sheet, but im confused on the logistics and how to fix it 😭
make sure you're not putting those on the Back layer, I guess?
I assume they'll replace the ground if they are
hello modding people i have a question about not making mods but a question abtut mods
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
Fixed. Thanks for reporting it!
is there a place i can look at the vanilla tile sheets without having to open every xnb map?
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
ah, thanks
how do you do an AND when condition, again?
my two conditions are has SVE installed and "HasFlag: |contains={{ModId}}_NikoCured": true,
everything listed in a When condition must be true already
so just listing multiple things is already an AND
oh, OR is the weird one, ok
that and when you want to use the same token but for two different values i.e. Has Mod false for one mod and true for another
ORing different tokens is where it gets semi spicy
but you're not doing that so it's fine
ORing the same token but different value is ez, "HasFlag": "{{ModId}}_NikoCured, {{ModId}}_NikoCured2" is an OR
i can already tell that's going to confuse me forever lol
but! no need to worry about it rn
just remember that the stuff in the value of your when keys is always a big ol OR
I do want OR to be easier, but doing it without actually making everything more complex is hard
merge is pretty easy at least, not to say it wouldn't be nice if it was easier
before i copy paste this 100 times, checking that this is correct:
"HasMod |contains=FlashShifter.StardewValleyExpandedCP": true,
"HasFlag |contains={{ModId}}_NikoCured": true,
},```
wait no SVE true
remove the : after hasmod
Merge is a nice pattern, but it doesn't feel intuitive of what you would immediately jump to from skimming the docuumentation
like that?
this is why it's my agenda to bring it up whenever possible in the hopes that people remember it more 
that is still an AND
they want an AND
in the same When?
4 different patches: SVE + Niko, no SVE + no Niko, SVE + no Niko, no SVE + Niko
but i only need to write the ones with Niko
well if you wanna try and combine both an AND and an OR in the same When condition then uhh good luck because I'm on mobile in bed and definitely not gonna try and write that spicy one out 
no, two different patches haha
patch #1: has SVE and has niko (as seen above)
patch #2: no SVE and has niko (problematic because one true and one false?)
oh i misunderstood this then?
when you write false as the value, you are checking that the token resolves to false
It will be True that "HasMod SVE" is false
ohh i see
The way CP when conditionals work is that there are 2 sets being built, one in the json key, and one in the json value.
The condition entry passes when those sets overlap, and the overall patch passes the conditions if all conditions pass.
"When": {
"HasMod": "FlashShifter.StardewValleyExpandedCP",
"HasFlag |contains={{ModId}}_NikoCured": true,
}
In this example, the first conditions key becomes the set of all loaded mods, and the condition will pass if it contains the value FlashShifter.StardewValleyExpandedCP.
The second condition is the set of all flags, but then using the |contains reserved input argument, changes the set to now do an overlap check with its input argument, making the set either contain true if it overlaps, or false if there is no overlap. It then will use that boolean set and compare with the value, which is true so the condition passes if HasFlag contains {{ModId}}_NikoCured.
"When": {
"HasMod |contains=FlashShifter.StardewValleyExpandedCP": false,
"HasFlag |contains={{ModId}}_NikoCured": true,
}
With this example,
the first condition will be transformed into the overlap boolean test, but now the condition will pass if it doesn't overlap, and the second condition is the same as before.
oh that lays it out very clearly! it's like when they had us do those logic tables where like !p AND !q = F
it is exactly that
for some reason that just wasn't clicking until now haha
The main reason why people do "HasMod |contains=FlashShifter.StardewValleyExpandedCP": true over "HasMod": "FlashShifter.StardewValleyExpandedCP" isn't directly CP constraints at all, but JSON constraints of duplicate keys
oh because if you didn't use contains, you couldn't check for has the mods SVE and RSV?
yes
sorry if these are stupid questions, i just learn best by confirming examples
but if you aren't doing AND checks with the single token, you don't need |contains for these simple cases, but people generally do anyway to be consistant
technically slightly more performant without the |contains as one less set comparison is done (and a bit less parsing overhead etc) but the performance difference is negligable
owh, nexus just ate a ton of comments 
tried moving a long comment section into a bug report, but it just took the head and is loading forever
Oh yeah i had that too
Eventually the very first comment get successfully moved
it should move all of them, not just the first one though
Yeah it's been broken for a few months now
note: never try using any options on nexus that sound even slightly cool because they won't work
even copy/paste/undo in the wysiwyg editor somehow manages to fail
glad at least commenting on mods works (properly is optional lol)
I have this error I wanted to make a way from the Mountain to my own area what should I do I have the tilsheets in my folder?
!tilesheetclimbing
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
Thanks
(named after a jellyfish?
)
You mean me?
(yes!)
Sorry I dont get it
(oh nevermind then! borrowed a friend's comic with your name in it a while ago hahah)
Oh ok haha but its funny
Hey all! Thanks for your help yesterday! I've made a mod but when I try and load it SMAPI tells me that the folder is empty (it isn't) and I'm not sure what's wrong. The mod does exist in the Stardew Valley/Mods folder and isn't empty, so I don't see where I've gone wrong
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.
Also a screenshot of your mod folder please
They are as well
not the other mods
Which is why it's a bit confusing
See the "View" button in your folder? Go into there and find the "show file extensions" option. Click that, and then you will see that your files are actually content.json.txt and manifest.json.txt
Because currently they are text files, not json files, so SMAPI can't read them
ok so what aba said next then 🙂
Ohhhhh
yeah!
just renaming them whatever.json
(And then once you've done that, delete the ones that are outside the "Ash Cat" folder.
Yup once you can see the file extensions you'll be able to rename them to remove the .txt bit and they will convert to json then.
(in the future we also really really prefer the log being shared by the link, but for this specific case this was enough)
ah got it, sorry about that!
Thank you both SO much ❤️ ❤️ ❤️
I agree with Lumi, it's not silly. It's common enough that I suspected this was the issue the moment I read your first message. It's Microsoft's fault for hiding file extensions by default.
No but you have both been wonderful thank you so much!!!
You have been amazing and I've managed to upload my first Stardew mod now thanks to you!both @vernal crest & @hallow prism! 😄
Congratulations! Would you like me to publish it to the showcase?
Let's gooooo, congratulations on your first mod!!!

congrats! it seems amazing 🤩
am I tweaking or is there really no "stairsup" sound in Stardew Valley?
sure isn't
the ExitMines ladders are just regular, quiet warps
Isn't there some kinda footsteps into doorway sound
Literally, what is wrong with this???
I have even checked to other MFM files just to see if I am doing it entirely wrong and they are all exactly the same but they work???
https://smapi.io/json/content-patcher/7bd202c535a94cbd87dd2aa9a13d3021
do you mean stairsdown?
I mean granted its not a content patcher file but SMAPI tells me off so I suppose it's just a general issue
i think this is more what you're after?
https://smapi.io/json/none/44382390d7e34073a85e5acfe9968d3b
You have a hanging [ ] value with no field
you'd accidentally cut-out the FriendshipConditions key to your [] list
Although do u actually need mfm here? CP can send mail now
And u can also use mfm via cp too
Wait can it?!
Yeah most vanilla mod is sent via trigger actions
OMG!!! That solved it ;-;
You can reference those
It's fine to keep using mfm if u don't feel like changing im just pointing it out
I've only really just opened MFM for the first time and I think it would be better off to keep learning just Content Patcher tbh so I'll chuck MFM out the window lolol
Any tips where to start with CP mail though? Like a template would help 1000%
have you unpacked the game content yet? it's always the best place to start!
after that, the wiki:
https://stardewvalleywiki.com/Modding:Mail_data
Ah I'm yet to look into the code part of my unpacked folder I've just been looking at the pngs lol
I will look there thank you!
what did the new update of content patcher changed?
You can find detailed changelogs on Github
ohmk thankss
just saw it, not much
i thought it would change some or add some tokens
Yes i did but I didn't ping cus i didn't have time to write example trigger or even update docs 
Feel free to try tho
They're map properties same as "mushymato.MMAP_FarmHouseFurnitureAdd", right?
i'm seriously impressed at how simple it is to add custom interactible items. transpile checkForAction? nope, just ```json
{
"Action": "EditData",
"Target": "Data/Machines",
"Entries": {
"(BC)blueberry.DesertBus_Arcade": {
"InteractMethod": "DesertBus.ModEntry, DesertBus: CheckForActionOnDesertBusArcade"
}
}
}
You'd want to write a one use Data/TriggerActions which call em
Gotcha
it even sends a console warning describing how you slipped up. Method was found but not static. unbelievable
Yeah moar people should know about em 😌
I think i might have been the first person to actually use em in a mod (livestock bazaar)
InteractMethod club 🤝
That said ppl tend to use furniture tile action these days
sure, that sounds more flexible. but this is simplicity codified
Actually i wonder if better crafting uses interact actions (nop it was custom fields)
BTW, @lucid iron, the Farmhouse Upgrade trigger always took time. I was able to get it down to 2 nights instead of 3 by changing whether it triggered on day end or day start, but it always took time
Yeah that part confuses me slightly, since i am very literally setting it to 1 by default. I gotta reproduce it later
When i called it via debug action it happened immediately after sleep
Is there a warp that prevents NPCs from using it? I feel like there is but i cant remember
I'll experiment with the new version. Is the syntax just mushymato.MMAP_FarmHouseUpgrade 1 now?
sure, you can use TouchAction Warp:
https://stardewvalleywiki.com/Modding:Maps#TouchAction
Action Warp should behave roughly the same, but for interactions only
Thanks! Having an issue with NPCs trying to use the warp even though the location it leads to is excluded from pathfinding 
The arg is optional
Default still 1
I'll experiment and let you know
I wonder if it might be in part the condition I'm using. Though it should still take no more then 2 nights, I would think, but it can take up to 3. Anyway, I'll try it out and see. ^_^ Thank you!
idk if something like this has been done already
https://youtu.be/dIpbme5RynE
kinda similar to though not quite this: https://www.nexusmods.com/stardewvalley/mods/29430
oh yeah that's really similar
digging holes in the ground, the universal hobby
pretty similar, but mine is for storage and general utility and not really for fast travel. it gets a second entrance late game so you can do some minor teleport shenanigans with it but it's more of a bonus
can machines do non-working idle sprite animations, or only when working? without extensions
only when working yes
What is the context for these two blue outfits?
top left: emily rock meditation cutscene
bottom right: sleeping (pajamas)
ty!
Rock meditation cutscene? 
It's a bulletin board quest, the one where Emily asks you to bring her gemstones. After you complete it, you get this cutscene
Ah! I genuinely thought there was some kind of event where she sits on a giant rock that I didn't know of 
Hi gang, am I doing something wrong with my mail??? New save file and I'm not getting everything. I am wondering if my conditions are wrong to be completely honest. I am unsure if I can put those conditions in the same place together.
Content.json https://smapi.io/json/content-patcher/48c36908f2d945f7b53856c98ffcba68
Mail.json https://smapi.io/json/content-patcher/071f4599c2cb4cad925e80dc4206af11
TriggerActions.json https://smapi.io/json/content-patcher/819a3bdc5b87408f92d37f7063f16d25
you don't receive any of them, or you receive only a few?
it should default to tomorrow according to doc
