#making-mods-general
1 messages ¡ Page 232 of 1
If you've just loaded the game, any place where the path across is not part of the base map the NPC's won't be able to cross (the Mountains quarry bridge is another spot)
But if you've slept, they should be able to cross it
I've seen some workarounds that involve patching in Passable T to the spots on the bridges where they should be able to cross
Yeah I just fixed the beach thing so that's all good... I probably should put some sort of exception for the beach bridge but I honestly... do not care enough for that wheeze (also if you havent fixed the bridge by the time you marry him ... what)
That doesnt explain his issue with the casino ones though :(
(I found that his skull cavern schedule works as well so that's good)
What's happening with the casino?
He just gets stuck in the door same as how he got stuc k at the top of the beach
im about to test him going there again so Ill get a picture
Probably because the Bouncer is a map Buildings tile
It would be the same thing as the bridges
Yeah, I was wondering if putting a NPC warp just before the Bouncer would fix the casino
Should
Though maybe janky
Could put a warp behind the building outside, so it looks like he uses a staff entrance or something
That would work also, yeah
I don't... want to do that specifically because then I'd have to do it twice for SVE as well
(i am extraordinarily lazy)
Not that lazy
I'd just say screw the compat
Alternatively, if you'd rather patch the indoors, make a fake door?
Does nothing, they just NPCWarp right outside it. (I did this for my apartment mod's elevators)
Oh, there's an NPCPassable T tile property
i had this issue because i set the destination to be across the bridge before it was fixed (which speaking of, is there a way to have the npc ignore that and cross anyway?)
Could try that on the Bouncer's spot
aint no way after the literal hours of effort I put in to making the mod compatible already
So with the bouncer thing... why would it do that if he can do his other (non marriage schedules) just fine
Have you tested under the exact same circumstances re: sleeping and the Bouncer being gone?
yeah I did go and check to make sure the bouncer was gone (and then I slept two days just to make sure)
he still decides that standing right at the door is definitely the best solution and 100% what he should be doing
(i want to turn him into blueberry paste)
Oh wow, Bouncer isn't just a map tile... that's annoying actually lmao
are i18n keys case-sensitive? đ¤

in CP
I believe so?
If the bouncer being there is an issue I don't know why it wouldn't have done that with... every single other schedule he has
they're not apparently
they arent ?
that's... new
Honestly it's probably not new I just prefer to keep things exactly the same when doing my keys
capitalization and all
Most things are case sensitive in Linux but not Windows
So it's best to be case sensitive anyway when coding
Or you will get bug reports from Linux users
Honestly, it might just be a marriage breaks NPC's issue... probably easiest to embrace the jank of an NPC warp right before the Bouncer's spot
I am moving it for the redesign of the town
yes thank you individual this copy paste is very helpful for your issue
/sarc
(i cannot even replicate this so i dont know what they did, because there is absolutely a warp from sandy's oasis to the desert)
It's not on the desert festival map.
The passive festivals are actually separate maps, so you have to do a warp to those too.
well there's a warp there too - sandy takes it when she goes to sit near her thing with Emily
(ive also watched him go to his spot in the desert festival far too many times since I was trying to figure out how to do string schedule dialogue lol)
What is your schedule
Don't use the desert festival map name
Use Desert
"DesertFestival_2": "730 Desert 43 25 2 \"Strings\\schedules\\AngelOfStars.Mrqifriendable_TheMrQi:DesertFestival\"/2500 AngelOfStars.Mrqifriendable_QiRoom 4 10 3 sleep",
It works for me, this is just an issue someone posted... which I can't replicate (I tested it just now)
They also didn't actually send me a log so I don't even know if they did something to the oasis or something
Yeah, in that case I'm wondering if they have a mod editing desert/the festival
@cunning kiln Not sure if you saw, but your anti-spiral mod is hotmodding! 
The people desire the end of the đĽ
Can I get permissions to edit the schedule for compatibility?
I suppose so. I think you're setting yourself up for a lot of work though.
@lucid mulch: experiment with vscode extension for cp intellisense (92h ago)
does anyone know how to adjust the positioning of the NPC on the swing? offset doesn't appear to be doing anything when i change it, and also i need him to be in front of the swing layer.
animation: "edwin_swingset": "23/23/23//laying_down/offset 0 12",
schedule: 1400 Town 15 12 2 edwin_swingset
I know and I am prepared for it, I really want this redesign.
OK. Keep in mind when you edit events that there are a number of mods that edit vanilla events and you'll need to take those into account too.
Also there's a ton of things that patch Town so I would be careful about adding anything in empty space.
Actually I think if you put the actual standing spot a tile down and adjust the offset upwards, that should keep the farmer in front. The issue is that the swing is on the Front layer.
Unless that's what you're already doing?
let me pull up tiled, but i don't think i am! i'll adjust it if not
would the offset be -16 then?
Your vertical offset is currently 12, so I'd try -4 and see how that works.
okay cool
I am loading the map, not patching it
yes?
can anyone help me add a custom event to my mod, ive looked all over the modding guide and have absolutely no clue why it isn't working, ive tried using EditData and Load in my Json but the event just wont trigger?
That's what SVE does too, but things get patched on top of it.
Well I am only moving the play
ground mostly so I shouldnât need to worry about events
Lavril has an event at the playground (which I think you knew) and I would not want to edit one of Ark's events
they're wizardry
honestly this is why most mods barely touch the town
I mean you can if you want to of course! But I don't think even SVE moves major parts of the town (and they do do enough edits that they have to edit vanilla events around their maps)
sve gets away with it because it existed so early and itâs so big that other modders know to account for it if they want compat, but the town (along with the bus stop) is just one of those maps that are better off not messed with too much
yeah at this point there's a ton more stuff to consider
Should I scrap the idea all together?
I think editing the town is hard because you don't want to screw up stuff like that, so you have to be pretty light and subtle on the edits/only touch things that people don't path into.
!json You'd probably need to post your json so we can see what your code looks like, but also have you seen the event tutorials on the modding wiki?
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
I will scrap it and do something else
Up to you, but it's a pretty ambitious project, especially at your level of experience.
i have looked at everything and even tried debugging in game, but it just brings me to the town in the spot where the farmer starts the even
event*
https://smapi.io/json/none/058c9f8941ab442bad0188a6050c02d9 theres my json anyways
think you forgot to include your other NPC in the load here
also keep in mind if her internal name is {{ModId}}_Layla (recommended) she also needs to be that way in the event
thank you so much
(That would actually throw an error in your SMAPI log though)
im sure i put her name in the thing before though i must have deleted it on accident
ill test that now
You have /speak Layla in the event, but if her internal name is {{ModId}}_Layla you need to use that in the event too.
.Choose East, South, West
Choose result: West
ok, sorry im new to this stuff im just making this mod for me and my friends
OH COME ON
I was hoping it wouldnât choose that one
Welp time to reinstall central station
so would i just do /speak {{ModId}}_Layla
or something like that
yep!
thank you so much
https://stardewmodding.wiki.gg/wiki/Category:Events This might help you as well, there's several event tutorials here!
I am expanding the west of the map, adding a new town of sorts- Oh boy that will take a lot of NPCâs, events, schedules and more⌠Meh.
does the mod id also apply to the other actions she does in the event like facedirection?
West of Town or you just mean a location in CS that's implied to be west of PT?
Implied to be west of PT
reminder you canât actually extend most maps left, just like you canât extend them up
What do you mean? I am using CS
oh, I see, I thought you were extending the actual map west
that's why I asked cause I thought that too 
No no lol
yep!
Basically anywhere you'd use the NPC's name.
But if you miss one, the SMAPI console should spit out an error.
(Ask me how I know
)
it did, but the event did trigger atleast which was my main issue, this has taken me about a month to fix so thank you so much
why how ever do you know
When I do my scripts I just use my character's name, so when I write the code I have to convert it to their internal ID. Sometimes I miss one 
Events aren't even C# though, they're just long, weird strings 
true, i was so confused when writing it..
Now I need a name for the town...
when in doubt... fantasy name generator
Oooo
Countless generators for countless names. Some say it's the best fantasy name generator site around, which is very humbling to hear.
they have a 'places' section
Hmmm
Person , are you going to continue work on your Highrest mod too?
Yes, I have contacted suppot about the manifest and I will try reuploading it now
is there an easy way to find the location on a sprite sheet for a specific item i want to replace the sprite of?
i know i need to use the to area thing but idk how to go about findidn the exact location
Oh I don't know what's going on with your manifest
I meant more are you going to go more indepth with that one?
i have more issues.. i've changed all the characters to have the modid but the fade in isnt working and i get a random error when i try to warp a character in?
Yes! Though I don't recall if it includes 1.6 items or if those are separate https://stardewmodding.wiki.gg/wiki/SpringObjects_Coordinates
This is a table with co-ordinates for every sprite in the springobjects.png file. To use, reference the X and Y values in the row and column headers - eg: leek has a column header of 320 and a row header of 0, so its co-ordinates are 320,0.
Omg! ty!
Oh, I will see if it gains much popularity and if it does I will continue with it.
"weird warp error" Oh I know EXACTLY what this is without looking 
Isn't 1.6 items not even on springobjects
delete the third number here
it did have something to do with 3..
I mean I wouldn't base your decision on that. Wasn't that the mod you wanted to make? Is it something you'd want to play with?
^
Who cares if it's popular or not 
I will keep going with it then
Do I gotta pull out my 'do it for yourself' hat again
Yeah, warps don't have facing. so you need to do just the first two numbers for the coordinates and if you need them to face another direction use faceDirection. 
It is an error that 1.5 let us get away with and 1.6 does not 
ohhhhh
i was probably watching a 1.5 tutorial then
i forgot which one it was
but yeah
Not much changed with events so that tutorial is probably okay, it was always an error that somehow just a lot of people did 
(If you're doing NPC stuff though don't use a 1.5 tutorial as they did have significant changes)
i mostly used the stardew modding wiki for that
sorry, but another errors happened (i hate this..) Its now just straight up saying my 2nd character doesnt exist, despite me using the modId for the character
Is that Conny? Did you add them in with the farmer and Layla in the beginning?
no, did i need to...
Yep, anyone that appears needs to be added there. If you don't want them onscreen you can set their coordinates to 999 999 0 or something like that so they spawn way outside the visible window.
i feel so stupid im so sorry...
No worries, this stuff isn't easy to get when you're first starting out. That's why so many people made tutorials 
Don't worry, the amount of questions I've asked in this server (and the amount of OBVIOUS ones) is innumerable, don't feel bad for asking any at all :3
A majority of my messages in this server are just me asking questions in this channel...
my only messages are in here..
that's what mine used to be too lmao
of the 5k or so messages I've sent 3k are in here
honestly though events were my biggest issue in the codes im now just struggling to make portraits with my gf 
Well since I did justt release Highrest I will give it a break for now and work on some other things.
what have you tried already to fix the missing manifest?
The stuff I recommend is to start by editing the vanilla/beta vanilla portraits and looking at others for reference
But also you could look at the Jazzybee an Poltergeister portrait maker - it's designed for farmers so it doesn't have expressions for example, but if you're doing a personal mod it's probably fine.
I have reuploaded it twice now, I am working with support to try and fix it
as a sanity check, can you send the zipped file here?
ive been doing that for the sprites i didn't even think about the portraits..
just to make sure itâs not going missing during the zipping process
i have hopefully one final yet another issue, its now saying this
and its confuzzling my brain
(it would be very weird for nexus to be eating the file from inside the zip, so it feels more likely that something broke while zipping, though thatâs also very strange)
(is your unique ID meant to be NotAGardener.FL?)
Assuming the parsing is the same as your current version, I think you need a space between the \" and your NPC's names.
Yes
it will cause some confusion if anyone ever needs to troubleshoot it because it isnât obvious thatâs the same mod as Highrest Camp
ok, ill try that, thank you
I was going to call the mod Flower Dance Unlocked so I used the ID as .FL but forgot to change it
anyway, as you can guess, the manifest is indeed there. Strange.
okay, that worked, but the screen is just black, with just the text, then it ends and takes me to the town
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.
do the replacement images have to have a specific canvas size when your replacing them
depends what and how youâre replacing them, but generally yes
aaah i see so thats probably why my mod isnt working, ty!
thats because your event ends with the screen going black, if you want it to wait before your viewport changes and such you need to do a /pause command
@ivory plume I deleted my FarmersMarket mod, you can remove it from the description of Central Station
I mean the start, and through the whole event, its just black
unless i read that wrong and thats the issue
:( why did you delete it
Oh that's because you start your focus point at -1000 -1000
you need to start it where your NPCs are
Well I wanted to redo it from scratch and make it much smaller, I had too many vanilla game files in it which is "shipping" game files, which is technically illegal soooo
do you have any idea what i would change it abouts to
Done!
okay, thank you, ill try that
oh my god it finally works đ it isn't perfect but thats because of my string, thank you so much to both you and the other person (i dont know your names, im sorry
)
you've saved me another month of stress
but of course, theres one final issue 
i can get the event to work through the debug, but i can't get it to trigger without it, like if i go to the time, with the friendship points, and walk into the town, nothing triggers
Did you restart after you finished debugging it? or did you save the game and sleep?
oh i'm on central station page, thanks pathos đ this is a nice way to compensate for how tedious nexus requirement section is (aka : i'd like to have more mods in requirement for VMV but it's a pain because nexus have no order on it whatsoever)
It won't trigger again if you already viewed it with debug ebi
ohhhh
ill restart and see if that triggers it :3
thanks for all your help anyways, like i said, nothing was working until like an hour ago..
its worked..
after all this time
thank you so much

i just need to do the actual script properly now, instead of using a placeholder to make sure it worked..
thank you again for helping
i cant express it enough
I'm back to working on Better Game Menu today. It's a bit silly how much work some of this needs to be Efficientâ˘ď¸. I've started tracking and deferring window resize events because vanilla menu pages just straight up expect to be completely reinstanced on a resize, and doing that for all existing pages every time the window is resized would be dumb. So now, every time someone changes a tab, I need to:
- Resize the Game Menu based on the dimensions requested by the new tab
- Try to get the existing page instance.
- If there was an existing instance, and the current window size has changed from the window size the last time it was open:
a. Try calling anOnResizemethod from the tab implementation definition to see if we need to recreate the menu from scratch.
b. If theOnResizemethod didn't return a new instance, then callgameWindowSizeChangedon the existing instance.
c. If there was a new instance returned, then fire off the API event for a new page being instantiated - If there was not an existing instance, call the method to create a new page instance
- Store the current window size alongside the tab details so we can check against it in the future
- Call an API event for the current page changing.
Khloe are you trying your best to retain the original GameMenu class
Absolutely not I threw that in the bin
Are you using the existing SubMenus or recreating them?
What if stardewui then
I'm using the existing submenus, but writing a new container.
It might be nice if through a modapi, they could be replaced potentially. Or custom tabs be added/removed even.
Such a thing would probably be useful for Better Crafting, right?
Yeah, I'm using Better Crafting for testing purposes.
For ViewportClamp <int x> <int y> <int width> <int height> what do I do for <int width> and <int height>
and VPP
ohhh nvm
I thought vpp just had a new menu open up actually
Since spacecore took over skill menu already
Hi, this server is English only, sorry!
This is what my API is looking like so far: https://gist.github.com/KhloeLeclair/e1001d959384517813b136ff0fc859f9
Mods can register entirely new tabs, or they can register an implementation for an existing tab. When a tab has more than one implementation available, the implementation with the highest priority is selected. Or the user can specifically choose which one they want in a config menu.
Awesome, sounds like you've thought of everything. I wish you the best of luck with this endevor.
I'm imagining the possibilities, GMCM tab, CJB Cheats tab, etc.
I will try my hand at making a tilesheet
The trick is how to handle it when a user has too many tabs to fit on one row. Do I put in a second row of tabs? Do I make them scroll? lol
I intend to insert 40 tabs between Inventory and Skills, please add support /s
But I haven't gotten that far yet.
That reminds me. Letting users hide tabs would probably be good.
Hehe đđ
You should research the various "too many tab" browser solutions. I really like Sidebery which includes a combination of vertically oriented tabs and grouped tree-style tabs
Not to say all of that would translate well, but organizing tabs is a solved problem imo
sidebery my beloved
(speaking strictly from a user POV, being able to collapse tabs or otherwise hide them would be nice!)
My wall has this problem, my friend. Some floors I made don't have it, some floors do.
I want to be careful about something like moving tabs to the side because the vanilla expectation of the game menu is just tabs on top and everything else is under the control of the individual page.
Say you put the tabs on the left side, how does that work with the collections page? Say you put them on the right side? How does that work with the inventory menu's floating buttons and trash can?
It definitely shouldn't be the default option, but is probably the best solution if a modded player managed to end up with a large number of tabs to manage
Do you stack them
Like if I had 30 tabs, I would not want those things to be horizontal
Also, another fun thing with Sidebery... I heard you liked tabs, so I added tabs to your tabs...
Anyways, my goal for the first version doesn't solve too many tabs.
Just the performance issue of constantly recreating every page of the game menu all the time
I swear if you look at the game menu funny it recreates itself
If you look at me funny I recreate myself
If you do want to account for overflow, I feel like scrolling or wrapping should both be options. At least with your container it should handle a variable height.
I would love it if the menu deferred until after you clicked the tab
It will defer.
I'm not sure I understand the problem you're having, sorry đ
There isn't a reason to do the entire (jank af tbh) collections page layout if I'm just checking my inventorying
But for controller players, moving beyond the rightmost visible tab to access the next one is the most intuitive interaction interaction
No one cares about controller players
No one cares about mouse and keyboard players
The bottom of walls are supposed to just be shading, not the texture
I used to use a controller at one point
I quickly realised it wasn't worth it when playing with mods lol
You need to save the last few pixels at the bottom just for a shadow gradient instead of the wall design
This is what your wallpaper should look like
Not only will my mod work for controller players, it will work for split screen players đ
I edited the farmhouse on Tiled, the wall and floor tilesheet after entering the game has this error.
I play SDV with this, will you support me?
See Matt's reply to you further up for the explanation of why that's happening!
Please what about
Sorry the only racing wheel I'll support is the Logitech G27.
I've got the bongos downstairs don't tempt me
The last one we haven't covered yet
Imma start posting on mod pages, "Can you please add Jungle Beat Bongos support?"
What about wiimotes
Or even better, add a comment on their Amazon listing. "2 stars because it does not support SVE"
man i keep trying to replace the gold bar (all the bars eventually) and i cant seem to get it to work but im p sure i have the right coords and the correct sizing
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 link is fine
Height 116?
Assuming you have a 16x16 gold bar image that you want to replace it with, you should be targeting the area `{ "X": 0, "Y": 224, "Width": 16, "Height": 16 }
oop i wonder if that number mistype is why its not working lmao XD
it works! idk how i missed that number mistype but ty for pointing it out!
now i just have to load in all the other assets >:3c
like this right i looked at other farm house builds and they have the same layout as mine
Your map is fine, it's the wall texture that needs to be modified
So what should I fix? :<
So now I'm getting this rather common error message:
Requested path from EastScarp_MtEvermore to EastScarp_FireTower for Gender Male where no valid path was found, for NPC MichaelHart.
but the map does seem to have the correct map warp on the door (Warp 7 10 EastScarp_FireTower). How can I solve it?
(And why does it say "Gender Male"? Is it just because Michael is male?)
(the answer is apparently Discord have been giving away automatic nitro trials without confirmation)
Sure they are... next thing you'll be telling me is I have to follow a suspicious link in your profile to get my free Nitro /s
hmm. whats the least painful way to make a thin wrapper around Monitor to be thread safe
ngl, I'm not familiar enough with thread safety to know whether my implementation is safe or not
But I use a Singleton wrapper with static methods that refer to the instance
public static void Trace(string message, params object?[]? args)
{
if (Instance is not null)
{
Message();
return;
}
QueuedMessages.Enqueue(Message);
return;
void Message()
{
Instance?.Raise(
message,
LogLevel.Trace,
false,
0,
args);
}
}
(I can't answer your question, but the Gender Male message is because of gender-specific pathfinding due to stuff like the spa locker room)
(it's not actually relevant if you're not using gender-specific warps, and is only there for informational purposes)
I know that the gender male thing is just what spacecore pops up (pulling the internal gender of the npc) cause i had issues like that with Qi... as for why that doesnt work.... I don't know - is it an NPC warp?
This looks cursed, lol
It is not, it's a door warp and it doesn't seem to actually work for some reason that I don't understand.
door warps generally work
There is a net 6 thread safe zero allocations logging lib I was looking at
Wait, are you referring to Monitor as opposed to IMonitor
I'm realizing now that Monitor is like... a threading thing
https://learn.microsoft.com/en-us/dotnet/api/system.threading.monitor?view=net-6.0
smapi IMonitor/Monitor
Do you want me to look at it at some point?
In the first like 20 lines of code of this mod I've already started making new threads and want to log from them
Let me just check something: I accidently set a LocationContext to the same tile instead of the full map
and I know the standard smapi IMonitor isn't remotely thread safe
Apparently, you can use Monitor to thread safe IMonitor
public void ThreadSafeMethod()
{
Monitor.Enter(_lockObject);
try
{
// Critical section
}
finally
{
Monitor.Exit(_lockObject);
}
}
Note, this is not something I know anything about or have tried, but I found it interesting that this exists for this purpose
Tbh imonitor isn't thread safe but in my tests it's been mostly fine
could be the whole occasional door not working issue too
I usually back off the logging in release builds though
Hey
does someone know how to get the mod author role?
By making a mod?
Ans you have to be lvl 25
I think
thx ^^ my lvl is to low I guess xD
I could try a LockedDoorWarp I suppose
well ive almost got half the buildings done and it took me... sigh 2 hours...
This is no different from lock (obj) { ... }, the name similarity is simply a coincidence, and it only works if you lock every usage of the IMonitor across the entire mod (and even then I'm not sure if it's really thread safe because even though every mod gets its own IMonitor, the loggers collectively have some shared state).
I wouldn't synchronize access to IMonitor, personally. I've never really noticed a significant thread safety issue with it (maybe it corrupts console output or something but it won't crash anything) and it's going to impose a huge overhead because logging can involve stuff like file I/O.
If it's really important to have thread safety on the logger instance then the performant way to go about that is to have every thread post their log entries to a threadsafe collection - multiple producer, single consumer - and have the consumer do the actual logging.
In that case, you can probably use a ConcurrentBag, perhaps
I have already passed my concurrent programming exam and you guys cannot force me to think about this ever again
/lh
I think the best bet is to just completely rewrite the entire logging system
Don't use a concurrent bag
without knowing any context, it sounds like you guys are up to some crime
You do want some degree of order
Concurrent Barf?
I'm always up to crime
british bath, baff
Concurrent barf....
I don't understand what's up đŚ Maybe it's just cursed map?
Needs a summer save to watch MIchael not use the warp
Remind me in 16 hours to take a look
always, atravita <3 (#6553120) (16h | <t:1740848372>)
why is uberbot being nice to you 
because atra is awesome
Thank you. I suspect it's something fundamentally flawed with iether my map or the game.
yeh, it just 0 schedules Michael to be in the Fire Tower for summer
He exits fine but won't re-enter even though the farmer can do so
atra, have you ever played balatro? I feel like youâd like it
I'm having trouble even knowing where I should ask this question, all these channels feel rather confusing to navigate. The question I have which I've searched for in the tab, but can't find the answer; is there a mod that allows for %verb, like how in base game you can do %noun and %adj?
Do I look like the type of person who has the free time to do that
sorry...
you should try it out, each run is pretty short, like 30mins ish sometimes
Don't be sorry!!!!!
Tbh, iro, I'm in my gym era
That is the other half of it
I keep forgetting you have healthy hobbies
Do you knit while you treadmill. Actually, I feel that can be dangerous. Sharp objects and all.
unrelatable ngl
I haven't been on a treadmill successfully since I fell off one in high school
after diving deep into this mod concept, I'm starting to realize the scope of the problem and its going to suuuuuuck
I run road and trail, but swim or do stairmaster
Anyone know where the image for the picnic blanket is (Penny 8 Heart event) Can't find it in Maps 
I do knit between sets when I lift at home though
it's in LooseSprites/Cursors âď¸
Thanks 
anyway the reason I suggested balatro is because I have a feeling youâd enjoy the Number Go Up aspect of it
down the bottom, above the water, to the left of the JOTPK sprites
Afaik no
I wonder if it's due to my weird layering
Probably a dumb question but can Cursors.png be used as a tilesheet and applied to a map or do you need to only use files from Maps?
it can be! you just need to use the mod Arbitrary Tilesheet Access
looking for feedback in #making-mods-art
not a dumb question at all since it's a plague on map authors
is there a command for ATA? like !ATA or !ata or !Tilesheet
there's likely not much need for it since this is realistically the only channel it'll be used in
hmmm
I hadn't seen this! Thank you for letting me know!
well there are other commands that are only used for modding
such as !json
yea but it's like 1 mod
ehhh true
button can make the command if desired
json is like, every mod hahah
i won't say whoever adds !ata will get whacked but we'll see if it's asked often enough to need a command
i'm a desperado not a cop
!aita
fair enough
@ivory plume do you have opinion on incorporating the patch arbitrary tilesheet access does on ModContentManager.GetContentKeyForTilesheetImageSource into smapi itself?
okay so here's the weirdness, one is in camel case and the other is not, FireTower. But... I can't find the lowercase anywhere.
!ftm
Farm Type Manager (https://www.nexusmods.com/stardewvalley/mods/3231) is a mod that allows content packs to spawn in ores, forage, enemies, and more.
!mmap
where is the 1.6 migration page
OMG it is in fact the freaking case. I think/hope.
That's... line 74 of 588 in my TODO.txt file.
588
scary
yep atra, found it and solved it. But people can play the mod if they want to. It's a bit piecemeal however.
(I saw that it had a case difference earlier but forgot to look in data/locations)
mutters angrily about case related errors
hm
Note: 1.6 adds the ability to add new buildings natively via CP, which should be the preferred method. SF still supports several features not present in the base game, including custom light sources on building exteriors or archways that can be walked underneath.
i thinkarchways that can be walked underneathis supported by collision maps now
ah yeah I added that part from vaguely recalling another person's message here
feel free to yeet
also feel free to link to MMAP in that description regarding custom lights
Alright slightly new question, does anyone know where I can find the %noun and %adj XNB files? I've been searching the files for a while and cannot locate them, nor can locate them through a search
Strings/StringFromCSFiles
Dialogue.679 to 698 are adjectives, Dialogue.cs.699 to 721 are nouns
Thank you
there are also verbs, but alas you can't reference them in dialogue with %verb
Did this ever get answered? If not, your WallID Tiledata should only cover the top portion of the wall (so, only 1-tile tall for the TileData object), not the tile closest to the floor. It will automatically use the 2-tall space by using the TileData block as the top tile.
i wish you could. oh the madlibs you could play with quest board text
Yes, they figured it out (and I learned that having the object two tiles high does actually affect where the wallpaper goes!) 
Great! I was trying to catch up on the backlog but Discord is being a butt and keeps throwing me back down to the newest messages instead of letting me read the old ones. xD
i literally cant
why not
If someone else made a closed source C# mod and I like that mod but want to fix some bugs in it and add some new features so I make my own mod that does the same thing (figuring out my own implementation), do I need to ask for permission to do so? Is it polite to do so? What if the person doesn't appear to be around anymore?
maps probably
can i delet train station for it
if you arent using their code, you dont need permission
do it 
also if you don't call it the same thing redux or refer to it as its succesor i don't see why you'd need permission if you don't use any of their code
still mindblowing that I discovered that every framework mods can be categorized into 3 neat, roughly equal in size categories: items, maps, and a nefarious third thing
I didn't think so but it doesn't quite feel like a two cakes situation if I didn't have the idea myself, if that makes sense? Like I am very much just wanting to make a newer version of that mod that someone else made.
well thats like saying most things are made of carbon or silicon or anything else
That nefarious third thing category is doing a lot of heavy lifting lol
i also feel like
nitv is straddling maps and items
cus u get items yes but its also just critters u kno
(yeah I think it's fine in my opinion. pure ideas and mechanics are not really anything that can be owned)
I say NITV falls to items since it's not really direct map changes
hmm I should add furniture machine
Well, I now have a very concrete idea for what I want to be able to achieve with my C# learning! So...I don't feel like playing the game anymore because I want to make C# progress instead xD
Bus Locations
this one didnt have the deprecated message so i was unsure
Does the FTM Config html thing have the option for multiple maps? Or does it do one at a time?
oh it was never on the page
i just wanted to mention it bc central station has support for it
ill come back and add peliQ once i like
decide what it is actually about beyond the one time thing goat wanted
i dont think a new modder will rly get what i mean if i just say "ok its about item queries"
what is this mod u want to do 
You can switch spawn areas with this dropdown menu. They're all loaded and saved, even if you have another one open.
Will that work even if it's a completely different map?
I was intentionally avoiding saying it in case Atra goes "oh I have already done that, here it is!" and I lose motivation to make my own xD But it's Event Lookup.
Each spawn area targets a specific map, which doesn't need to be the same, e.g. that test example looks like this in the file
"UniqueAreaID": "Area 1",
"MapName": "Farm",
//...
"UniqueAreaID": "Area 2",
"MapName": "FarmCave",```
isn't sheku still active? i thought i saw them on recently
sheku did say event lookup update being worked on yea
apologies if that does make u less motivated but 2 cake is real
Thanks for all your help with this Esca, I appreciate you 
Yes sheku is active but none of the comments on Event Lookup have been replied to for ages so I thought "maybe sheku is not interested in working on this anymore" and then, my brain being what it is, I forgot all of that and was only left with a vague thought of "author is not around". Whoops 
(if you did make an open-source second cake of event lookup, i would consider using it)
personally i'd want it to act more guidebooky
let mod authors give hints to their events if they wanted
ooh
Hey everyone, I remember there was a way to have multiple mod folders in SMAPI and a SMAPI application (or a shortcut, can't remember) that is assigned to each folder, but I can't find the wiki page that mentions it because I don't remember what this method was called. Can someone help?
what
mod profiles?
!modgroups
See this link for how to load different mod groups: https://stardewvalleywiki.com/Modding:Player_Guide/Getting_Started#Can_I_have_different_mod_groups.3F
I don't know the exact name
i got confused bc "multiple smapi", but theres only one still
that's why I can't find
you just launch it with different arguments
i frequently think "i would enjoy a thing to replay heart events, like cave of memories or even just a weird menu" but then i remember how events have side effects and you'd have to account for not doing the side effects in memory mode and bleugh
Oh, thanks chu!
replaying sve andy's event 999 times to get 999 ancient seeds
replaying lacey's heart events so you can speedrun getting enough mean points that she rejects your bouquet
I would actually be going in the opposite direction so I don't think you'd like what I have planned! I want to make a version that's much more explicit about exactly what events there are and their exact preconditions and IDs so that I can make sure I have not missed a single event before I uninstall a mod lol
(This is surprisingly hard because not all mods register all events at the start lol)
Yeah I think with those ones I will just have to stick with cursing those mod authors in my heart xD
while everyone has complete freedom, no method is completely foolproof. just make something that covers the recommended standards and you're good
not enough from the framework's side, because mods like mine can register their own event commands which would have schrodinger's side effects
doomed then
There is an idea in the game of memory events
But not sure how much that is....respected
hey that was a serious post u cant just laugh emoji me like that
i think if you got to critical mass, you could make some kind of subclass of Event and custom event commands could check for that to gate their side effects or something. or maybe whatever atra said
implement Quick Save into the mod, make a save before the event, load the save after the event
just swap out game1.player
not all side effects are farmer based
swap out locations too
abigail's 14-heart permanently alters the map, lol
doesnt one of elliot's make him vanish
make clone NPCs then
to my knowledge, event repeater is just the MarkEventSeen action but implemented a long time ago. does it do anything else?
just make a deep clone of every object in the game as a backup and swap the clones back in after youre done
but what about event triggers that store data in a global json file to disk
let's clone the file system just to be sure
or run in a sandbox VM
dockerized events
i had it on my todo list for lacey to implement this for Cave of Memories, but that mod may be dead
"Some subclass of event" is also my current working theory for event promises
Event state, mannnnn
It has a bunch of different commands and things but I've literally only ever used it to identify which event is playing so I can look the event up in the files xDD
doesn't Debug Mode tell you the current event id?
cs return Game1.currentLocation.currentEvent.id; will probably also give the same result
even better, you can use cs return Game1.currentLocation.currentEvent.fromAssetName; to find the file
Ugh I'm having a nightmare with Tiled right now. Got a lot of SMAPI errors. Can anyone help? https://smapi.io/log/d710941ec2a9440d94b3166f6423b1c3
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 11 C# mods and 13 content packs.
invalid tile gid is actually a nightmare
as much as i love using .tsx files instead of embedding tilesets, do you currently have any in your project?
I do have tsx files in it yes
if you embed them into your maps, this error should clear up
i don't know exactly what causes it, maybe to do with adding/removing/moving .tsx files, but embedding them should solve it
How do I embed them?
there's a pair of buttons below the Tilesets pane in Tiled, Embed and Export
only one is enabled at a time depending on whether the tileset you're viewing is currently embedded (in the current .tmx) or exported (in a separate .tsx)
While I wait for feedback I will make a list of NPC mods for people to use (since this one will be updated)
if you have multiple maps, you'll need to Embed the tilesets in each of them
u can use a tsx if you want, if u have a lot of shared ones
cant load a tsx to a target though,
I kinda used the tsx by mistake and want to go back to png lol
i'm a big proponent of .tsx files but they do actually cause this otherwise completely unresolveable issue
well u can just embed that
again they should be fine if you simply embed the .tsx tilesets into each map
I've done that but Tiled is giving me problems now. The tilesheet has been cut differently and seems to have duplicated on the same sheet??
I'm not sure, I only just discovered that Debug Mode does more than just show tile coordinates xD
It duplicates when you embed it. The duplication goes away when you delete the .tsx file (or maybe just move it into a different folder?)
Not sure about the tilesheet changing though - it shouldn't if your tsx was pointing to the right tilesheet.
Ah ok so that's normal then. I've deleted my tsx files and its still messed up:((
yep, the embedded and exported tilesets will both show in your tileset panel, so moving/removing the exported one should hide it in the panel
'cut differently' sounds ominous
This is stressing me so much. If i pay one of you will someone fix this đ
rarely, once in a blue moon, a map can be just plain fucked
If you send me your maps and tilesheets (if you have any that aren't just vanilla ones) I can try to fix it.
hopefully this isn't one of those times
That's so kind of you. I'm using all vanilla tilesheets, lemme just get everything together
Hi there!
Does anyone know how to do custom gift messages and hearts? Like you gift someone a rock and they say "rock and roll" and give +10 hearts? :D
Thank u
I really hope not 
AcceptGift_<id> as your dialogue key and "$action AddFriendshipPoints <NPC name> <count>" in the dialogue line.
Thank you abagaia and selph!!
Ok give me a bit
Sorry I forgot I didn't actually have Tiled on this computer so it's taken me longer than expected. Did you make a backup of your maps before embedding the .tsx files etc?
There's no rush, don't worry. Sadly, no, because I didn't fully realise what I was doing when I put the .tsx files into Tiled. I'm never touching them again lmao
do you embed .tsx files to preserve existing animations on vanilla tilesheets?
oh oof discord borked a minute there, but if you do and want to use pngs i have a little suggestion for future mapmaking endeavors
Ah, unfortunately I don't know if there's any way to rescue them in that case. Did you permanently delete the tsx files or just move them/send them to the recycle bin?
I'm pretty sure that's why I tried using the tsx in the first place because the animations weren't working on the pngs for some reason and yes please, I'd like a suggestion
Ah ok, well I do still have the files in the recycle bin
Can you send those to me as well, please? I'm not sure I can salvage the maps but it's worth checking if having the .tsx files will help.
Sure thing
Here is a list of Tiled extensions. among them is a bulk animator (lets you animate in bulk from a selection) and a plugin to one-click remove all unused tilesheets in your current .tmx file.
the second one is relevant because my suggestion is to make a template .tmx file which contains every single tilesheet you could possibly use, all animations included. it seems that you are making a full custom location instead of a vanilla map replacer, so this method won't be of much trouble - simply copy your template map before working on your actual map, and then use the plugin to remove all unused tilesheets when you're done
If theres a shiny new tilesheet youd like to use in your maps, embed that tilesheet into your template .tmx to update it, animate as needed, and then copy it again, etc.
Oh wow thank you. That sounds like a better way to do it 
i have two template maps, one for outdoors and one for indoors, so it cuts down a lot on the prep process
Hi! I sent you a message on nexus about a potential collab on portraits for this
also: i suggest making your template map based on the vanilla meadowlands map (it has animated waterfall tiles, which due to the way the tilesheet is laid out, unfortunately doesnt work with bulk animator). animating the shoreline from spring_island_tilesheet1 is less tedious than the waterfalls after all
Wait, so when you say a template .tmx file, do you mean no map tiled on yet (blank) but all of the tilesheets already imported?
yeah, my template map is totally blank, but with all tilesheets i use included.
(it also doubles as a test map for testing new additions to my tilesheet mod)
And how do I copy the template to the new map?
you just copy the .tmx file and rename it
anytime! i find .tsx breaks my maps way too often and i'd rather use my time working on the map than fix .tsx-induced problems 
Your two tsx files were both for the same tilesheet. Was that intentional?
Yep, lesson learned haha. I'm already setting up a template map now 
I have learned enough about .tsx files from blueberry now that I feel safe exporting one from a vanilla map to embed into my own map, but I still only do that if it's going to be guaranteed less faff than animating/adding tile properties myself.
No it wasn't intentional, I don't know how I did that!
I want to try to avoid embedding if I can because I'm not fully familiar with how it works but in future, I won't be using .tsx files
i'm a .tsx hater unfortunately
though making the template map does involve squinting at the tile animations window bc not all vanilla objects are straightforward to animate
By the way, you don't need to use the "z_" prefix with tilesheets for non-vanilla maps because the game won't be checking tilesheet order anyway.
I just don't understand that I've made a map in the past with pngs only and it's still animated fine lol
i use prefixes if only to make some tilesheets mine appear first in the tilesheets tab 
Like my old map had an animated fountain, water etc
But I didn't use any .tsx in there
Did you start that old map by editing a copy of a vanilla map?
Yeah I prefix them for access during editing too xD
I don't think so, but I can't be certain, it was months ago haha
i think i did use a .tsx for my last map bc i was midway into designing it and realized that i needed a beach area... it's a bit irritating because now the .tsx appears as a duplicate in the tilesheet pane until embedded (i have accidentally used tiles from a duplicate tilesheet before), so nah i dont think i can do .tsx anymore
I already know I won't be using .tsx again lmao
i aint using them until i have a way to load it into content pipeline tbh
thats the big pain point for me
Unless you started it by going File -> New -> New Map (which you should never do) then you probably did start it by using an existing map as a base and therefore the animation data might've already been embedded in the .tmx
Ahh that makes sense! Why shouldn't you choose New Map?
What is the appeal of wanting to load it into the content pipeline anyway? I get why .tsx files are useful for creating the map in the first place but not why it'd be advantageous to actually publish your mod with them (except for tilesheet mods).
though making a template map does cut down significantly on my work time. i can just go right into designing 
Because then you have to manually adjust all the map settings to ensure that you have the right settings for Stardew and people frequently get that wrong.
Did you make your template map by copying a vanilla map and then adding to it? I haven't made a template map because I'm not convinced I want to do enough mapmaking lol but if I did I would start from vanilla rather than new.
Gotcha, so it's advised to start from a vanilla map then?
i use the meadowlands map for the base 
the maps im making have no template. Im diving headfirst
so that kailey can share froges directly animated
Ah I've had a eureka moment, it's all clicking with me and makes sense 
Okay I think unfortunately your maps are broken beyond what I can fix. All your tile IDs are wrong and you have a bunch of tiles placed from a non-existent tilesheet - neither of which would normally be difficult to fix except Tiled is not telling me that it's missing a tilesheet so I can't figure out what I'd need to add to fix them.
but also if the game itself is regoranized such that tsx is loaded separate target (if that's even viable)
Ah okay that is the tilesheet mod exception I mentioned lol
then i'd be able to ref the waterfall 1 6 tsx and get animated
i dislike the general fragility of needing tsx in exact same folder as tmx
That's ok, I've actually learned loads from you and Kisaa from this mistake so thank you both for clearing up all the questions I had 
this is all in context of publishing a mod with not embeded tsx
Thank you so much for trying Aba
honestly from experience, breaking something so thoroughly is how i know how to do what i do now 
(i fucked up my first map drawn from scratch lol)
Haha, well I'm kinda glad it happened because I understand things much more clearly now 
I think it's related to the fact that you had two tilesets referencing spring_outdoorsTileSheet.png in two different places via the .tsx files but they are now both referencing the same copy of the tilesheet.
Oh I really messed it up somewhere along the line then. I'm going to start again with it, but after some sleep lmao
do you edit your maps directly in the unpacked Content/Maps folder?
No, I create a folder for my mod and put the tilesheets in there temporarily
ah i see
you should edit in the unpacked folder to prevent reference/pathing issues
i know it clutters up the folder real bad, but that's what ctrl + F is for
There's no need to put your maps into the unpacked folder to avoid directory climbing issues
The map and tilesheets just need to be in the same folder. Doesn't matter where on the computer that is.
Could be ~100 folders into your OneDrive if you wanted
oh wait, wrong phrasing, what i meant was the tileset referencing the two different pngs
The important points is just map + tilesheets in the same folder.
I just put them in my newly created folder for the map mod I'm making and I know how to solve the directory climbing issues should they arise but they don't seem to doing it this way
And then before I publish a mod, I delete the tilesheets from the folder
I think the tsx issue was just general misunderstanding of tsx in the first place, since creating two tsx files for the same tilesheet for use in the same map is unnecessary (and, as we have seen, breaky) no matter what folders are going on.
Yep I agree, I didn't really know a thing about .tsx before today haha
I was going to admit defeat and make myself a copy of the Content/Maps folder that I make maps in but instead I am going to try chu's suggestion of symlinking tilesheets.
i guess it all depends on what we're most comfy with 
Yep, that's what's good about this. The fact there are loads of different ways to do the same thing
theres actually
1 more layer of indirection 
i have a .mapwip folder where the tmx go and then i do a copy to mod folder later
i dont know if i recommend what make sense to me for general usage
Although I think I might make myself a copy of Content (Unpacked)/Maps anyway for opening other people's maps because I do put them into there currently and now I get confused about which maps/tilesheets are vanilla.
the only time i worked on a map in its release folder is because the map is part of a content pack for a framework thats being updated constantly in alpha. having to copy the .tmx into unpacked Maps with every released build is a hassle
otherwise i just edit in unpacked Maps folder because directory climbing confused me in my early days until i figured out i could just change the image source in notepad
This part would possibly open me up to forgetting to publish my map if I tried it lol
me and my way of organizing assets folder in a nutshell. what a mood
Just to be clear, I do not suggest to people that they should have their map inside their mod folder and the tilesheets in Content (Unpacked)/Maps. If they keep the map in the mod folder, I tell them to copy the vanilla tilesheets in there too.
I never recommend anything that involves creating a directory climb even though it is easy to remove in the xml.
Too much chance people will misunderstand and not realise the necessity of removing the path in the xml.
I actually think it was you who helped me fix my first directory climbing issue ages ago Aba 
It was most likely aba, theyre really on top of helping people with Tiled issues (shoutout aba theyre my GOAT)
I'm pretty certain it was them, I will also shoutout Aba 
pretty sure GOAT is someone else /j
Amusingly, I am also GOAT's GOAT xD
a well-deserved title 
GOAT²
Well, this GOAT² has to go do laundry before I forget again 
Anyone know about update subkeys?
When it says to put the update subkey "somewhere in the title or description", is that of the manifest.json or the nexus page?
nexus page
Thanks!
(specifically in the sub-file's title or description, rather than the mod itself)
Yep gothcha! Thanks!
Monthly mod stats time!
Mod compatibility
74.8% of SMAPI (C#) mods are compatible or have a workaround, up from 74.2% last month.
Unique mods by type
We have 268 more mods this month. That includes:
- +182 Content Patcher;
- +54 SMAPI;
- +24 Alternative Textures;
- +16 Fashion Sense;
- +8 Farm Type Manager;
- +3 XNB;
- 0 Better Artisan Good Icons;
- 0 Custom Music;
- 0 Dynamic Game Assets;
- 0 Mail Framework Mod;
- 0 Shop Tile Framework;
- -1 Custom Furniture;
- -4 Producer Framework Mod;
- -5 TMXL;
- -9 Json Assets;
- and 0 for frameworks with <100 content packs.
Content Patcher packs
We have 10,533 Content Patcher packs.
The top five Format versions are...
- 2.0 (3,270 â 3,294), 2.3 (746 â 754), and 2.4 (514 â 547) for Stardew Valley 1.6;
- 1.19 (572 â 568) for Stardew Valley 1.4;
- and 1.3 (475â) in old unofficial guides.
Open source
The open-source stats dropped recently due to Nexus' export API not including mod descriptions (so the scripts couldn't detect GitHub links in the description). That was fixed this month, so I rebuilt the mod dump, added a script to detect source link discrepancies between the mod dump and compatibility list, and fixed all detected discrepancies.
Besides raising the percentage of open-source mods from 59% back to 65%, that also means changes to mods' source links after they're first published will now correctly be reflected in the monthly mod data updates.
- We have 3,244 tracked C# mods, of which
- 2,119 mods (65%) have a source code repo, with
- 1,145 (54%) in a multi-mod repo and 974 (46%) in a single-mod repo.
Web costs
And finally, web hosting costs for the SMAPI.io site, update-check server, and API held steady around US$203/month. (The graph is always a bit behind due to billing cycles.)
See also
- [Stats for January 2025](#making-mods-general message).
- Raw mod dump (65GB download) and scripts to analyze it.
- Download all open-source mod repos.
And that's it for this month!
how do you get negative mods
That means mods of that type were either deleted, hidden, or converted to a different type. For example, a Json Assets mod converted to Content Patcher would be subtracted from Json Assets and added to Content Patcher's total.
+3 xnb? đ
Well, on the one hand it's nice to have many people enjoying (or at least using) one's work; but on the other hand that means many years of daily maintenance and support ahead.
i think it'd be pretty annoying if sdv has competing mod loaders so i am in favor of smapi monopoly 
Hey Pathos, is there a way to use the mod dump to see what mods have the most mods using it as a requirement? Like it'd be interesting to see which non-frameworks dominate, like Spacecore.
You mean stats on the Dependencies manifest field? Yep, that'd be pretty easy to do.
soon only content patcher will remain
(well not really, FTM/FS/AT will likely be eternal mainstays)
i wonder how many widely used mods still have TMXL as a dependency? 
hopefully 0 because it hard crash ur game when u got to forest sometimes
it also freezes the game when you load a custom farm map sometimes 
it just didnt want you to get the foragables
and also somehow send you to a weird void dimension where the farmhouse interior on save load becomes weirdly dark..
(There are 238 TMXL content packs remaining, down from a peak of 339 in April 2023.)

(It's been steadily decreasing ever since.)
oh at least it is decreasing
oof, that's still a lot
guess i wont be removing the preemptive warning to remove TMXL before reporting bugs anytime soon 
i think my map is done! (the outside, now to do the buildings and NPC's)
which gives me pain to even think about
I just finished my unofficial update for OhoDavi portraits, can I share the mod here?
I would recommend sharing it in #modded-stardew
OhoDavi has open permissions on their assets
nothing stopping you then, but yeah, the people in modded-farmers (who actually play
) would probably enjoy it more

pretty sure that channel cant get enough portrait mods
I think it's just anime
different mod
Can I request the mod author role?
you can dm bouncer
has your mod actually been released yet
Iâve released several mods
fair i wasnt sure if you just had the troublesome tsx map mod
usually i just assume that if someone has A Mod then they will immediately cheeto 
unless im there when someone posts their mod there is a 95% chance i will just never know or remember
and even if i am there that only brings it down to like 90
Haha thatâs fair
Does anyone know if there is a sprite of a big tv facing north?
Iâm pretty sure all the vanilla TVs are facing forward - none face north
Fun...
From what I understand you need a certain rank for a modder role too. At least that's what they said when I put in for it. It's a little confusing
You need to be cowpoke to get Mod Author
and yeah all the TVs face you. I think there's a mod that adds a flipped TV though
if I can remember what it is
It's fine
I figured something out
yeah I did the same tbh. It's funny because no couches face the TV either
you need to be level 25
I did the ol' sideways couch
anyone know where the animation vfx for the barrier to the mutant bug lair is stored? ive looked in all the game folders i can think of and cannot find...
have you looked into cursors? bc thats where the sprite for the railroad blockade is stored iirc
worth a second look 
it took me 5 looks to find the gender buttons in the cursors, i needed someone to point it out for me in the end
so its always worth a second look
There's a very real possibility it's just one of the health or stamina bars recolored with code
That trick is used a lot
farmer level, then you DM bouncer with a link to your published mod to request the role 
Did they change that?
When I did it you had to add yourself to the wiki with your links there
oh that too
you see why I was a bit confused at the time
when i requested pixelsmith as a new role i had to send a mod link
But the roles info says nothing about the wiki thing
you'll be requested to do so in the bouncer DM
You have to ask permission to edit the wiki
it does, the link in that role snippet tells you
you need permission first before you can edit the wi--yeah what aba said
i can confirm its in cursors (replaced it was an all black image and then check the animation in game)
oh hey theres a thing here in cursors which has a trapdoor hatch with a ladder going down [/makes note for future reference]
i still cant find it
also i think maybe what roku meant isnt that itll look like a stamina bar in cursors but that its literally just a single pixel stretched and coloured with code as is often done. so. good luck finding that pixel and not having it be messed up for anything else
(which is whats done for the stamina and health bars)
might be these near the top?
between the level up and tiny numbers to the right of menu tutorial sprites
i thiiink i may have found it
I think this is it
sadly it's not gonna help me. ill need to figure out something else for what i want to do
Hmm yes these tabs are rendering perfectly. Ship it.
In other news, it takes about 7100-8000 ticks right now to open this menu compared to the fastest I've seen the vanilla GameMenu opening being 22000 ticks.
And this is on a fairly minimal mod pack so there isn't any additional content for the collections tabs.
That's tested by harmony patching a prefix + postfix onto both the GameMenu constructor and the BetterGameMenu constructor.
Also I've seen game menu take over 40000 ticks to open, lol
is this anytime you'd open the game menu?
Yes. Mind you I'm talking timer ticks not game ticks.
2.2 milliseconds for vanilla? That seems incredibly optimistic for a cold start, I don't think I've ever seen vanilla opening anywhere close to that fast. It must be a warm load?
Yeah, that's a warm load.
For fun I'll get cold load numbers for both menus.
Though I don't think that's strictly fair
why not?
Most players open the menu considerably more than 1 time while playing.
i mean sure, but with a big modload the first time they open it is going to be possibly the only time they'd feel how long it actually takes for it to open
Cold and lukewarm time for the vanilla menu: ```
Started opening menu.
Finished constructing menu in 978500
Started opening menu.
Finished constructing menu in 24931```
Cold and lukewarm time for better: ```
Started opening menu.
Created new instance for tab 'Inventory' using provider 'stardew'
Finished constructing menu in 120856
Started opening menu.
Created new instance for tab 'Inventory' using provider 'stardew'
Finished constructing menu in 8265```
I probably obsess far too much over the cold MTFP, but to me that's the real metric.
Mind you I still haven't started caching a few things that I should reasonably cache.
Because that's where the jank comes in. 2 ms or 10 ms for a warm load doesn't make a huge difference, either way it's not a jank frame.
It's when the cold start takes 200 ms that the jank kills you.
I'm also getting happer with the API as I actually implement things and test everything.
Menu tabs, as an example, now just have a draw method instead of a Texture and Source as that was needed for the Skills tab and I had kind of forgotten about it, lol.
And I have a helper method in the API to create a draw method.
both cases show great improvements
(Aside, you should definitely name your mod No More Menu Lag)
No More Menu because it would open before you get to say Lag
lmao
Good luck with that...
just the title has threading
I am so happy that my resizing code works as intended
As an example: ```csharp
internal void RegisterCollectionsTab() {
static CollectionsPage CreateInstance(IClickableMenu menu) {
return new CollectionsPage(menu.xPositionOnScreen, menu.yPositionOnScreen, menu.width, menu.height);
}
AddTab(nameof(VanillaTabOrders.Collections), new TabDefinition(
Order: (int) VanillaTabOrders.Collections,
GetDisplayName: () => Game1.content.LoadString(@"Strings\UI:GameMenu_Collections"),
GetIcon: () => GetDefaultIcon(TabIcon.Collections)
), new TabImplementationDefinition(
Source: "stardew",
Priority: 0,
GetPageInstance: CreateInstance,
GetWidth: width => width - 64 - 16,
OnResize: input => {
var result = CreateInstance(input.Menu);
result.postWindowSizeChange(input.OldPage);
return result;
}
));
}```
When you resize the window, it calls that OnResize method. In this example, it creates a whole new instance, uses a method to copy stuff from the old instance, and returns the new instance.
That makes it easy for me to support the vanilla game menu pages of which none support the game window size changed method.
If you don't have one of those methods, then it calls gameWindowSizeChanged as normal and you're expected to just not be a weirdo.
And it only actually submits these size changed events to a page when the page is being accessed, be it via the API or because it's the active tab, so it doesn't just recreate a bunch of pages for no reason if they aren't visible.
Whenever I try to use this warp it sends me into the void instead of the set tile. Can someone help?
oops
i didnt mean to post 2 images
Can you show where it's supposed to be teleporting you vs where it's actually teleporting you
I can show you where it is supposed to be teleporting me, I have no clue where it is teleporting me because it is just that far out
I can't zoom out that far for it to be abled to show me
Well debug mode only shows you the coords of where you're cursor is
Well yes, but... If you are in the void can't you just hover your cursor over yourself?
Or am i misunderstanding something
I think you are misunderstanding
Ok, well show the map
The camera stays on the map but I get teleported really far out
Likez the map in tiled
Where is 7, 8
The tree paths tile is where it is
I am just using 7, 8 as a test tile for now
I will change it once I fix this
Oh wait no i know what's wrong lol
I went back to one of my own maps to check
Your coords are wrong
?
The way you have it is for a warp when you stand on a certain tile
As in, the coords
It is warping you to 42 11 on your map
Not 7 8
my explanation might be bad
this is off of leah's door
LockedDoorWarp 7 9 LeahHouse 1000 1800 Leah 500
it teleports the player to 7, 9
this tile, on leah's house
*in her house
Oh, ty!
yes, but thatâs a lockeddoorwarp, not a regular warp. Different syntax 
đ yeah, i just wanted to show that the coords are where you get spit out
hmm, if that is the case, then the wiki screenshot person sent is wrong, which I feel like we would have noticed earlier
i believe that might be a touchaction warp though
The- The wiki is wrong!
not an action one
oh, I see, it was hard to see without the context - yeah, itâs important to make sure youâre using the correct oneâs docs, Person
(from leah's house again) this is the warp on map properties 7 10 Forest 104 33
i dont think that is supposed to work like that
Well, that's a new one for me: Central Station is missing its content files, so it won't work. Please delete and reinstall the mod to fix this.
I haven't touched Central Station since the tourist release, and the file is there when I look, so Windows/SMAPI is just like "nah, not reading that" I guess. xD
Nonsense, that's a babies' one, where you have to put your legs in the things
In other news, another character sprite is done. â¤ď¸ I can now scroll through the social tab and only have two screens worth of non-converted NPCs.
oh yeahhhhhh
god i should stop testing my mod, the more i test it the more bugs i find
More reason to test it and iron out the bugs
đ but the bugs hurt my brain sometimes
If you don't test it and fix the bugs you will have more to deal with later haha. There's nothing wrong with taking a break though
What's the TileData for?
To give it the animation for the water, and to let the people fish in it
When you started making this map, did you start with a vanilla map with any water in it?
No.....?
What vanilla map did you use as your starting point?
I- didn't use a vanilla map... I think I see the problem now.
I wonder if that part of the maps page on the wiki needs to be emphasised more.
It's really recommended not to ever start a new map from scratch.
Eh, its whatever. The tiledata can be kept.
However, that's also not how to actually do tile properties so I don't know if using TileData like that will work.
It worked in game so
possibly it'll work
it's just more tedious (also not the same water than the game use usually, but this isn't a problem in itself)
Oh, chu did say you can apply object properties to tiles so it makes sense you can do the other way around. The game must see them the same way.
Well can I make the water work like normal on a scratch map?
You can if you see a reason to remove all your TileData and do so. You just edit the tile properties in the tileset instead. That adds a property to every instance of the same tile on the map.
you can, i am just happy i don't have to do this because it's annoying to redo stuff đ
(Also, in case your hatred of ponds was because you didn't know this: you can make one large object that covers the whole space instead of copying and pasting a bunch of individual tile objects repeatedly.)
Oh.
So like this?
Hold on
Yes, though as Lumi mentioned those are not the tiles that the game uses for water so your water will look different to vanilla's.
(Just FYI, not a criticism)
Meh, its fine if it isnt the same as vanilla. Something different never hurt anybody-
-# actually it might've...
Now, I need to think of a style/personality of the second person in the town...
.choose Cafe, Lumberjack, Joja?
Choose result: Lumberjack
Alrighty
Hi!
I'd like to ask - if you want some invisible-in-game dialogue checker, so for example, an event would be seen only if you saw certain (random - like if you would have 10 variants for spring 1 dialogue but only one of them would complete one of the conditions for the event) dialogue, how would you create such a thing?
Do I think correctly that I can use either #$action AddMail current XXX received that would add a mail with no content to our mailbox, and then I'd use some when to check if the mail was received, or #$action AddConversationTopic 1 to add a CT and then use some when to check if it was already seen?
If so, which one do you prefer and why? Or do you use some other method to do something similar to what I want? (I'd prefer only using CP but I'm fully open to anything)
(already asked this around a week ago (#making-mods-general message), didn't get an answer/wasn't pinged for it + I won't look for it)
Yup I would use $action in the dialogue line to set a mail flag. I wouldn't do a CT because you can only check for active CTs with vanilla/CP so unless your event was guaranteed to trigger before the player talked to the character again the CT could go inactive and then your event wouldn't trigger (or, if you didn't set the CT for very long, it might expire before the event could trigger even if the player didn't talk to the NPC).
I would usually try to have the $action command outside the i18n, but if you're using i18n for randomisation and not all of the lines within a pool would use the action, it'd have to be inside the i18n and just give translators stern instructions not to translate it.
OK, thanks!
Just to confirm, this would be correct?
"StrojvedouciDenis.Eleanor": "{{i18n:Secret.Dialogues.festivals.spr13 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}}}}#$action AddMail current XXX received",
(too many Dynamic Tokens there... Sorry for that!)
Is your key a conversation topic?
No, this one is from a festival dialogue
"LogName": "Eleanor - spr13 festival location + dialogues",
"Action": "EditData",
"Target": "Data/Festivals/spring13",
"Entries": {
"StrojvedouciDenis.Eleanor": "{{i18n:Secret.Dialogues.festivals.spr13 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}}}}#$action AddMail current XXX received",
"StrojvedouciDenis.Eleanor_spouse": "{{i18n:Secret.Dialogues.festivals_spouse.spr13 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}}}}"
},
"TextOperations": [
{
"Operation": "Append",
"Target": ["Entries", "Set-Up_additionalCharacters"],
"Value": "StrojvedouciDenis.Eleanor 30 5 2",
"Delimiter": "/"
},
{
"Operation": "Append",
"Target": ["Entries", "MainEvent_additionalCharacters"],
"Value": "StrojvedouciDenis.Eleanor 30 5 2",
"Delimiter": "/"
}
]
},```
Ah, okay. That should be okay then, yeah.
I assume you aren't trying to implement the randomisation that you mentioned in this particular line.
No, that was only an example situation, I don't even have a code like that...
Cool, I didn't think so but I was just making sure.
Do you know how to check for mail flags using patch summary?
Actually, no
I wanted to ask first what to do before learning that
If you do patch summary YourModID and then scroll up to above the patches it should show you the values of your mod's tokens and then if you scroll up more it will have save-specific info like name, spouse, etc. The HasFlag and HasReadLetter fields should show your flag once it has been added. It's helpful for troubleshooting if something relying on a flag doesn't work because you can check if it was the flag setting or getting that went wrong.
(Sorry if you already know how to do patch summary, just wanting to be thorough.)
You can also use debug action AddMail <player> <mail ID> to add a flag directly for testing and debug action RemoveMail <player> <mail ID> to get rid of it. The latter is especially useful because you have to sleep for a flag to be added and therefore it gets baked into your save and debug action RemoveMail lets you get rid of it again instead of having to make a new save.
Did a patch summary a few times, but it's always better to hear it one more time!
So then, I should use
"When" { "HasReadLetter": "XXX" }
or am I wrong?
Of course, I'll change XXX to something more unique
Or not, "When" { "HasReadLetter|contains=XXX": true } is better, isn't it?
It depends on your specific usecase, but in most situations you probably won't need to do a conditional patch (that's using the "When" field to determine if a CP patch will apply). For events, there's a precondition GameStateQuery that you'd use with the GSQ PLAYER_HAS_MAIL <player> <mail id>. For trigger actions you can use the PLAYER_HAS_MAIL <player> <mail id> GSQ in the "Condition" field. For dialogue you can use the $query PLAYER_HAS_MAIL <player> <mail id> dialogue command.
When you do want to use a conditional CP patch, I'd recommend "When" { "HasFlag": "XXX" } because it looks like CP's HasReadLetter tracks actual letter opening, which a mail flag doesn't have. You don't need the |contains=XXX": true part unless you want to actually check it's false (in which case check false lol).
Of course, GSQ! I should finally learn its using. So I should use GSQ, shouldn't I?
I have to write PLAYER_HAS_MAIL current <mail id> for all mails separately, right?
You mean if you want to check multiple mail flags exist for the same event precondition or something? I think you would need to repeat it, yeah. I'm not sure exactly how it would look so you might have to experiment a little with different ways (e.g., whether you'd write "EventID1/GameStateQuery PLAYER_HAS_MAIL current <mail id>, PLAYER_HAS_MAIL current <mail id>" or "EventID1/GameStateQuery PLAYER_HAS_MAIL current <mail id>/GameStateQuery PLAYER_HAS_MAIL current <mail id>" or something else).
https://stardewvalleywiki.com/Modding:Game_state_queries#Meta
I think it might be the second one, but then again, that is usage of ANY, which is a whole other thing...
It also depends if you want to check if ANY of the flags are set or if ALL of them are set.
I can figure out how to check for any of them, but I'd need to do some trial or error to check for all of them, personally.
I noticed, I can use conditions like when (https://stardewvalleywiki.com/Modding:Game_state_queries#Content_Patcher_tokens)
Can I also use something like that thing on the wiki with custom configs?
And if so, would you recommend me changing all my when to condition?
I'm targeting to ALL of them (I'm doing an event that would trigger only if the player found all secrets that my NPC has/adds).
You can use some CP tokens as GSQs if they are booleans (only return true/false), yeah. Like you can use {{HasDialogueAnswer}} but you couldn't use {{DailyLuck}}. I think I've seen somewhere that you can't use config tokens or dynamic tokens though, only predefined CP tokens. I don't know if I'm remembering that correctly though so unless someone elses bursts through the wall right now to confirm one way or another, I recommend testing it yourself to check.
I do not recommend changing all your CP conditions to game state queries, both because you literally can't use GSQs to achieve some things that you can do with conditional patches and because of the performance differences that make them useful in different scenarios.
Then using ANY won't work because that would trigger the event if just one secret was found. And since I don't want to interrupt my C# practice right now to go test GSQ AND checks, that leaves you doing your own experimentation sorry lol
Don't worry! (I should also learn C#, while we're at it...)
To follow up with the performance differences, I don't know how frequently event preconditions are checked so I'm not sure whether a CP condition or GSQ would be better for performance in this situation.
If trying to check all the mail flags with the GSQ does get too difficult to figure out, I do already know how to do AND checks with CP because it's in the CP docs here.
Just to summarize - the only thing I have to do is to add #$action AddMail current XXX received after every dialogue I want (of course, every mail key would be different) and then do the "Conditon" thing for the event, right? Nothing added to Data/TriggerActions nor Data/Mails?
Correct, though "Condition" is not actually a field associated with events but I assume that was just you choosing a quick way to refer to using it in your event file.
Just a heads-up, if I didn't test it somehow wrong, the first one you provided is working as intended (= activates only when you have all of them). So thanks again!
Awesome, thanks for letting me know! 
Is there an enumeration API for GMCM?

well it worked
everyone here is happy to help