#making-mods-general
1 messages · Page 458 of 1
Is there a way to update the game to test mod without having to exit the game and wait for load in?
yup!
Oh, may I know?
oop nvm think i found the api file nice
one sec, finding a link to explanation
Very appreciate the help!
here's a link to the explanation! https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/troubleshooting.md#reload
just open console/terminal, type patch reload and then your mod ID!
hmm maybe I'm still a bit confused on how to get spacecore implemented - so I want to add a custom skill, it says I need to subclass Skill, which is in skills.cs, but I'm assuming I don't just copy in the Skills.cs file into my repo and I can't find an API for skills - am I missing something here or is there something else I need to do?
(sadly can't help but out of curiosity, what skill are you adding?)
love the new user lol
I'm actually moving over a magic skill I already implemented for my mod Runescape Spellbook to use spacecore cuz I figured it was high time I use a framework actually designed for this stuff rather than just trying to make it myself haha
oh that's so cool!!
I cant be spooky anymore! It's November
nahhh you can still be spooky
huh. so if i do this to my csproj I can subclass from skills.cs? neat
...so i'm working on an event with a lot of moving objects, so i thought i'd make temp npcs to use as the objects for easy moving. the issue is, THE OBJECTS BREATHE BECAUSE I FORGOT TO DISABLE THAT 😭
i know 😭 😭 😭
if I use this dll method should I still be using the API spacecore provides or is that not necessary anymore?
More SpaceCore skills 
Some of the stuff in SpaceCores API aren’t available otherwise, so that’s up to you based on your needs.
The only things that aren’t there are things that involve subtyping classes. That’s something I want to fix at some point now with a redesign, but for now, API-SpaceCore and project-reference-SpaceCore have two completely different feature sets (for the most part).
hellooo uh are there any extra steps I should take when making a custom map (for an event) to have it implemented, other than just including the map in the folder and referencing it in the changeLocation command?
did you load it? I think (but am not sure) that you need to
nah, will do then lol
I'll also load all my tilesheets too then
oh
..then i won't heheh
alr anyone up for making pepper-krobus trenchcoat, seamonster, and raven sprites?
on behalf of the spicy krobus council (me, @devout otter , @worthy ermine, @hard fern)
..this must be very confusing to ppl who weren't on here like 12 hours ago-
Load them! 
NEVER 
..okay fine i will
And don't have them in the same folder as the map or loading them will be pointless
..they're in the same folder-
oh just imported some vanilla ones there bc i couldn't understand how to connect it otherwise 
Oh then not only do you not load them, they should not be in your mod folder at all
Yeet them!
Get iro's tiled extension, it lets you use tilesheets from other folders without getting tilesheet climbing
Not in tiled if you use the extension and not in game at all because the game will use the ones in its own content
ohh, so the files are just there to help the app?
Yes
uh, where might I find Iro's extension then?
Here are the instructions for the extension: #making-mods-general message
ty 
Extension itself: #1399862293331972246 message
If you need help with it you can ping me or iro
thanks!!
The extension will make your life easier and help you contribute to a world in which people aren't unnecessarily uploading vanilla tilesheets and preventing their maps from being recolour compatible!
(Having the vanilla tilesheets in the same folder as the map prevents recolours from working on the map)
anyone know how spacecore's furnitureextensiondata > tileproperties is affected by rotation? it doesnt seem to be tied to bounding box
hellooo are you guys aware of where letter textures are stored?
..literally just saw it fml
It's not affected by rotation
If you had a 1x2 thing that rotates to 2x1, and you put tile prop on 0,1 (so the right tile), it'll simply no longer do anything post rotate
You can put another tile prop on 1,0
hmmmm.. i see. thanks
@vernal crest https://smapi.io/json/none/dd5b40ae17bd43fc9d3f7320fc507082
could you take a quick look at this and see if everything looks correct???
i recommend you test it out so you don’t have to wait for a specific person to be online!
k, also do you know how I would get the id for specific fish roe?
like for example rainbow trout roe
or legend roe
oh, chu has a framework for that!
link?
peliQ, look it up on nexus lol
ty
just @ them if you have questions idk how it works lol
look at FLAVORED_ITEM
allows you to spawn flavored variants of certain vanilla items (juice, roe, etc.)
k. ty
OH yeah, i think peliQ was for gifting?
the two relevant peliq features are:
- allows give item trigger actions to use item queries (and thus support flavored items)
- allows the flavor of a flavored item query to be the result of another item query
discord stop spell checking flavored to flavoured pls
smh selph deporting u from 🇨🇦 rn
gotchaaa okay, thanks
Smh can I move to Canada i sure apologize enough
I will never be Br*tish
but yea what selph said, peliq is needed for case where u need multiple dynamic flavored item
vanilla can do single flavored item fine
why'd you censor british 😭 😭 😭
cus they r bri'ish
EWWW
bit late for that one
brit culture in a nutshell
lmao
god i'm so glad i was never exposed to british cuisine
same
i could never handle that shit
looks disgusting
those bitches conquered half the world for spices only to never use them smh
for sure, it's nice to be able to be proud of your countries cuisine
fr, like u robbed places and had unlimited spices, could've made anything but no
BEANS N TOAST
to be fair people complain when "we" do use foreign spices too
yes, you
aaah i sense that you are a bri'ish
nah man I just use indian spices, Im indian
I AM NOT BRITISH 🤬
good
I was actually thinking about indian spices
can we just agree on one thing??? ||fuck the british||
||no offense to any brits||
lol
omg- 😭
Specifically banana curry pizza
what the fuck is that
nah lol
..thats odd but i'm not gonna judge...
openly
like curry banana pizza
it's a pizza with pinapple, banana, chicken and curry
yuck
that doesnt sound THAT bad cmon
I'm not eating it, but it sure is available in every pizzeria
list
...hm
do you guys mean to be in #town-square
oops
we got a bit off topic 😭 lmao
oh sorry this just devolved from a modding topic-
yeah lol
okay our debate shall continue there
idk but somehow there are still people on the pineapple pizza debate when that exists
i like pinneaple pizza
gl
@shut edge desc thing fixed in 1.5.1
god typing out every single thing for fish pond is annoying
alrrr so my custom map isn't showing up during my event
lemme send my json one sec
!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.
@autumn tide i would like to request details about ur dwarf mod, sounds cool
ooh i'd love to know what you're curious about! it was originally a krobus mod and is still more krobus-centric but the dyanamic is too cute to pass up so dwarf's getting expanded too lol
just like whats the mod about
I'm getting this error:
is it expanding on the war?
[Content Patcher] Patch error: (CP) MY MOD?!?!?!?!??!?!?! > {{ModId}} Events > Code/Events.json > Destroyed Basement Loader has a FromFile which matches non-existent file 'Assets/Maps/LewisBasementDestroyed1.png'.
lewis basement?
hmmm let's talk about it in the creative writing thread i'll ping you there
k
are you trying to load a map? a map can't be .png
..oh shit it's not supposed to be a png-
you want .tmx or .tbin
oh, it is a tmx?
yeah but your FromFile says .png
Are you loading or patching?
load or edit doesn't matter, it still shouldn't be .png
what errors are you seeing now, if any
oh, still looking it lol
okay, looks like it's an error with my file
I thougt the orange meant they were a comment
is that not what it means?
??
they're allowed in json5 but json throws errors. CP does allow them though
orange? where?
so even though vs code is giving an error it should be fine?
oh yeah
the color depends on your software, it's not consistent
is that not a comment
in vs its green
it is
yeah i work in n++ not VSC but i'm pretty sure you can change the language you view it as
k, this is anoying
i think adding a schema will also help error checking, but again, i don't use VSC so idk
alr, still broken :( i think one of the tilesets incorrect somehow but I'm genuinely not sure how or why.
gonna upload my map file and send the error here
!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.
laughing at that map name. Oh god, what did the shorts do now
uh i rather not put the log here bc my computer has my name and such, but I'll look at it myself
heheh
that snippet you sent already has your computer name in it
what you just posted has your full name in it
you had tilesheet climbing. i put your map into button's map fixer and it fixed it
Map Fixer: Upload .tmx files to fix common map errors.
time to temporarily drop off the face of planet while i recover from this-
you'll likely have to fix all of your maps if you recently switched to using the tiled extension
/deleted the vanilla tilesheets out of your mod folder
your map also uses tsx's, so if those also have issues, my fixer won't do anything about it since those are separate files
oh good to know
just to double check, wtf do you do with the vanilla tilesheets if youre planning on releasing your mod? I remember vaguely that youre suppose to delete them once youre done and the game will rely on their own??
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"/>.
but button's map fixer does this for you (among other things)
thank you!
actually @uncut viper how do you feel about your map fixer being linked in this command? i know you've said you don't want your json tutorial to be in any commands, but i think the map fixer is super useful
Awesome! Its always the climbing errors- and i was just about to check if it fixed it cus i really wanna clean up my stuff but i never quite understood how to fix the climbing thing so i gave up and moved on
yeah, you can either do it manually following the instructions above/on the wiki, or use the fixer
before the fixer i usually just ctrl-F'ed ..
map fixer in a command is fine but given how used that command is its probably not something id think should be up to one person to change it.
but also i cant change it anyway, and i dont know who originally made the command anyway
yeah we could probably just do !mapfixer instead maybe?
idk if we need mod approval to define new commands
shrugs. im not a mod author, i have no say in this 
@outer glacier are we allowed to define new !commands? i think !mapfixer which links and explains button's map fixing tool could be useful
you dont need to ask about it, its a mod author role benefit at level 100
That would be perfectly okay
oh okay! i wasn't sure if there was etiquette about it
as long as you dont go against custom command etiquette (no random commands for no reason, no spamming them, dont change someone elses command without discussion, etc)
its in.... some github gist. somewhere. i dont remmeber where to find it
The only thing we ask is to not misuse it for irrelevant stuffs
sounds perfectly reasonable haha
yay it works
Thank you, Button! 
excellent
i avoid the possibility of accidentally going against command etiquette by never allowing myself an orange name in the first place
one simple trick etc etc
can't screw up if you don't have perms 
do you have strong feelings about how to explain the map fixer?
as long as its explained correctly and also doesnt imply it'll fix every issue ever guaranteed
There is a (masked link) map fixer tool by Spiderbuttons that can fix common map errors such as tilesheet climbing. Upload your map(s) as a .tmx file(s) and click FIX to run. Your fixed maps will be downloaded as a .zip file and will need to be extracted in order to replace your old versions. It is not guaranteed to fix every map error.
is my proposal
id replace the last sentence with something like "Feel free to let Spiderbuttons know if you run into an issue it can't fix."
otherwise seems fine to me
okay!
New command added! You can use it like !mapfixer.
there isn't a list of commands i would need to add this to or anything, right?
There is a map fixer tool by Spiderbuttons that can fix common map errors such as tilesheet climbing.
Upload your map file(s) as .tmx and click FIX to run. Your fixed maps will be downloaded as a .zip file and will need to be extracted in order to replace your old versions.
Feel free to let Spiderbuttons know if you run into an issue it can't fix.
how do you make it so that something that isn't a fish can be placed into a fish pond
at some point it was hardcoded
i don't remember if now you can do it with the proper tag
i made a mistake with my wedding event json and i cant find the error, i think ive been staring at the screen too long
then again i was always bad in getting what the smapi errors mean
what i would suggest is : try to create an entry with a context tag that is your item id context tag (you obtain it by holding your item and doing debug listtags in console)
if this doesn't work, call for help
you can get other pairs of eyes to check if you share the log and script
an irresponsible number of dogs is cracking me up
i'm glad to hear
here's the log, i guesss i did a token or soemthing wrong but idk anymore
now if the thing would show up in my opt-in page...
ignore the /t/n etc thats cuz i have them not in one line cough or else id get even more confused https://smapi.io/json/content-patcher/e21b9b33acca4b1eaa7ee4e4d8df7f2d
i looked at another custom wedding event to get it to work but hm...
i don't see the log
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 62 C# mods and 20 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
lmao oops
you have several {{i18n:{{KEY}}
{{i18n:{{KEY}}
dont know what this is supposed to be but you have it in both scripts
which sounds not right
and it doesnt have an ending brace set
jinx!
frick, thats the wrong json then wth i fixed that- wait....
ok i fixed putting in the key but it still had the opening brackets...

take a bit of a break before returning to testing stuff, you deserve it
?
[[Modding:Context_tags]]
ok yeah i think i need a break i totally did the wrong frames for the wedding kissing for some reasons but hey the wedding technically works besides thast, yippie
using cp can you remove something from a tag
i don't know what you mean by remove something from a tag. do you mean you want to remove a context tag from an item?
yea, i think seaweed has the fish pond ignored and I want to remove it
hmm i'm not sure, let me see
ohk
what does the "fish_nonfish" tag do?
shrugs. dunno
oh excellent, i was looking at removeDelimited instead
where might I find out, its not listed
i dont have the answers you seek. i dont do stuff with fish and im not at my computer to read the decompile
k
!decompile if you can read C#, you can take a look yourself
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
i cant lol but ty
removing things in general is very easy. you just editdata it to null
i see i see
Guys who do I add generic mod config menu to a mod that has a c#
I’m trying to add the generic mod config menu to this
you dont. not unless you take that mods source code and make the changes yourself
Is there a forum or place i can ask for mod commissions?
!commissions
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
try !help in #governors-mansion
!help
Am I doing this wrong
depends what you're trying to do 
I’m trying to figure out how to add birthdays on the calendar
birthdays are determined by an NPC's Data/Characters entry
Oh okay!
does this mod do what you're after? 
https://www.nexusmods.com/stardewvalley/mods/7495
Yeah
hmm, i was sure the command was !help but maybe it was changed
But for the player
(still, it's not governor mansion here so...)
you'll have to be a little more descriptive with your idea
i still don't fully understand haha
So basically I’m trying to make a mod where it shows birthdays and anniversaries without changing the happy birthday’s gifts, the anniversary on calendar was great until I figured out that I had to manually change the config in the file instead of in game and I wanted to add compatibility for people who has steam deck
Smth similar to anniversary on calendar but with content patcher and gmcm
ah, i don't believe that's possible with CP.
how do you find the unique string ID for vanilla things
if you've unpacked the game content, you can find most items in various files in the Data folder, e.g. Data/Objects, Data/Tools, Data/Fish, ...
k
so given AnniversaryOnCalendar is a C# mod, it's not automatically parsed by CP to create a new GMCM page: C# mods need to include their own interface for GMCM and explicitly write out their own pages. in order to change config values during gameplay, it'd need to have done this.
bridging HappyBirthday and AnniversaryOnCalendar would mean reading the config of the former mod from the latter, and likely listening to any changes, which means a decent amount of reflection (accessing inaccessible values at runtime). it's not impossible, but cumbersome and probably a bit arcane if you're not used to using C#.
as for steam deck compatibility, i have no idea
I want to try to make my own version
overall doable, but requires a-little-advanced C#
I wish I knew c#
so did i, that's why i started making stardew valley mods
it takes time, but it opens up a lot of career opportunities, such as making stardew valley mods
teaching a full crash-course in c# is outside the scope of this channel though, but there's plenty of resources and courses online
This is my first time
ive been working through the free microsoft c# class. its good but intense. still not able to make my own mods yet but i can understand a bit when i decompile
just like with all things, everyone starts knowing nothing, and with some learning and practice you'll improve in time
or alternatively if you really don't want to learn c# at all you've got the commissions page hahah
I don’t have money
https://smapi.io/json/none/b19afaca788d45269a3732a3fd975de5
do you know why it isnt letting me put my seaweed into the pond?
The microsoft c# course is free
That’s good
i don't know fishponddata, but i believe the issue is there's no context tag already applied to seaweed for item_seaweed
What about the auto generated context tag?
oh, so i just have to add a tag to seaweed?
you'd want to use its internal id, which would be item_o_152 i think (which is an automatically generated context tag using the form item, item type o for object, and the internal id 152)
the thing about C# is that it's harder to have someone guiding you on a detailled way, so you'll have to do more of the work yourself than with CP when people are able to guide you, provide you core elements, or even handhold you way more
the ido sounds like a way of wisdom for SDV modding
Sorry if I sound like I’m complaining tbh
i kinda get it, you have an idea and there's many steps between you and the idea
it can be overwhelming and it's understandable you'd like for a shortcut to appears
no, and it doesnt have open nexus permissions regardless
sidenote, the Name of an entry in most data models isn't its item ID, but rather just the translated english name. the ID is typically the key to the data model (e.g. "152": {}), or the ID field inside the model if one exists
for legacy reasons, all items from before 1.6 use their sprite index in their spritesheet as an ID
then i guess its time to learn the terrible time of ui
Can't stay but I believe non fish cannot go into a fish pond
(and to obtain context tags, which you want here, you can do debug listtags when holding the item)
so i replace 152 with seaweed?
i think u can do it all in the smapi render events if you dont mind some minor jank but
i know some stuff that was dehardcoded
I nominate someone not on mobile to check that
theres a learning cliff of figure out what is C#
i don't remember if it was, but the migration page is unconclusive
how do u do that? in game also i looked at objects.json im pretty sure those r the tags
hence the "test and see and return to us if it fails"
I'm running shirtless through a park lumi
not all context tags are in the data
some context tags are added when the item is created in game
see here
I hope my computer storage lives
the console is the smapi black windows
if you're unsure of what an instruction means feel free to ask!
computer storage 
it's ok i'm not asking you to test and see 😄
It’s on life support
wait a minute what's with the base fishponddata having the likes of item_sunfish
isnt sunfish the default fish in general?
i know i asked for this deharcoding at some point but i don't remember if it was done or just considered
808 mb left, out of 57.3 GB
oh darn it does generate context tags from Name as well as Id
hm, so item_seaweed is correct
ok, but when I assign the context tag if it don't exist is it automatically created?
can you elaborate on what you mean by that?
Switch it to category fish and see if it works
you don't need to assign context tags yourself, and the RequiredTags field is just checking whether an input item has any one of those tags. seaweed (152) does in fact have the item_seaweed context tag already, so that's not an issue
i was wrong earlier when i said it'd need to be id_o_152, which is another possible autogenerated context tag
i'm going to sleep but if the hardcoding is still here i suggest someone that isn't me (or atra running in parks) request this for 1.6.16 or 1.7?
k
which means that the seaweed not being usable in fishponds is going to be for another reason, possibly excluding all non-fish as atra mentioned
(and if you already tested with item_seaweed and it doesn't work it means this is still hardcoded and there's not really something you can do with content packs only outside of workaround like fish category/fish data as atra suggested)
because while seaweed is fish enough to be fished, it isn't fish
no
so do I need to do anything here?
this is a format modders uses BECAUSE base game use item_name
(I believe you can hold a seaweed in your hands and do debug listtags to get all the tags for the seaweed item just to be sure)
so we don't overlap with vanilla tag
nope, you don't need that change at all
k
so you may have encountered this format on modded stuff previously but it's not what vanilla uses
so nothing changing the seaweed context tags
🤦♂️ nevermind, I'll scamper off now
(that is ok i just wanted to provide context, i can see why it can be confusing)
anyway
sleep. Good timezone and luck
in any case i've never touched fishponds so i can't say what specifically does and does not work
(that wiki list is incomplete too so dont take it as gospel either)
or i could if i looked into it for longer, but i'm not about that atm haha
im confused on what i have to do im sorry
(for anyone who wants to look at the CP fishponddata change)
oh
all i do is change category
coral and sea urchin are hardcoded exceptions
thatd work. dont know what other consequences there are to changing something's category to fish. probably at least one consequence. dont know what itd be
yeah but fuck that, future me problem
most immediate consequence that I can think of would probably be that it would be impacted by the Fisher and Angler professions, meaning the sell price would be higher
but its so low that who cares
I'm not saying it's a big deal, just saying it is something that would change.
Unintended / unannounced changes can confuse users if they're not expecting behaviors like that, so it's something to be aware of, that's all
I'm not trying to talk you out of it. 🙂
How do I add the player’s birthday to the calendar
it would require c#, like blueberry told you less than an hour ago
Yeah but also how
the thing about c# mods is that it's generally up to you to decide and figure out the how
there's not gonna be some "add birthday to calendar" function somewhere
it would be hard to explain without basically making the mod for you
Oh
you'll have to read the decompile and look at the SMAPI events available to you (chu mentioned the render ones I think) and DIY it
(or use harmony, which is also DIYing it)
Sighs I might have to wait for a month since my mom can’t afford a new laptop rn
Plus my storage is like on life support as I mentioned earlier
possibly stupid question: I have a CP local token
"OverrideColor": "255,0,0",
which CP interprets as me passing in a list with two numbers 255 and 0; how do I tell CP to pass in that string exactly as is
the Render token, maybe
it's interpreting it like that because it's turning it into a set
inputSeparator is a global token modifier thingy
are you trying to just display that string literally though or are you trying to use it functionality because in the latter case I'm pretty sure that set stuff is gonna bite you at some point down the line if not the local token declaration
I'm trying to pass it to a framework that accepts a color override in the form of a string consisting of three numbers separated by commas
so no functionality on the CP side at all
then sure try rendering it or changing the separator
at the time of using it not at declaration
or well
actually no I guess it would be at declaration
which also means I think you do need to just use Render because otherwise there's nothing to put the separator on
possibly a combination of both
now this might be silly or not actually work. but what if the three values were three separate local tokens
so inside the included file youd just have "{{LocalTokenA}},{{LocalTökenB}},{{LocalTokenC}}
Walking into this channel and seeing the messages feels like seeing letters in math for the first time again
I may be stupid
"OverrideColor": "{{Render: 255,0,0}}",
this is definitely not how you do it (still turns into 255, 0)
I'm trying to avoid that because that would mean I need 4 tokens instead of 1 🦥
try the input separator on top of what you have here
nods nods. ok so it would work itd just be inconvenient. curiosity sated
{{Render: 255,0,0 |inputSeparator=@}}
nop 
if that still doesn't work then I'd try using render again inside the patch
{{Render: {{OverrideColour}} }}
if not that then with the input separator on that too
if that still doesn't work then I'm out of ideas
nop x2 
more tokens it is
(I still appreciate the help though Button
)
set theory claims another victim
all the more reason for mods to just take any old colour and parse it with Utility.StringToColor
are we sure that's not what the framework is secretly doing
well this method doesn't accept comma-separated values so quite sure
not sure what you mean there
yeah I use a custom method before knowing that function existed and now I can't switch because it'd break compat
nou
you could surely use Utility.StringToColor(s) ?? MyLovelyLegacyStringToColor(s)
public static Color? StringToColor(string rawColor) ✨
it does return null
unfortunately it also logs a yellow warning on a parse error
selph can't you just remove commas
then do it the other way around ✨
I may be stupid part 2
with that issue resolved, my mod that allows commiting crimes against fashion comes ever closer to completion
how would I change the category of an item using content patcher
\i think i got it
like this?
change Entries to Fields
k
Fields = only edit the fields I specify
Entries = replace the entire object
and remove TargetField
also are you sure it's Seaweed and not whatever the number is
also remove TargetField
ohk,
what number?
irrelevant now if you're getting rid of targetfield
(you're directly editing a top level field of an object already, no need to "drill in" with TargetField)
and yeah it's not Seaweed
relevant since you'll be changing the Fields key to 152
Okay phone discord search is garbage and my Internet is down yet again: is there a way to do snow schedules like rain schedules? Is a when condition good enough?
isnt snow just winter rain?
no cuz u can rain totem iirc
can you follow the example of "editing the description of an item" in the page I linked
well a When condition wont do it because you'd need to edit it the night before
Yeah I was worried about that. Rain schedules do not apply during snow either
i think this is correect
mostly correct
the item Id is not Seaweed
152?
I used the name cuz in the exam[ple moss soup was typed out
it's because its ID is MossSoup
so some use name some use number?
items before 1.6 used to use numeric ids because only numbers were supported
!itemids
New quote added by atravita as #6723 (https://discordapp.com/channels/137344473976799233/156109690059751424/1434720924279771199)
check the link above (not maru's lol) for a convenient reference
you can also (and should) unpack Data/Objects
When condition works fine
Just use a weather: Snow
are schedules not chosen the night before?
Does it? I wouldn't think it would change right
No, schedules are not chosen the night before
I always have to rest a night to get schedules to work, I figured they were chosen sometime inconvenient
Although I vaguely recall it's more "CP will re roll the schedule " 
NPC.dayUpdate is called after DayEnding in _newDayAfterFade
and the xml docs specifically say its before the game saves overnight
https://smapi.io/json/none/944d99894a4c4404adfb9efcada80c6b
this is annoying, why isn't it letting me put the seaweed in the pond now?
Yeah but iirc SMAPI re-rolls the schedule as part of asset propagation
that code looks correct
let me check the game code to see nothing else's being tripped
u talking to me?
(Are you trying with newly spawned seaweed)
oh that might be it
fuck i hate all the intricacies
😭
Welcome to modding
we're not meant to dig in mr ape's backyard, but we do it anyway
Guess why I'm a knitter now
not because it's easy, but because ||we thought it would be easy||
lol
ok imma try building a new fish pond
and using new seaweed
shouldn't need to trash the pond, but do trash the seaweed
congrats!
TY
ok im sorry but i got one more question... its letting me put all 10 seaweed in at once and the population gates aren't workking
@vernal crest assistaince plz?
also ty for helping me get it to run
I guess I can just change the entirety of winter schedules to not have reading outside.
Unfortunately I cannot help because I have no clue! I have never actually done any fish pond stuff personally, I've just read the wiki
k
ty
I do remember someone else having issues with population gates not working before but not what ended up happening
Maybe search the channel for "population" or "gate"?
Might be something with weather huh
These have worked for me in the past
remove the MaxPopulation line
ty
oh now i see how that screwed it up
stardew modding is like the most intuitive and unintuitive thing at the same time
When conditions work fine in general
comedic gold lmao
They're just set too early for the game to know it's snowing for some reason
Hmmm
There's a GSQ for tomorrow's weather...
In world state field
(Love seeing reference materials on tiny a cell phone screen)
hey! do dialog commands work in quest reaction dialog?
should do
They should, but if someone uses a mod like Mail Services to turn in items, they may not see the dialog.
So a "talk to person" end objective or a warning would be safest to ward that iff
Argh I cannot get these incubation times right
Ah ha
Night time you sneaky creature
Pushing a gsq through a flag might be too annoying to keep a book dry. God I hate schedules
the absolutely cursed nighttime where hours have 100 minutes (because time of day is stored as an int and that part of the code just does newtime - oldtime)
This is why Gunther is missing so many books, all lost in the snow
Yep haha
I keep forgetting to update my default field in the config so I have opened and closed my Stardew 6 times in short succession
story of my life-
Time for number 7
7th times the charm!
F
7th time is not, in fact, the charm xD
..8th times the charm?
hiii! I'm trying to mod on mobile and I waa wondering if anyone could give a quick check to my mod list and see if anything doesn't work on mobile or doesn't have the requirements or something? Cus I can't see the error message it scrolls too fast 😅 Thanks :)
you should check on the mod pages themselves to see if they’re android compatible
okay thanks
how can I check?
go to the mod page and see what it says about android compatibility
!androidsmapi in general we can’t really help with android modding, nor is this the right channel
We are not able to provide support if you run into trouble or compatibility issues with Android SMAPI; please use the discord linked on the Android SMAPI github.
IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. Please see the wiki instructions for more information regarding installing the unofficial Android port of SMAPI for Stardew Valley 1.6.
Do not harass mod authors to make Android specific compatibility patches.
Okay sorry 😅
it’s okay! now you know
hmm what's the command for asking the bot which of multiple options you should do?
period choose
thanks!
I thought this would be easy 😭
Now my incubators are ready 20 minutes after the day starts
Oi claude go to bed! I don't have nitro anymore so I can't threaten you with a chancla but pretend I am!
{
"Action": "EditData",
"Target": "Data/Events/ArchaeologyHouse",
"Entries": {
// edwin 7 hearts - apology for being rude
"{{ModId}}_edwinhearts7/Friendship EdwinPayne 1750": "continue/22 13/farmer 18 14 1 EdwinPayne 22 10 3/skippable/animate EdwinPayne false true 120 24/move farmer 4 0 1/move farmer 0 -1 0/pause 1800/stopAnimation EdwinPayne/faceDirection EdwinPayne 2/animate EdwinPayne false true 120 19/pause 200/speak EdwinPayne \"{{i18n:edwinhearts7.0}}\"/question null \"{{i18n:edwinhearts7.1}}\"/pause 200/stopAnimation EdwinPayne/animate EdwinPayne false true 120 18/pause 500/speak EdwinPayne \"{{i18n:edwinhearts7.2}}\"/stopAnimation EdwinPayne/move EdwinPayne 0 2 2/pause 500/speak EdwinPayne \"{{i18n:edwinhearts7.3}}\"/pause 1000/speak EdwinPayne \"{{i18n:edwinhearts7.4}}\"/pause 500/speak EdwinPayne \"{{i18n:edwinhearts7.5}}\"/question fork1 \"{{i18n:edwinhearts7.6}}\"/fork notForgive/pause 500/emote EdwinPayne 20/speak EdwinPayne \"{{i18n:edwinhearts7.7}}\"/faceDirection farmer 2/addItem Book_Friendship/itemAboveHead (O)Book_Friendship/pause 1200/faceDirection farmer 0/end",
"notForgive": "friendship EdwinPayne -125/pause 500/animate EdwinPayne false true 120 40/emote EdwinPayne 28/pause 1000/speak EdwinPayne \"{{i18n:notForgive.0}}\"/pause 200/stopAnimation EdwinPayne/faceDirection EdwinPayne 0/move EdwinPayne 0 -5 0/end",
}
},```
i need another set of eyes--any reason why this event wouldn't be triggering?
i can shove it in the validator but it's only 1 event so not sure how helpful that would be
Is it working with debug ebi?
yep
releasing a mod is literally the worst, my heart rate is spiking
i've had two reports about it. the first i assumed they accidentally skipped it, but the second i went oh i'm the problem
it's gonna be great!!
your npc isnt modid prefixed?
no, this event is from february when i did Bad Things
i plan to rework things and change all my internal IDs, but haven't yet
Is it not working for you now that you're testing, or do you only have reports?
i only have reports, and only tested it via debug ebi--but let me go try to trigger it manually, good call
yeah it triggers fine for me
i force fed him books until he was 8 hearts and then it triggered as soon as i walked into the library
let me request a log with patch summary
What's the specific code for dialogue trigger when NPC have (2/4/6/8) hearts?
My ~guess~ is that they aren't actually high enough hearts for it, so try to get them to check for that too. The only way I can remember to do that right now is LA but a patch summary might have that info? And there's probably a console command for it? There's definitely the debug gq option too.
Silly question, but does it also show up in the event lookup mod? 
they saw the 10 heart event, so unless they somehow lost a bunch of hearts, they're high enough. and i can ask them to look at the hearts in the friendship menu, if that's the same thing?
let me check
It won't do because it uses the 1.6 precondition format
ah
[[Modding:Dialogue]]
Hmmm yeah no that should be enough haha
Oh, I somehow missed that, many thanks!
BTW if players aren't meant to be able to see higher heart events until after they've seen lower ones it might be a good idea to add HasSeenEvent as a precondition to the higher ones. But ignore me if they're not meant to be in order like that!
Oh? I didn't know that.
that's a good idea! these ones it doesn't necessarily matter except for thematically, but wouldn't hurt to add (as long as i'm not accidentally locking them out of 10 hearts too with this 7 hearts bug)
Yeah unfortunately unless EL has had an update I don't know about recently, it only checks for the aliases. Which is a real barrier in the way of my trying to make everyone stop using aliases xD
https://smapi.io/log/900355a2e7744005b711ac15f1d68989?Filter=edwinhearts7 so their log says they've seen the event
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 47 C# mods and 40 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Maybe they skipped it by mistake or they didn't realise what it was
Hmmmm, I thought you could look at pre 1.6 events and it shows me the heart levels and the conditions needed and that. Though, it's highly possible I'm getting post 1.6 events mixed up. 
the aliases are the pre-1.6 versions
yeah, could be. i told them how to debug ebi at least
Yeah, you can ONLY see pre-1.6 events
the other report was on android so i wrote it off
(Except for people who are making mods post 1.6 who are still using aliases)
I think unless you get more reports (that aren't android) you can probably assume it was user error
(This is why I always try to recreate reported problems haha)
Yeah unfortunately since im writing my events in the new format none of them will be visible with event lookup — so im having to write my own event guide by hand
i just had them create a new save and test it manually and yep it triggered for them, and they admitted they probably accidentally skipped it
so that's a relief at least but i am shaking them a little bit lol
~~Hmmmm, now I'm getting confused cause I can see Reyla's event just fine with event lookup, and I'm sure I'm doing the post 1.6 method. ~~ then again I don't know the full technical details/names of things, so I'm probably just saying things and not really understanding what I'm saying. 
Are you writing out your preconditions with full words like "{{ModId}}_Event/Time 1800/Friendship Leah 2000": "event here" and so on?
Or do they look like this: "{{ModId}}_Event/t 1800/f Leah 2000": "event here"?
I didn't mean to beat myself up, just realize I need to study the code a bit more the help others 
The second one
Then you are using the pre-1.6 aliases (the ones I am trying to stop people from using because they are deprecated and hard to read) which is why Event Lookup is working for your events.
Oh?! Then tomorrow I'll change my events conditions to the post 1.6 method. 
Remind me in 10 hours to change my event conditions to the post 1.6 method, please.
Got it, raffiejohn (#6936717) (10h | <t:1762181169>)
the thing that bugged me about the old aliases were that a lot of the letters didnt even match what the actual condition was XD
i get f = friendship and t = time, but.. j = days played????
Thank you for helping me understand my events better! 
well theres only 26 letters
😔 they should add more to the alphabed
j = journey. For the length in days of your journey so far. Obviously /joke
(I have strong compulsion to mimic vanilla so it's difficult for me to switch to post-1.6 as long as vanilla still uses the deprecated ones.)
I was going to ask what the reason behind the change was besides readability and future proofing, but it seems that the future is now with j = days played
do you also put everything into Strings/YourStrings files and use LocalizedText too or do you just use i18n tokens, cuz those aint vanilla
I put i18n inside String that uses LocalizedText.
clearly you need to start using Strings/MyStrings, Strings/MyStrings.zh, Strings/MyStrings.ko...
"Action": "Load",
"Target": "Strings/DolphINaF.MarinerMermaid",
"FromFile": "i18n/{{Language}}.json",
"When": {
"HasFile:{{FromFile}}": true,
}
},``` Synergy!
i'm sure with logographs we could have the best of both worlds. why not MyEventId/日 30/!雨
wow.
thousands of possible commands. the world is your oyster
Those just look like empty boxes to me, I'm guessing it's either chinese or another language from further east than poland
you may be surprised to learn that journey comes from french jour, as in bonjour (goodday) 🥖
what about 彼氏 サム
Looks like a spider wearing glasses, 4 empty squares with a space in the middle
my fav language
you may need to install some language packs on windows, or whatever you're meant to do on linux 
also i did find one place in vanilla that uses a non-alias precondition: the event where Willy gives you a training rod uses !Skill
Thing is I thought I fixed it by installing around 10 languages, 2 of which were Nerd Fonts which have many none language symbols, seems I didn't do it right XD
add japanese to the list haha
What's the code for selecting a randomized dialogue in a pool so it won't tied to specific day like Mon, Tue, etc?
for non-dateable NPC, I have to add
The way to do it is the same even if your npc is dateable or not, btw
I see! The example I found is specifically titled "Marriage dialogue" so I'm just making sure
Ah, yeah, marriage dialogue is a little different
But for regular daily dialogue it's all the same
Here's a tutorial using i18n and the random token: https://stardewmodding.wiki.gg/wiki/Tips:_Using_i18n_for_Easy_Dialogue_Randomisation
another question, would {
"Default": [
]
}
suffice?
Marriage dialogue is not different for how to randomise or use i18n, it's only different in which dialogue keys are used and when.
Suffice for what? There's no default list for dialogue that i am aware of
admitedly I tried asking chatgpt and that is the answer it provided
I now know not to do that
Oh, yeah sorry. I was thinking of the keys and like things like rainy_night_5 or something
Pls don't use chatgpt for anything
yep, gotcha
It has no idea how to do things properly, and people sometimes come here asking why their mod doesn't work when it's been coded with chat gpt
(
admittedly ive seen very funny, but still very incorrect formatting)
Dont do it forsy. Only pain and suffering awaits you if you translate your own mod
(Important context here is that i translate my own mods)
i gave up bc i couldnt figure out how to write a sentence XD
Well now i feel like i should maybe inspire you not to give up
is there anything that lets me shake the farmer during an event? or a way to fake it? apparently the event command is only for NPCs 😔
grab them by the shoulders
you want startJittering and stopJittering
or feed them a 27 shot espresso
if you have a crush on harvey there's other ways to spend time with him!
I'm wondering if there are any frameworks that facilitate boots definition?
or a zombies
depending on what you mean, the base game has a Data/Boots asset you can edit with Content Patcher
https://stardewvalleywiki.com/Modding:Boots
you can give them to players by adding them to a letter in the mail, a shop's inventory, etc
some frameworks like Spacecore might offer more extensible features for boots, iirc, but I'm not familiar with the details
https://smapi.io/json/content-patcher/ab8c1be6ff2c4c9eaaae62003e6bc5ae
I dont understand what's wrong with line 5, a quick help please?
how you guyz make mods
That indentation is making it really hard to read (I hope it's properly indented in your actual .json file!) but actually it's just upset because you only put a couple of blocks into it instead of the entire file. It thinks that the curly brace on line one is the one that encloses an entire json file, so then it thinks the closing curly brace on line 5 is the end of the json file and so it thinks there shouldn't be a comma after it.
by what
hmm right
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
You can see once I added those extra bits it stopped complaining.
(I thought it was the same as you at first so I edited it to remove the trailing commas and it had the same complaint so I poked at it further lol)
Mostly by writing json (that stuff you can see in my screenshot) using a text editor like Notepad++ or Visual Studio Code. It doesn't need programming a lot of the time. It's basically just fancy form filling.
In short, there's nothing wrong with it - you just can't paste snippets from your files into it and expect it to be happy.
what about making new characters
Yup, same thing
you should draw it by yourself?
I see, massive thanks for your time 
or collaborate with someone who can draw
You can draw the characters yourself if you want to or you can commission someone else to do it. A lot of us who aren't really strong artists start by using vanilla NPCs as a base.
(Psst you should add the {{ModId}}_ prefix to your character's internal name)
(Ohh aight I'll do that)
You'll need to add it everywhere you're referencing your NPC, too. So all their texture loads, schedule, dialogue etc Targets.
Is it website? Or app
😔 the assets won't draw themselves (i wish they'd draw themselves while i sleep)
Yeah you right most of us yes
Programs. Like this: https://notepad-plus-plus.org/. You can do it in just basic Notepad but I'd advise against it.
I will just see and decide
My eternal struggle is that I want it all to be drawn by me but I don't want to do the drawing. Art drawn? No draw, only art drawn!
@vernal crest good thanks man
so real....
just to make sure, like this?
guys do you like my romanian translation? scarlett said it's 100% correct
Thank you for clarifying I wasn't sure if it was ROMANIAN or not
it absolutely is. do you want to see the original english?
(I am laughing at my own mod btw, this is the dialogue testing mod I made for my framework and I'm now using it to test i18n haha)
oh it just dawned on me thats what the lines are for lol
(i realized before you actually said it, btw)
😔 i promise im perceptive
Is there a way to propagate errors thrown inside this?
[OnDeserialized]
private void Validate(StreamingContext context)
When I catch exceptions from JObject.ToObject<MyClassWithValidation>(), all I get is Exception has been thrown by the target of an invocation.
Here's the traceback I get from these errors:
at System.RuntimeMethodHandle.InvokeMethod(Object target, Span`1& arguments, Signature sig, Boolean constructor, Boolean wrapExceptions)
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
at Newtonsoft.Json.Serialization.JsonContract.<>c__DisplayClass57_0.<CreateSerializationCallback>b__0(Object o, StreamingContext context)
at Newtonsoft.Json.Serialization.JsonContract.InvokeOnDeserialized(Object o, StreamingContext context)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Populate(JsonReader reader, Object target)
at FurnitureFramework.Data.FType.SpaceRemover`1.ReadJson(JsonReader reader, Type objectType, T existingValue, Boolean hasExistingValue, JsonSerializer serializer) in /mnt/data/Code/SV Mods/FurnitureFramework/FurnitureFramework/Data/FType/FType.cs:line 325
at Newtonsoft.Json.JsonConverter`1.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
I do get the errors that are thrown inside the JsonConverters of my data model's properties, which is a good start
if you want to bubble the exception inside a catch instead of mutating it (and collapsing the stack trace) you can just throw; instead of throwing the exception or making a new exception https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/exception-handling-statements#:~:text=statement to re-throw the exception
not sure how that would help?
FFthrows an error inside the Validate method because there's an issue with the data of the json it's parsing, and when I want to catch this validation error to skip a single Furniture Type of the pack (instead of the default behavior which is to throw away the whole Pack object), all I get is "Exception has been thrown by the target of an invocation." but I want to get the message I actually passed into the validation error so that I can print it out to help pack authors with debugging.
what type is the exception being thrown, because "Exception has been thrown by the target of an invocation." doesnt mean shit, and does the exception have an InnerException field/property
Oh shit, didn't think about checking the inner exception. The other instance where I needed to do that, the outer exception was also logging the inner one, so I knew it was somewhere in there
thanks for the tip
Hi, just a quick question, is it possible to use context tags in recipes? For example,
With ID
"infusion_ron": "{{ModId}}_Rum 1 {{ModId}}_vanilla_pod 6/9999 9999/{{ModId}}_infusion_ron/null/{{i18n:infusion_ron.DisplayName}}"
With context tag
"infusion_ron": "{{ModId}}_Rum 1 vanilla_item 6/9999 9999/{{ModId}}_infusion_ron/null/{{i18n:infusion_ron.DisplayName}}"
Instead of using the vanilla item's ID, could I use its context tag instead? That way, players could use any vanilla item from any mod that has that context tag, right?
Only with spacecore
My mod already uses Spacecore for another reason.
Do I just put the context tag and that’s it if I’m using Spacecore? I have no idea if I need to adjust anything.
you'll want to look for cookingrecipeoverrides on the spacecre author guide page
its an entirely different model
you need both the vanilla recipe data and the spacecore override
feel free to copy to your heart's desire https://www.nexusmods.com/stardewvalley/mods/38862
I had just drafted a message to ask you something related to this, but I preferred to make the specific question on the server haha. I’ll take a look.
Related to this, if a recipe has already been learned, is it possible to modify it? For example, if I change the item ID of one of the ingredients, or the quantity required, or in this case swap the ID for a Context Tag, I noticed that once the recipe is learned it still requires the originally learned ingredients and amounts, making it unusable after the change I mentioned.
I just checked it a little while ago, but I was a bit confused since it mentioned that it’s only useful for base game recipes. A friend of mine went absolutely crazy with happiness when she saw this mod you made haha.
It will not keep the original recipe data anywhere, only the updated recipe will exist in the game
If you see the original recipe, that means your change has been done incorrectlt
Well it's true it's only for the vanilla game recipes, but the same method is used for your own recipes
If you want to wait, you can use Cornucopia Cooking Recipe as a reference when it's released
I made the change before this mod. I changed the ID of an item, and a player told me that for a recipe they had already learned, one of the ingredients showed up as an error. As soon as I reverted to the original ID, the problem was fixed. That’s why I’m asking.
I can tell you that the recipe data does not persist in the game files at all
this sounds like maybe you changed the item's id without also changing the recipe?
If you had a problem, it was due to something else
😯
I hadn’t thought about it that way. I think you nailed it. I’ll try doing it again.
I think I’m the problem here haha.
I appreciate that you're trying to have a convo here, but I would prefer that you turn off the ping button if you want to respond with emojis and stuff
Is it possible to warp NPC off the map? Like when they reached an area, the mini map won't show their logo and you can no longer interact with them.
With context: I'm trying to make a custom NPC that instead went home at night, use the train station as to leave the town
"Action": "EditData",
"Target": "Mods/Bouhm.NPCMapLocations/Locations",
"Entries": {
"Cornucopia_WaitingRoom": {
"Exclude": true
}
},
"When": {
"HasMod": "Bouhm.NPCMapLocations"
}
},```
Warp them to a location that has this in the data
yes, you can send NPCs to an unreachable map to make them inaccessible. i don't know how it interacts with NPC Map Locations or uiis though
This Cornucopia_WaitingRoom map is simply the coop map loaded to a custom name
Thank you! Would this work in Schedule json?
You can put almost anything in any json
Sorry, I was just surprised by what you mentioned, and that’s why I used the emoji. I’ll keep that in mind.
@livid kite: change your event conditions to the post 1.6 method, please. (10h ago)
Thank you!
Hello brother, sorry for the late reply
the laest FF 3.1.1 it need SMAPI 4.3
but currently my SMAPI Android it still 4.2.1
the 4.3 SMAPI requirement is just from the manifest, I just uploaded a new FF version that has a lower required version (4.2), but it can't work on mobile because of what I mentioned in the previous message.
Narathip do you plan to bump the minor version at some point?
I choose to require 4.3 despite mobile because that minor had important security feature
the latest version is on Nexus btw: https://www.nexusmods.com/stardewvalley/mods/23458
Usually I just tell mobile users to edit manifest themselves
Oh ok, i will try update into 4.3
@scenic tundra this is the channel to use for guidance, etc. about making mods.
you can make new machines pretty easily with just content patcher (so just json files and image assets, no programming involved)
Interesting
Is that possible with a gatcha machine or a gumball machine?
it should be, but i don't know a ton about how machine data works
whatever vanilla machine data can't accomplish, there is at least one framework that can fill the gap
so the end result is you still only need to be able to put together data
Call the map something eith "warproom" in the name.
Yeah, it's absolutely possible, just make a simple map for them to go to. I use this trick as well with an NPC's schedule ^^ I can post the code i used, if you want??
This is "Therpy Box" where my NPC is sent to for a couple hours during their schedule, the farmer can't go there and it wont pop up on the minimap (shouldn't anyways but I haven't tried it with the NPC show on map mod)
uhh does patch reload also update maps?
asking for friend that def isn't me bc my map is def working after DAYS of debugging it-
Uuuuh i've only tried it with things that refer back to text in .json files, not whole sprites and stuff
hmmm okay, i mean the map tmx files
Ah I can't remember if it has... So yeah I got no clue
Maps are difficult, what are you struggling with?
are you sure you’re editing the correct file
Hm
yes 💔
i'm just clueless
and a tiny bit dumb
Nah man, maps took be ages and a lot of headaches to get to work and I have pretty simple ones
the error:```
[Content Patcher] Can't apply patch (CP) MY MOD?!?!?!?!??!?!?! > {{ModId}} Events > Code/Events.json > OG Basement Loader to Maps/LewisBasement:
StardewModdingAPI.Framework.Exceptions.SContentLoadException: (CP) MY MOD?!?!?!?!??!?!?! loaded map 'Assets/Maps/LewisBasement.tmx' with invalid tilesheet path '../../../../Content (unpacked)/Maps/townInterior_2.png'. Tilesheet paths must be a relative path without directory climbing (../).
at StardewModdingAPI.Framework.ContentManagers.ModContentManager.FixTilesheetPaths(Map map, String relativeMapPath, Boolean fixEagerPathPrefixes) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 417
at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadMapFile[T](IAssetName assetName, FileInfo file) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 263
at StardewModdingAPI.Framework.ContentManagers.ModContentManager.LoadExact[T](IAssetName assetName, Boolean useCache) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\ContentManagers\ModContentManager.cs:line 99
at StardewModdingAPI.Framework.ModHelpers.ModContentHelper.Load[T](String relativePath) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\ModHelpers\ModContentHelper.cs:line 64
at ContentPatcher.Framework.PatchManager.ApplyLoad[T](LoadPatch patch, IAssetName assetName) in E:\source_Stardew\Mods.Pathoschild\ContentPatcher\Framework\PatchManager.cs:line 585.
patch reload should apply to maps as well so that’s why i asked
oof alr hehhhh
Oh you got the climbing issue
this is tilesheet climbing
!mapfixer
There is a map fixer tool by Spiderbuttons that can fix common map errors such as tilesheet climbing.
Upload your map file(s) as .tmx and click FIX to run. Your fixed maps will be downloaded as a .zip file and will need to be extracted in order to replace your old versions.
Feel free to let Spiderbuttons know if you run into an issue it can't fix.
oh yeah, doesn't button have something for that?
I had that issue sooo many time
thanks!!
i just can't read the big blocks of text
Dude it's overwhelming, i get it
Usually its the first line thats fucky wucky and then it ruins all the other stuff that also spits out errors
anyone know why my npc could be invisible during the wedding event? i made sure the wedding sprites are in the right place on the sheet and the wedding works normally besides her being freaking invisible...
if it helps, when reading your log the important stuff is usually at the beginning of the error
got it
all the “at” stuff is just telling you where in the game code it failed
i have like paste the text elsewhere and highlight it to read it properly without my eyes skipping the lines-
makes sense, ty!
hmm, does your NPC have appearances? that’s the only thing i can think of
weddings kinda set in on the sheet tho like flower dance outfit. my wedding with my other NPC works fine so idk why this isnt working now
i thought i counted wrong on the position on the sheet but i recounted several times now
yayyy console isn't mad at me!
huh
i get bnack into game to do that and since its wedding day the event triggers again and shes there? wth
welp
huhh when the showframe command happens it works?
oops double image
aND YEAH ITS A NEW FILE
...
hands pls
can't help with technical stuffs but your npc looks so cool :)
i wonder if i kinda speedran it too fast and the game is confused?
yeah i get bugs during events sometimes when i have fast forward on
can i jsut debug ebi NPCname to redo the wedding or does it work differently from other events
i tried to look it up but the wiki is down
hm, i tried and nothing happens, dang
oh wait
nope nervermind
oh well....guess thats what my testers hopefully will tell me

okayyy i keep running my map files through button's map fixer thing but console is still angry about climbing?
i am about to lose the feeble remnants of what used to be my sanity
ok and i guess i didnt write a pendant accept dialogue thats why they do standard but oh well.
!tilesheetclimbing do it manually?
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"/>.
Yeah occasionally if you have fast animation or fast forward events fuck up
i test on a minimal save but i did skip days in between(tho not directly to skip to the wedding) so maybe it was some CJB shenanigans who knows
wiki finally loaded and debug engaged NPCName sets a wedding for the next day
ahhh
..debating just sending my map files here bc i am CLUELESS
after you run them through the map fixer, do you then unzip the download it gives you and replace your map files with the unzipped ones?
yeah?
just checking
it feels stupid to run through every step but everyone makes silly mistakes sometimes
hmmm dophin is not a fish did offer to help me with my mod earlier.. might just send it them for help-
oh did you ever use vanilla tilesheets from outside of the Maps folder? like furniture.png?
no
all in the maps one, i originally had the tilesheets in the file but was told to remove them, and it displayed fine, then i came back and it did not display correctly? so i put them back and it displayed correctly again
i genuinely have no clue what i even did 😭
here's a zip of my map stuffs-
tilesheet climbing also applies to tsx files
yeah that’s because when tilesheets are embedded, they have a filepath that tells the map where to find the tilesheet
oh
@autumn tide it's out https://www.nexusmods.com/stardewvalley/mods/38900
my map fixer only accepts tmx files
OH
it will not fix tsx files and says it skips tsx sources in its log
oh yeah i saw! def gonna check it out, it's such a cool idea!
yup, i only put TMX files
"DO NOT REMOVE THE TSX FILE" is also only treating a symptom and not a cause as tsx files are not required (though they can be used to transfer over tile animations)
let me know if you have any questions about it
thats my point. hence, it is not fixing your tsx files, which have tilesheet climbing
i know, just reminding myself 
im saying they are not required so if you embed the tilesheets you can remove the tsx files
okay..? still a bit confused, how might i embed them?
..very new to maps so bear with me lol
my "symptom and not a cause" comment is because telling yourself not to remove them is skipping the reason why in this instance removing them breaks things
and can come back to bite in other situations
oh, i get that
when you added the tilesheet to the map it asked if you wanted to embed the tilesheet and you did not select that, so now you need to find the button around where the tilesheet tiles are shown that says "Embed tileset..." or whatever
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"/>.
Does this add the solar panel recipe to Pierre's shop or did I definitely make some of that up? Can't test it right now and I think the IDs might be wrong.
the item id is wrong (solar panels are (BC), not (O))
(O)231 is eggplant parmesan
Haha, oops, thank you! Is the format correct beyond the error? I simply call the item and add recipe in brackets?
fix that though and I think that should work
I appreciate the help!
Hello people. Does anyone know the difference between 0 (stabbing sword) and 3 (slashing sword)? im looking through data/weapons and i cant remember them being different. seems 0 for smaller swords like katanas and 3 for bigger swords like claymore
in the current version there is no difference
iirc back in development the stabbing sword's special attack was planned to be a thrusting attack (which some mods bring back)
ooooh nice. thanks
hi, i'm currently trying to write code in which, for each object in the players current location - do a thing
however i'm receiving an error
code:
foreach (Object stones in Game1.player.currentLocation.objects)
error:
Cannot convert element type 'StardewValley.SerializableDictionary<Microsoft.Xna.Framework.Vector2,StardewValley.Object>' to iterator type 'StardewValley.Object'
if anyone has any advice i'd appreciate it!!
currentLocation.Objects.Values
thank you!!!
Hi! Developer of Stardew Access here (pinging @bitter kestrel to keep her in loop).
For those who don't know, Stardew Access is a mod that adds features for visually impaired folks. At the moment, it makes 90+% of the vanilla game accessible, minus some mini-games, combat, etc. But mods are a big part of the game, so I've been working on expanding the mod's APIs for mod support and have recently released a beta version of the mod. So I'm reaching out here to kind of spread awareness about the mod and how to make mods accessible.
Most mods that add contents like items and such are already compatible with stardew access and essentially what needs to be made accessible are Custom Menus and Custom Maps.
- For custom menus, the mod looks for
ClickableComponentsfrom theallClickableComponentsfield then detect which one is hovered and speak its content present inScreenReader*properties (also uses reflection to detect fields of type ClickableComponent). PathosChild addedIScreenReadableinterface last year to game which has these properties. Look for instructions here - https://github.com/stardew-access/stardew-access/wiki/MenuAccessibility. - For maps, currently the mod uses a TileData property,
TileDesc, but @drowsy pewter suggested in using an "accessible json file" that can be edited via Content Patcher and Stardew Access can listen to this file as needed, and this method is more in tune with how Stardew Access currently handles most vanilla game tiles so I'll move to this method shortly. But I have question regarding this, from what I've researched I need to create a Content Pack with a empty/default json and CP modders will edit/append to this file, how would they do that? - The mod author wiki can found here - https://github.com/stardew-access/stardew-access/wiki/Introduction. Let me know what part of this wiki can be improved.
I've gone ahead and attempted to make GMCM and Spacecore (PR#545 - https://github.com/spacechase0/StardewValleyMods/pull/545) and Central Station (PR#1153 - https://github.com/Pathoschild/StardewMods/pull/1153) accessible as a PoC. Although Central Station's patch will be outdated soon.
And I have another question regarding the GMCM & Spacecore patch, how do I access Stardew Access' API in SpaceShared? SpaceShared/UI/Element to be specific?
So yeah, ping us when needed, it'll be nice to have more mods accessible, and if you have any suggestion on how Stardew Access handles these stuff, let me know! And apologies for this wall o' text.
oooh that's so cool! disabled but not visually impaired here, and I just wanna thank you for helping make SDV more accessible :)
I'm glad!
Hello, folks! I am trying to get started on making Stardew Valley mods. The documentation on events is extensive, but I am having trouble figuring out how to interact with the game. For my first project I am trying to make the transfer funds option from the Town Ledger in Lewis' house available from the in-game menu, to reduce the friction in multiplayer trading. How would I go about finding whatever method the game calls for that menu?
!decompile have you decompiled the game yet?
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Hi, when I finish making the menu for my current mod, would it be okay to ping you to make sure it works with stardew access then? and should I ping both of you?
the mod is entirely visual (portrait replacements framework) so it’s probably not super high priority but I would still like accessibility support wherever I can. I would also love to hear from you if there’s anything else that you would like to see in a portrait replacer framework involving visual accessibility (or any other kind), (like whether having an option for bigger portraits would be helpful/desirable, etc etc)
I also recommend looking at the Better Game Menu mod by Khloe Leclair
So let's say I put the Wizard at the Winter Star celebration. And he isn't where I put him, he's somewhere else. How do I figure out what's going that and/or shove his ass into the right position?


