#making-mods-general
1 messages · Page 39 of 1
This is my lava code so far for my custom map can anyone help? https://gist.github.com/aronyoddity/34d7ec8f934b3a49cbb53b5ec58f2dcc
Done!
Though now it overrules my GitLab, where my SourceCode is.
Oh well
Invite sent! I also fixed the template, so source url overrides github id for the displayed link.
is there a way to see what items are matching a specific item filtering condition?
with debug commands
actually nvm that's only for an item query without conditions
doesnt seem to exist unfortunately
i mean, there is a debug iq command but i don't see how i can reproduce the filtering part
this : PerItemCondition
yeah that doesnt seem supported looking at the code
i believe the command predate the change that made PerItemCondition its own thing, so that may be why, but i prefered to ask in case it was just not documented
thanks
how is the command you're looking for different from debug iq?
well, i'm looking for debug iq but with a way to specify the PerItemCondition
like, if i want to check what is valid if i have :
"ItemId": "RANDOM_ITEMS (O)",
"PerItemCondition": "ITEM_CATEGORY Target -74, ITEM_ID_PREFIX Target {{ModId}}_, ITEM_CONTEXT_TAG Target lumisteria.crop_tier_1",
(context : i want to check i didn't miss stuff)
The next best thing is probably add a test shop with that entry and open it with debug commands
@ivory plume any chance of getting this beta as a branch on the GOG edition before it gets promoted to stable? I'd like to test things, and it's great that we have it on the decompiled repo if anything goes wrong, but since the output isn't precisely the same as the release, it's more useful for specific debugging than it is for general testing.
I can whip something together real quick if you're interested
i am, but also don't put too much effort in it as it's no big deal 🙂 i can always workaround stuff with the shop trick for testing
(i am a bit away but should be back in less than an hour)
i dont know if anyone would like this idea but what if the farmer had more to the back story i know like it up to the player to write The farmer story but like what if there was events where the Farmer is Questioned about there life before the the valley..??
you can do that through events, https://stardewvalleywiki.com/Modding:Event_data#Event_scripts kind of like adding a bunch of quick question/question forks
if you wanted it to be dialogue based https://stardewvalleywiki.com/Modding:Dialogue#Dialogue_commands $q, $r $p you can do some pretty nice things with it
but like what i saying it like example maybe the Farmer having a very bad Ex who they want to get away from like during your raletionship the farmer would get a from the Ex and there current boyfriend/GF or supouse The penning on which one it is would do a diffrent reactions like they get mad worried feel pitty or even take the phone??
I'm not sure exactly how it would look but a little mad libs style tool answering some questions to fill out those NPCs asking questions to you would be a nice bit of worldbuilding.
For really specific things like what you're describing, the person doing the backstory would have to code all of that, it would be extremely difficult to get those kinds of events put in through a tool.
that's an interesting idea though, an in-game event creator (instead of coding it outside of game and testing)...
This is just an idea.i don't know if it would make sense either I don't know how to code So I normally just leave my ideas for others to take
trying to compensate and include every potential headcanon players can have for their farmers sounds like a very Sisyphean task. if I were you, I would keep it to a handful of potentials, rather than trying to create an unfathomable number of possibilities to accomodate people. everyone is going to have a different idea of what their farmer's backstory is
Well if you have a specific backstory + a particular romance npc in mind, you can just make regular event mod
Or maybe could just be like a customized thing like you can choose to have it or not
Doing that should help scope out what a dynamic version of this mod would be like
Goofy mod idea I had: (because apparently people dislike it) replace the fishing minigame with a terraria esq bossfight. make the style/difficulty of the boss change depending on the behavior/difficulty of the fish.
if you're willing to code said thing, you're free to do so, i have some chaotic switch events that break apart into 10 separate instances
You know that gsq tester I have
It does that
I would love to helpon something like Or if my computer could possibly handle blender sometimes
you just need a text editor though?
Yeah, today even the basic Notebook is enough for simple stardew mods like adding events or dialogues ^^
I probably just think I should do concept art as a starting point
you're thinking of a deep scope creep then, there isn't anything that intensive for stardew modding unless you're running visual studio 2022 on a tablet while trying to run the game at the same time 
I use visual studio for my mod-making because it's easier, visually, for me to keep track of all the little ['s and {'s and make sure they're all closed properly. it's a good program!
!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/
But then again I already edited a sebastian portrait to have A shirt that says "I would drop kick a child for a frog" .-.
It's not done but still TwT
Don't ask why I did this
I don't have access to the GOG setup directly, but I'll see if it's something we can set up.
Has anyone ever looked into creating a custom asset type for SMAPI, i.e. something with its own type of deserialization that's not a Texture2D or JSON data? I think it's impossible but wondering if I've overlooked something.
The idea should be that anyone can do LoadFromModFile<MyThing>("path/to/asset") to register/edit the asset but instead of trying to load it as JSON it would run... something else. I'm glossing over how MyThing even becomes visible to other mods in the first place, I know there are a dozen more questions to answer before this would even be sane.
OK, thanks. The feature seems to exist because there's that compatibility branch, but no beta branch.
If you’re willing to compile it to xnb you probably register a custom asset serializer? Not sure how you do that off hand or if you would need access to the mod content manager directly.
Alternatively, you could patch the mod content manager handleunknownfiletype I guess.
SMAPI currently does it by file extension it looks like, and anything it doesn’t recognize goes through that method for an error and default constructor through Activator.CreateInstance
If it’s a value type
Do you mean the LocalizedContentManager in the game or does mod content manager refer to some part of SMAPI I haven't seen?
It’s a SMAPI thing, one moment
The modcontenthelper has a reference to it
Ok, I see it.
Back when I wanted to do that (with the 3D mod) I just used file paths
Ok, so it's hardcoded by extension. Kinda figured it was something like that, hoped that maybe there was a way to register something new.
What kind of content do you want to load?
It's... a secret. Haha, not really, but something that doesn't exist yet, and I'm looking at options.
Fair enough 😛
The key thing being that other mods would hold the actual assets, it's not just a thing I'd be doing for my own mod. (So, framework-y stuff)
video player? 👀
Right. I had a data model with absolute file paths I think for the 3D model. (That or I did modid:filepath and reflected to get the mods directory)
lol, video player... I'm sort of curious why you guessed that, especially with my modding track record.
if its not a video player it must be an in-game emulator, clearly. its the only other option
Absolute file paths specified with Content patchers token of course
Yes, you caught me, I'm trying to embed a SNES emulator in Stardew.
Still kinda itching to work on the 3D mod more….
But recreating assets is pain
Maybe if I made an easier tool to make the maps
And so begins this week's yak-shaving.
Crocotile3D was easier than blender but still tedious
SMAPI doesn't block Harmony-patching of itself, right? Only its own reflection helper?
i wonder if theres support for USD in monogame
Ok, thanks. It looks harmless...ish... to patch LoadExact
probably not
I don’t think so, USD is pretty complex
(Work training project flashbacks)
(MonoGame supports US dollars?)
no its really just fancy markup for 3d scenes 
Universal Scene Description (USD) is a framework for interchange of 3D computer graphics data. The framework focuses on collaboration, non-destructive editing, and enabling multiple views and opinions about graphics data. USD is used in many industries including visual effects, architecture, design, robotics, CAD, and rendering.
Ah. I'd certainly be surprised if it supported a thing like that, given how barebones a framework it is.
Pretty sure I had to find something separate for gltf
yea its more designed for opposite of real time rendering
You could probably compile USD into something usable by the content pipeline somehow though
Would it be worth it though?
not unless you design your game to use it as the scene hierarchy 
"Worth it" is a very subjective term around here.
Spooky
instead of whatever stardew has in GameLocation and such
I mean, yeah 😅
(Looks at content patcher alternative)
(Looks at yarn script events)
(Looks at… probably something else I’ve done)
but it was fun 
Yes, I'm looking at this partly as a test of my own problem-solving ability... see if I've still got it.
why is it that every time i want a mod i have to be transpiling menu draw code
i never avoid it
because you want to provide nice and integrated visual depictions of your mod
so true
haven't touched modding much in months so what better way to come back than starting a huge project with weird transpilers
Us...dollar?????
Yes, it's a framework used in many industries including Canadian Dollar.
Canadian Dollar wishes it could use US Dollars.
Is the Canadian dollar pinned to the usd????
No, isn't the exchange below 0.7 now?
Think I'm starting to get confused, I'm total beginner
Did you see my gist? I finalized some code cast to game location took a few days
But it didn't work
u know how there's this bit in Data/Locations
"CreateOnLoad": {
"MapPath": "Maps\\Caldera",
"Type": "StardewValley.Locations.Caldera",
"AlwaysActive": false
},
you need to put your class's full name in Type, can get it by
typeof(CustomLavaLogic).AssemblyQualifiedName
in order for things to not explode on save you need to register your type with spacecore
after doing all that you might need some way to regenerate the location as the new custom class? unsure
So this code is unnecessary?
this subclass is prob fine, its all the stuff you need to do around it
in order to actually apply it to your location
I'm just patching things together but need to first find out what a subclass is
public class CustomLavaLogic : GameLocation
CustomLavaLogic inherits from GameLocation, making CustomLavaLogic a subclass of GameLocation
Ok so it seems like I don't need to change the c# portion?
Well, I have no idea what I'm doing so I'll probably be here a lot. I want to make an NPC mod, and I found a tutorial thing, but idk what I'm doing. First off though, what is notepad++? I need it to make json files I think
!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/
notepad++ and visual studio code are both text editors
I can't even make json files just default
So you’ll want to make sure you’re following an updated one from March 2024 or later
json files are textfiles with the extension .json
It specifies its for 1.6
So, you're interested in creating a new character for Stardew? Good news: with version 1.6, creating a character is easier and allows for more flexibility than ever. However, NPCs are one of the more complicated things to create for Stardew, as they have a LOT of moving parts. This guide aims to provide a basic but thorough walkthrough for ea...
Ok so which one do I need? I'm on the latest version.
Download the Installer (first one) and execute it
Ok it's downloaded
!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
tis updated, it's best to check the 1.6 migration before the actual npc_data page but other than that it's up to par
So now how do I make a json file with notepad++
save the file as .json and make sure it isn't something like .json.txt
I'm confused on the update keys
manifest? you don't need one right now, you can leave it as "Nexus:????" until you have an actual nexus ID
"UniqueID": "Pathoschild.ContentPatcher"
}```
should look like this yep
So at the time being do I need anything for the dependencies?
not if you don't want any
you can make a fully functioning NPC with content patcher alone
tia's guide is the best imo, if something doesn't make sense we have #1277457201077813280 for the nitty-gritty
I don't have any art yet.
yeah, really get the skeleton down and get your npc in game and then worry about the nuances
I really only have a basic idea atm
I'm confused why are these orange?
@lucid iron (Because you're the primary person helping dream rn and I do not have time to fully explain)
You need the constructor to match the signature the game expects
You don't have that.
Putting them all on the same line fixed it ig
Multiline strings are technically invalid but smapi accepts them
by constructor atra means you need to have a public GameLocation() and a public GameLocation(string mapPath, string name), but that comes after actually getting game to attempt construction of your custom location class
Am I using the wrong path or does notepad complain about comments too
Because it's showing up orange
depends on your theme in n++, but comments are generally just // or /* CODEBLOCK */
darktheme makes the comments blindingly red
then yeah you're fine, light theme is probably just orange
you'll want to change the format at the top though
!cp
Content Patcher (https://www.nexusmods.com/stardewvalley/mods/1915) is a mod which loads content packs to change the game's images and data without replacing XNB files. If you want to make mods using Content Patcher, start at https://stardewvalleywiki.com/Modding:Content_Patcher.
we're on what, 2.3.0?
can u take regular screenshots? instead of photo
also for notepad++ you need to enable the json plugin
I mean I can it's just a lot of back and forth work
So I pull all of the character information into the dispos file? Like the gender and all that?
you'll be doing an editdata action to data/characters
So there are some mods that still use Mail Framework Mod. What can it do that CP can't regarding mail?
attaching quality items
...batch mail?
1.6 has %item id though Added %item id <item id> [count] form which accepts a qualified or unqualified item ID. If multiple items are listed (e.g., %item id (BC)12 3 (O)34 5 %%) one set will be picked randomly. This deprecates the bigobject, furniture, object, and tools options.
can't do iridium quality though
interesting
hmm i dont think i need item quality
you could put an iridium quality thing in as a dialogue action command but it wont show as an attachment, so its like, kinda halfway there ish
do you still need mfm for custom backgrounds
no
then its just being nicer format 
does mfm put the triggeraction n stuff all into one? cause that could be one benefit
I'll just stick with CP then. All I need is for an NPC to send me a crafting recipe
what do you mean the trigger action stuff and what would the benefit be
ah so instead of the multiples of editdata being like, the triggeraction, mail, basically all of the "ways" to get the mail being put into the singular dictionary that it has
i haven't read it's docs much because it's hard for me to read off of nexus without glueing my eyes straight onto the screen
I might need help with the "Home" part.
For the disposition
So like, for the time being, she starts off at Lewis's house, because that's where she works at the start of her story.
Just a question, the vanilla item id’s have the same structure as modded ones right? Just [ModdedItemID]
vanilla ids are just their numerical #, mods have to specify "UniqueModID_Item" if they've bothered to do it that way, or "{{ModId}}_Item"
item ids can be any strings, the mod ID thing is just convention to avoid conflict
Qualified item IDs don't have a structure per se, although it's polite to use the qualifier.
newer vanilla ids are also not just numerical ids
Oh no, yes I understand. I just wanted to spawn them in dialogue and wondered if enclosing them [] like this would do the same as vanilla ID ones.
shakes fist at Moss
re: #1277457201077813280 message depends on what you want to do, but my template for data/characters has comments about every single field in the character data
Moss is one of the good boys
moss just blocks my path
green rain pain
I'm trying to do this part
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
lewis' house is called "ManorHouse" iirc
Evelyn’s house being called joshHouse or of the same nature still makes me giggle lol
true pain is ||using a ton of your moss to craft deluxe bait right before unlocking farming mastery and the blessing statue that costs 333 moss to craft, then scrimping and saving and treating moss like gold until finally the green rain comes again and you can build the danged thing (you were still like 150 away when it came)||
Like the story I have is basically, she's a maid who moved to the valley because she wanted work, but she didn't want to be a worker for any of the rich snobs in Zuzu, and really the only person who had the space for her is Lewis. And throughout the story and as you upgrade your house bigger and bigger, you need more help maintaining it, and that's when she comes in.
I have no idea how to do any of that but I'll figure it out
there's plenty of ways, like the unlockconditions you can set to be the https://stardewvalleywiki.com/Modding:Game_state_queries PLAYER_FARMHOUSE_UPGRADE <player> <min> [max]
I'm nowhere near that far. I'm still in the disposition
a mail sent upon farmhouse upgrade, and that mail is the unlockcondition etc etc
But when I get there it'll be something like you have two hearts and the first upgrade, she'll come over once a week. You have the second upgrade and like 4 hearts she'll come over like twice a week. Each extra room added she'll come over more often, eventually leaving Lewis entirely after you get all the rooms and 8 hearts
That's kinda what I want to do
Hi guys, I was working on getting a custom background for my letter but instead of loading the custom letter it just inserts the actual text.
the asset name needs to be the same as the Load target you loaded your custom letter texture to
Ohh, I like- didn't do that at all.
out of disk space, or RAM?
Idk it seems to be working now
Just gotta let it do everything
Alright it ran
So now I have everything unpacked
Now what?
Ok so, like- I've come to the conclusion of.. I don't know how to that any of that.
So space core needed?
now you're free to dig into anything you like to see, from how data/characters is set up, to how their animationDescriptions is, etc, in the data folder
I'm trying to figure out where to spawn this character. All I know is somewhere in Lewis's house

you can just open up the game and type in whereami and it should show the tile that you're on, i don't know if you're going to deal with a romanceable npc but tiled is also the other program that most of us npc makers lean on (even though she's a fickle mistress)
the one time i've ever wanted to use CustomFields and i find it's strings only
you can't even throw in a list and parse it yourself later
I do want her to be romanceable. I think the story I'm going for is way too complicated though for someone who has no idea what he's doing
why not? it works with ModData
npcs are just one of the main concepts that has the most moving content patcher parts 
I've tried to use CustomFields multiple times
Split(",") my beloved
Also going back to this, what is the "Id" part mean?

[10:55:21 WARN Content Patcher] Can't apply data patch to Data/Locations: failed converting entry to the expected type 'StardewValley.GameData.Locations.LocationData': Error reading string. Unexpected token: StartArray.
i'm sure customfields works real good for the single example in the wiki where it's used for an asset name lol
hmm i'm surprised you can't serialize and deserialize into/out of it
they're both dicts right (ModData and CustomFields I mean)
i was rather hoping you could
you definitely can with moddata. i'll be sad if it ever breaks because i extremely use it
i, too, thought they were both string->string dicts and that the same rules applied
ModDataDictionary is a string,string dictionary with some fancy wrapping, CustomFields seems to just be a Dictionary<string, string>
Fun fact: One of the custom fields (I think powersdata?) is string-> object
(it is powersdata)
I wish they were all like that
one of them, huh 
technically there are others but they arent data assets you can access with CP anyway
Perhaps then I wouldn't be off in spacechase0.SpaceCore/___ExtensionData land
Because I have no clue
it's an ID to uniquely identify an entry in a list. I don't think what they're named is important, as long as they're unique to other entries
supposedly Default is fine for an id since you're encouraged to only ever have one Home entry anyway (??)
guess we're doing another yet custom data file lol
I honestly think I might be doing something too complicated for later me I might have to change some things
My computer is refusing to close discord
custom asset are cool. I have a boilerplate so it's like 2 lines to add another one
Like my end goal is something like this
Hi - Sorry to ping you on such an old message, but I'm having the same issue that Lemurkat had with funLeave/Return dialogue for marriage candidates, and you appear to be the only one who understands this stuff
So as of 1.6, the funLeave/Return dialogue is now occasionally returning "..." for some characters even though it worked previously. What exactly is the solution here? To use {season}_{name} instead? To put the dialogue keys in the generic marriage dialogue file? To change the schedule to use marriageJob and then change the keys to jobLeave/Return? Sorry to bother you, again, and thank you for your time!
the game saves location data, so spacecore is needed to properly serialize your custom class, this is separate from having correct constructors
Nothing happened. I tried with and without a slash.
It’s pretty tragic 
(It's because it's glitchy if you try to have two.)
is there any chance of it being fixed in 1.6.9, or only with spacecore?
I heard only in SC
Only with spacecore
funLeave doesn’t work? It works with mine iirc 
boo
I think I'll have to come back to this home thing later
Tbh I can understand why they are afraid it'll cause regressions
The dayupdate code is nightmarish
- _newDayAfterFade and the code that loads you into a save are just subtly different
iirc from the tldr (i wasn't really there), the "..." string is because something in the marriagedialogue is missing, it'll throw the error string instead of a fallback
It only just hit me how long this'll all take in total
it takes a while 
does anyone happen to know what you're meant to put in the for the "rotations" part? i've been trying so hard to find examples of this, but it feels impossible 
either way, everything i input isn't showing up how i'm trying to have it LOL and i am simply losing my damn mind
NPC mods are one of the most long-term and tedious (not difficult, just a lot of stuff to do) projects you can take on, especially as a new modder, so it takes a lot of self motivation
is that one set to the direction standard? 0=north, 1=east, 2=south, 3=west? i don't remember 
I imagine you’d still have to worry about portraits, dialogue, sprites, events, schedule etc
wait this makes a ton of sense!
thank you LOL i feel like i always come here with the dumbest questions LOL 
but i literally am ripping my hair out at times trying to figure it out hahahaha
it could possibly be up down left right as well, it's a headache for farmhouse edits 
I'm still trying to figure out this home thing
i wish there was an easier way to do it, but i'd rather try and figure it out than make people install no clip or something
although it'd be a lot easier on me tbh LOL
Pretty sure it's an int of how many times to rotate the furniture lol
roku got to it before me but yeah lookin at the code im pretty sure thats what it is too
Spin 1/2 furniture when
as soon as you come up with a 0.5 int
pings leroy
I'm trying to add compatibility of my mod slow seasons to work with longer seasons, for now just 12 months instead of 4, so 3 spring, 3 summer, and so on
but smapi does not like it when i add any days after 28
{
"Name": "SeasonStage",
"Value": "Early",
"When": { "day" : "1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28",
}
},
{
"Name": "SeasonStage",
"Value": "Mid",
"When": { "day" : "29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 56",
}
},
{
"Name": "SeasonStage",
"Value": "Late",
"When": { "day" : "57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84",
}
},```
and advice on how to do this more simply? the way my mod works usually is just applying on specific days of the month, but longer seasons adds multiple months per season, the mod author themselves says to add more days but smapi gets angry and says the numbers are invalid
furniture orbital theory
no need, just implement this: https://en.wikipedia.org/wiki/Spin-1/2
I know where I want her to spawn, but I don't know like the tile location
i guess you can do some maffs with query
There's a mod that lets you add more days to a month
That's the mod that I am trying to add compatibility for
well, its technically easier to implement than an int thats equal to 0.5, so...
Fixed point
query: {{day}} <= {{EarlyDay}}
is it SMAPI that doesnt like it or is it Content Patcher that doesnt like it and also what do you mean by "doesnt like it" (whats the error)
maybe
#making-mods-general message that conversation about longer seasons
im not a mathematician but im pretty sure a fixed point number will not suddenly change the definition of what an integer is
i couldn't remember how link implemented it tbh, i just pulled it back up to see if it was relevant 
The only thing I see on this mod's page is that you change the config settings, so just use GMCM?
I'm pretty sure linkoid was just doing math for a hypothetical lol
I am trying to find the exact error, but it was content patcher saying that the "when" and day category was invalid
oh yea u cant just put an object there, when takes a string
they did put a string
oh i read wrong 
When is an object
Ill see if adding the month names instead will work, I don't think adding extra days will work
yea i thought it was "day": [a list]
[18:23:14 WARN Content Patcher] Ignored (CP) Soft Slow Seasons > 'SeasonStage' token: its When field is invalid: invalid day condition: invalid values (57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84); expected one of 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28.```
seems like the Day token specifically enforces 28 day seasons?
Yeah, so I guess more days is not possible
does the longer seasons mod expose a separate day token?
not with the CP token, no, but yeah id expect the mod to provide one if anything
the sprang got me again, dammit
https://github.com/FlyingTNT/StardewValleyMods/tree/main/LongerSeasons here is the code for that mod
im not good with code just content patcher
if you guys wanna take a look
oh i forgot the mod is just like, its own t hing, and not intended for mod authors to make use of
Yeah I don't see anything about being able to use CP to do anything with it
yeah, but i have gotten countless asks to make compatibility, even the mod author got asked, but they said to just add more day numbers, which did not work
I want her to spawn here behind the tea table
that mod seems to just make the values that stop at 28 increase beyond 28
ill be honest if someone asked me to make my mod compatible with something that changes something this fundamental id just say no lmao
stand at the spot you want to spawn and type debug ppp into your SMAPI console to get a readout of the tile coordinates
i have a hard time saying no TToTT
especially if the mod itself does not provide easy ways to provide compatibility
Also, what exactly is the incompatibility? It might not be something feasible to even make compatible
on CP side maybe if the range check on this line is removed it should work? https://github.com/Pathoschild/StardewMods/blob/6d11d25254e5a97ce23911cdb843d207b928328e/ContentPatcher/Framework/TokenManager.cs#L202
your options with content patcher alone would be very limited
How do I unfull screen to get to smapi
Alt tab or alt enter
If alt tab, you might have to click the game window then alt tab
from what I understand the mod doesn't apply after the 28th day, and if you have more months in one season it just stops applying until the next season, and then until again the 28th day
The game focus stuff is bad
X 3 Y 7 got it
limiting it to that range might be intentional tbh for some optimization related purpose
Question ichor, can you use the debug mod to show the coordinates too or would it be different from debug ppp 
So is the name of the building just "ManorHouse"?
There's a Debug Mode mod you can use to get coordinates and location name
Yeah, I also used that mod to spawn ponds at a PIF but thank you! 
Displays as GUI in game
debug mode mod also works, and i'm sure is less hassle. but debug ppp is always available unless you break your SMAPI install by removing console commands, so for single use it's really low-friction (don't have to download anything)
I just always keep the mod lol, I live for debug tools
That's what it is in the files anyway
yes
Alright
with the range limit on the CP token and the mod itself not providing its own tokens im not sure the compatibility you'd need (for soft slow seasons right?) is really possible
Thank you, ichor 
okay, maybe I will contact the author and see if there is a possibility, i am just afraid of dming lolol
maybe theres something you can do with the DaysPlayed token instead, but itd be some weird modulo stuff
Disposition finally done
DaysPlayed plus the query token I mean
you could probably ask them to provide a day token with the expanded values available, to be used over the CP-provided one. it should be very easy for them to do
(though even with DaysPlayed, thats only still possible if the number of days/months is fixed anyway, which if the original mod makes it configurable, it isnt, so...)
The first post in the Posts section has info on making Soft Slow Seasons compatible
From the author lol
well unfortunately that post just says to add more numbers to the Day token
so, its wrong, in other words
Yes I already saw that and it doesn't work
they also said theres nothing they can do on their mods end which is not true, they can add CP tokens to help
CP's Day token barfs if you use numbers outside the range [1,28]
it would be an easy fix if cp would allow more day token numbers i think
Yeah, fixing it from CP side seems like maybe kind of a slim chance right now
i don't think even the modulo shenanigans would work because the user could have the crazy 999 days 
I'm still surprised this mod even works honestly, it's such a wild change to such a fundamental part of the game lol
i second button's point, since you can't on your side make it compatible, just preface it that it's incompatible
Yeah that is what I have been planning, I will at least try to reach out to the author
and if nothing can be done I will leave it at that
I'm lost again. I'm on the portraits part of the guide I'm on
Then again, it's an updated aeden mod so I guess I shouldn't be surprised, aeden was op
(now that i had to think about it for a second, maybe the daysplayed % 28/56/84/112, set season change flag could possibly work, but that's getting into the real shenanigans)
Hello theree ! So i wanna actually get started with a small mod where i have to make the farmer find secret notes (before trying to make a npc mod one ) and i heard the mail framework on nexus is the one to help me
Any advice or tops to share :00 ?
Do you mean actual secret notes or just mail as a stand in?
like actual secte notes?
SECRET NOTES??
https://www.nexusmods.com/stardewvalley/mods/25055
you can ask ichor about it but it seems pretty straightforward 
(... secte? cmon brain, at least try a little)
usage of the secret notes framework i mean]
Sectre
You got me scared i thought i made a typo 😭🙏
Nope actual sceret notes !
if you want actual secret notes, the framework avi posted is whatcha want
RAAAAAAAAH
a second consumer, ichor!!
Noted
the mail framework mod is for mail in the mailbox specifically and is also mostly superseded by content patcher now anyway
Ooooh okay okay
i wish i could make ilspy write out
b.DrawString(
Game1.dialogueFont,
text,
...
);
I'll be back tomorrow for help with more modding. I am going to go try my luck at making pixel art.
instead of putting it all on 1 line
I assume i can find this on nexus ?
maybe there is linter i could run the output through
its this link
Thank you !!
a consumer! 
(if this is JS then there is lol, but alas)
just add newline after every comma 
in all seriousness, ping/ask me anytime if you need help with the secret note framework. i hang out on here all the time
i wonder why game doesnt have any 9 slice thing
do they just make all the buttons exactly the desired size
something like that, i expect. it is surprising though
yea i mean a helper func that accepts texture and bounds 
that func is one of the first things i banged out when i was doing ui code
at least it's very easy to implement
the smallest thumbs up
(same brain)
It accepts texture and bounds iirc
ah it does exist
if you are able to reliably reproduce it, #making-mods-general message is a quick mod that logs the dialogue that causes ... in marriage cases
Interested
hi, what does this do?
I had … occurrences too but they usually stemmed from blank dialogue (my own omissions sadly)
but the tl;dr is you need all of them that are name specific, so {season}_{name}, funReturn_{name}, jobReturn_{name}
does not matter if its generic or npc specific, it always loads npc specific roommate first, then npc specific marriage, and falls back to generic (and falls back to ... if that failed too).
the mod is just a simple harmony patch that logs when those fallback flows happen (attempts roommate but is missing, attempts npc specific but missing, etc)
Yeah, I was also wondering abt it too. funLeave_SpouseName worked for me, personally.
1.6.9 will log the original dialogue when ... happens now instead of a cryptic error
all of them are possible
Oh, thank goddd
But generally, my mods from 1.6.8 wouldn’t need too much tweaking, no?
i think cause you were following my template you should be fine
i covered all of the bases 
(avi what would i do without you 🫂)
i should triple check my actual dialogue template cause idr if i've slipped in the 1.6.9 changes 
I'm just a humble blacksmith, I don't do content work, but I can reverse engineer cryptic errors 😛
But I think… I don’t have blank dialogue anymore. I did my i18n manually so that might have been my main issue 
Really need to recheck the beta patch
not sure if I coded that event properly (most likely didn’t)
oh, now that i actually have time on my hands
where/how does one cite the findings, because i planned on moving all of the 1.6 NPC changes to their respective pages
op nevermind i found the faq
oh wait did someone beat me to it 
well--i was gonna fix up dialogue but uh
i'd rather not break the wiki with my confusion
alright, so there is totally a depth parameter that actually lets me draw what I want. now I need to know when to draw it.
the goal: to draw custom things in the world that aren't bound to existing game objects, for, uh, reasons.
things that won't work:
events.Display.RenderedWorld, because depth is already compiled. events.Display.RenderingWorld, because it says in the docs that drawing is ineffective during this event.
something that would probably work:
harmony patching farmer drawing to add a call to my own "renderAllThatStuff()".
why i don't like it:
is harmony patching necessary for this? am I missing an event where I can draw stuff with depth?
for ease of conversation, let's assume I want to draw some particles. (that's half-correct, sort of.)
i feel like this might work?
private void OnRenderedStep(object? sender, RenderedStepEventArgs e)
{
if(e.Step == StardewValley.Mods.RenderSteps.World)
{
//draw my lovely particles here?
}
}
but then that might be equivalent to the RenderedWorld event where depth is already shipped
guess i can do some test renders and muck about with it
Display_RenderedStep?
yeah, that's what I'm experimenting with now
World_Sorted
nuh huh, not doing that. Although, FF has custom rotation, so you can have as many as you want.
saw that too. i guess what im not clear on is how Layers vs Depth works. if i draw something during the Buildings step, is that forcibly in front of background layers? what if the thing i want to draw can move behind or in front of a building, contextually?
or do layers not affect sorting?
almost done writing my test renderer. so i'll find out in a moment.
Layer depth guessin it is 0.004f
Building layer is fine for everything since the game takes care of that I think
I managed to hodge podge together a special effect in c#
That sprite is a bit unusual, if you want to draw it with an arbitrary size then you really have to split up what I called the "frame" and the "drawer".
https://github.com/focustense/StardewFishingSea/blob/master/FishinC/UI/SeedFishInfoView.cs
(This might be a different project of yours but if you're already using StardewUI anyway then I suggest using its nine-slice because it actually caches, unlike the mess in drawTextureBox.. and lets you specify scale and target size independently.)
How can I register a location type to spacecore I wonder,?
utterly simple:
[XmlType($"Mods_{ModConsts.MyUniqueId}_{nameof(CustomLocation)}")]
public class CustomLocation : GameLocation
{
public CustomLocation() : base() {}
}
public void RegisterCustomLocations()
{
this.SpaceCoreAPI = this.Helper.ModRegistry.GetApi<ISpaceCoreAPI>("spacechase0.SpaceCore");
this.SpaceCoreAPI.RegisterSerializerType(typeof(CustomLocation));
}
method can be called once, presumably on GameLaunched
xml attribute apparently requires Mods_ followed by some unique identifier of your choice
I haven't been through all the decompiles for this, but it's my understanding that the different rendering steps all use different sprite batches, whereas the layer depth is an arbitrary sort order in a single sprite batch (using Deferred sorting). Buildings are drawn in World_Sorted (IIRC) and normally, buildings, like everything else, are sorted top-to-bottom (check Building.draw).
So if you want something to be either contextually in front of or behind buildings then you have to either (a) draw it in the same step and change its layer depth to be higher or lower than that of the specific building in question, which depends on its Y position, or (b) if you want it to be sometimes behind or sometimes in front of all buildings then change the actual step it draws in, for example use World_AlwaysFront, but that affects a lot more than just buildings.
It can vary, though. You have to look at the SpriteSortMode. For example, World_AlwaysFront uses SpriteSortMode.Texture instead of SpriteSortMode.Deferred, and that one is... interesting. Similarly, some steps use FrontToBack which means the sorting is in reverse order. Bottom line, you cannot assume anything useful about a specific layer depth without knowing which rendering step it's drawing in (Buildings aren't a step), what sort mode it's using, and what depths the other objects in that step are using since it's all relative.
i just need to draw pseudo-objects with believable depth. (and to fix the depth on my spline wire segments lol)
I've given Starbot control of drone NPCs. but i really don't want to have to hack actual NPC objects to all heck to make them behave appropriately when all I need is a sprite.
but i need the sprite to behave, depth-wise.
i think i have something that should kinda/sorta work. but im tired so i'll find out tommorow
just seems weird that something so simple requires such hacky approaches
"Behave" isn't qualitative, it'll behave exactly how you tell it to behave.
Y-sorting is pretty typical in 2D; if Y1 is above Y2 then it's also "behind" Y2. That's the typical 2D perspective. That is probably what you mean when you say "behave depth-wise" but of course the game can't know exactly what order to draw things in unless it's told that.
Don't know if I have the syntax right
What is modconsts?
whatever you like ✨ some unique identifier of your choice
So i dont put those exact words? And I copied your example but I'm getting build errors
It says name does not exist in current context
modconsts is just a file i have, again, you can give any name you like to XmlType
you also don't need to have an instance of spacecoreapi on your modentry, you can just keep it local if you like
it's just example code, i don't know how your project is structured
then another invalid token } in class record struct after " {public CustomLavaLogic() base() {} }
do you have a background in c#, or just trying things out?
I'm a beginner r level
ahh okay lol, i'll zoom it out a little
When I type something in where you put modconsts It says it doesn't exist
the $ at the start of that text indicates it's tokenisable, using {} braces to evaluate expressions -- think like CP tokens
so just like in CP, you can have $"some literal text with a {CodeGeneratedValue()}" and have it resolve as a string
i just did it there to be extra or something
$"Mods_{dreamygloom.CapeStardewCode}_{nameof(CustomLavaLogic)}")]
It says the name dreamygloom does not exist in the context
it's trying to evaluate it as code
you can just write it without {} braces, it's fine
Ok this time I got a successful build but
here's a full working sample:
using System;
using System.Xml.Serialization;
using Microsoft.Xna.Framework.Graphics;
using StardewModdingAPI;
using StardewModdingAPI.Events;
using StardewValley;
namespace SDVCustomLocationTypeTest
{
public interface ISpaceCoreAPI
{
void RegisterSerializerType(Type type);
}
public class ModEntry : Mod
{
public override void Entry(IModHelper helper)
{
helper.Events.GameLoop.GameLaunched += this.OnGameLaunched;
}
private void OnGameLaunched(object sender, GameLaunchedEventArgs e)
{
ISpaceCoreAPI api = this.Helper.ModRegistry.GetApi<ISpaceCoreAPI>(uniqueID: "spacechase0.SpaceCore");
api.RegisterSerializerType(typeof(MyCoolLocation));
}
}
[XmlType($"Mods_MyCoolMod_Nice_{nameof(MyCoolLocation)}")]
public class MyCoolLocation : GameLocation
{
public MyCoolLocation() : base() { }
public override void drawWater(SpriteBatch b)
{
base.drawWater(b);
}
}
}
now with all the silly bits removed, and lumped into a single file for your convenience
@spice inlet pardon the ping, but is it possible to add a warp in a PIF map to another tile in the same PIF map?
Ok so my location is called custom_capekeymaze but the cs file is CustomLavaLogic and it's named that so what do I put as the type?
what's the name of your project in visual studio?
for example, my code above is SDVCustomLocationTypeTest
in that case, your CP component will look like this, depending on the exact asset name of your map and location:
"Changes": [
{
"Action": "EditData",
"Target": "Data/Locations",
"Entries": {
"Custom_CapeKeyMaze": {
"CreateOnLoad": {
"MapPath": "Maps/Custom_CapeKeyMaze",
"Type": "CapeStardewCode.CustomLavaLogic, CapeStardewCode, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"
}
}
}
}
]
the namespace should match the project name 
if by 'type' you meant the XmlType, the answer is and always forever will be whatever you like ✨
Do I put the unique id what is in the manifest?
unique id where 📝
to clarify, the "Type" field there is exactly as it should be -- you only want to change the name under "Entries" and the value of "MapPath" if those are different in your mod
It was saying something about unique id
the value i've given to "Type" is the fully qualified assembly name, which is different to both the xmltype and your mod's unique id
What unique id did you mean
i never mentioned one, i just asked where you were putting the unique id from your manifest hahah
Idk what the xml type attribute is supposed to look like
I just make a random one?
So after name of am I supposed to put the location name?
Or the subclass name ?

for example, mine is Mods_Blueberry_Hikawa_House
Testinf
Idk I've been at this for couple weeks
No still get the same problem invalid type for location
Idk how to get the type if I implemented the c# code already?
I'm trying everything
Invalid type ...
hawo! im making like the interiors of a shop map using tiled. do you always set the tile render order left down or right down? for every map u make. (or if it makes any difference xd)
would you like to zip your solution folder for both c# and cp to send here?
Not yet, but it wouldn't be much trouble at all to add. I'll add it in the next update I plan to work on this weekend.
nice! i'll wait for the next update before finalizing this room i'm working on then. ty for your work! 
@next plaza stardew valley 1.6.9.24268 is out 🥳
Broken code in SpaceCore.dll: reference to StardewValley.Farmer.checkForQuestComplete (no such method).
just as i was getting into some really wonderful wastes of time, too
Start with a copy of a vanilla map so the map properties are set correctly for you rather than starting from scratch.
What's solution folder?
the folder with your VS solution:
I can simplify the xmltype attribute? You added many brackets and () in your example so is name of necessary?
please don't worry about xmltype haha
share your solution, you can delete/omit the bin and obj folders if you like (they're made whenever you run the mod)
alternatively, add this line to your Entry method:
this.Monitor.Log(typeof(CustomLavaLogic).AssemblyQualifiedName);
then run the mod and share your log file here 
I don't think I get it then
can I ask a question/seek opinions about map layouts in this channel, or would that belong more in mods-art?
If it's about the visual aspect of it, probably the art channel yeah. (As opposed to like, mechanic questions about NPC pathing or something.)
the really critical part of this is the "Type" field in your data/locations entry, that's the part that's delicate and needs to match things in code loosely. the log line above should show the needed value
it's more about what players would consider of greater value on a map
Ok but where does it go?
Modentry.cs?
the entry method
as in public override Entry(IModHelper helper) { ... }
Well, in that case maybe the consideration might be that the art channel is currently not busy so it might be easier for your message not to get lost in there?
that's true
Am I supposed to put Mods_ in the type and the xml part?
I still get invalid type I think misunderstanding something
I have to figure how to do that too
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
Oh the smapi log it says invalid type I'm trying different names but none work and tried simplify xmltype name. Is there a wiki about it?
please link the log here 
when making a farm map, do I need to have preset locations for cabins, or will the game randomly pick locations if I do not supply that map data?
Pretty sure you need preset locations
irritating, but fair enough
Would be more irritating if it chose to put a cabin in front of a warp or directly in front of the farmhouse
I'd assume it'd have some sort of internal logic to avoid putting them too close to an existing building, and you can move them at the carpenter's shop, but that's also a fair point
That would require a lot more code lol
Especially when you consider that custom farm maps can basically have any layout
I know less than nothing about C#, so I will take your word for it, lol
you need to set them using the Order X property on the Paths layer (replace X with 1-7 depending on how many players your map can support; number order determines cabin spawn order)
so far, I'm at 3 close-spawning cabins, and 3 far spawning cabins. I don't think I need to use all 7, right?
nope
while i wait for the PIF update, time to go back to my roots (i want to experiment making a map with multiple screens!
Map with multiple screens?
like this map
https://blog.naver.com/delloti/222828804686
like still just one map, but it has several "screens"
Hmm, I see. Is there any advantage to doing that over having multiple maps?
nothing. just for the aesthetic
dunno for other map types, but it looks nifty for a farm map
you could add secret paths in your map. just a nifty feature for the player
Ah, I see. To me that example you shared looks like it was a farmhouse made by someone who didn't know how to make custom maps so they tried to hide different "maps" on one giant map (which is very much not something I prefer in a farmhouse because if I zoom out I can see bits that are not meant to be part of the current floor/storey and it feels less immersive for me) but I do think there would be some fun utility in using it for a farm map instead. I saw that DaisyNiko's Capitalist Dream Farm makes use of warps to get between different areas of the map that are otherwise blocked off so it almost feels like they are different maps.
yeah that's what i want to try out!
you do need a lot of empty space between "screens" so the map could be pretty big
Just make sure you don't go over the max map size and I'm sure you will be fine
also why did i just realize i copy pasted the wrong link
i meant to use this as an example
https://blog.naver.com/delloti/222840524534
Oh yeah haha that makes more sense for an example of a farm map lol
Lucky the farmhouse one did at least have different map sections so I got the idea
Speaking of maps: accidental map crimes
oh god whats going on in here
I forgot to change the patchmode to overlay
However, my plans for a path all the way from town to the national park are going to be a compatibility nightmare so I think I might give up on it anyway
Should be, SVE has a lot of maps over the size
And I made one that was absolutely massive as a test
And then tried to run across it and decided absolutely fucking no way
Lol
I at least didn't notice any issues on my map, though I'm not sure what exactly was breaking in the layering
Yeah me either. I've never tried making such a big map anyway because they are exhausting.
Bleh map patches are annoying. Begone, bush!
Maybe; I think podunk did remoce the (0,1) bounds
!maxmapsize this at least details one of the rendering issues
The maximum safe map size is 200x155 (200 wide, 155 tall). Beyond 155 tall, the game starts having major rendering errors. Beyond 200 wide the bottoms of trees are drawn over the tops. Try splitting your map into multiple maps if you want more room!
I didn't have any trees on my map
Remind me in 6 hours to mess with map sizes again and actually write down the results this time
you're in luck, I have one spare egg timer available. I think it's broken but we'll give it try. (#6260520) (6h | <t:1727203621>)
is this because the draw calls use the map coordinates to generate a z-buffer value and it goes above 1 or something when the map gets too tall? funny if true
Something I have learned from CA for making my own game one day is to NOT have tilesheets with invisible tiles in some seasons that are visible in other seasons! A tile should have stuff in it in all seasons or none!
You can edit the texts at the strings without it causing a lot of issues, right? 
I mean like, through CP
are you talking about editing StringsFromCSFiles?
Texts at the strings? If you mean like in files like StringsFromMaps or StringsFromCSFiles, yeah.
I saw the file where I can get Sebby to sing MCR when he goes to the beach but I've yet to find the "honey you're pregnant" one (ty ichor
) but thank you
Tia suggested I could do locational dialogue too, though
it's no problem to edit StringsFromCSFiles with CP, but i recommend gating your edit as narrowly as possible behind When conditions, since it's a shared generic resource
This is the quest ping box thing that's already out, since it only need extend horizontal I just have to use destination rect 
so if big map cause problem, how SVE make big map with no problem?
Can anyone help me figure out what I've done wrong 🤣 :
// Secret woods off south forest
{
"Action": "Load",
"Target": "Mods/{{ModId}}/Maps",
"FromMapFile": "assets/Maps/ShirahoshiWoods.tmx"
},
{
"Action": "EditMap",
"Target": "Maps/Forest",
"AddWarps": [
"79 107 {{ModId}}_ShirahoshiWoods 13 31"
]
},
//Location data for the secret woods
{
"Action": "EditData",
"Target": "data/Locations",
"Entries": {
"{{ModId}}_ShirahoshiWoods": {
"DisplayName": "Shirahoshi's Secret Wood",
"DefaultArrivalTile": {
"X": 13,
"Y": 31
},
"ExcludeFromNpcPathfinding": false,
"CreateOnLoad": {
"MapPath": "Maps\\{{ModId}}_ShirahoshiWoods",
"Type": "StardewValley.Locations.{{ModId}}_ShirahoshiWoods",
"AlwaysActive": false
},```
"[game] Couldn't create the 'ShipsAhoy_ShirahoshiWoods' location. Is its data in Data/Locations invalid?"
SVE has a bespoke C# component, so they may have fixed it for their locations specifically. or it may not be a problem anymore, as someone mentioned earlier (i haven't tried)
You've loaded your map to an incorrect target and then tried referencing a different target in your data/locations code. Your target should be Maps/{{ModID}}_ShirahoshiWoods, not Mods/{{ModID}}/Maps.
Just make sure your Load Target and your MapPath are both Maps/{{ModID}}_ShirahoshiWoods
that was my problem when the warps weren't working, I was loading {{ModID}}_FarmName and putting warps on {{ModID}}.FarmName.
Do I still format it like this: Maps\{{ModId}}_ShirahoshiWoods for MapPath?
or Maps/{{ModId}}_ShirahoshiWoods
because the other location data I copied that from had Maps\
i'm trying to duplicate \ but discord won't let me
It doesn't matter, though / is usually recommended over \\
and you need double backslashes since Discord escapes them (\\\\ becomes \\)
is this everything I was supposed to change? the game is still saying it's invalid:
{
"Action": "Load",
"Target": "Maps/{{ModId}}_ShirahoshiWoods",
"FromFile": "assets/Maps/ShirahoshiWoods.tmx"
},
{
"Action": "EditMap",
"Target": "Maps/Forest",
"AddWarps": [
"79 107 {{ModId}}_ShirahoshiWoods 13 31"
]
},
//Location data for the secret woods
{
"Action": "EditData",
"Target": "data/Locations",
"Entries": {
"{{ModId}}_ShirahoshiWoods": {
"DisplayName": "Shirahoshi's Secret Wood",
"DefaultArrivalTile": {
"X": 13,
"Y": 31
},
"ExcludeFromNpcPathfinding": false,
"CreateOnLoad": {
"MapPath": "Maps/{{ModId}}_ShirahoshiWoods",
"Type": "StardewValley.Locations.{{ModId}}_ShirahoshiWoods",
"AlwaysActive": false
},```
is there more after that last comma?
Are your missing closing brackets just missing from what you're showing here, or are they missing from your file too? Also your "Type" is invalid, I'm pretty sure you can't have custom ones.
Just make your type "StardewValley.GameLocation"
and yeah I was jsut showing a snippet
Well you can, but definitely not in the way you're writing them
and that would require C#
Just remove it and the game should default to a regular value
Oh yeah removing it works too. You can also remove "ExcludeFromNpcPathfinding" since you're setting it to its default value anyway - unless it's helpful for you to keep it there. My guess is that the default for "AlwaysActive" is also false but the wiki doesn't say and I can't be bothered opening the game decompile to check.
Fixed in the upcoming Stardew Valley 1.6.9. Thanks for reporting it!
oooo yeah it's coming together
Hello! Regarding the beta version 1.6.9, is there another place besides the forum to report bugs? If not, I have two more questions: should I simply create a post on that page : https://forums.stardewvalley.net/forums/help-bug-reports-non-modded.12 ? And will I be able to easily delete my account on the forum afterwards?
if it seems easy to fix you can ping pathos here
I noticed some bugs, but I’m not sure if they are all easy to fix.
Hello @ivory plume ! Here are some bugs I’ve noticed in version 1.6.9:
Information:
- OS Version: Unix 6.10.10.1
- Stardew Valley Version: 1.6.9 'beta' (build 24267)
- Code Decompiled with: Avalonia ILSpy 7.2 RC
Bugs
- When a garden pot is placed next to a
HoeDirt, watering the garden pot will connect the texture of theHoeDirt(see attached images).
- When calling Robin with the phone and selecting the "Check building upgrade costs" option, the buttons (move, build, etc.) are invisible. However, if the
resetBoundsmethod is called, for example by resizing the window, the buttons become visible and functional. - The 0.7% chance increase for the Crop Fairy event when a fully grown Fairy Rose is present is not applied because the field
hasMatureFairyRoseTonightof theFarmclass is always false. It should be set to true in thenewDaymethod of theCropclass, but this method checks the value of thefullyGrownfield of the crop, which is always false for crops that do not regrow, as the Fairy Rose does. Here is the code:
if ((bool)fullyGrown && indexOfHarvest != null && indexOfHarvest.Value != null && indexOfHarvest.Value == "595")
{
Game1.getFarm().hasMatureFairyRoseTonight = true;
}
- The Meteorite, Stone Owl, and Strange Capsule night events place objects using the following code:
- Meteorite:
targetLocation = new Vector2(random.Next(5, farm.map.RequireLayer("Back").TileWidth - 20), random.Next(5, farm.map.RequireLayer("Back").TileHeight - 4)); - Stone Owl:
targetLocation = new Vector2(random.Next(5, farm.map.RequireLayer("Back").TileWidth - 4), random.Next(5, farm.map.RequireLayer("Back").TileHeight - 4)); - Strange Capsule:
targetLocation = new Vector2(random.Next(5, farm.map.RequireLayer("Back").TileWidth - 4), random.Next(5, farm.map.RequireLayer("Back").TileHeight - 4));
The code uses the tile size (TileWidthandTileHeight) when it should use the map size (LayerWidthandLayerHeight).
Sorry for the inconvenience, I can post on the forum if necessary.
Yep, can you post each of those as a separate bug report in the forums? It's easier to keep track of bugs that way.
Sure, I’ll do that. Thanks!
The resizing one in particular I vaguely recall resizing being generally fucky
Hi guys. have I messed up something or did "SeasonOffset" stop working on custom buildings after latest CP update?
SeasonOffset is part of the game code, so not sure why it'd be affected specifically by any Content Patcher update?
Does anyone have the bed tile tutorial image on hand?
@rancid temple: mess with map sizes again and actually write down the results this time (6h ago)
Pathos why must you keep breaking my mod
I thought I saved that bed image but I can't find it...
Wish I remember who I saw post it last
It was Blueberry!
(i wish i knew what you were talking about
)
Ohhh thank you sm sm
Not only is it very useful, it's cute as heck
throws that into the real estate thread
are there sideways beds in stardew
It would have to be given some kind of special sitting animation I guess
just take up 2 sprite indexes to lay sideways and gotta use spacecore
You would need a sideways lying down sprite
Not nearly as easy as the current: close eyes
Which would probably break the bounds of the sprite limit
i imagine it'd break everything to have a rotate farmer/npc command
Yeah
set the farmer sprite to be completely transparent when you touch the tile and add an animated sprite that looks exactly like the farmer but rotated
ezpz
Interesting...
Yeah it's gonna be janky anyways, may as well embrace it
(not ezpz but funny)
Instant teleportation into bed, no rotate and slide just do it
the bunkbed you could maybe get away with the 16x16 of just the "head" and a slight little lip of the blanket?
If you wanna be fun, you can add a small puff of smoke animation as part of the climb into bed action
use one of those wizard teleportation tiles to warp you into bed with a flashbang
i was actually just imagine sideways bed that you sit onto
just that, with the blanket
Oooh chair bed
Yeah just decapitate the character and put them in place is good too
I mean, if you made a sofa but designed it like a bed
i contemplate it now just to shove marlon into the bunkbed
That might work for sitting on
i need to stop imagining mods that i dont have the art skillz for 
right click to sit in bed so the character is locked into the right spot, then temporary sprite animation to turn them sideways
The only two options: give up or become an artist
!anyonecancook
I have chosen become an artist, I make one terrible drawing each day with the hopes it slowly becomes less terrible.
wait what happened to the cooking
Lmao, not anyone can cook apparently
the food's burnt
Dude I started making Margo with 0 pixel skills but now I'm confident in my abilities. Everyone can cook.
It's all about how much time and effort you can put into learning a skill
I will cook once I get the time yes
One of the hardest things about not being an artist is seeing how amazing artists are and not immediately thinking "wow, they're so lucky they can draw" because that shit takes so much effort and practice
Which is uh, not until dec or later
drawing is the time eater
Unfortunately I don't remember what the command used to say, so I can't fix it lmao
i can probably find it
Oh yeah, it doesn't change all the previous sent versions, so it should be somewhere
why'd it get deleted though? 
I think it's not issue with the file, but rather some embed problem
oh are embeds dead right now
What if we turn this into ascii
Hm, the bot command site is being slow, maybe a server issue?
On the site it's still the image, so probably just an embed issue yeah
ascii did not work
Have to admit that I have a mod I want to make planned out, but the main thing stopping me is having to draw the NPC portraits.
I want to do a meta mod of Mr. Qi reacting to you having mods installed, and generally bringing out the outworldiness in him (saying shits like "you ask who I am, but have you asked yourself who you are?")
me but world sprites
No idea if I'll do it, but I want to
i'm waiting for my sprite artist to stop being busy and to get her pc upgraded so i can slap her with some money so i don't have to do the world sprites
You can use the stardew portrait creator for placeholders portraits
And hiring an artist is also an option.
this is true
Command worked in gov's mansion, but there was a considerable delay between it appearing and the embed loading the image, think there's just something wrong with the connection or something
sometimes we can cook
preheat the bot to 350 first
make sure all of the pans you left in there for storage reasons are already taken out
oh button is the website theme you used for BETA docs open source?
it is not i just made it myself, why do you ask
i was looking at options for trinket framework docs
the examples modal is nice 
though i prob wouldnt be able to do something like that in md, unclear
sorry to say there is no like, template or anythin for you to use then 
i would be surprised if you could come anywhere close with just markdown
if you really wanna scopecreep you could take this as an opportunity to learn an entirely new field (webdev) just for your mod documentation. how long could that take, really
Or just use a CMS
for a nominal fee of-- /j
A few hours (try, fail, give up)
(Not WordPress preferably 😛 )
With framework today, webdev can be learned quite easily
oh its not a new field for me, i just havent done it since college
you could do that too, though you'd limit all sorts of fun custom functionality you could provide if you only relied on a CMS alone
but i suspect there's stuff i can do with docfx's template
Powerpoint Presentation

Yeah I've had to tweak some things for the new spacecore docs
i should prob refactor how i did abilities though 
should be more events less override
tbh even just a very simple .html file with some nice styling is already gonna be a lot better than an md file on github imo so its not likeyou can really go wrong with anythin you do
TIL if you hold shift while erasing tiles in Tiled it erases from every layer
I dunno if this is useful but it sure was a surprise
I'm trying to add this line in my c# code but nothing shows cs this.monitor.Log(type of(CustomLavaLogic).AssemblyQualifiedName); but nothing shows in the smapi.
You need a LogLevel
log level. Info?
also its typeof not type of
It defaults to Trace which only shows up if you have that enabled
Just need it to appear
It should be in the log file if you dont feel like recompiling and rerunning
Yeah if you don't need real time logging then you can just open the log file that's generated
Info or Debug is usually what I choose for informational stuff
Depending on how visible I want it to be, though for testing it's usually just Info and then removed when I'm done with it
For some reason vs is telling me to put ?? After assemblyQualifedName
Suggestions from VS are generally suggestions from AI, sometimes it's right, sometimes it's not
In order to use intellisense properly you kinda need to know your project well
cs this.monitor.Log(typeof(CustomLavaLogic).AssemblyQualifiedName ?? "CustomLavaLogic type information is unavailable", LogLevel.Info);
oh the ?? is cus AssemblyQualifiedName is nullable
Or is it intellicode, I can never remember which one is which
it is try to make u give default value afterwards, but ur mod is kinda in trouble if AssemblyQualifiedName is null for this class 
Making things nullable is great for squashing warnings, but shouldn't be done on everything lol
I tried adding it to public override void entry
When I add it like I was instructed before it gives a warning CS8604 possible null reference argument for parameter 'message' in void
you can do ! like this typeof(CustomLavaLogic).AssemblyQualifiedName!
it tells compiler to stop worrying about it
(because you know it wont be null)
My favorite is when I "know" it won't be null and then I get an NRE 
skill issue 
Real
you can ignore the warnings, since they don't stop you from compiling.
Is there like a content-patcher condition that knows if the spouse is doing their patio thing that day? I have an animation for the patio but it shouldn't play every day.
i thought they can only be on patio and play patio anim together
can they be on patio without playing their patio animation
well they have their NPC animation, but my patio TMX file has its own map animation
specifically you can see my post in making-mods-art. They are BBQ'ing but I don't want the BBQ active unless my NPC is there
i dont think there is content patcher for this
in C# you could reflect for NPC.isPlayingSpousePatioAnimation
Yeah, not seeing anything that does that for CP
This is one of those spouse schedule things that's pretty hardcoded
even if there was something for CP you would have to do on time update and that kinda succ
Nothing appears in the smapi log after I add the line
Trying to find that lol
! isRaining && ! Krobus something something
if (!Game1.isRaining && !Game1.IsWinter && Game1.shortDayNameFromDayOfSeason(Game1.dayOfMonth).Equals("Sat") && spouse == Game1.MasterPlayer && !base.Name.Equals("Krobus"))
So yeah, Saturday
You could make the grill only run on Saturday, if it's not winter, if it's not raining, and if the spouse isn't Krobus lol
Last one isn't necessary but it is funny
works for me! ty!
Make sure to also turn it off at night when they go inside
Safety!
Ok well the errors of the type being incorrect have ceased
So I guess I registered the type correctly and added it to data/locations correctly now
However went I try to warp to the custom map with my map logic I get [game] Error running debug command warp CapeKeyMaze 14 24'. ArgumentNullException: Value cannot be null. (Parameter key') At system.Collections.Generic.Dictionary2.TryInsert(TKey, key Tvalue value...`
did you update the contructors as mentioned
They told me to zip up the solution folder hold on
Hoping I can get this working today.. is this what they meant?
If I was reading correctly constructors are these {}?
why did u have references to Stardew Valley.dll 
Idk what is needed
Started working on SpaceCore docs more, I forgot how time consuming this was
so i think the issue is how you are applying class to the location
as mentioned the game has mechanism for creating a location with custom class, that bit in Data/Locations
you do not need to construct CustomLavaLogic here 
So I delete that. I added the data with content patcher in data/locations...
the other thing is that you should not need to include ref to the game dll, or spacecore dll
this should be enough
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<EnableHarmony>true</EnableHarmony>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="4.1.1" />
</ItemGroup>
</Project>
for spacecore, you aren't doing anything that needed reference of dll, can use api directly
like this basically
ISpaceCoreApi? spacecoreApi = Helper.ModRegistry.GetApi<ISpaceCoreApi>("spacechase0.SpaceCore");
spacecoreApi!.RegisterSerializerType(typeof(YourCustomClass));
you need need a copy of ISpaceCoreApi.cs in your proj with RegisterSerializerType
if the mod's already having a hard dependency on SpaceCore a DLL reference is fine, and more convenient
should follow the example blueberry gave here
but selph what about best practices- bonked
i dont think they r in need of hard dep on spacecore though, only need RegisterSerializerType
i think needing spacecore for your mod to function counts as a hard dependency
hard dep is wrong word, in need of access to internals rather than what api provides
(that said i also think that just using the api is probably easier if setting up a hard dll dependency can cause too much confusion for someone who isnt sure how to use it)
Does anyone know of a tutorial for adding in spouse rooms/ patios please?
I'm getting a content patcher error can't apply data patch failed converting Boolean value to the expected type error converting value to False to type StardewValley.GameData.Locations.LocationData'. Path''..
Map loads now though but crashes yippee
The main issue with this is versioning. If you use the API, it's guaranteed to work as long as the API itself hasn't changed. Reference the DLL directly, and some/many users of your mod may find it broken even if you, personally, have everything working fine because they happen to have an older or newer version of the dependency loaded.
unless spacecore breaks in the update too :) and then none of my mods load
In this case it is a bit of a gray area where they're referencing the DLL only to get the API function instead of including a cs file, which I think is probably fine
Pretty sure spacecore will never break
hm
(aside from that one time right)
(that time was last night)
Oh yeah I should fix that for you since I'm off work now
Hmm my VS is building fine. Wonder why it isn't picking up the changes...
The latest beta build seems to have broken a few mods lol
you are build to beta right
To be fair, SpaceCore hasn't broken even once since the last time an update for it was posted here.
Since you're here Pathos: Do you hate me? Is that why you broke SpaceCore? /s
(It was -2+1 lines of code to fix)
Still surprised it was the quest changes that broke virtual currency code in 1.6.9 and not the currency display thing
Am I stupid? I just freshly decompiled and am staring at what I think is the constructor in question
do the signatures match up
(The Func<ISalable, Farmer, int, bool> onPurchase argument was replaced by OnPurchaseDelegate onPurchase; there's a rewriter for it in the next SMAPI update.)
Pathos taketh away but pathos also giveth? 
I'm bad with terms, what do you mean?
signature meaning both method name and the parameters required
It has all the required parameters, doesn't even seem like it was using the onPurchase thing
Optional ones are baked in when compiled
(That's why errors often go away just by recompiling the mod, since the compiled IL is stricter than the original C#.)
I did try that, no dice there unfortunately, that's what fixed it the last time it broke in 1.6.9 lol
Oh wait, it might be fine with just rebuilding
Using other peoples projects is always a fun time because I never know what weird set up someone has decided to use
AT is one of those that doesn't build to the Mods folder
hey everyone! im trying to make a retexture for the big chest with AT and i cant get it to show up in game:
{
"ItemName": "Big Chest",
"Type": "Craftable",
"Keywords": ["Mimon", "Star"],
"TextureWidth": 16,
"TextureHeight": 32,
"ManualVariations": [
{
"Id": 0,
"Name": "Star Chest"
}
]
}
am i doing aything wrong here?
Yeah, turns out it was just a me problem
this looks fine to me. Is your content pack loaded in the logs?
yes! i've gotten everything to load but the big chest
i dont have the recipe though just spawning them to test on a random world, could that be a problem?
shouldn't be
no other errors in logs?
maybe try "ItemId" : "BigChest" instead of item name
or "ItemId": "(BC)BigChest" in case it expects the qualifier
You are testing on a wooden big chest right? Asking just in case lol
@rancid temple @velvet narwhal Came up with this but it doesn't seem to be working, thoughts? { "LogName": "Animate Russell spouse patio", "Action": "EditData", "Target": "Data/Characters", "Fields": { "Russell": { "SpousePatio": { "MapAsset": "sdvwarhead.LawAndOrderSV_OutsideArea", "MapSourceRect": { "X": 4, "Y": 0, "Width": 4, "Height": 4 } } } }, "When": { "LocationName": "Farm", "DayOfWeek": "Saturday", "Season": "Spring, Summer, Fall", "Weather": "Sun, Wind" }, "Update": "OnLocationChange" }
did you load sdvwarhead.LawAndOrderSV_OutsideArea
yes
it loads the spouse patio, it just doesn't change to the different SourceRect on Saturday
Wait even giving a delegate a name is an abi break?
Wow
Just fyi that probably doesn't work at all
The game manually copies the spouse patio in
Nothing tells kt to copy again when things change
i'm trying to figure out what it's set to, you could have the spouse patio be an "off" grill
You would have to patch farm map yourself
and then have your spouse animation frames be the grilling thing?
it will get very screwy with different farms though no?
Can spouse animations be more than 32px wide for CP?
(The main breaking change is the new ItemStockInformation stock argument it receives.)
For sure, it's not a good solution lol
would setting size on a conditional be detrimental? 
ah cjb cheats broke
Yeah, big sad
i think i have to change this
socialQuest.checkIfComplete(npc);
to this
socialQuest.OnNpcSocialized(npc);
Had to use debug commands
theres some big quest overhaul
i don't know, i'm on work now haha. thanks for updating though 🥳
you might be able to get away with some fiddly business of "Size": { "X": 16, "Y": 32 }, in the data/characters, i don't know how that affects the sprite index though
oh one of extra machine config's patches exploded too 
every time tho
sdv beta update
breaks dependency used in every single one of my mods 
(i suppose i should probably download the beta again to check my mods...)
your mods are probably broken ☀️
the footgun is probably broken
Just don't take dependencies
id be surprised if the harmony stuff was broken tbh
Do everything yourself
i need serialisers like i need doughnuts
Quad probe simd accelerated dictionary time
Wouldn't spouse animations be 16 wide? They're just frames on the spouse tilesheet aren't they?
i'll probably explode if i don't load more doughnuts (into me)
this version of spacecore worked for me on 1.6.9 build 24268
Dang I've been cruisin fine so far
it looks like one of ur cooking patches
world safe again from snail sashimi all is well
i have no idea cause i'm running off of spacecore information, i haven't tried to do fiddly size changes in cp alone
CraftingPage_clickCraftingRecipe_Transpiler in EMC
brb removing that transpiler and adding a hard dependency on Better Crafting
Which is also still broken in 1.6.9 lmao

Khloe hasn't had time to fix it lol

the world desperately needs more transpilers on ClickCraftingRecipe 
I tried to pull the project but apparently her project set up is way too next level for me because I couldn't even get it to open properly
i do rather wish it could be broken up into a few smaller methods to simplify crafting behaviours for mods, but the code goes as pathos wills it
yeah i'm not pulling any repo with more than one mod lol
bonus points if they have shared libraries
i'm definitely not gonna transition into the monorepo, i'd like people to tell me i'm stupid without hassle
I broke up my mods into separate repos because of how much I hate having to pull down mega repos from others lmao
Are you on Linux perchance
Nope, Winders
oh its just got a few not in the repo projects
Like it opens but every reference to the StardewModdingAPI is busted and I have no clue what to do to fix that
Gamepath probs
Also try pulling mine:P
Oh right, it kept trying to use my C:/ drive as the game folder
Is it pre-ModBuildConfig?
And was upset that the game dll wasn't there
weh
ah explains it. When I built on Linux it just puts the files in a folder named C:/ lol
I'm not sure, it's been a few weeks so I'd have to pull it again to refresh but I think the NuGet manager said it had it
Feel free to steal the work I did here: https://github.com/KhloeLeclair/StardewMods/pull/34/files
(On Common.projitems)
actually @ivory plume hi what're your opinions on separating CraftingPage.ClickCraftingRecipe into a few smaller methods, split at key points in crafting, and passing (currently) locals as params, to allow mod authors to more likely be able to use simple prefix/postfix methods rather than transpilers, which are getting dangerously popular on this method in particular
right now it really is the GetFish of crafting
Oh, this is probably why none of my changes were working, didn't look at this at all
(thereby guaranteeing that every existing transpiler breaks)
well i'm at least two of those transpilers so i have a stake in this lol
Hey, don't dis getFish, having that all in one place sure made my life a lot easier.
getfish doesn't deserve my respect. admiration yes, but not respect


