#making-mods-general
1 messages ยท Page 31 of 1
I wanted that thread power lol
yay aba is o-rage
now u match icon 
i 2 will be orage soon
hm i am struggle to access the movenext method
this one
call instance bool valuetype [System.Collections]System.Collections.Generic.List`1/Enumerator<class [StardewValley.GameData]StardewValley.GameData.Machines.MachineOutputTriggerRule>::MoveNext()
i am try this which seems close but not quite
AccessTools.EnumeratorMoveNext(AccessTools.Method(typeof(List<MachineOutputTriggerRule>), nameof(List<MachineOutputTriggerRule>.GetEnumerator)))
nvm i had unrelated error 
say, if i plan to create a shops adjacent to each other , where it can be accessed via the bus (prompt: go to XYZ custom place), is CP just the framework i need? ive decided the items to sell will be using CP instead of json.
I gues the closest I can describe thisi s like the garden village mod.
CP is json
isnt ja like dead
CP is enough for the shops and the items. i think you still need a framework (Bus Locations might be its name?) to have a selectable bus destination
Not necessarily, just not really needed anymore
If anything, I imagine Casey would probably rather spend time on her new content engine than adding features to JA at this point
minecarts i'm pretty sure you can do with just content patcher, but the bus i think is still hardcoded
Yeah, though there is a mod for that
like rokugin said, JA is just keeping the lights on for old mods. other than that it isn't useful anymore
You finished your NPC?
Bus Locations has an unofficial update, not sure why it's even listed as unofficial if it's still uploaded on Nexus, but maybe it's fine, I certainly haven't looked at the permissions on the original
Yes it's just for personal use. I'd love to make a patch. But... I've barely an idea what I'm doing.
Is there any attribution I should do?
why is carp surprise a chili item
It's a surprise
because it's surprising ๐

the way i picked contaxt tag lead to some interesting results
like dinosaur egg for any egg
and pufferfish for any fish, as it should be
Hahahahahahaha no xD I made an alternate portrait mod for TDIT (Pau did the artwork) https://www.nexusmods.com/stardewvalley/mods/27730
what is your plan with hiria
Oh ok. Well that's good too.
do you have a mvp in mind or just going by vibes
MVP? Most valuable player?
Minimum Viable Product
I feel like all my mods are slowly being sacrificed to ItemStockInformation, I guess I should probably figure out why this is dying for so many different mods
[game] An error occurred in the base update loop: Failed loading type 'StardewValley.ItemStockInformation': TypeLoadException: Could not load type 'StardewValley.ItemStockInformation' from assembly 'MailServicesMod, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' due to value type mismatch.
Ah I see. I have a vibes-based MVP lol

But also that's totally corpspeak and I almost wish I didn't know it.
yea it is quite different with creative pursuits
constructors are now patchable 
eh i think mvp is more useful concept than agile at least
I have a base level of finished that I'm aiming for with stretch goals (the stretch being my motivation, not money lol)
yea it is quite different with creative pursuits
It is. Like, if I'm working on a track, there's no "MVP", it's done whenever I can't stand to listen to it anymore.
if its just for personal use and only you are ever going to use it then you can do whatever you want with the files
slr, yes i meant JA my bad. I'm avoiding JA as much as possible :v
oooh did harmony update?
you can do your items in content patcher
I see. Will CP and Bus Loc do it?
nope! this is for my update to BETAS that will allow you to write harmony patches with CP 
you can already patch constructors with harmony!
no button is giving nuclear warhead (harmony) to small children (who make content patcher mods)
its fun!
oh that's so cool!?
i figured you could patch constructors but i misinterpreted and doubted myself ๐ญ
i wouldve let you run simple C# code from a CP defined harmony patch too buuuut i didnt feel like packaging another DLL with my mod
wait what r u doing in constructor then
Should do, yup.
and i gave up trying to write my own parser
just listening for it to exist?
shenanigans
for testing i patched the LetterViewerMenu constructor for example so it runs an action every time i open a letter
say u r doing this in a way that only 1 actual harmony patch happens for X number of cp mods right
yeah all the patches are loaded and put into a list and each patch is written into one Harmony patch
Will you make this your mod logo?
(if one patch fails the others are still loaded in)
its being added to BETAS! which has a logo!
or well, a header
how terror 
(it's a footgun. nobody got it, sigh.)
the main things missing from this feature are a) bool prefixes and 2) patch priority
i originally had 2 implemented for priority between patches that my mod loads, but then realized thats basically worthless bc it doesnt translate to priority overall between all mods
and A isnt implemented bc i dont want to allow it
thank you so much!
(i did not get it. sorry! i just thought it was another joke abt irresponsibly handling a dangerous weapon)
Well I suppose it is. But too meta.
It's alright, I'm used to jokes backfiring (heh).
I found a better one.
say does StardewUI.Grid support borders of some kind
(that's... probably not real. but perfect!)
the css style of borders where you can choose which ones out of four to have
I'm not sure what you mean, the Grid is a layout control. If you want a border, you can stick it in a Frame or Panel?
yea on the children is fine too
i just didnt figure out how to make only leftside border
Ah. Well, everything in SDV is sprites, so that didn't really occur to me. But I guess it's possible by disabling some slices of the nine-slice.
Or you could just use the vertical divider sprite.
Why do you need a one-sided border?
to divide ScrollableFrameView
Definitely use the divider sprites for that - just add an image pointing to that sprite.
That's how it's done here (top of the thing I posted the other day)
That's the horizontal divider but, same thing, just different sprite/layout.
yee
Remind me in 14 hours to look at this ItemStockInformation error
ugh I was about to take a nap. but fine rokugin I'll stay awake just for you (#6238776) (14h | <t:1726252797>)
The repo is not public yet but the code for that is literally just
var separator = new Image()
{
Layout = LayoutParameters.AutoRow(),
Margin = UiSprites.MenuHorizontalDividerMargin,
Fit = ImageFit.Stretch,
Sprite = UiSprites.MenuHorizontalDivider,
};
Requires a precise margin but that's CA's fault, not mine.
(Also, I should clarify, this does not require any weird layout stuff with panels. Just stick the separator in a normal Lane and you're done.)
Hello guys!
How did I manage to end the day with a longer to-do list than what I started with...
I want to create a new npc, but the wiki guide it's too old
Someone can help me with some stuffs?
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6:
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC -
Custom NPCs received many improvements with 1.6. For changes made, see the migration guide:
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs -
Some information on the NPC wiki page is still relevant:
https://stardewvalleywiki.com/Modding:NPC_data
Just make sure you're checking the migration page and tutorial first as this page still has outdated information on it as well. -
Aviroen has put together a template that will allow you to easily create a romanceable NPC:
https://stardewmodding.wiki.gg/wiki/Npc_template
Oh, thanks!
hello been attempting to conjure some lava into a map. Still having some trouble but I did find the VolcanoDungeon.cs file and looking at it.
Can you cancel a Remind me request?
Building the project in 1.6.9 fixed the error lol
technically there is a way but i wouldnt be surprised if only mods had that command permission
.timer remove <id>
if the docs are correct
forget about me, maru 
.timer remove 6238776
Timer removed.
Thanks!
https://ub3r-b0t.com/docs/articles/commands.html#timer for reference
I have been hoping for this exact thing lol, thanks again
This bot has some absolutely unhinged commands lmao
Wow that is a lot of commands
there must be a way conceredape conjures the lava tiles into the map on the fly.
Though I clicked on some of the APIs it claims to use and they're going to domain squatters...
lvl100 mines lava, volano lava, or other
Rebuilding AT also fixed its issues, seems like Happy Home Designer is having an issue patching it now, in the midst of some IL and I'm way too tired to deal with that
Remember that for every bug you get Pathos to fix, you're breaking somebody's transpiler ๐
Lol
well, this answers the original thought behind my question. Multiplayer friend wanted to know if we could make Krobus actually use a spouse patio, since we can make one for him. Game code says no. xD
Only other reason I'd have wanted to know about spouse schedules was to try to set times where they go into a custom renovation room, because they will not path into them at all currently.
Yeah pretty sure the areas they can randomly wander inside the farmhouse are hardcoded rectangles too
(I was gonna make cute hobby rooms for spouses)
I could still make them, but they'll never actually visit them, which is sad
spouse behaviour is an authentic italian meal
Exactly the way it is and you'll like it that way?
so has 1.6 been out long enough that there's methods for doing most things that we could do before?
Yes?
Did anything major get lost in the update?
Depends on what you r thinking of
there were methods for most things like as soon as 1.6 came out
If you have like a specific concern, it would be easier to point you in the right direction
If anyone had meddled with Automate before, do they know if Automate automatically supports custom buildings added via CP?
Haven't tried on custom buildings, I know it works on custom machines, so I would assume
I wanted to ask in case there's an obvious answer somewhere and I missed it
If it's a mill like building I think it'll work
I think I got it the lava is a tile and it still uses the water tile map property
but I think it's coded a bit differently mainly I think the animation is just reversed and there is some code behind it.
hi, a newbie mapmaking question here:
i'm using my custom farm to replace the vanilla hilltop farm. the custom farm has no quarry area, but ore deposits are still spawning on the farm. how do i disable this? do i need to make an FTM file?
If you are actively replacing the hilltop farm instead of creating an additional farm, you may need to change the Location Data for the farm to change the ore spawning chance?
Not at my computer right now, but I think that's determined in Data/Locations for the specific farms.
can i do that via CP? i am indeed trying to replace hilltop using the Load action in my content.json
If it's visible in the Data/Locations entry for the hilltop farm, then yes, you can change it with CP
okay ill try that out!!
If it's not in there, hilltop may still be hardcoded to do ore spawning, in which case, you would be better off replacing a different base map type if you want to remove the ore spawns entirely
Or creating a new map entirely through the AdditionalFarms data entries, which is my personal preference
(I thought the ore spawning was controlled by a map property? The SpawnMountainFarmOreRect map property, unless it's hardcoded on the hilltop farm)
i don't have any such map properties on my map, so it has to be hardcoded i think
hewo! does anyone know if theres a mod that lets your baby grow into a child in a short time or a configuration of it? im doing a test on a mod. Im using cjb but it doesnt trigger the baby's growth regardless of how far i skip days (>28d)
do these console commands do what you want?
https://stardewvalleywiki.com/Modding:Console_commands#Children
Hey. I have never written a mod, but I am a somewhat experienced programmer. I have everything up and running to start writing a mod (a functioning "hello world").
I want to write a "dual wield" mode. That is, that you could mark two items in your inventory and use one with click and the other with alt+click.
Any recommendations on how to start?
As a start I would like to have the inventory item marked with a blue square if I alt+click it similarly to how it is marked in red when I click it normally
ill try these. thanks so much! 
If you haven't already
!decompile
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
Otherwise not many tips anyone could offer
Is the only way to find out whether a mouse click was on an inventory item is to use Harmony? SMAPI doesn't have an API for that?
SMAPI does not generally have a lot of APIs/events, no.
I'm curious if Shane's mom has ever had her name stated in canon, or if there's even a standard fanon name for her. Does anyone know?
nope
Well, depends on what are you looking for. SMAPI doesn't have an event for ClickedOnInventory or something, but you can hook into the ButtonPressed event and if the current menu is a MenuWithInventory, check if its heldItem field is null or not
I'm actually not trying to look into the inventory meny but the inventory bar
Then you want the Game1.activeClickableMenu to be null, but I'm not sure how'd you do the rest (don't forget to call e.Button.IsUseToolButton() instead of hardcoding it to left click)
yeah, i'd definitely use Harmony for that. it makes the intent more clear
(although i'm a big hater of using the ButtonPressed event)
(Why? Out of curiosity)
you're doing additional logic to make sure the player is clicking the thing you care about
and also you're making cross-mod compatibility harder
After thinking it over, this mod idea makes a lot more sense if it's about Alex's dead mom instead. I don't think her name has ever been given either.
I want SMAPI on my switch ๐ญ๐ญ
||Iirc her name is Clara||
!switchmodding
Modding on the Nintendo Switch is technically possible in a very limited capacity, but it requires jailbreaking your Switch, which is only possible on select models or by physically altering the hardware of your Switch, and can run the risk of bricking your console and/or being banned by Nintendo. Only visual texture and dialogue replacer XNB mods can be installed. Due to these limitations, we do not provide guides on how to mod the Switch and it is up to the individual if they want to take these risks.
Looks like no SMAPI for Switch even if you have a modding capable console, that's unfortunate
now the steam deck though...
Sure, if you have the extra money lying around lol
lmao fair. I got mods working on mine right before 1.6 came out. It was a several hour long process, and then everything broke and I gave up.
Oh great lol, they're phasing out their cheaper models too
they're actually on sale right now apparently
$300 and $340 before tax for the cheap ones
$400, $550, $650 for the ones that will continue to be sold after those run out of stock
If I had the money, I'd rather upgrade my computer lol
Yeah, when my last bonus rolled in I hyped myself up and bought the 512 OLED one for when I travel. I then immediately stopped traveling, and have used it like, twice.
I legit boot up my personal computer about once a week now lol
I would not be able to function lol
How so? My personal email is on my phone. Work gave me a laptop
So all actual work is on work laptop
I just have a problem lol, this computer is everything I do all day every day
So I am trying to make a feature in a mod, however it would require me to add save data to the save. But I don't know where to look for a mod that already does something like this. Basically I just need to save a list of GameLocations and Vector2s but I don't know how to go about doing this
In order to avoid messing with the save serializer, or having to figure out SpaceCore's, I'd probably just save that stuff in a json with my mod tying it to the player's ID or some such thing
I'd need to use the save as n identifier because it's per save not per player but hmm
here's the API reference for how to store stuff in save data: https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Data#Save_data
be mindful that this API will barf if any non-host player tries to execute it, so you will have to check that
If I use SpaceCore's do I need to reference the DLL itself, because I don't know how to access the events through the API, but yea
if possible, consider storing your data in some object's ModData instead, since then you don't have to do any fiddly work about it (the tricky bits are handled for you)
okai sure
Ooh, I can dump my hard reference to SpaceCore, the API has the virtual currency stuff again (3 weeks ago apparently lmao)
Can't get a drop from the node :/ https://smapi.io/log/90f3c42abc714dbe8dc778f3f2b8ec6f
"LogName": "Adding Node",
"Action": "EditData",
"Target": "Mods/mistyspring.ItemExtensions/Resources",
"Entries": {
"LightningStone": {
"DisplayName": "{{i18n: LightningStone.name}}",
"Description": "{{i18n: LightningStone.description}}",
"Width": 1,
"Height": 1,
"Texture": "{{ModId}}/Objects",
"SpriteIndex": 0,
"Health": 24,
"Tool": "Pickaxe",
"MinToolLevel": 0,
"ItemDropped": "(O)128",
"MinDrops": 1,
"MaxDrops": 4,
"Debris": "stone, blue",
"BreakingSound": "stoneCrack",
"Sound": "hammer",
"FailSounds": ["clubhit", "clank"],
"Shake": true,
"Skill": "Mining",
"Exp": 55,
"MineSpawns": [
{
"Floors": "170/-999",
"SpawnFrequency": 0.1,
"Type": "All"
}
]
}
}
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Pro, with 16 C# mods and 10 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I never noticed the line that it doesn't work for farmhands in multiplayer. Does the SaveLoaded event actually run for farmhands or does only the host actually "load" the save?
i don't recall offhand about the events. i'm talking about ModHelper.Data.ReadSaveData/WriteSaveData, which will throw if farmhands try to call them
Right - I'm doing ReadSaveData in OnSaveLoaded without explicitly checking for multiplayer and thinking that's probably OK if the event doesn't run for farmhands.
Looks like I'm wrong though: https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Events#GameLoop.SaveLoaded
Surprised that no one's reported an issue, I wonder if it really crashes or does something nasty vs. just printing a warning to the console.
it definitely crashes out of whatever thing you're trying to do. it didn't bring down the game when my mod did it but it did prevent NPC interaction
How
only with my NPC, for the record. i was doing shenanigans
It also says you don't need to prefix the key with your mod ID, and my every time I've used it, my mod ID is the entire key... I should really read the docs once in a while.
The only thing jumping out at me as wrong is that there's no field for FailSounds on the docs
Oh wait
You put a comma in the Debris field, pretty sure it's space delimited only
Should just be
"Debris": "stone blue"
Found it!
https://pastebin.com/gmmCLxZB
Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
Which would explain that error log I guess
Choosing a category on Nexus is the hardest part
I notice Utility.controllerMapSourceRect is hardcoded to xbox (we brought this up last week) but I wonder if it is conditionally compiled? Could the implementation be different on other platforms? (are there even console targets?)
Anyone know if there's any particular difference between using CustomFields vs ModData?
Well, custom fields can be used in GSQs, for one.
That's interesting, not something I need for this, but certainly interesting
They're also passed into TriggerActionContext
all i have to say here is that presumably there are console targets, but they aren't likely to be visible to us on PC with just a decompile
CustomFields is a data model property, while ModData is meant to persist in an in game instance
Custom fields are also available on more types, but availability of mod data can be checked with IHaveModData whereas with custom fields it's either there or it's not.
Hmmm, ok. Thank you both 
(re: console code being unavailable with decompile, yep, that's why I was asking, it seemed strange that CA would include a sprite sheet for so many different controllers but not write any code to use them)
Nah, that sounds par for the course for a single person project of passion. Get caught up making all the sprites you could possibly need, then think about coding it, and do something else instead.
Does not strike me as CA's style. While there are plenty of little foibles in the code, I haven't seen a lot of wasted sprites or data, unless you count the abandoned meat stuff.
It's more often the opposite - there are a bunch of loose/random sprite sheets because sprites had to be added at the last minute with no obvious place to put them.
aaa i did it you guys! my first mod!!
editing the json files took way longer than i thought. do yall use a program for that or just notepad?
Even if CA did create way more sprites than necessary, there'd be no reason to include them in the published game data.
I feel like I'm constantly stumbling over unused tidbits in the code and files
I use IntelliJ. lets me open what I want side by side, color codes everything, and shows errors.
!vsc
When creating content mods, it's useful to have a program that will check the validity of your json for you. We tend to recommend either VSCode https://code.visualstudio.com/download or notepad++ https://notepad-plus-plus.org/downloads/
I mean yeah, there's unused stuff. But there is "no longer used", there is "didn't quite work as intended but plan to use it", and there is "I have no idea why this is here".
oh that sounds great. i'll be checking that out 
I prefer VSCode but you can also use N++ if you want, just make sure to get the validation plugin if so
Anything with validation will save your life
There is definitely some of the latter, though I think the former is the most common - code that made sense at one point and is now a historical artifact.
school paid for my vs22 so that's what i'm using 
I just use the free version of everything lmao
And I just realized that this entire controller sprite sheet doesn't have any prompts for the trigger/shoulder buttons anyway, so fuggit.
Though, I'd love to get my hands on Rider for playing with IL
counterpoint: Dana
Dana?
previous incarnation of penny. her old unused spritesheet was included in the game data until 1.6
And was never actually in the game, even in the early versions?
Ughh, these little details are gonna make me crazy someday, lol thank you so much it worked
(there were a few others too) correct
Alright, well, I stand corrected then.
looks like there was a male/female rival too
When it doubt, copy the template and then make micro changes from there lol
I definitely get the "I shipped it with stuff it doesn't need, but it's already out so why bother removing it now" mood
when I'm confused I tend to grab chunks from the unpacked code, ditch the optional fields, and change what I need.
This can be a double edged sword if you don't format the rest of your patch correctly lol
Oh it almost always bites me in the ass
literally me just now i keep making mistakes bc i keep mistaking which parenthesis is whose
or how many i need
Yeah, definitely get an editor with validation, it'll point out things like that
Good ones will even add closing brackets and stuff for you
Another double edged sword sometimes lol
intellisense scorns me with the amount of " and '
Editing my manifest for C# mods is always fun because if I'm not paying attention, my description will have a bunch of unnecessary ' lying around
Great "feature" of VS, ain't that?
It might happen in VSCode too, but I haven't been writing real descriptions for my various test mods lmao
Yes, I totally meant to type two single quotes inside my double-quoted string!
Surely I needed to quote something in my quote and not make something plural
worst feature: all of my jsons used to have a cleaner whitespace, now they've squished it so whenever i open an untouched json it's wide and wieldy
I haven't been able to figure out why some of my indents are small and some are huge
It's different between jsons I open and I don't get it lol
Eh, just run prettier if you want a particular JSON format.
Yeah, VS confused between spaces and tabs sometimes.
I've actually run into issues where it will just straight up refuse to switch to spaces.
I thought it might be that, but when I check they're all spaces
Like, clicking on the "TAB" and select "SPC" does literally nothing.
It just for some reason decides that some of my jsons need 4 spaces instead of 2
"You're gonna want to spread out for this one, bud"
Are they all .json extension?
That's how they're saved but I have them linked to validate as jsonc
You could try turning off adaptive formatting.
That's what causes a lot of those problems.
see I don't get any of these problems in vim
I find adaptive formatting mostly annoying anyway since I use csharpier for the code formatting and don't use different formatting styles for different data on different projects.
I'll have to give that a try, thanks
I'll bet there's a lot of other things you don't get in vim.
Don't get me wrong, I used nothing but vim and command line tools for a whole year at work. But I can't say I want to go back to that.
(cue the one emacs guy saying that if I followed the one true faith I never would have left)
While we're on the subject of workflows and such, does anyone else who works on shared projects have a nice way of keeping the source rule set at **\*.cs?
My current (hilarious) workflow is:
- Have .projitems open in Notepad++
- Alt-Shift-C to add new class
- Click on "C#" in the dialog because VS insists on defaulting to "MSBuild Directory.Build.props file" anyway
- Ctrl-Shift-S to save everything, including the borked .projitems
- Switch to Notepad++, tell it not to reload the file
- Resave the old .projitems in N++
- Switch back to VS and click the "Reload All" button, or sometimes the "Discard" button depending on what mood it's in
- Actually be able to compile code again.
This is a lot just to build 
It is indeed. Makes you appreciate the convenience of MSBuild, when it works like it's supposed to.
I do everything in vsc and get angry at microsoft whenever they break the c# plugin again 
CustomFields are on data
And are often not MP synced
ModData is NP synced
Thanks! That does give me some idea for my fish pond mod, if I want to avoid sending messages between clients
If I ever go back to that lmao
sounds like you'd use neither in that case but your own thing?
A non-synced moddata kind of
I was thinking the ModData might be good because the colors don't sync as reliably as I would expect of a net field
ModData is a net field (net dictionary)
Yeah but I'm hoping it syncs more reliably ๐คฃ
I'll probably end up having to just do the messages thing
I deal directly with netcode not at all, but are you sure it's not syncing reliably vs. you're just not detecting it in time (e.g. responding directly to change event)?
Really not sure, my current implementation is something like, postfix the color and hope the game syncs it right
MP wasn't even a consideration originally, which is also why I haven't bothered to fix it at this point
Hard to guess at specifics there, but... if you (or the code you're patching) has any code that reads from a netfield and saves the value, or derives some other value based on it, then it has to watch the event in order to update as soon as the field is synced.
Netfield just gives you a value that's synced, it won't guarantee that anything derived from it is also properly synced unless it always derived on the fly.
Ugh, I hate looking at this code lmao, I wanna dump this content pack shit so bad. Aside from setting the override color on the fish pond based on some content pack data, I'm not really doing anything else with this net field
My original assumption was that net fields are synced often enough that I wouldn't actually need to do anything else, but in practice the syncing was not really consistent
Don't know how this whole networking system works, like if the client thinks something is supposed to be one value, but the host tells them it's supposed to be something else, do they just argue about it until the host eventually wins?
Is anyone working in a not very human-like NPC, monster-ish NPC? I would like to draw one.
I have a question about how to set up custom NPC festival positions for y1 vs y2? I have it figured out by year for dialogue but don't know how to enter year 2 coordinate positions. ``` {
"Action": "EditData",
"Target": "Data/Festivals/fall27",
"TextOperations": [
{
"Operation": "Append",
"Target": [
"Entries",
"Set-Up_additionalCharacters"
],
"Value": "Shannon 32 62 0/Russell 22 53 2",
"Delimiter": "/"
},
],
"Entries": {
"Shannon": "{{i18n:festivals.shannon.fall27}}",
"Shannon_y2": "{{i18n:festivals.shannon.fall27.y2}}",
"Russell": "{{i18n:festivals.russell.fall27}}",
"Russell_y2": "{{i18n:festivals.russell.fall27.y2}}",
}
},```
i'll double check in a sec but i think it's quite literally Set-up_additionalCharacters_y2
yep it is lmao Set-Up_additionalCharacters_y2 if you go beyond y2 you're gonna remove all other custom npcs that don't have that key, so i don't suggest it lest you get yelled at
Does it alternate years if you only have the two?
Thank you so much just tested and it is working.
you can get away with standard Set-up_additional and then when conditions (based on me reading SVE's spirits eve code) so i'm gonna assume as long as no one adds a _y# we'll all be happy

When you say "on the base layer" do you mean on the Back layer? Passable on Back makes tiles impassable regardless of the value you give it, in spite of it's name
can't say i've seen either of these. for the first one, could there be a fully-transparent tile placed there?
ISO motivation to mod some events for Shane. I looked at his marriage dialogue for inspo, and Yoba CHRIST is it bleak. 
(share the map if you still have issues)
Shane is a pretty bleak dude
I think Stardew uses some type of custom rollback netcode but someone like Atra might know better. If so, then conflict resolution is some variation of "make the change locally, right now, but if you learn that some remote client made a different change on a previous frame, then throw away your local change and use their value".
So everybody has authority?
It's nowhere near that simple in practice, of course.
Everybody has some authority - though, since Stardew does have the concept of a host/main player, it is likely that the host has more authority. Conventional rollback is entirely peer-based.
Keep in mind I'm just giving a generic-ish answer of "this is what netcode generally does" without diving into the hairy specifics of Stardew's wacky custom netcode.
Well, I have learned a useless fact. If you don't do ANY fishing until the festival of ice, you get the 'tutorial' fishing bar (bar never depletes) for every cast in the event.
That being said, since you're generally trying to write code independently of whether you're the host or a farmhand, what you probably need to know is that anything you try to write to a netfield might get overwritten almost immediately (within a few frames) if there was any kind of conflict.
oh, i didn't know it lasted the whole event, that's neat. i've done this exploit to guarantee a lava eel on mines 100 before
Also, that anything you read from a netfield should be understood as totally transient; whatever value it has right now, might be a different value a millisecond later.
For map making, I suggest taking a look at how the base game structures maps, generally you'll want to create a border around the area you want to be walkable with Buildings tiles
I think you can make the main player do all the updates
Yeah it's something like that, though on the topic of authority it is generally all shared, except for your Farmer object, which other clients can't edit
And make clients draw according to state
Thanks, good to have confirmation. It's complicated because real rollback netcode isn't generally purely field-based, it's event/state-based... but Stardew's is field-based.
If you have it, you can use Lookup Anything in game to see if your tile data is on the tiles, though this is kind of annoying to do because of how much info is displayed
You can also patch export the map to be able to look at the tmx, which will also be kind of flooded with data
Well, "real" is probably unfair, I should say something like "industry standard" instead.
Stardew's netcode makes me glad I don't have to roll my own solution
My understanding (though I don't work in the game dev "industry") is that writing one's own netcode is generally frowned upon, like writing one's own crypto.
There are well-established libraries like GGPO that do it for you.
Of course in a brand new framework (like Bevy) someone will of course have to write a new one.
Was there a standard netcode lib for monogame back when stardew was adding multiplayer
There's not much of a standard anything for MonoGame...
I mean, as we're all intimately aware of, there isn't even a standard UI library (Unity has two).
No wait... I think Unity has three now.
So yeah, MonoGame is game dev for C# guys who are deeply into DIYing (which I totally get; Bevy is the same in Rust-land).
Unity had the old IMGUI, a semi-old Forms-based thing, and I think the new one is some HTML/CSS analogue although maybe it's not ready yet.
I think it's ready, I don't like it lol
Haha, I didn't say the new one was better, or even that any of them are good, just that they exist!
MonoGame has... um... SpriteBatch. Do what you will with it.
Lol
There apparently used to be some monogame networking: https://github.com/nkast/MonoGame.Framework.Net (I saw it when reading about KNI recently) But it looks fairly barebones, like everything else MG does
Interesting, it's based on the same Lidgren.Network I see in Stardew's decompile.
Wonder if SD's was forked from that.
Didn't even register that while going through it lol, weird
Is there a special way to link up the paths tilesheet? I cant get the light feature to work in Tiled map making
Is it an outdoors map?
Outdoor maps need the map property forceLoadPathLayerLights in order to use lights from the paths layer
Indoor sorry
(Casey and Myuu are the MP authorities.)
(An Atra knows little of MP these days and is trying to forget that little bit.)
I may have not thought about how long these names were going to be when I made this ๐
during my latest hiatus I have finally thought of 3 more delivery events for Ayeisha, Delivering some special cloloured ink to Elliott. Delivering a spare fuse for Harvey as the internal fuse to his radio burned out. And whilst delivering to Robin she asks for any off cuts of wood, as she wants to make a cat toy for her cat.
dear lord tungsten tools would be so heavy
probably why it seems to be an alloy?
(looks like a really fun concept, btw!!)
Iridium tools would also be incredibly heavy and not very useful, if they were solid iridium.
Is there an easy way to trigger a tool use animation? Like the full animation with tool in hand?
true enough
I originally wanted to just make a new skill for Blacksmithing, but then I got carried away and started making new resources and alloys to use, lol
oh yeah, crazy heavy. iridium is super dense
Iridium is also a dark silver/gray color, not violet. I always assumed that what Stardew calls "Iridium" is really just a stand-in for some sort of exotic fantasy metal, like mithril or latinum.
magic space metal ๐
Unobtainium, fresh from Eywa'eveng (since we know it's from space).
Also pretty sure that if we were playing by real-world rules, gold would be a terrible "upgrade" on steel. Iridium is a very hard metal, so +1 on that, but gold is almost as bad as copper.
It's best not think about the actual chemistry and consider as more of a "tier".
Gold is to hold extra enchantments, everybody knows that.
What's the base tool material, iron?
Iridium is hard but very brittle
Anyways
The base tool material is clearly aluminum
Could make iridium a Tungsten electroplating instead.
Technically you use iron after copper, even if it's called a steel tool
though we do have uranium now, and they're used in military armor defense 
If you want something really hard and not brittle, diamonds seem to be rather plentiful in game...
depleted uranium is used for tanks
Arent diamonds super brittle
wrong hard. diamonds will shatter (fairly easily) if you hit them
Why is depleted uranium used for tanks
DU is one of the densest metals known, and is almost twice as dense as lead. DU is used in military applications, such as anti-tank rounds, because its high density gives it momentum and a straight trajectory.
i hope my fbi agent enjoys that google search
i had it backwards, it's anti-tank
but that means it makes a great pickaxe 
Elizabeth don't look
reject modernity, return to the 7 metals of antiquity
im struggling with Tiled and im not finding any tutorials very helpful. would anyone be willing to teach me a thing or two with it sometime?
You're right, I should have been looking at toughness, not just hardness. Chromium or cobalt would have been a better choice. (Gold is still bad, though)
Did somebody say cobalt for tools? https://www.nexusmods.com/stardewvalley/mods/1723
(Predates prismatic tools)
Prismatic Tools got made because someone was impatient I hadn't updated Cobalt for a beta
If I remember correctly they even based it on my code
Heh, good you clarified, I was thinking of a different kind of "trash mod"
Cobalt makes a lot more sense for an axe or pickaxe. But then, what would anyone want with a cobalt sprinkler or a cobalt watering can? It's hard to reconcile the real-world material with the tier. Prismatic probably communicates the whole "magic fantasy material" thing better.
I just wanted blue tools ๐
"Let us take an alloy of the heaviest metals in existence and use them.... to dispense a trickle of water"
You could argue similarly for the watering can for vanilla - why not just make a bigger copper one
let's just go the Dwarf Fortress route and add a bazillion metals to the game, but make iron/steel the only one you can make tools from
Doesn't Stardew already have that?
Or the TerraFirmaCraft route
as in the only one
There are 500 different minerals you can get (not literally).
and an expensive research facility to produce the ones that only survive for a nano second
I'm sure it would be possible to make a mod that lets you combine, say, malachite and granite into an axe, and even give them unique properties. It'd be hella confusing though. IME most players don't actually enjoy those kinds of crafting systems.
Unbinilium
I mean, I almost made a Tinker's Construct tools like mod for SDV at one point - I couldn't think of a lot of unique properties for things though
Any enchantments, any buffs are potentially effects.
Maybe one material magnifies the effects of others, etc.
I think this was back pre-enchantments.
Though I wouldn't want to invalidate the vanilla enchanting system either
Dunno if it'd be invalidation, they'd presumably be weaker than vanilla enchantments and buffs because they're passive.
Turning your granspas farm into a giant polluting metal refinery
Or just think of any specific tool-related buff. Pickaxe generates more stone/ore. Watering can makes crops grow 1 day faster. I dunno.
You want to see the most ridiculous and convoluted crafting system ever conceived, look at Legend of Mana.
You want to see a ridiculous and convoluted crafting system see IRL
It's possible to make the most insanely overpowered items you can imagine, but only with insanely long and convoluted formulas; if you don't get them exactly right you end up with basically garbage.
What do you mean "scotch tape won a nobel"
Sounds like IRL
Do everything right and you get an i9
Do the slightest thing wrong and you get expensive sand
Yes and in real life we call that "work".
Have you tried making your own wool?
chants Knitting mod. Knitting mod. Knitting mod
I can't say I know that much about it, but the synthetic textile industry does seem to go pretty deep.
What about crochet mod
hmm. that's actually an interseting idea. I wonder if it's possible to have a machine that only works when the player is interacting with it
I think Atra is going to give his usual response, along the lines of "the whole point is to actually make these things, not put them in a game".
Applied Energistics (or maybe it was another Minecraft mod) tier 0 grinder flashbacks
i am too stupid for applied energistics, but my autism goes haywire for create
i will someday dehardcode minigames /s
started npc coding today!!! so much harder than I thoughtโฆ
Yeah, making NPCs is a lot of work.
itโs my first mod tooโฆ but itโs a fun challenge
I will forever not like Applied Energistics for making a "throw this item down and wait a while" mechanic in a game where items despawn after a period of time.
you'll definitely learn a lot of how to do everything content patcher provides if you go crazy with it
ooo!
According to some quick searching, it might be possible to make a machine that only works when interacted with, but it would require C# coding.
i was honestly thinking of just shoving a minigame into the sewing machine, make it spit out a rug with the same pattern, i don't know what kind of minigame that would be though
similar to actual rug weaving maybe? (in terms of a knitting mod)
Yeah... though I think I read they don't despawn while they're processing? (Not sure about when finished)
Yeah, they made sure the items don't despawn. It's still just not a great mechanic for Minecraft.
Yeah
It'd be better if they popped into a waterlogged "block" or something.
My thoughts immediately went to my low-concentration hobby, which is making chainmail.
To be fair waterlogging didn't use to exist
Or just, you know, didn't waste our time taking so long to process.
You could make maille pants/shirts out of each metal, then combine them with your clothing to increase defense
I guess it would be possible to make a machine that just does it in parts. You add 5 iron bars, after x time you get a 'sheet' of chainmail. You combine enough sheets, you get pants or a shirt.
day 3 of trying to create lava
yes the same as the dungeon and caldera maps. I have my map in tiled set up like the caldera map.
oh you mean like how a watering can creates a platform?
The cooled lava code is in VolcanoDungeon, so it's specific to that location
Wow aviroen orange too 
i figured it was time since aba left me 
Sounds like a job for a framework
(maybe SpaceCore)
that would be great!
if spacecore had a feature like that?
I just built some code after looking at the volcanodungeon and caldera maps code. Is there a difference to how the lava works in each map?
it's only used for the volcanodungeon, i don't think the mines has that same function
I mean the outside map ||top of the volcano||
i honestly never tried to use a watering can out there 
I never made it that far yet.
If you mean the forge, no water cans dont work there
hmm that would explain why the code is so short then
Damn, the wiki doesn't have an article about modding clothing. Does anyone know of an external one?
Ah, perfect, thank you
do you want to add shirt/pants items?
Fashion Sense is a framework mod that allows modders to create static or animated clothing, hair, accessories, and shoes that can be accessed through a special in-game menu. To access this menu, players will need to obtain the Hand Mirror from Pierre's Shop. The framework supports multiple content packs and also adds the ability to save, load, and export custom outfits.
Mod Users: Install Fashion Sense as well as any desired content packs. Content packs can be found by searching Nexus, or for an interactive list, click here.
Mod Authors: Instructions, tutorials, and tips for creating FS content packs are available on the mod's wiki.
I jokingly suggested a chainmail mod, and now I can't get the idea out of my head. Of course, now I need to make a full new texture for chainmail pants and shirts.
Of course, if you have chainmail, then you should also have plate armor...
Looks like there's other mods that already add buffs, like Clothing Buff and Price Adjustment. The real issue is that I want full custom images for the shirts and pants, and looking at the shirt sprites is intimidating at best
When you skip an event in-game, it gets marked as 'seen' right? That was my assumption but a comment on one of my mods says they're unable to trigger the mod because they skipped an event that's a prerequisite, and I want to verify whether or not that's possible before I troubleshoot the issue
If you set a mail flag in the event, you need to set it before the skip
Otherwise the entire rest of the event is skipped and anything you did after the skip button is pressed doesn't happen
https://stardewvalleywiki.com/Modding:Items#Item_types
If you look at shirts, you can see that they have a minimum width requirement, but whatever sheet you're using for your shirt can be whatever height, so you could have multiple shirts on the same sheet
if it's just e <eventid> it should have marked as seen even if it's skipped, there could also be an underlying where if you have a 'transitionary' event ID as a prerequisite, it'll never trigger
(i.e. if you switchEvent -> eventID and set THAT eventID as a prereq, it'll never register)
Button marches on to purple alone 
aba left me first, i had to
It doesn't rely on a mail flag, it requires having the eventID itself marked as seen (the required event is vanilla, the condition in my mod's event is 'e ###'
its ok ill just make you showcase all my mods to make up for it
i would spotlight the sfw version that i'm simul-patching but i think i'll be fine on that front
deal
It's an old mod at this point (adv abigail), this is the first time I'm hearing of an issue like this but I'm about to release another mod with an event with a similar precondition so I want to make sure it's working right
No switchevents involved
Did they happen to do the bare minimum and get you a log?
Not yet lol
then the bug doesn't exist
since you have prereqs in it, it can't be the stringID problem that i had before-- lmao
im pretty sure the event id always gets added to the players seen events when the event is exited no matter via what means
Cool, just making sure I'm not crazy in thinking that's how it works
unless you're attempting an event using the summit location, then that gets problematic
Only other thing I can suggest is sharing the json's for others to look over, if they feel up to it
I know relatively little about events, unfortunately lol
even those call exitEvent() in the end, which adds to eventsSeen
unless youve already done a command to say you shouldnt mark it seen
I'm fairly confident it's working as intended, this comment just threw me for a loop
much like how aba can't let go of tiled info from their brain, i cannot let go of event coding 
Come code my events, I'm feeling lazy 
Anyone recall where this animation gets used in the game's UI?
i would but i have a 7 split question switch to deal with in celebration
Dialogue boxes I think. In the lower right corner
...in celebration
yeah my first big boy mod hit 1k uniques, now i suffer
Ah cool, I love crashes that don't get logged
Ah, thanks, you're right, it's part of the dialogue box, I was totally misinterpreting it as a "delete" button.
Itโs used in the dialogue box in the bottom right corner. It just kind ofโฆ spins in place.
It's an animating X button at the bottom of dialogue box
Thanks folks, I spotted it.
Lmao
just in case nobody's answered yet, it's the x button at the corner of the dialogue box
...but why male models?
selph can i request some doc strings in IExtraMachineConfigApi
Ah yeah, sorry for the completely undocumented API. That's what happens when your "API" was created solely so you can add integration to Lookup Anything/Junimatic
its not huge deal cus i can infer from names
(to people who doesnt get it like roku's reaction, this is a reference to a funny scene in Zoolander where a character is given a longwinded explaination, and ends up repeating the question, twice, because he didn't get it)
so basically GetExtra(Tag)Requirements take an output item data and returns a dict of item IDs (or comma-separated list of context tags) to count
Male models definitely made me think Zoolander but I usually end up thinking of different quotes lmao
so if an output item takes 2 coal as fuel you'd get a dict with key (O)382 and value 2
You want to call both and use results from both
You can probably ignore the other two functions
what about GetFuelsForThisRecipe
oh ig that is check against real player inventory
not in abstract
Yeah that is solely for an upcoming fix to Junimatic - it gets the actual items that will be eaten from the inventory
in case you're using context tags
or the "unique fuels" feature
Oh one more thing, GetExtraRequirements also supports category numbers, so you'd want to handle "-6" and the like
(Though as far as I am aware a grand total of 0 mods use it since it's a vastly better idea to just use context tags)
there's only if you want 1.5.4 under linux
the host's SaveLoaded event should always happens before PeerConnected right
Can you even connect to a game before the host has loaded the save?
Like menu wise I don't think the game is even up until after they've selected the save and loaded into the world
Unless there's a lobby system?
yea thats what i thought, but i dont play coop for reals
Only played a few times, but I'm pretty sure the lack of a lobby was one of my gripes
Big decider in using time pause for multiplayer was just how long it takes to get everyone connected
that sounds difficult if even possible considering that the invite code is generated after loading the save
last time i played coop it was either join via invite code or steam
Oh, I usually just direct connect with IP lol
though the host can open their inventory to pause time while other player(s) join
oh never did that lol
Until the first player connects and then inventories no longer pause
Unless you have the mod that pauses time when everyone is doing something that would cause time to be paused
they do if both people are in a pausable menu at once iirc
wat
i thought that was vanilla..
Part of the reason fishing is so much worse in multiplayer is because it loses the time pause mechanic without that mod
Unless I missed something and it was added at some point, last time I played it was not
ah, only for split-screen says the wiki. i dunno where i picked up that information
That's actually interesting too though
ah, main result on https://gaming.stackexchange.com/questions/389980/is-there-a-way-to-pause-stardew-valley-in-multiplayer is what i saw
i clearly only read the main post and not its replies.. lol
In game dev, I've avoided doing splitscreen because the way you have to handle inputs is a pain in the ass and it's not something we've been targeting, so there's a lot of other things about it that I've never considered
I'm not even making my main game project multiplayer - splitscreen or online.
Easier to design gameplay around one person
That's fair, my brother handles the majority of our networking, so the decision usually falls to him lol
i think its at least nice to think about it, but yeah its also just a pain to support online play
I can do networking (as demonstrated with the MP mod)... I just don't feel like it
I probably won't finish this project anyways
Big mood
aw. felt
Ayye I have a question
Trying to figure out a workaround to Content Patcher's animation limitations. When designing a custom building using Content Patcher I believe animations cannot be used correct? I know that Alternative Textures can use animations though. I know you can include a CP and AT mod together in a single download to work together.
My question is that is there some way that you can have the custom building's skin default to an AT texture once built without using the paint bucket first? I know in the building menu it will be whatever skin you have set in the CP mod, I just mean for once it is built and when AT can take effect
building data has a ModData field which allows setting fields in a newly constructed building's modData dict
and AT uses modData to determine which skin to use
I'm not sure if AT documentation lists which fields you need to set and which one. what you can do is enable Debug fields in Lookup Anything, set a skin on your custom building, look at that building and check the modData field to see what you need to copy
Okay cool, so it is possible then >:3 tyty
There was an update to Daphne's Buildable Ice Cream Truck, but there is a new framework being used that has the truck spawn on the farm instead of being built, apparently it allows animations, and a lot of folks want the building to be built from Robin's menu still, plus I can't figure out how to target the building with this framework cause I am big dumb, so trying to see if there's an easier way to do this that I can propose to the new author/helper
looking at that mod it seems they are using Solid Foundations instead of CP, and I don't think it exposes the ModData field
They were using it previously but now they are using Buildings Included instead
they just haven't removed the requirement of Solid Foundations still
Buildings Included doesn't support defining new buildings, it just allows the ice cream truck to spawn on the farm
I guess that would make sense as to why the building won't show up then lol
perhaps you can consider SpaceCore's animated texture feature
I was just wondering about that too, would that work with CP custom buildings?
it should, you can target any arbitrary texture
there's also the older Content Patcher Animations but apparently it's somewhat deprecated in favor of SpaceCore
It's super laggy too. I tried using it for my festive animated winter tree mod before but it had me sweating
and I'd like to think I have a decent computer 
I will give spacecore a go! I will see if I can adjust the mod to work with it, then fiddle with my own retexture
yeah I recall the old way CP-A did it was super slow, and SpaceCore was meant to be faster
yehh I think spacecore is similar to DGA, which I liked, was much more efficient
I believe in you 
Is spacecore still required to gift a hat in an event or was that nixed in 1.6? ๐ค
Canโt find it in the migrate to 1.6 docs but maybe Iโm blind
You can just use addItem with a qualified item ID now
Yayyy glad it works for hats now ๐ซถ๐ซถ
Does anyone know of any mods that use SpaceCore to animate things I can take a look at for a template? Bonus if it's editing the texture of a building, but I mainly just want to see how it's set up o.o
This is what I have in MMR:
Entry( spacechase0.SpaceCore/TextureOverrides; &_StellarEssence )
{
TargetTexture: @( items.png );
TargetRect: { X: 0; Y: 32; Width: 16; Height: 16 };
SourceTexture: Concatenate( @( items.png ); ":16..19@10" );
}
Equivalent json would be something like (not including the patch header like Action or Target, just the inside of Entries):
"{{ModID}}_StellarEssence": {
"TargetTexture": "{{InternalAssetKey: items.png}}",
"TargetRect": { "X": 0, "Y": 32, "Width": 16, "Height": 16 },
"SourceTexture": "{{InternalAssetKey: items.png}}:16..19@10"
}
Thank you! This helps >:3 I will try to figure this out
the sdv1.6.9 migration page lists Item.CopyFieldsFrom(otherItem) in New utility fields & methods -- wasn't this already in 1.6?
@next plaza: look into marriage schedules with your 0 schedule fix (24h ago)
oh no i'm wrong i'm thinking of GetOneCopyFrom
For you? Of course, kittycatcasey (#6240376) (24h | <t:1726356964>)
How many 24 hour reminders in a row is that now? ๐ค
Like 2-3
a weaker mind would give in and do the task. it's important to train a strong will
(The first one was 19 hours)
I just gotta do it before 1.6.9 comes out (or before I put out a new spacecore version), it'll be fiiiiiine
public bool LearnRecipe(Farmer player = null)
{
player ??= Game1.player;
return ((Category == Object.CookingCategory) ? player.cookingRecipes : player.craftingRecipes).TryAdd(BaseName, 0);
}
i wonder of all the ways this won't work for weird category modded items
That method looks spooky.
How is it spooky
it gives off a negative aura
Using an item's category field. Spooky stuff.
You didn't develop a crafting mod.
I guess that's true

Look a distraction!
Socks!
oooh why do i have so many ui mods, this screenreader setup is going to double my i18n
do you know if your InvalidateCacheAndLocalized extension method is still needed at this point?
It probably still is
But I like a good citizen registered my strings with strings/objects
And then I like a bad citizen abandoned all my mods 
it's a quiet life
Ayoo does anyone have a link to all the item IDs in the game? Specifically looking for things like wood, ice cream, iron bar, etc.
I tried looking on the wiki but it keeps leading me back to the item queries page which just shows me examples on how to put them together in code
Thank you! <3
Alternatively, the data assets would be the place to look
Oh, we do have a command for that, good to know
for most items in the game, the sdv 1.5 item IDs sheet is enough:
https://stardewvalleywiki.com/Modding:Items/Object_sprites
but it's nice there's a more searchable site
!stone
๐ชจ The item ID for Stone is 390.
!itemid not plural
Haha, not the stone command.
Could make an alias that's plural I guess
Also commands only work at the beginning of a message
Let's make a bot command to query a specific item ID, so we can just spam the chat relentlessly to look up items. ๐
!eggplant
Lol, stone is important though, if you look in the data carelessly, there's about 20 entries of just stone
:C
Every single stone that's actually a node is listed in the object data as stone, but if you look at the name and description they say for what node they're for
That's only in 1.6
Oh, I meant define a command like !itemid <value> so we can just make all our queries here.
Peak problem is when there's a meme for it
does GenericSpawnItemData.MaxItems do anything outside of shops
It's a new meme, fresh out of the oven
on two occasions i have, in full sincerity, used the !stone command to help someone. feels good
Oh lol, that was hot off the presses damn
So how come there's no !wood, isn't wood way more important than stone?
There's not a bunch of entries named "Wood"
Ah I get it now, it's for all the stone nodes/objects vs. the actual stone you can have in your inventory.
Yeah
Wood Variants Mod, makes a bunch of different wood entries for the various "flavors" of wood (All with the same name)
i remember seeing a log item
!ask I fucking love this one, like why
Ask your question or describe your issue here, and someone will help if they can!
oh thats just furniture
Maybe Green Rain Weeds will be the new stone.
Regular weeds were like that too, but they really went all-in on the green rain variants.
i miss the good old days of Weeds Honey and Weeds Ring
Ask Selph about snail honey
does the game still rely on internal name stone somehow 
that one is probably about https://dontasktoask.com/
for when people are like "has anyone used <mod>?" or "any experts on <foo>?"
Yes 
no :(
Actually, there are a bunch of regular Weeds entries too
Maybe?
Do we have an expert on lasers in the house?
Check the implementation of Object.IsStone
I don't actually see an isStone method/property.
Probably for the best, I'm imagining whatever the implementation used to be was goggles-worthy.
/// <summary>Get whether this is a stone litter item which can be broken by a pickaxe.</summary>
public bool IsBreakableStone()
{
if (base.Category == -999)
{
return Name == "Stone";
}
return false;
}
Damn
why
They used to
Look up how Undertale is coded
old games were just as wtf as new ones. goes back decades
Maybe some of them, but e.g. Doom was a masterpiece.
Now we get $70 games from AAAA (self proclaimed) studios that ship with all the bugs blatantly visible
AAAA is a smaller battery
My studio is AAAAAA
But it's an extra A, so it must be better (I guess)
(It would be more technically correct to call these studios AAAAaaaaaaaaaaaaa)
I don't even know what you guys are talking about
Ubisoft
maybe 1.7 will rename (O)390 to Rock
Rename it to Dwayne
What's ubisoft
A joke company that pretends to make video games
A fr*nch company too
Considering dumping the ability to change Robin's position when she's working on your farm, it does not work very well lol
what does it do rn
Changing her position while she was upgrading inside buildings was the primary purpose
Because if you have a custom building with even slightly different internals that don't leave tile 1, 5 open, she'll be in the wall
When she's building a new building, her position changes properly, but not when upgrading a building, so I guess I need to look for a different method, just haven't gotten lucky with my search terms yet
Iiinteresting, it's that method it's just not using the data I expected
Still reading the data from the base building rather than the upgrade building
hmm... the fact that AT's API methods use a custom class parameter means that my assembly would need to have a hard reference and dependency on AT to use said methods, correct?
https://github.dev/Floogen/AlternativeTextures/blob/stable/AlternativeTextures/Framework/Interfaces/API/Api.cs
I'm trying to optionally support AT for a texture I'm replacing, ideally in the same mod that's also patching draw calls to said texture...
Well, knowing what was wrong with it sure made it easy to fix lol
Does anyone know how on earth menu cancellation is actually supposed to work in this game?
Escapeworks and is what a normal person would press but- Gamepad
Bpresses translate into the "E" keyboard key and that also cancels out of menus - ...and
Game1.options.cancelButtonis a totally different key, "V", which doesn't cancel out of any menu
Is there even actual logic for it, or is just cowboy code all over the place doing whatever it feels like with the key state?
I normally push E lmao
Really throws me off when things like GMCM can't be closed with E
Does it work everywhere? Is it some kind of alias? Like, the parrot perch for example, says SetHotKey(Keys.Escape)
Hm, I am unsure if it works everywhere, kind of a hard thing to remember considering how many menus there are
There's so much vanilla logic referencing Keys.Escape directly.
OH... I got it, it's menuButton, apparently.
One problem down, only 78 to go
Ah yeah, love when Nexus is being slow as dirt
is it cloud server problems yet again ?
Not sure, no notifications, it's loading okay, just won't publish my shit
oh is it the perpetual gear time
Like the third mod where I've just had to leave and come back some other time
server status says it's okay so iunno
Guess they just don't want my mods
thought i was going to have a nice, easy, fun time making a fun little mod as a treat. Turns Outโข๏ธ it is more complicated than i would like
what language is sdv mod written in?
c# or json for content patcher
!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.
oh ok thx
c# seems annoying to learn
:(
How's that YAML thing going?
published, as far as i know
C# is relatively easy, as far as programming languages go
Congratulations on the cheeto avi!!!

Robin Build Position is a mod for mod creators that lets you set a custom position for Robin to stand while she upgrades or constructs buildings.
https://www.nexusmods.com/stardewvalley/mods/27753
brb gotta throw robin into the ocean
I considered also making it so you can flip her sprite and stop the sound from playing, but those both required patching more methods so I figured I'd hold off until someone specifically asked for it lol
tbh the sound is what makes the brain tingle so i doubt the latter will be asked for
@noble jolt #making-mods-general message
I did take a look at the shed's scaffolding and that's yet another hardcoded map patch lol
Only other thing I was thinking might be fun to add was making it so it would collect any number of coordinate pairs and randomly choose between them
Have her stand in a different spot each day
are the volcanodungeon maps not in the map files?
they're in the mines folder
you should be able to target them just like all the other .pngs though
wait i lied
<image source="Mines/volcano_caldera" width="144" height="320"/> this is their redirect
yeah, they're not maps like the rest of the game. they're images, and the maps are built from them in code i think
yeah hmm I'm thinking of implementing lava but I think I'll just opt for the caldera version of lava.
i do not know why. CA is mysterious sometimes
The most chaotic way to build them
~randomization~
without the extra code for the watering can tile hardening ability
i think i've only legitimately delved volcano dungeon like, 3 times all were correct layouts
It's surprisingly unglitchy
I think I've only had one time where I thought I was stuck but it just happened to be a real pain in the ass layout
Given how stardew maps work, it's pretty awesome
Anyways, a png is a perfectly valid way to encode 2d info
i need to make this trigger action before i forget about it in roughly 7 minutes
Remind @velvet narwhal in 7 minutes to make that trigger action
[remember what they said in anger management...deep breaths...] YES I WOULD BE SO HAPPY TO ASSIST (#6240644) (7m | <t:1726283605>)
i'mma just use that reminder to tell me to get a snack
So I just noticed that you can place floor tiles underneath the edges of buildings now. Is that a new stardew thing, or a mod thing?
1.6 vanilla
my farm looks so much cleaner now, i love it
There's a setting in the building data
I actually forgot, I didn't see it on the wiki, was gonna add it
@velvet narwhal: make that trigger action (7m ago) [Requested by atravita]
ButtonCollection considers thumbstick directional movements to be "button presses", but does not consider stick presses to be "button presses".
Makes ya think.
(Also, because of this, functions like Game1.isAnyGamePadButtonBeingHeld() exclude the stick presses.)
Hello guys!
I have one question... ยฟWhy my event isn't trigger? (sorry for my bad english...)
"LogName": "Souldragon Events",
"Action": "EditData",
"Target": "Data/Events/Woods.json",
"Entries":
{
"11245968/F/w sunny/e spring24/t 1000 1600/y 1": "woodsTheme/8 10/Ghastdev_Souldragon 8 10 2 farmer 8 17 0/skippable/pause 500/animate Ghastdev_Souldragon true true 250 18 18 27 27 26 26 25 25 24 24 43 43 42 42 40 40 41 41 40 40 43 43 47 47 46 46 43 43/jump Ghastdev_Souldragon/44 44/jump Ghastdev_Souldragon/43 43/jump Ghastdev_Souldragon/45 45/stopAnimation Ghastdev_Souldragon 45/pause 500/emote Ghastdev_Souldragon 40/pause 1000/emote Ghastdev_Souldragon 60/pause 500/shake Ghastdev_Souldragon 1000/animate Ghastdev_Souldragon true true 200 43 43 24 24 25 25 26 26 27 27 18 18/stopAnimation Ghastdev_Souldragon 18/fade/viewport -1000 -1000/end",
}
},
change your data/events/woods.json to just Woods
I didn't know we couldn't use 2 tiledata on top of each other?
I've tried that but doesn't work...
you have a separate event called spring24? or did you just want that to be the specific day?
That event it's "Floral dance"
there's also a bunch of the 44 44 marks that i don't have context for, those need specific commands
Wait a minute hahah
also, if you made a prior event, the e command is for requiring that a specific <event ID> has to have been watched at least once
@lucid iron and anyone else using SDUI - wanted to give a quick heads up about a breaking change I just pushed. I try to avoid doing this type of thing, but access to SMAPI's helpers got too important to ignore, so where you used to do this in ModEntry:
Logger.Monitor = Monitor;
It should now be:
UI.Initialize(helper, Monitor);
It's just the one line difference. I recommend putting it with I18n.Initialize assuming you use that.
(P.S. With all these changes, I may have forgotten an import or two; if you happen to get a compilation error with the shared project, let me know.)
so you want it to only trigger on spring 24?
you can do it two ways: the event commands like how you have w sunny you need to put in Season Spring/u 24
the other way is a "When" condition,
you'd put that like this:
"Target": "Data/Events/Woods",
"When": {
"Season": "Spring",
"Day": "24"
},```
Hmm, ok. i go to try this
also, if you've ever used debug ebi <EVENT ID> in the SMAPI console it marks it as seen, so you would need a new save or reload to see it activate 'correctly'
oh did u have csproj using for Color and SButton
There's a specific using for Color, and SButton is part of the SMAPI import. If I forgot it in one or two files, let me know which ones...
Oh, thanks so much
Ily!
It's a bit hard for me to track it down since the shared project isn't compilable by itself, and all the projects I use it in have those implicit usings. (This is why I was asking Casey the other day about including assemblies directly, hoping I can find a long-term alternative to the submodule/projitems).
(If there were some way to set up VS/dotnet to use the implicit usings only for my path, and not the SDUI submodule path, I would definitely do it to make sure that project stays squeaky clean. As it is, I haven't found a way.)
StardewUI/src/Widgets/Keybinding/KeybindListEditor.cs - SButton, Color
StardewUI/src/Widgets/Keybinding/KeybindView.cs - Color
StardewUI/src/Widgets/Keybinding/XeluButtonSpriteMap.cs - SButton
StardewUI/src/Spacer.cs - Vector2
Ok, done, those should all be taken care of now. Thanks for the report.
i dont have smarter way besides making bogus test proj without the implicit usings to quickly check 
Yeah, I guess that's what I should be doing too. Just an empty template with a submodule.
ah there r more for Game1 and Utility on rebuild, i assumed compiler would catch all of em first pass 
KeybindOverlay.cs and KeybindView.cs
Does the ice fishing festival not accept y2 positions for the 'main event'?
ok no more after i added the using locally
I have this and it applies the y2 dialogue and y2 initial positions but uses the y1 main event positions instead of y2. ``` //Festival of Ice
{
"Action": "EditData",
"Target": "Data/Festivals/winter8",
"TextOperations": [
{
"Operation": "Append",
"Target": [
"Entries",
"Set-Up_additionalCharacters"
],
"Value": "Shannon 65 46 0/Russell 82 32 3",
"Delimiter": "/"
},
{
"Operation": "Append",
"Target": [
"Entries",
"Main-Event_additionalCharacters"
],
"Value": "Russell 80 29 3/Shannon 66 44 0",
"Delimiter": "/"
},
//year 2
{
"Operation": "Append",
"Target": [
"Entries",
"Set-Up_additionalCharacters_y2"
],
"Value": "Russell 83 36 0/Shannon 62 43 3",
"Delimiter": "/"
},
{
"Operation": "Append",
"Target": [
"Entries",
"MainEvent_additionalCharacters_y2"
],
"Value": "Russell 78 29 3/Shannon 62 43 0",
"Delimiter": "/"
},
],
"Entries": {
"Shannon": "{{i18n:festivals.shannon.winter8}}",
"Russell": "{{i18n:festivals.russell.winter8}}",
"Shannon_y2": "{{i18n:festivals.shannon.winter8.y2}}",
"Russell_y2": "{{i18n:festivals.russell.winter8.y2}}",
}
},```
Just set up a dummy mod and verified the same, should be alright now.
This has been one hell of a yak-shaving, headache-inducing few days, I never expected to have to write so much more code for such a "simple" use case. Wonder if KC went through the same pain on that part of GMCM.
Figured it was obvious from the file names.
Yes, it's a keybind viewer/editor. Guess it's mainly going to be applicable to custom settings UIs and not typical in-game stuff.
Is there a particular reason to use tmx over tbin or is it just best practice? I'm trying to modernize my map mod.
tmx has reflective tile properties, which means you won't need to add multiple tilesheets just because you wanted to rotate a sprite or reflect it
you can just open tbin in tiled and save as tmx i think
oh no way it's that easy
the features of tmx r like, use if you want 
nice alright. I can otherwise keep my CP content files the same for warps?
i don't remember if it was because i did something stupid, or my tiledata got corrupted, but it ate a good 3/4ths of my tiledata and left only a handful when it was a .tbin
it is a farm map so I don't think I have any of those.
if you were replacing a default farm before it can be additional farm now
oh yeah that needs to get done.
and SVDE updated a lot of their maps so I have to redo all those warps
i think sve kept the names
jumping through dates on a test farm for QC'ing festivals and grandpa's ghost caught me by surprise. 1 candle 
or maybe used FormerLocationNames?
well the coords, for some reason I put a lot of backwoods warps in here. I'll try pulling them out
oh yea the bus stop is bigger in 1.6
rmbr to fix that one or people will lose krobus event
and it needs a new name, "mini" seems to be the new standard for maps the size of a postage stamp and this one is about a third the size of the standard.
what does it look like 
I haven't touched it in about a year so it needs some tuning but the circled red parts are the big trunk and big rock that block the other areas of the farm, so you have to upgrade your tools to unlock the full space.
and then this.... I need to redo this because it has miscolored beach section and hide the swimsuit change section but it's a hot tub. It's supposed to have a blocker on it but I could not get it to spawn. There isn't a rock that requires pickaxe upgrade 1, is there?
its too big for mini but just right for small 
Can someone please help me figure out why this SpaceCore error is popping up and what I have to fix to make it go away? 
https://smapi.io/log/1c62563b09834f5888b4bb76d4b33fad
This my code currently:
https://smapi.io/json/none/e4688fce2f164e84b488f3a06713199f
Screenshot of SMAPI error as preview:
https://i.imgur.com/jHp7JMu.png
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Pro, with 116 C# mods and 324 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
This is the exterior section where I have the SpaceCore code:
{
"LogName": "Load Daphne's ice cream truck exterior",
"Action": "Load",
"Target": "Buildings/DaphnesIceCreamTruck",
"FromFile": "Assets/IceCreamTruck.png"
},
{
"LogName": "Change Daphne's ice cream truck exterior",
"Action": "EditData",
"Target": "spacechase0.SpaceCore/TextureOverrides",
"Entries": {
"Wabi.IceCreamTruckCP_Buildings/DaphnesIceCreamTruck": {
"TargetTexture": "Buildings/DaphnesIceCreamTruck",
"TargetRect": {
"X": 0,
"Y": 0,
"Width": 96,
"Height": 64
},
"SourceTexture": "{{InternalAssetKey: Assets/IceCreamTruck_{{Ice Cream Truck Colour}}_{{Season}}.png}}: 0@35, 1@5, 2@5, 1@5"
}
}
}```
it looks like you loaded the texture, so i think SourceTexture should be Buildings/DaphnesIceCreamTruck rather than internal asset key
Ty! I will try that >:3
It worked >:3 now I can diagnose the other issues hehe
tytytyty
is there a 1.6.9 beta thread at all? just wondering if there's a dedicated place to discuss
uh probably the forums if it's bugrelated?
(Fwiw
- AtraBase, which is also a submodule, used to catch me off guard with nuget package requirements all the time. The only real blessing was that it intentionally did not reference game or game related code. I also started but never finished unit tests for it. (I really should do that. The point of AtraBase is that it's just generically useful c# tidbits.)
- You can just make a nuget package. But it doesn't work well because smapi loads the first, not the newest, version of an assembly. So if you and someone else use the same nuget, get used to coordination where you all have to update that assembly at the same time. Shockah made a PR that gives every mod it's own assembly context which would have fixed this particular issue.
)
From memory that shockah pr merged and is in the 1.6.9 beta builds, would need to double check
I think so too
Yeah double checked it's in the release notes
Forgot how it works, do you have to opt in or opt out?
Would be interesting to see it used ๐
Note that fun things happen with it too, as multiple mods using the same private dependency will have independent static values
Lol. Don't do it to harmony
Docs explicitly call out harmony as the example of when you really shouldn't
I mean it makes sense as to why statics wouldn't be shared
not that people should ever include Harmony with their mods
also it probably wouldn't break Harmony, it's made to be resilient against that kind of thing
Does anyone know how to get the lights to hook up correctly(I've tried just increasing brightness on the tilesheet but that doesn't cut it) I can't figure out how to get the lights in paths tilesheet(p) to light the room. I'm sure I just don't know a basic thing but can't find it in https://stardewvalleywiki.com/Modding:Maps
Does it work if you set the lights in the map properties instead of using the Paths tiles?
Not familiar with setting map properties is that done in the console? It is giving me ReferenceError: Light is not defined
Nope it's done in tiled! If you go up to the menu up the top and click on "Map" then "properties" (I think, going from memory) it should open the map properties. If you based this on a vanilla map you might already have some lights defined in there.
Huge thank you! Didnt know that menu existed, This all makes way more sense now. That worked!
Yay!
how do I trigger an event so I can see it without having met the conditions? testing an npc event and the debug ebi command doesn't do it
I do have event repeater installed. I'm just not sure what the input command is and I can't find anything about it on its github page
if you can't trigger it with debug ebi then something in the event code is wrong
does smapi give an error that it doesn't exist?
are you using a custom location?
no. it's at the beach
i'd say throw the event json here
it might be because it depends on another event to trigger, now that i take a closer look at the console commands list...
debug ebi circumvents all of it
i managed to get it to trigger. idk what i did but...
yeah debug ebi test the event even if conditions aren't met, as long as it currently exists
(it can't test an event that is behind a "when" condition that isn't fulfilled for ex, because then the event doesn't exist)
ah yeah when conditions force it to not exist, all of my conditions are in the event script just so people can look at it through event lookup 
in general, cp when conditions should be done as last resort, or on stuff that won't change like HasMod
also causes multiplayer issues if it is a broadcast event, as it can only broadcast if the other clients know the event exists
Playing moded mp sounds like signing up to do a lot of debugging
I'm trying to swap out a wallpaper tilesheet I'm adding via CP to Data/AdditionalWallpaperFlooring using a config setup schema but having some odd behaviour.
Exmple: default loads the "cotton" background, new choice made via GMCM should load the "forest" one - catalogue sees the change and now shows the forest version rather than cotton, but farmhouse still only loads from the cotton one.
Here's my content json: https://smapi.io/json/content-patcher/0f043ced8cde46788089e46a957635a5
I tried: leave and re-enter, sleep to trigger new day update, patch reload, with no change. Not sure if swapping them out via config is just something that might not work with the wallpapers in the farmhouse?
When not handling a button pressed event, is there any way to check if a given key is pressed?
OK found it
what happens if you place it down again?
there are a rare handful of textures which cannot be updated dynamically; farmer base being the one i know of. so that might be whats happening
Placing the wallpaper down after the config change (with the new version visible in the catalogue) does change it to whatever I select but it still loads from the old tilesheet (the tilesheets are identical except for the bg color atm so it's technically the right pattern/index, but wrong color)
farmhouse shenanigans
What I failed to test, because of course I forget the most obvious thing, was to restart it with the changed config - that does force the change, but that's going to be probably too much to ask users to do to swap wallpaper sets mid game
I was trying to not spam the catalogue with too many variants but looks like it won't work the way I hoped - I'll have to think of something else
make your own catalogue item?
i feel like players may want to mix and match different colors anyways
Imo it's fine to just have color variants as separate wallpaper
I was planning to get a separate catalogue as well, but including it in the Happy Home Designer would spam that as well (and at the moment I have over 600 variants with 5 wood recolors and 4 bg colors) - maybe I just need to trim down the choices in that case
i dont think that telling players to restart if they want to change the config is a big deal
we used to always have to do that
But u can perhaps offer config to turn off certain wallpaper variants 
smart
Dunno how that affects already applied wallpaper though
it would just pull a vanilla texture if it cant find the custom item
Fwiw I would not remoce the actual wallpaper item
That could work - I did try loading multiple tilesheets at first so people could tick which ones they want to load, but the data edit action was complaining about the ID (had to match the mod id so it ended up loading only the first tilesheet and skip others) - is there a way to something like that in a another way?
Instead. Recommend just removing from shops/catalog
These are really pretty!!!
Thank you
@velvet narwhal requested some wallpapers to match a sample of furniture I posted the other day and I went a bit nuts with patterns - but it was fun to make! (but yeah 600+ options now!)
Unsure I understand what you mean here
This is what I tried to do before https://smapi.io/json/content-patcher/8810df96f679416e91233adaa76a6b4f
Yeah I tried it, SMAPI did not like 
Let me dig out the error..
Love waking up to a fresh new bug report with no log and no helpful information
Sorry, this is the json with the suffix in the entry https://smapi.io/json/content-patcher/9f68bcc7540b49fd987ff29b30021541 and the error - it looks like it is looking specifically for an ID that matches the mod ID (ignoring the ones with the suffix?)
Time to pretend you didn't see it 
Lol, if they don't provide a log and more info, that's just going to be what happens because I can't recreate the issue
Huh, well this is a new one for me - it works in game, but does throw the red errors at the same time?? And it does actually dynamically add the tilesheets!?
Ooh speaking of useless bug reports Roku did you end up fixing the issue with custom locks and sve? I noticed that I cannot enter houses outside the allowed times and my memory of what actually happened with it is hazy.
SVE should be fine I think? It was DTZ
And I can't do anything about that, because Harvz doesn't have a public repo for me to make a PR on
He's been made aware of the issue, but I dunno if he has any intention of fixing it
Hi everyone I'm new here.After reading source code of some populay mods, I found some of them save assets in folder (such as .png), but others use directly the game texture. I want to know which is recommended? thanks a lot!!(English is not my first language excuseme :C)
Oh okay cool that's fine I just warp inside them anyway I just couldn't remember if there was a fix that I should've gotten but didn't lol
The only thing I can really think to do is make my own prefix that specifically checks if DTZ is installed and only runs then lmao
With a way higher priority
People put custom assets that they made in their assets folders if they need them, otherwise I'm not 100% sure what you mean by using directly the game texture
I could reflection patch his prefix, but that lies the way of insanity
I think if you're not getting inundated with bug reports about it, don't bother (unless you'd enjoy doing so lol)
So far I think it's only been one or two people, so not a big deal
If I ever do a playthrough where I use DTZ I guess I'll cook something up then
Cotton one is fine but for blossom the key has to be changed as well
"{{ModId}}": {
"ID": "{{ModId}}_blossom",
If you're talking about people who include vanilla assets in their own mod files - that is bad practice done by people who don't know better (usually).
There are some edge cases where it's unavoidable, but generally should be avoided
