#making-mods-general
1 messages · Page 217 of 1
do you have a log or
I don't know if I can get a log. its a multiplayer error and as the host I'm not having the issues but the other people are bad with computers
I'm also wondering exactly what the command killnpc does. because I believe I need to run it for a different issue but I would like to know exactly what it does before commiting to it
my other theory was have a tilesheet cache and just hotswap the map references prior to adding to the target map
but all the mutation hell might cause other problems
honestly, that class is just weird. It actually stores no state of its own
it's just a mapping of <string key> -> <managled string key to look things up in tilesheet.Properties>
the copy is pretty slow because that class is weird, and doing a direct copy of tilesheet.Properties instead would avoid (unnecessarily) populating that mapping
It deletes the NPC or NPCs from the game. They refresh the next time you sleep. If you do the one that deletes them all it also permanently deletes your pets.
Looking for feedback!
does it reset things like freindship and cutscenes?
No.
But like I said pets don't respawn so they are gone forever.
Ok, I just need it for 1 npc. I have no idea why or how but there are 11 copies of them
that looks much better! I have no further criticism to give
ty for your help!
@ivory plume Pathos, what is this line of code for? https://github.com/Pathoschild/SMAPI/blob/f8280292d8f5b4fd45d529217484f10efed93be7/src/SMAPI/Framework/Content/AssetDataForMap.cs#L93
in particular, why copy the TileIndexProperties but not the tilesheet.Properties
so
this.Reflection.GetField<PropertyCollection>(targetSheet, "m_propertyCollection").GetValue().CopyFrom(sourceSheet.Properties);
```?
Then you will ge fine. The duplicate issue seems to happen every so often in multiplayer for me. That command is my friend.
PropertyCollection.CopyFrom is just a foreach iterator with new PropertyValue(item.Value)
_newdaytask failed on the other hand, what kind of effects could it have.
and do they include disconnecting all players every new day? because I'm trying to narrow down why players get disconncted everytime the day ends
yes. and it might break saving too
errors are bad lol
Weird part is I've checked every mod that does pop an error and they're common mods that nobody else is reporting errors for. so I can only assume some niche combination is causing it. Guess ill see if anything changes on removing them
break saving?
yes. It may stop the game from saving properly as well
tbh I'm more annoyed than most when mods pop errors, lol
oh I can answer that question
the vanilla method its based on does it
GameLocation.ApplyMapOverride has the TileIndexProperty iteration copy
and this specific hasn't been changed since CP's original version of it from May 2019 https://github.com/Pathoschild/StardewMods/commit/045fd365ae41edbb7f285ef2550f4fdc80fb3315
which in 2020 became a Pathos mods common file, and like a month or two later moved into SMAPI.
brb.
I'm going to go knit on a sock away from this
and enjoy my pink name
and my "weak glutes"
Added a few touches to make it a bit better, looking for feedback if you got any
yeah... I spent hours checking each mod I put together for this multiplayer session, that they were updated, had no reported issues, and appeared on the mod tracker too just to not have issues ruining it. but stuff always goes wrong.
Just answering your question bruh. Split squats become quad-dominant when the glutes aren't doing enough work.
(Yup. Which can be caused by a multitude of issues. In my case, stance too short)
I have got something I can't figure out, I am editing the map to add a warp (the map with the warp im adding doesnt have anything on it), its getting added but the warp isnt working and there arnt any errors.
wait a minute
yeah still not working
I can warp to the location so it does exist
does DataLayers show the warp?
Is that a SMAPI command?
pathos mod
I dont have that mod, let me get it
but patch export on the map, cant remember if magic args are needed to do maps correctly
and check if the warp map property is what you expect
my guess is that you replaced the back tiles
I have triple checked it
What layer do I need it on?
Have you set the PatchMode to Overlay?
Yes
How are you adding thr warp
Map properties are not copied over automatically
Tile properties are
I am putting the warp in a map then using map edit to put that map into the desert
Are you doing so using the map property Warp?
Basically you seem to have invisible back layers there. If you are only adding warps and changing none of the map, might be better if you patch the map property rather than patching in a custom map.
Yes
Alright, ty!
map properties aren't read from FromFile
Then like Atra said, your map property isn't getting transferred. Use CP to just patch Desert with AddWarps
Hmm, it doesn't look like there's any way I can check if a player has ever been married without having to specify who they might have been married to. Sad.
ty!
i forgot to change the location from the documentation example and just ended up in the middle of town-
Okay! I got it to work!
You could make a GSQ for that if you want
married should be an auto generated active dialogue event
you would need spacecore to check it though
or set a flag yourself when it happens
I would have to learn how to make GSQs first. Let me go look at BETAS code to see what I can understand. I also don't actually have a usecase for this check, I just wanted to add it on to something that I was testing for someone else (different i18n line depending on spouse gender).
I do not know what an active dialogue event is. Is that like a CT?
thats another name for CT yeah
they are the same thing
theyre just called active dialogue events in the games code so i call them that by default
Understandable
Hm so if I set a flag upon marriage I could use that to check for marriage and then combine it with "HasValue:{{spouse}}": "false" to check that the marriage isn't current?
That could definitely work
I don't have any idea if TwigOfWisdom actually cares about divorce but this is fun to think about.
there is also divorced_once and divorced_twice
there is no equivalent generic for roommates
I see SpaceCore has a PLAYER_SEEN_CONVERSATION_TOPIC GSQ. Is that what you were referring to needing SpaceCore for?
If I want to set a map property for a custom map I am loading into the maps folder would I put the map properties patch in load or the editdata?
correct, there is no vanilla way to check past CTs without that GSQ (and without that mail flag workaround)
wait
If you're making the map you're loading, just put it in the map in Tiled. No need to do an EditMap to add it.
Oh but of course with the mail flag workaround I'd just set the flag while the CT is active anyway so I could use the vanilla one. And I have to set a flag either way because I need to check it in my Dynamic Token definition.
correct. however its not ex post facto
if a user installs your thing mid-game and they were already priorly marriaged you wont get the CT flag set
how much this matters is up to you
Good point. If TwigOfWisdom decides they do want to account for divorce I will warn them about that and they can use the SpaceCore check too.
I cannot currently foresee any use for this myself.
Dolphin has just pointed out I could use PLAYER_NPC_RELATIONSHIP Any Any Divorced
Which I did not think of because I missed the bit where <npc> could be Any
Ok. I need to know what file has the shiny/glowy image of the wizard as he's teleporting away... Does anyone have a bead on that?
Spacecore has that
Spacecore documentation can be really fun sometimes
"Custom tool class will work in the vanilla Data/Tools asset, if they are added to the SpaceCore serializer API." I registered you... why can I not find my serialized classss. I know its probably more than that but tell meee
this will however return true for ex roommates
Really? Curious. (This was to Button)
understandable
cursors methinks?
there is internally not much different between roommate and spouse
yeah roommates is kind of the hacky duct tape workaround applied on top
It goes in the spacecore-serialize.json
a bunch of hardcoded krobus hacks on top of it as well, but I think 1.6 got most of them and generalized them backdown
krobus forever hardcoded to not enjoy the patio 
This is for a home, should it be bigger, more rubble on the edges? Looking for feedback
if it's cursed, it's in cursors, checks out
This is a #making-mods-art question ^_^
Oh that's probably going to be very helpful.
this isn't even necessarily true for specific event sprites!
there's a handful of places
in this case it was cursors though
@velvet narwhal @calm nebula Thanks guys! I actually checked there first but somehow I missed it. It's suuuuch a huge friggin image... I guess I can't be too mad at myself
cursed enough? springobjects in maps 
Hey @calm nebula is it intentional that the keybind for fast forward in your Event Tester mod toggles fast forward even on the character creation screen? Every time I make a character with a k in their name I start the game in speedy mode lol
...not really, no, lol
And every single time I think "wow, the +5 speed buff from CJB is so fast! Huh, why is my time going so quickly? Ohhhhhhh"
In the meantime I will change the hotkey so I stop tripping myself up with it lol
(how certain are you that the character creation uses a normal and expected text box)
i could see the character creation menu being one of those "made very early in dev and doesnt follow many standards set later" things
I could check by setting the hotkey back and trying to find an ingame text box if that helped
try this?
I literally just went "if a textbox has focus, do nothing"
lol
private void OnButtonPressed(object? sender, ButtonPressedEventArgs e)
{
if (Game1.keyboardDispatcher.Subscriber is null && Config.FastForwardKeybind.JustPressed())
{
this.ToggleFastForward();
}
}
lesson learned. SMAPI does not suppress keypressed events when you're in a text box.
Thank you so much for the bug report!
how else are you supposed to hide ways to log keys in ur mod if they suppressed it
using the I18n NuGet package for translations because I plan to localize my mod, but whenever I try and translate it into French it turns back to the default one. my code looks fine to me
to make a very long story short
the game's language isn't set until very late (it's after GameLaunched, significantly)
use the Func<string> variant of those functions
that lets GMCM call those later
you're also using the old GMCM API, use the new one
(which uses Func<string> and not string for that reason)
yeah I see the warning in console, just gotta figure out how to migrate lol
thanks for the help though!
will try
How can I make the map look brighter? It seems really dark
this isnt designing stuff so it isnt #making-mods-art
i dont think
Those are really unusual colours for the desert. Are you using a recolour mod?
No
The basic desert tilesheet
I set it to outside in the map properties
Because this is what it looks like in tiled
Wait.
...
I set the map properties to "Outside" insteaof "Outdoors"
Okay I got it to work, I'm pretty sure SpaceCore is bugged though with how it handles the ClassName in Data/Tools
For future reference, it compares the inputted class name with the AssemblyQualifiedName of the serialized class, which feels very wrong.
SDV uses assembly qualified name elsewhere too
It works, just doesn't seem right that all the default inputs are "Axe" or whatever the class name is, and then there is
"NatureInTheValley.NatInValeyNet, NatureInTheValley, Version=1.0.3.0, Culture=neutral, PublicKeyToken=null" instead of comparing the Type's direct name, or the serialized name that spacecore uses elsewhere.
can you redirect me to the new API? I'm having a hard time finding it. thanks in advance!
I might be silly if it's pretty easy to find
wait never mind
I am quite silly
it's working! thanks so much!
How would i use the space core animation feature on a crop growing tile sheet?
I suspect you’d have to target every grow stage separately
I like how its still named after me despite the fact I dont think any original line of codes left
its plausible deniability for atra
the vanilla code flow delibrately does
Type type = typeof(Tool).Assembly.GetType("StardewValley.Tools." + toolData.ClassName);
``` to avoid people referencing other things.
Spacecore postfixes it to replace error tools with tools instantiated by doing the explicitly assembly qualified lookups
<https://github.com/spacechase0/StardewValleyMods/blob/352c529d0c8a60a20850b252beb361dca2af346c/SpaceCore/Patches/ToolDataDefinitionPatcher.cs#L26>
in any case, while it's a little trouble to get the ass. qualified name, i'd much prefer that to throwing in a FryingPan and hoping for the best
and Even just Type.GetType() is may as well not work for stuff outside your assembly without doing assembly qualified names
Out of sheer policy I never reference types without it being assembly qualified
Fair enough! It sounds like there is good reason behind it, and realistically after I realized what it wanted there wasn't any difficulty to change it as such 
Its cool learning the insides of it
the contents of what Type.GetType() will accept is a rabbit hole.
, is used in multiple contexts, both separating generic args (when in <>) along with the scope/assembly info.
but a generic argument can (and should) also be assembly specified, so it uses square brackets [] to do brackets to give context as to what the , means.
https://github.com/Pathoschild/SMAPI/blob/develop/src/SMAPI/Framework/ModLoading/Framework/RewriteHelper.cs#L114-L122
okay, quick sanity check, if i wanted to add items to a shop when a specific mod is installed, would this be the correct method?:
"When": {
"HasMod": "Morghoula.AlchemistryCP"
},
"Id": "{{ModId}}_Shop-AL1",
"ItemId": "(O)Morghoula.AlchemistryCP_BirdSkull"
},```
right, what am i bungling here
the When condition goes on the Patch itself, not inside the shop data
When is on the same layer of JSON as Action and Target and Entries etc
it cannot go anywhere else
okay, so--hang on then, would i have to add a second edit data targeting the same shop then?
just making sure
yes
alternatively you can put the HasMod token inside the shop item Condition token
yep, When isn't a property of any entry in any json file, it's specifically for Changes objects
field* not token
you can do that? i was looking for a hasmod gsq
"Condition": "{{HasMod |contains=Morghula.AlchemistryCP}}" should work
oh of course you can, you can Condition: true, so why not
bc that will resolve to just true
for the last hour i've been trying to make this animation with spacecore but it's not working 😭 i've never done this before sooo https://smapi.io/json/none/ea16fa19140945e68defef3133cbc323 at the bottom is where i attempted to add an animation 💀
(there also is no HasMod GSQ though BETAS adds one for "why not" reasons)
so this would work:
"Id": {{ModId}}_Shop-AL1",
"ItemId": "(O)Morghoula.AlchemistryCP_BirdSkull",
"Condition": "{{HasMod|contains=Morghoula.AlchemistryCP}}"
}```
correct?
looks good!
should do
i'll test tomorrow, just checking so i can go to bed without wringing it over in my head for hours lmao
i will sleep now 😔
(i've never used spacecore animations so i have no clue)
I don't even need to animate it (it would just make it feel extra special to me❤)
so i will prob just leave the animation out until i can figure out how it works
Use Expanded Storage. There's a reason there's a mod specifically for creating custom storage types.
Without that you need to write a bunch of C# code of your own to patch how a Chest behaves, and that is a lot of work when Expanded Storage already exists and works.
I haven't looked into spacecore animation but someone walked Anaira through it quite recently so if you search back through this channel you might find a sort of step by step in there that might help you figure it out?
Oh! How should i search for it in here?
Looks like it was Dolphin Is Not A Fish and I think this is the start of it: #making-mods-general message
Thank you so much!!
I think that's relevant to all modders really 
Can't guarantee it will be what you need but it's all I've got right now especially since I'm heading to the pharmacy lol
\ s/skill/time
-# stupid formatting because Discord uses s/e/d/ syntax to edit messages...
Hii Khloe !
yeah
What fortuitious timing 😭
I learned recently that shipping bin screen is c#, is there a way to target that with Theme Manager?
"i have such a cool project idea!"
9000 assets to draw
if ur gonna draw that many assets you might as well make your own game and its 10 expansions.

Probably. Do you know which class we're talking about?
pretty sure that one's StardewValley.Menus.ShippingMenu
unless you mean the actual drop-in box ingame rather than the day summary screen
Nope ! It was Roku who looked into it :(
Thank u blueberry 
I mean the background yes
Okay, just that one. I wasn't sure if there was something else I was missing or not
Hm speaking of assets, what would count as 1 asset? Does the size of it matter so long as it's all part of the same thing? Like one very large tree
I wanted to replace the mountains and sky with van gogh's starry night you see
I feel like any one item is an asset
One tree, one plant, one building, one tile texture
I think replacing the Mountain would cause some NPC errors, also people would be very upset at no mining. /j
I thought so too haha, i feel like i keep making more object sprites
Object sprites are so fun, i get it
Ah. So, technically you could replace... some stuff with Theme Manager. But it would not work well for that.
And you'd need to write a custom patch file for it
Ahh :(
Ill have to put the idea in the backburner for now
Thank you for taking a look Khloe 
16x16 objects are so much more fun than actually working on the cp part of my mod .. but the more objects i make the more lines i have to write....
You just have to add the cp line as soon as ur done with the sprite so you dont forgetti
Woah ur so smart
[Theme Manager] Detected Supported Values:
- TextureFields:
- StardewValley.Game1:mouseCursors (Offsets: 7, 49, 84, 133, 179, 233, 270, 339, 384, 412, 452, 504, 583, 626, 669, 712, 755, 907, 956, 1028, 1096, 1375)
- StardewValley.Game1:fadeToBlackRect (Offsets: 819)
- StardewValley.Game1:staminaRect (Offsets: 1452)```
Like, to replace the mountains you'd need:
1. An image with the same size as Cursors
2. To target mouseCursors at *specific offsets*
And there are a lot of offsets. It's... doable, but prone to breaking if the method changes at all and messy.
Oooh
Ill try this out when I can !
i'm fairly sure the offsets there are simply the mountains, the moon, the moon's stupid face, and several sky gradients
there's also some special behaviour for clouds while raining iirc
and whatever easter eggs are flying by at the time
I should mention, the offsets listed by Theme Manager here are specifically IL instruction offsets.
Not anything to do with where in the texture something is. :>
ah i see, didn't think they looked like any familiar x/y offsets hahah
It's fun, lol
i've stared at those sky gradients a whole lot
Would you mind showing how your target asset look like and how your source asset look like?
In non-ShippingMenu-is-crazy news, my GameMenu replacement is going well so far.
I wonder if the thing im planning would work well at all with the patch
i wouldnt know how to begin arranging the layers i need for the thing @_@
Oh! I saw the game menu a while back, its looking sleek!
The idea is it's looking exactly the same as vanilla, lol
MY attention is bouncing around like a ping pong ball in a tornado, and its not conductive for making progress on anything
hopefully it's looking completely identical hahah
Question: I'm trying to use patch export to doublecheck that my ToArea values are coordinates are correct on temporary_sprites_1, but it doesn't appear to be exporting with my changes? Even though I know the changes are happening, because the desert trader sprite has patched itself in correctly.
Is there something I'm doing wrong there?
It's just patch export LooseSprites/temporary_sprites_1 correct?
SMAPI will tell you in the console if there's any issues exporting, have the ingame conditions changed since your patch was applied?
nope.
and there's nothing in the log about the patch not applying, and as I stated, I can visually see the patch in game
patch export on Cursors worked as intended, but temporary_sprites_1 is not
im gonna do it, im gonna finally play the game
(for all of however long it takes me to test things ..)
Sigh
they made a game based on this?
ew you... PLAY THE GAME?!
(im about to play the game too)
yeah and i heard theres a super hot carpenter in it!
How bad is it that im dreaming of mod making
THATS IT IM DOING IT
that fucking glittering bolder removal bundle is so annoying because all it does it unlock panning
so im replacing it and adding a whole new area
you may wana take a break from mod making then
it happens
Sometimes the best things come from dreams
Where are the bundle reward strings stored?
Like the text that says "Reward: Bus service repaired"
Why replacing and not add?
Adding a whole bundle is out of my expertise, just replacing a bundle that doesnt particularly do much is much more in my field
its an event, and a couple flags and some strings
OH
SORRY
I mean add more consequence for repairing it
I NEED TO REMEMBER NOT TO PING YOU
Well panning isnt particularly... fun... or anything... nor useful...
I mean, you could tie something else to that unlock in addition?
Strings\UI -- you can search this with any text editor using ctrl+shift+F in your unpacked content directory, such as in sublime text
I think you're missing what I am saying, I am replacing the boulder removal with something else more useful.
ty!
Yeah, I was saying that you didn't necessarily need to remove the panning bit, but just add something else to the reward
Well I only have so much space to put the rewards text
Following up on lumina's question, is all.
HOW DO ANY OF YOU FIND ANYTHING IN THIS?!
Try a proper code editor, like notepad++, vscode, visual studio
I need some help understanding how to edit the construction costs for buildings, I'm updating my mod from before 1.6 and now the old way doesn't work...
and I tried copying out of the blueprints.json file and editing the string from there but that doesn't seem to work either. it still keeps the vanilla construction values for the fish pond
blueprints doesn't exist anymore afaik
buildings should be in Data/Buildings.json
you'll need to targetfield into the fish pond
!unpack if you haven't
https://stardewvalleywiki.com/Modding:Buildings
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!
maybe the second but without the buildmaterial in the targetfield?
i mean, you can have the reward text being whatever and still keep the panning as an additional, non mentioned reward, sort of a bonus package
- file extensions aren't used in targets, so use
"Target": "Data/Buildings" - BuildCost is a seperate field & doesn't contain BuildMaterials, so remove
"BuildCost"from TargetField - remove
"BuildMaterials"from "TargetField" too, I think
to clarify, my question comes from two elements :
- just adding/changing text is easier than removing
- people may be confused at stuff being removed
If you're fine with both then go for it
I'll try and see if this works
stuff has changed a lot since I last modded stardew lol
targetfield is a bit complicated, but it basically zooms in on a specific field, and then your "entries" happen within that
as compared to just replacing the entire building entry, or top-level fields
it worked 👍 thanks
I'm sure people will be happy that it's finally updated lol, only been like 2 years XD
What's the proper way to have a custom sound effect looping during an event cutscene? I don't see any event command to stop a sound effect the same way that music has a play and a stop command, am I supposed to add them to the game as a music track instead? 
Heya! Do you have some time to check how Machine Furniture interacts with FF? I took a look at MF's code but I don't fully understand what your patches are doing, so I feel like I'm not qualified to figure it out. My biggest concern would be what is MF's reaction when Furniture.heldObject is a Chest, does it still work?
If you have some time to check that out, there's a preview build of FF's new version in here https://discord.com/channels/137344473976799233/1340345659642875915
Hello!
I know I’m probably the third person this week saying this, but—I’m new to modding and have some questions.
I’m working on a mod that adds a new NPC. So far, I’ve completed the pixel art (portraits, sprite sheets, rooms, etc.), and now I’m starting on the dialogue. However, I’m also very new to programming, which makes this part a bit challenging.
Here are my questions:
1- I’ve read through some of the wiki, but I’m still confused about what I actually need to do. For a mod that adds a new NPC (rather than just modifying an existing one), do I need to program in C#, or can I do it entirely with Content Patcher? From what I understand, Content Patcher mostly replaces existing content rather than adding new things—but I might be wrong!
2- Am I taking on too much for a first mod? Should I start with something simpler, or is the hardest part actually the pixel art?
3- The programming side of things is really confusing to me. I’ve read the wiki, but it feels like I’m missing some prior knowledge—almost like it assumes I already know something about programming. Is that the case?
If anyone is willing to help a lost soul navigate the cruel world of modding, I’d be really grateful! 🙏
question: would you consider rice cakes to be food_cake
there has to be some logic in here somewhere behind Stuffing as food_sauce
bruschetta is food_pasta...
- yes content patcher can do it.
it is a way to interact with anything exposed in the asset pipeline which everything an npc cares about is in. - its not the easiest content mod to start with because npcs do a lot of things, but you do you
- no C# is needed for npcs (see answer for 1)
-
You can do an NPC entirely in CP! No C# needed whatsoever.
-
It is a lot for a first mod, definitely. There are no parts of an NPC that are really any more difficult in terms of using CP than other types of mods but there are bits that are fiddly and can be hard to do until you know the tricks (things like schedules are fragile and you need gift tastes for some dialogue to work properly etc) - if you plan to stick around to ask for help in here as you go, you'll get advice for how to get past those tricky bits though. It can be worth doing just a portrait replacer for an existing NPC or something first so you have something small and concrete to help you learn how CP works.
-
Prior programming experience definitely helps in understanding the concepts involved in modding (like knowing how important it is to stick with the syntax and pay attention to commas etc) but it's in no way necessary.
Thanks for the help!
!NPC If you're not already familiar with Tia's NPC tutorial, I definitely recommend following that and possibly looking at the Edelweiss template too. But yeah try a small CP mod first so you can get a grasp of how CP itself works.
Make heavy use of the modding tutorial and the CP docs as well as the official wiki! https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md
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.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
I jumped into NPC making very early into my mod exploration journey (I made part of a map mod first) and have learned a lot while working on her to the point where I regularly help people in here with theirs. Even though I've not even finished mine yet xD
i've got a question here, what's the easiest way that i can add my custom item into the game? i plan to add my own custom totem into the game rn.
got lost

using CP for the item, spacecore for the totem part
Content Patcher for the item itself, Spacecore for the warping
Too slow, Lumi beat me
!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.
Make sure you look at the Content Patcher docs on the CP github (linked on the page for the wiki tutorial for CP) as well as the official wiki as they're very helpful.
sure thing, thx for an advice 
So, as far as I know it's not really possible atm but having fallen in love with 8Aw8A's Nature in the Valley, which let's you resize sprites within it's code...
Is it possible to resize custom farm animals in the same way? I'd love to be able to recycle the smaller Pokemon's sprites into farm animals without having to actually remake them smaller! (I'm using Livestock Bazaar for adding in my Poke-animals! Which, as far as I know, doesn't have any configs for size!)
if not possible, then more art it is--I pray rescaling keeps them semi-accurate as a base 
I think farm animal size is editable just by adjusting the SpriteWidth and SpriteHeight fields BUT they run into problems with not being able to enter or exit farm buildings if they're made bigger than vanilla. IIRC cryomancer ran into that issue with his dinosaurs and had to make a bigger custom barn...
Luckily, I'm looking to make everyone smaller
!! Thank you for telling me which fields!! ❤️
Oh okay! I misread your message xD
I already have the larger sprite drawn in 32 by 32 for NITV, so that the Pokemon could have more detail. I can redo it as 16x16 (and all my previous animals were) but I wanted to both compare natural 16x16 to a shrunk down 32x32 as well as hopefully recycle sprites between mods instead of drawing something twice purely for size.
I have a feeling they'll look better natively drawn as 16x16 but I'm hoping for a lazier route 
hallo im looking to make my own machine with some custom recipes, what should I look for to read more about 
[[Modding:Machines]]
thank u atra !
Hm im not sure i understand what you want here
Do you desire 32x32 sprites but on a 1 tile sized farm animal? I.e. chicken
Yes!
Normally if the animal is bigger then they just need to have bigger door (lives in barn or custom building)
I desire smaller! Like in Nature in the Valley--I can make 32x32 sprites, but then decide their scale is much smaller
For visual only you need to do spacecore hd textures or scale up 2
The game generally don't give you knobs like this 
!! Spacecore!! That's it!! I see in NITV's requirements 
This is completely different feature than what nitv is using spacecore for
It's also going to be massive pain because you need to target farm animal walk cycles 16 times
Scale up 2 should he easier on that end iirc
(spacecore has a lot of features you will have to go look at it's docs for everything)
Psst Pau did you know that all the modding pages on the wiki are listed in the index ? Or almost all, anyway. A bunch of the C# modding pages and stuff aren't directly linked there. But the reference pages are!
I wonder if you can do like, catch a pokemon for your farm
(not all by a long shot afaik but a lot of useful ones!)
It could either be something like
Item shop that sells egg for nitvBug items
Or livestock bazaar to buy animal directly with nitvBug items
i must have missed it 😭
I was there earlier ujhfdauisa
but yes thank u i will make sure to triple read next time 
Lowkey hoping to ask for a way critters can be released on your farm to roam like they do in the museum area 
I'm already using Livestock Bazaar for some custom mons I have in the work--I'm caught between doing their smol sprites normally or trying to resize so that they're visually the same as the NITV versions 🥲
I'm working on making it all of them from the "Specific topics" section because it's too confusing having pages that aren't directly linked on the index. Except for the ones for the C# modding because they are all linked on the C# get started page so they have their own index.
Please, make me go buy a tiny plastic pokeball I can carry around to count my steps
Well like i said scale up 2 should work 
Sometimes I have to do a find in page search because my eyes skip over them!
It looks like the 2 kind of anim used in nitv is equivalent to "RL" and "DRUL" in trinkets
So you can used them directly for trinkets, scale is supported there too 
Wow, turns out somebody named Dem1se has written a guide to making UIs in C# on their user page on the wiki. How hidden!
I have Trinkets saved in so many places rn--I plan to jump straight in after I have NITV mons made so I can reuse the sprites there!!!
Do they explain the neighbor stuff
Is that about UIs or about trinkets, chu?
No mention of the word neighbour/neighbor so I'm not sure
Unfortunate 
It's also from 2021 so it might be very outdated but either way hopefully it will at least give me some insight into the classes and stuff, which I am currently lacking.
Cool that it's a thing at least
What are you trying to do again
If you plan to eventually use stardewui for this ui ill warn you that it's pretty different than making vanilla ui
My latest pivot was to "put a portrait on a blank menu in the hope I will learn slightly more about C# than I know now" because trying to learn StardewUI and the C# needed to learn StardewUI at the same time was too much for me xD
I have no actual mod plans for any of it, I was just trying to come up with ideas of stuff to do specifically for the learning.
Just to give me direction of some sort.
Yep fair
For vanilla to show something as menu you need to implement a subclass of IClickableMenu
Override draw so it draws ur stuff
(plus setup clickable component but that's pt2)
And then Game1.activeClickableMenu = new YourMenu()
I have been able to find very few tutorials for this sort of C# use (modding; everything I find is either "print a line to the console" or "let's make an entire game!") so I grab onto anything that looks like I might even understand a bit of it.
Stardewui does the "implement subclass of IClickableMenu" for you basically
But eventually u gotta set the active menu, that part is identical
Is this the implement subclass bit? public class MyUserInterface : IClickableMenu
Yep
Thanks. I think where I struggled with StardewUI is that because it's large and capable of complex things, it spreads itself out over so many .cs files that are doing so many things and I didn't really know what any of them were.
It's very abstracted yep
I had to download 7 .cs files to get just one of the examples from the test mod working and I have no idea what most of any of those files is doing lol
Bc the idea is you write a sml file that tells stardewui how your layout should be done
And then break out the c# to give that layout behaviors
It's a common pattern for ui frameworks outside of modding too
Like html javascript
And then I started trying to go too far away from what that existing C# was doing (at least the bit that I'd managed to figure out) and so the way focus had it set up didn't work and I didn't know what to change to make it work.
The layout stuff has a lot of knobs really 
For your case with the NPC.Portrait you need to expose it from context side
Kind of like how the animal icons and anim in livestock bazaar is done
Rather than defining it in sprites
Yup I have no idea what that means lol
Focus told me to use this
Tuple.Create(npc.Portrait, Game1.getSourceRectForStandardTileSheet(npc.Portrait, 0));
And I have managed to mostly understand that, I think. But then I got lost trying to figure out how to tell the code I want the Portrait for Leah specifically.
Not sure if you've seen it already but there's a new-ish beginner's guide now
This is an introduction to programming in C# - The language Stardew Valley is written in, and in which its code mods are made.
It contains the basics of C#, and some examples specific to Stardew Valley that you can copy paste and learn from.
C# is one of the easiest programming languages to learn, and...
Game1.getCharacterFromName(qdData.Speaker)
I had not seen it, thank you!!!!
So Game1.getCharacterFromName("Leah")
A lot of the not so documented stuff is "game helpers i can use"
Just gotta marinate yourself in decompile for few months (or ask here lol)
You can stop answering at any time, chu, but uh how do I connect that Game1.getCharacterFromName("Leah") bit to that Portrait Tuple code?
So this method returns a Character which can be a NPC
You need to keep it as an instant variable for usage by the portrait property
Like var character = Game1.getCharacterFromName("Leah"); or something?
(If my introduction to programming had been C# I swear I would have never become a data analyst because I would've given up on programming forever instead. This is by far the hardest language I've ever tried to learn. Mandarin was a breeze compared to this.)
public sealed partial record AbaContextForUI {
// This is the NPC's name, right now it always returns Leah, but if you want to change portrait then you need to do [Notify] stuff
private string npcName => "Leah";
// Derive NPC from npcName
private NPC npc => Game1.getCharacterFromName(npcName);
// Derive portrait as StardewUI Sprite, use the first portrait at index 0
public Tuple<Texture2D, Rectangle> Portrait { get; } =>
Tuple.Create(npc.Portrait, Game1.getSourceRectForStandardTileSheet(npc.Portrait, 0));
}
i choose to use properties (the => stuff) because then you just need to change npcName to change the rest
but it could be that you never change this, and instead you just have many AbaContextForUIWithPortrait that have these 3 things
pen pals prob follows that i havent checked
Thank you, I appreciate your willingness to explain this all to me so much 
I am going to look at that tute that Ask Jeeves linked, look at that UI guide from Dem1se, and look at the common tasks page of the wiki and try to combine that with what you have given me to see if I can get somewhere.
But I will do so later because it is bedtime 
Just so you know, since it can be a little confusing, the => stuff is just a shorthand (AKA 'syntactic sugar') for defining a property with only a getter, like this:
public int PropertyName
{
get
{
return 123;
}
}
So this part above: private string npcName => "Leah"; is the same as this:
private string npcName
{
get
{
return "Leah";
}
}
For properties like the private NPC npc above, this is great, but for ones like the npcName, if its not calling a function internally and won't change, you can do private const string npcName = "Leah"; instead and it's then a constant that is inherently readonly.
Does anyone recognize this farm type with a waterfall and bridge left of the farmhouse? I need to recreate the image with a different size for Nexus.
There's also readonly for things that aren't compile-time constants, but you'd like to stay a constant value, such as a Color value:
public static readonly Color WildHoneyLabelColor = Color.White;
hello
i need help. i find it difficult installing smapi.. It always says malware blocked..
https://www.nexusmods.com/stardewvalley/mods/1293
It looks like this one, but it doesn't have that pile of logs.
XNB mods often break the game and are not recommended. See Modding:Using XNB mods for more info (and a list of Content Patcher alternatives), and you can reset your content files to fix problems caused by XNB mods.
For mod creators, see Modding:Editing XNB mods for help unpacking & editing them (including for use with Content Patcher).
Oh no! 
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
Thanks! The pile of logs is from the Hobbit House mod, so I recreate the rest of it.
I thought we'd turned off the Zola-ing
thank you
Have you tried this?
!macsmapi
There is currently a known issue with certain MacOS versions flagging SMAPI as malware and forcibly moving it to the trash, disallowing users from installing SMAPI.
If you are experiencing this issue, please read through the solutions in #1318323302779060324, which gives detailed instructions on how to resolve it.
If you are still experiencing issues after attempting the solution in common-bugs, please post a new thread in #1272025932932055121
Hi,
I got another error from my NPC, this time it's her non-giftability. Even though I have the gift code below, neither my users nor I can't give her a gift.
Gift code: https://smapi.io/json/content-patcher/cbda08a30ab24115bcba6dcae1693b18
Log (from me, they didn't provide any log): https://smapi.io/log/4938bfb7f4ac4e0c9b29f392281907d0
Could anyone help me find out what I did wrong this time?
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 64 C# mods and 31 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
You're not using her namespacex internal name in gift tastes
Also, I got a report about my schedule activating when I think it shouldn't activate.
Sadly no log from the user, no matter the sticky post.
The code is here: https://smapi.io/json/content-patcher/aca9d8a2f2a747108bd4fd5134396288#L83
Note that they say they don't have Ridgeside Village. Should I replace the when line with the one commented below?
I'm sorry, but I'm not 100% I know what you mean.
Should I replace "RejectItem_(O)460": "{{i18n:Dialogues.RejectItem_(O)460 |DT_dialogues={{DT_dialogues}}}}", with "StrojvedouciDenis.Eleanor_RejectItem_(O)460": "{{i18n:Dialogues.RejectItem_(O)460 |DT_dialogues={{DT_dialogues}}}}",, or do I not understand?
Oh wait, it should be "StrojvedouciDenis.Eleanor": "{{i18n:Gift.love |DT_dialogues={{DT_dialogues}}}}/-2 -80 -102 -103 595 866/{{i18n:Gift.like |DT_dialogues={{DT_dialogues}}}}/-7 -17 -18 -19 -25 -26 -27 -74 -75 -79 -81 16 18 20 22 769/{{i18n:Gift.dislike |DT_dialogues={{DT_dialogues}}}}/-4 -8 -9 -24 -28 92/{{i18n:Gift.hate |DT_dialogues={{DT_dialogues}}}}/-20 -21 -22 -23 -95 -96 -97 -98 -99 -100 -101 -999 78/{{i18n:Gift.neutral |DT_dialogues={{DT_dialogues}}}}/-14 -29 72 305 308", right?
(changed "Eleanor" to "StrojvedouciDenis.Eleanor")
OK, thanks! And I should leave the other keys (like that reject item one) as they are right now?
OK, thanks!
What about the schedules, though? If they don't have Ridgeside Village, how could the game use that schedule?
Do they have East Scarp?
I asked them that. No response for now.
And that's why I ask if I should change the code.
Because I need to apply if the user has both RSV and ES installed.
Also I feel like your HasMod is structured incorrectly to contain two arguments?
That's an OR, not an AND
That might be possible. It is the first (and only?) time I use more than one requirement from one thing.
But then, I have always had to use "HasMod |contains= ModId":true with each on a separate line to indicate an AND, yes
I thought that, this should be correct?
"HasMod |contains=Rafseazz.RSVCP, LemurKat.EastScarpe.CP": true,
That's an OR, not an AND
Comma separated is OR
So this?
"HasMod |contains=Rafseazz.RSVCP": true,
"HasMod |contains=LemurKat.EastScarpe.CP": true,
"On/off": "on",
"HasSeenEvent |contains=112": true
}
You probably also need the curly braces in the appropriate spots, but I am on mobile and can't pull that up quickly just yet
So that one above is also incorrect?
(sorry, English is not my native language, so I might not understand all things correctly)
Disregard what I said about the curly braces then 🙂
I'm just waking up, likely thinking of a different use that uses the token
the outermost curly braces are removed in When conditions
And while am I coding this, what is the difference between "HasMod |contains=Rafseazz.RSVCP": true, and "HasMod": "Rafseazz.RSVCP",?
otherwise, CP treats them like a normal token and replaces them before they actually get looked at as conditions
in a vacuum, nothing
however, two fields cannot have the same name
The contains argument is necessary so CP actually reads both
Otherwise it stops after the first HasMod
it wont stop, but will only read one at random (unable to guarantee which one)
undefined json behaviours are no fun for modding
Oh! So I guess it is barely always better to use the contains= conditions, right?
"HasMod": "Rafseazz.RSVCP",
"HasMod": "EastScarpe.CP"
this is not allowed
bc then you have two things named "HasMod"
so yes adding the |contains means that they are no longer named the same thing
and therefore you can use multiple
Yeah, if you are planning to ever check for multiple mods present in a single patch, you will need to use |contains.
I remember when I had that issue with making UWS.... contains is just better overall even with one so you get in the habit of it
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
Hello everyone! I've been a long time user of mods in SDV but recently struck with inspiration to try making a mod of my own, and I really appreciate all the resources that you all have available online and here to help get me started so thank you so much 🙏
I do have a question, as my mod is centred around creating new character events and dialogue— I do understand how the game's json files handle events and can very likely brute force my way intro translating my storyboard into the needed script, but it's also quite intimidating to work on and edit such long strings that become difficult to read or understand at a glance (especially just in a basic text editor).
Are there tools that people use to make the process more accessible (or even just easier on the eyes) for those instances where a single line can be >1000 characters in length? Or is it just a matter of being meticulous haha
you can split a string over multiple lines
it's not valid JSON but SMAPI/CP allows it
One option is to break the event script into separate lines, since the game ignores whitespace around the /. So you can do stuff like:
"{{ModId}}_SomeEvent/": "
command/
command/
etc/
...
"
Code editors and syntax highlighting won't like it though. So another option would be to use search & replace into multi-line format while you're editing the script, then search & replace back to one line when you're done.
This I didn't know, that's helpful to know and experiment with!
This is also a smart idea; break down into separate lines just while translating the script over to the file, and then collapse it when I (hope) it looks good
thank you both, wish me luck and I hope I'll be able to troubleshoot things on my own haha, but it's a lot of fun to mess around and figure things out too. I'm excited to learn and might be back wiht more questions in the future
this doesnt have log in preview but that tree is definitely this farmhouse
Thanks! Yep, I have the Content Patcher version of that mod installed permanently. (That mod is actually the reason I originally created Content Patcher.)
Technically that Alterative Textures version probably shouldn't be published on Nexus though, since I don't think the original has an open license/permissions.
content patcher origin story...
lore 
(Apparently I'd rather develop and maintain a framework for seven years and counting than install one XNB mod.)
1.2 
its like that joke about programmers spending 5 days automating a task rather than spending 5 minutes a week doing it
you might be interest in this https://marketplace.visualstudio.com/items?itemName=linkoid.stardew-syntax
it has a mode where you pop out the event script into a .sdvevent file for easier edit
@true coyote hey, I tested the files you sent and the gates work for me? unless I misunderstood what your problem was
and syntax highlighting
Ohh thank you SO much , I will definitely look into it! sounds exactly like what I need, bless
thats.. odd. Let me try. I wonder if the first sprite being one pixel off messed with it
@brittle pasture try it on a not vanilla color
all the recolors I tested work so far
hm ok
so if I place it directly on the fence instead of inbetweenpieces it works, but placing it in a space doesnt
you can tell by that that I normally place gates in blank spaces lol
yeah, custom gates only work if you put it directly on top of your fence
that's a game limitation
does the sprite for stand alone work?
cause it doesnt on mine
which is probably more of that limitation
what does standalone mean
arent gates 1 specific item
but I have a sprite for it that is this
it cant know what fence to match unless its got fence
this particular sprite may appear if u have like
[fence][gate], then break the fence
yeah, thats what I'm figuring, because its a custom fence without it being placed as part of the fence it wont show
well it looks like this, if you patched that over
oh there
yeah if I put on the gate and then remove the surrounding fence tiles
it gives me that sprite
also one more thing, your double gate sprite is a row off. single gate looks fine (as shown above)
so cute
does it stick when you save and reload game
sec
it does!
ok now to figure out which gate sprite that is cause there are two double gate sprites
ah I'm guessing
these ones
I think the other is for vertical gates
and one of my things is off too
alright fixed that one, now gates
ok vertical gates are good
wuh why
I moved a gate piece and it misaligned my fence piece
how
there is a part of me very tempted to get into stardew modding
because i have such a stupid idea for a mod
(gotta run for lunch/etc, but finally, extra shed builders)
i wanna make a mod that adds a comically ridiculous amount of very unnecessary crops, fish, gems, etc.
bus stop fences can do anything if you just talk to them
it starts out as just. redundant spring and summer crops. that just aren't needed. but it gets unhinged very quickly
!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.
i do have a few tutorials in mind i plan on following
to make my insanity a reality
please make sure they are updated tutorials
i just need to find motivation lol
oh true
i was looking at the stardew wiki
i assumed it was updated but idk
yep the Modding:Content_Patcher page is good
content patcher i will assume be my best friend, alongside a good number of extensions i got my hands on
the actual "get my crop into game" part aint that bad
you just gotta draw them sprites
true
although i do intend on going further, like modifying the bundles to accommodate for this stupidity
wtf
i just think it would be a comically grindy challenge
i don't recommend altering CC bundles, for compatibility reasons
ah, fair
you cannot install bundle mods in middle of a save
well at the very least i could always add new bundles for different areas
yea unlockable bundles for that
(cant uninstall em, either)
a shame that i couldn't make a harder cc though
what happened to my tilesheet, its not taking adjustments anymore
and by harder i mean grindier
its "not recommended" instead of "impossible"
(Challenging Community Center Bundles does add a command to make installing/uninstalling bundles safer)
true, i mean some mods do make heavy changes and are expected to stay installed the whole time
the CC bundles are created at the start of a save and permanent from then onwards. any changes made to your mod from that point on will have absolutely no effect. they are baked into the save from the very start and immutable
uninstalling, reinstalling, changing the mod, using a different CC mod, etc. nothing will change them after save creation, short of a C# mod specifically designed to regenerate them
so, immutable from CP
okay so maybe this isn't the smartest mod idea, if intentionally stupid and bad and silly
Yep, it's why save-editing has to be used to fix CC bundles for people who remove mods mid-game that used to involve custom bundles (who haven't fully completed the community center yet).
simply because of this CC bundle thing
guess it was good i brought it up here to learn of the stardew modding culture
ultimately its up to you to decide how much you care about the potential for issues
and again theres a framework that let you do non-CC bundles
so u can have bundle like gameplay still
(SMAPI has a built-in regenerate_bundles console command, you don't need to edit the save manually.)
oh nice
this is good knowledge to have going forward, I haven't had to deal with any of those issues in months, so.
well, I dont know what happened, but suddenly any changes I make to the tilesheet are not being reflected in game. I moved the vertical closed gate 1 pixel to try and align it, and it somehow messed with my tilesheet and undid the changes I made before then
like I just moved the double gate down a whole row but nada in game
@shut edge sorry to ping, but I remember you fighting with this before for your fences. Any insights?
I distinctly remember conversations about fences being cursed, LOL
Alignments are weird
@ivory plume is there a way to load a certain json if you dont have a mod, but load a different one if you do?
Hi! I actually just replied to your question on the mod page, with an example.
(I also added that trick of using Content Patcher tokens as a game state query to the wiki.)
Wait, so is there any way left to actually break a save? I thought CC bundles was the last bastion because of the writing to save.
does "it would be broken if you decided to go back to vanilla" count
@ivory plume Noice
hey?? is the author of ridgeside and sve on here??
@rare orbit probably
i wanna ask em for permission to make portraits and sprites for a mod im workin on
flashshifter (SVE) drops in from time to time, but not often. i don't think i've ever seen rafseazz (RSV)
i asked on nexus but idk if they use nexus alot
yeah you can ping Rafseazz and FlashShifter
You can also just check Mod Permissions.
you can ping anyone, but its not always recommended, welcome, or likely to get a response
if i had a mod that popular, i probably wouldn't use nexus except under duress, just due to volume
i did! it's just a bit hard to tell and i like to verify before i start
well, you are asking how to contact two mod makers with nearly 20 million downloads between them. if i was one of them i would make it purposely difficult for just anyone to contact me at any time for reasons ichor said, too, cuz you're probably not the only one who wants to get in touch. they both have pretty open perms for things like that though
SVE, Looks like you're clear as long as you credit the original author/mod, dont sell it and dont convert it to another game.
https://i.gyazo.com/cb5b20ab62f1d2734ce2377c97998227.png
since it's related to character sprites n portraits... should i ask here or in the making mod art?
cool cool!
doesnt rly matter where you ask I guess 🤔
Save loading is a lot more robust and fault-tolerant since 1.6 and 1.6.9. So far as I know, the only way left for mods to reliably break a save is through changing the save serializer (which is why SMAPI shows a warning on startup if a mod does it).
If you notice another way to do it, feel free to let me know and I can look into fixing that too.
thank you! it's not always easy to tell so i apperciate it
Ridgeside is a bit more complicated but it straight up tells you how to contact them
https://i.gyazo.com/d5b4dde8e453910b017982f130113dd1.png
imo, the way I'd prefer to be contacted by someone starts with them reading my mod page. For example, both SVE and RSV list communities that they invite you to join, and people often contact the authors from those communities.
i.e. they shouldn't have to go out of their way to be contacted by you.
Can anyone confirm if the "divorced" dialogue tag has a higher priority over other dialogue lines? I wrote some festival lines that should be loaded in when Relationship:Divorce, but I'm just getting the generic "divorced" line
Raf is somewhat busy irl but if you DM him on discord or ping him in the RSV discord he or Moe will get back to you soon 
divorced is a conversation topic, and CTs generally have priority
What are you looking to do? I'm an admin in RSV, I can relay it to him.
Hello
But does it expire?
Oh, I see Sheku beat me
Oh I'm pink, right
should do after 4 days
Hmmmm. I had it on a full week+ after. Guess I'll do some more testing to confirm
oh yeah! basically i wanna know if it's cool if i make portraits and sprites for rsv to match my sonic x stardew valley mod! basically im making the npcs in vanilla for now look like sonic characters
actually, do you mean literally just divorced or divorced_[name]
Has anyone told you lately how cool SMAPI is? Most games don't have it nearly this good 
The first
The others did expire correctly
im workin on vanilla for now but i wanna include other mods too to match
Shouldn't be an issue since he's generally okay with portrait mods but we'll ask! 
then that one is not the CT, thats my bad, and i dont know exactly where it checks for that one but it probably has higher priority than most things
Hmmmm. I might null it out then and use CTs for better control
@tribal ore You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!
!!!
@ivory plume can you give an example of 2 conditions?
that is just a guess though based on other misc things i know about dialogue priority, but not a guarantee that i am correct
btw? it's both sprites and portraits!
trying to parse the methods that control which dialogue is loaded is Pain™
i have to finish deciding what species each npc will be in vanilla first and that'll take me alot of time already
Can you provide more info on which conditions you want to check? Do you mean a Content Patcher When block or a base-game Condition string?
Alright. Based on the festivals, it certainly seemed like it was just loaded first and everything else ignored. Which is absolutely not what I want
A Condition string. Since Kel is Nonbinary has seasonal versions, can you give an example of a condition that checks if you have that mod, and if the season is summer?
Sure:
"Condition": "{{HasMod |contains=ZoeBell.KelNB}}, SEASON Summer"
Thanks!
I've got a bug report on VPP's page where an user with Lookup Anything got errors trying to Lookup a fish pond with a legendary fish in it, I looked around in VPP's code and LA's code.
My theory is that it's a bug in LA because it uses records to generate the drops list, but in two of VPP's custom fish pond drops it uses RandomItemIds instead of ItemId and of course it's null by default which made LA very upset because the record's ItemId field is not nullable. (additionally, it doesn't take the Condition field into the account), only thing I don't know is do records really get upset when their non-nullable fields are tried to be set to null?
~~I want to make %100 sure its really LA before I ping Pathos about it ~~ but uh, he's already here, oh well, Hi Pathos!

Hi! Do you have a SMAPI log with more info on the error?
Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 30 C# mods and 18 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
If you add a breakpoint (or log) in your Object constructor patch, is it receiving itemId: null?
But yeah, looks like the issue is probably that Lookup Anything isn't handling the RandomItemId field.
am I doing something wrong here? (nevermind I put it on the wrong layer 💀)
it's not appearing on the map for me
{
"Action": "EditData",
"Target": "Strings/StringsFromMaps",
"Entries": {
"Custom_Saloon_Celler_Miihau.1": "{{i18n:Poster.ftext}}",
"Custom_Saloon_Celler_Miihau.2": "{{i18n:PC.ftext}}",
"Custom_Saloon_Celler_Miihau.3": "{{i18n:Toys.ftext}}",
"Custom_Saloon_Celler_Miihau.4": "{{i18n:Sword.ftext}}",
"Custom_Saloon_Celler_Miihau.5": "{{i18n:Gear.ftext}}",
}
}
Did you name it TileData
do you mean this? (nevermind I put it on the wrong layer 💀)
I think it throws the error before my constructor patch can catch it?
Or for a simpler answer, no it doesn't
Is your patch a postfix?
Yes
You can always change the NiTV sprite size, btw! By default creature sprites are 32 by 32 but its completely up to you (Could be 16 by 16 or 64 by 32, or whatever else)
Yeah looks right, and i assume you put it on buildings
I'll add a fix to support RandomItemId in the upcoming Lookup Anything 1.49.0; let me know if it's still an issue when you get that update!
(To make sure, Condition field too?
)
nope that fixed it 💀 my bad! sound:137344473976799233:1109413675149836288
thank you <3
How do you want it to behave?
Should the condition prevent LA from showing anything at all
I'll look into condition support (probably reuse how Lookup Anything shows conditions in machine lookups), but no guarantees for 1.49.0 though.
question, should I allow building buildings inside the greenhouse or leave it as a Nah?
Context, Greenhouse is in reference to these 4 maps.
I would love to build a junimo hut inside a greenhouse, but I'm not sure that's what you mean by "buildings"
Lovely maps, btw!!!
They will all be accessible at all times, aiming to lock each one into a season, and by Buildings I mean add them as targetable by the build menu for Buildings.
I'm taking a closer look right now -- those maps are actually greenhouse interiors?
The entryway
If so... then yeah. I think they are large enough that the ability to add bulidings would be very nice
I would certainly want to be able to put a coop or something in there. But would you restrict the type of buildings?
At least junimo huts for harvesting
I would just make them targetable as a map for the build menu, whatever that allows, I wasn't planning on any restrictions.
Cool. I think these are really gorgeous 🙂 What's the mod going to be called?
Prob just "Dray's Four Seasons Greenhouse"
I don't usually install map mods, but I'm really tempted by this one. Great work
I keep forgetting i'm idly working on a recolor as i make other mods, so i keep logging in and being surprised by purple grass from my proof of concept tests.
One event left. Just one.
Granted, it's an event that I will probably have to make a couple of variations for, depending on who the farmer is married to. But just one
fences are indeed cursed
i just kind of messed with moving the gates around until it worked ok again...
feels like something in the past few versions may have very slightly altered something about fences
if it's any help, my fruit ghosts mod has my updated fences in it, feel free to reference them
Mobile versions of the refrigerator and chest. Does anyone know if there’s a way to decompile the android version to see what’s different about the inventory from mobile vs pc?
Can drag drop and place any items anywhere. I’d like to figure out if it’s possible to get the pc inventories to act the same way? Or maybe copy the character inventory to the chests/refrigerators to achieve a similar effect?
You need to change the Chest additem behavior
As well as the whole item grab menu behavior on select
Question: is there a list of dialogue keys for writing your own dialogue? Things like how to trigger facial expressions, how to move into a new textbox, etc
yes there are
I'm looking through my dialogue mods and trying to figure it out, but last time I experimented, I didn't do great...
[[Modding:Dialogue]]
Ooh thanks!
hopefully this should be enough information
I'll keep messing with it when I have time then 
best of luck
it can be infuriating
i had to reload my game most of the time too
patch reload was caching or somethin
It was going fine until I moved the closed double door for vertical tiles
Ans then it blew up
For now I've closed the game and photoshop, since ps had been running for like.. 3 days lol
i had to overlay a bunch of colors on mine just to try and figure out what was loading in hwere
Yeah I have the color guide on mine, there's a big gap in my horizontal double door and for some reason a whole line up even though they were aligned the same place as the vanilla fences :shrug:
So I've opted to widen my doors to see if it closes that gap
here's the thing mine started doing
here's what ended up being the difference between the old and new
it never did really make sense
If you do get stuck, looking at an example mod can really help. That or just posting the offending line here and we can help debug it 🙂
There are birds in my greenhouse.... do i even want to fix that? thats kind of adorable https://i.gyazo.com/2ae3d7bf02aa4cc4d560e545d6e8df83.png
How'd you manage that?
that's neat
gonna have to remove that unless i want it fluff it as mimicing outdoor weather.
Hi. Tried looking for some past messages about this but haven't found a hint of a solution yet. I modded the Farmhouse2.tmx and Farmhouse2_marriage.tmx maps to expand the top rooms northward 1 tile (and adjusted some walls). I'm seeing parts of the vanilla map poke through, however. Do I need to modify some other maps or adjust how my CP loads my custom maps, by chance?
https://ibb.co/whMb0M4K
How can I prevent a custom warp totem item from being consumed when used? (I'm using spacecore for the warping function)
spacecore has a consumed on use property if you're using spacecore to add the warp functionality
Double check your Back objects layer, if you adjusted the wall tiles but not the FloorID or WallID objects, you can get some weirdness
How about... more birds in the greenhouse? I want an aviary now xD
Like a Victorian
that would be cool, but way beyond the scope of my current abilities.
Thanks for the reponse! I have triple checked that, and everything looked to be as it should. I took a stab and deleted everything from all layers in that wall/roof green section, and here's how it shows up in-game now.
https://ibb.co/TDv6WCbd
It really seems like residual parts of the vanilla map are getting forcibly cut/drawn into places.
well, it would involve artificially creating bird animations and using them as part of the map, or fiddling with the critter code.
Could you place "bird houses" like butterfly hutches?
That's probably a separate mod xD
yea, also no idea. I mostly just make farm maps. 
If I ever get into doing non-CP mods, at least I have an idea now
And you're testing on a minimal mod setup, right? Nothing else that could be impacting the farmhouse map patch?
What does your map look like in Tiled?
(that dino wallpaper looks like the crib spot, which may be hardcoded)
the crib is indeed hardcoded
Ah, well I haven't technically tested in isolation. I don't think I have any other mods that should be affecting it, but it was still foolish not to explicitly isolate them as part of my troubleshooting process. The dino spot was definitely where the crib spawned. I removed it from both the Farmhouse2 map as well as paying Robin to remove it in-game, but that wallpaper section still remains. Do I need to edit FarmHouse_Crib_0.tmx to overlay seamlessly on my edited Farmhouse2?
I wonder if instead of raising the top wall by 1, I should lower everything else by 1...
Did you change the renovations
Also please love of God don't extend upwards unless you have to
Extend lower
(i learned this the hard way)
I did edit the corner room to match the rest of my edits. I assumed extending upwards would be less invasive (fewer tiles to modify, including the warps into/out of the Famhouse.
for those who don’t know, the reason not to extend upwards is that a lot of farmhouse things are hardcoded to tile coordinates. With (0,0) being at the top left, extending upwards breaks pretty much all of them by changing the coordinates of everything.
(the same goes for extending leftwards too)
There are a million renovations
Also the "unrenovated" map
Well, I definitely haven't updated a million maps, just 18 maps for the farmhouse interior. I assumed expanding up would be fine seeing as there were plenty of unused tiles around the vanilla Farmhouse2 maps, but it makes sense some things could still be hard coded in certain places. Will expanding down ruin the placement of anything else? I assume the cellar will be fine as long as I update the warps, but the Southern Room is probably hardcoded to appear at certain coordinates too? May just have to shrink the bottom floor...
Hmm i encountered an issue with the greenhouse i wasn't expecting...
Got a log from an android user with an interesting error (last trace line) https://smapi.io/log/fbf9867dab414b489441a082f7e360fe?Levels=trace~debug~info~warn~alert~critical&Filter=Better+Shipping
Log Info: SMAPI v4.1.10.3 - 1735840167 with SDV 1.6.15 build 24354 on Android Unix 34.0.0.0, with 20 C# mods and 0 content packs.
most mods aren’t android compatible
Seemingly a property which exists fine on PC, but didn't translate over to other platforms (or just android)
wait that’s your mod
you would know
yeah, android smapi has a lot of differences afaik
that’s why most mods don’t support it and we don’t offer support for it in this server in modded-tech-support
still impressed someone managed to revive android modding
I had a user ask yesterday if Forever Falls was "Android?? 🙏 " so they are out there.
If someone ever asks that on any of my mods im just gonna shrug
Bc 😭 i dont know
In theory i could probably test my own mods on android but in practice i think my phone might explode on me
Thats basically what I said, "Not sure, I would guess not"
I don't provide more support then "Does it run?", don't own an android device, not going to get one just for debugging
Why is this happening? at this point im about to test if its a vanilla bug and not something i did....
or is this a feature.... is fruit trees placable on greenhouse tiles a feature that exists now? cuz it does have its own dirt removal cutout that matches the greenhouse dirt
my answer to “does it work on android” was “no clue, feel free to try it and find out, I’m not fixing it if it doesn’t”
Isn't that just.. vanilla?
i didnt know it existed, and i was trying to figure out why i was allowed to place trees on the tiles, i thought it was something i did
can't stop it either it overrides nospawn tree
what could prevent a fish catching info to show in Lookup Anything?
You have a GSQ
someone has trouble fishing one of VMV legendary and i don't know if LA just don't like the GSQ
ok
(You can find me talking about it like two months ago)
ok
it's not the first time someone has issue with this one i believe so it's hard for me to be sure it's working fine
If it's the planet fish I caught it fine! Months ago!
always has been afaik?
it's the alpine char prince
Where is the data for the ||bouncer explosion event?||
Ahhh okay maybe an atra should play the game
the planet one is probably the least rebellious (but the more hidden)
But yeah, known that LA doesn't handle most gsq for fishies
(Ran into it testing the pufferchick)
how to add new custom chest? like adding new item with CP
beside expanded storage
i see!
No existing framework makes this possible other than Expanded Storage as far as I'm aware. The alternative is to either copy Expanded Storage code, or put the effort in yourself to deharcode all the game mechanics related to Chests.
Where is the bouncers data?
you were told the same thing matt told you last night too. what you want to achieve is not possible in CP
absolutely lower everything instead, you'll run into less issues that way. Also, you have to take the vanilla renovation locations into account (I think your upwards extension is running into the attic space) unless you plan to change every single renovation location, as well.
I never knew or forgot, I rarely pay attention to the greenhouse when i played a lot when it first came out outside of harvest ancient fruit every sunday, and in the last few years most of my playthroughs are coop and i usually surrender the greenhouse to a friend.
Hardcoded, Gamelocation.answerDialogueAction@L12734 (assuming decompiler is accurate)

thanks!
I gotta ask, what are you working on?, cuz it seems like every day you're asking a bunch of new questions that seem completely unrelated to each other.
Well let me think, I am working on More Secret Notes, A desert expansion, A shop in the woods(maybe, im kinda deciding if i wana keep that one)
Welp, time to dissapear again, gn! 
gn!
Honestly, every single one of these Android issues reported so far is because of trimming, and I want to just say "stop doing that". I guess it's really an Android Stardew issue and not an Android SMAPI issue, but nevertheless I'm not sure why it's so important to save a few measly MB on binary size when the vast majority of the download is taken up by content.
If they would stop trimming binaries, and there were still issues with Android, I might take them more seriously, but it's silly to have to work around a bunch of missing methods just because reasons.
Can someone teach me the difference between fromfile and target? I keep getting them mixed up
fromfile = where your changes are coming from
target = what you are changing
Hey! I’m working on a Stardew Valley mod and stuck trying to override the right-click action on text signs - i have done similar things using Harmony but struggling to find the 'text sign' class - could anybody give me some tips? Thanks in advanced
The right click action on text signs are done through a tile property in the map, so you would need a map patch
as in the signs you place yourself or the ones around the map?
Signs you place yourself
Thank you - i got something working with "wood signs" by patching the Sign.checkForAction method but that doesn't seem to work for 'text signs'
importantly, Target is an asset key, not a filepath - this is completely arbitrary and generally maps to either the game's content folder structure, or whatever Target a mod is using for its own assets.
FromFile however is a local filepath relative to your manifest.json, and will always need to match your mod's folder structure.
alright, ty!
you've probably already found that Target asset keys don't use file extensions, and FromFile filepaths do, which cements the difference
Hello, not sure if this is the right place to go, but I'm editing a SDV map in Tiled, just adding an image for now. I got it to work just fine then decided to edit the image a little. Now Tiled is cutting off the bottom of the image. I decided to revert my edit of the image, and it still cuts off the bottom. I've been looking in Tiled forums and playing with the pixel size but I can't figure it out. If anyone can offer advice or a point in the right direction that'd be great, thank you!
Do you mean the tilesheet?
yes
could you share a screenshot of your map in Tiled?
hmm, i see. this is quite a serious channel so it might be a problem
mikudayo....
are your image's width and height multiples of 16? if they're any less, tiled will cut out the tiles from your tileset
can't believe someone slashed the tyres on the miku bus
no its not, ill get to work fixing it now, ty for the help!
no problem
feel free to come back if the van breaks down
Jojamart? nah, MikuMart
so i’ve cut down on the size of my mod to be a singular character to start with and i want her to be a little hermit farmer that lives in the forest but how much does sve affect the forest maps, i don’t really have the desire to go through extra work to make the mod compatible but i don’t want my mod to be overlooked bc it isn’t sve compatible
If you make it an entirely different location that doesnt patch over the forest then you wont run into sve issues c:
SVE dramatically changes the forest maps iirc, but a lot of key locations are in the same position (hat mouse, notably). for now don't worry about it, follow your vision, and keep it simple
compatibility and compromise always comes after you've set out what you want
(Plus you dont have to do compat if u dont want to as well)
i meant the forest w/ the slimes idk what it called
Ah, the Woods.
woods oki ty
oh, the secret woods. i have no idea ☀️
i wanted to call them the lost woods but ik that wasn’t right
Just be aware that you may run into pathing issues in the Woods unless you've put some pre-planning in there.
are portraits required for an NPC?
It's excluded from NPC pathfinding by default, so if they ever want to leave, you have to work around that
true, isn't the secret woods excluded from npc pathfinding?
It is.
it is
only if they're social
alright, ty!
mmm, so you'd need an npc-only warp from their house to the forest/wherever else, even if there's a door/warp for the player to enter their home in the woods
You can do what I did and add a warp from the Secret Woods to another map that looks like a hidden clearing in the Secret Woods (for the player to navigate), and then have a NPC Warp from that map to the Forest to for the NPC to use for pathfinding, so they skip the "Secret Woods" part entirely when leaving and returning.
But if you want them in the actual Secret Woods, you need to resign yourself to using a 0 schedule and that they will not move away from their spot for whatever days they start there.
It was in 1.5.6
It's not in 1.6 iirc
The Map property is true by default in 1.6, I haven't tried to see what happens if you change that to false.
i actually think that might be a really cute idea is they warp from the secret woods to your farm once they have high enough friendship
Well, once again, they'd warp to the farmhouse, not your farm. Same issue there.
.. but the farm is still excluded from npc pathfinding 
You can change it to false
Yup! And backwoods
And cellars
Don't try to make your npc go into a cellar
(has anyone?)
so noted
locations says that Cellar isn't excluded, at least in its data definition
I'm sure at least one person has had the idea of putting an NPC in their basement.
But cellars are wonky because they're instanced by farmer/farmhand house
actually you know what i've tried that. guilty
Woods still have ExcludeFromNpcPathfinding true
You missed where Atra said the value can be changed to false
ah yeah
all these pink names
So I think that was a "It's not a hardcoded exclusion now"
the devs really did let us just go and patch every location to ExcludeFromNpcPathfinding: true huh
makes me a lil sad that so many locations don't have a displayname
Worldmap shenanigans still throw me, and I've done it twice
got halfway to making a location name popup mod in 1.5 already, but locations generally weren't mapped to names at the time
Successfully even
modding wiki indentation causing me a fit
I was gonna make a joke. But maybe not in this server
you dont like
{
"Changes":
[
{```?
they dont like change
for (var i = 0; i < Math.Random(0, 5); i++) {
for (var j = 0; j < Math.Random(0, 5); j++) {
indentation += " ";
}
}
maybe i should learn C#, i know a bit of general coding from GML
json.dumps(fp, s, random(5))
so what i’m hearing is i can have an npc in the secret woods
so because i decided to do This, i would need to add npc warps so that they can get in/out of their rooms right? bc the doors there are Not Functional
You can but it's cursed isn't it?
oh im realizing this is a horrible screenshot
Pathing nonsense
yeah we've been over the pathing issues a moment ago
i read that all i just didn’t know what it all meant
Don't let dreams be dreams etc
It means, if you change the Data/Locations entry for the Woods, you MIGHT be able to path in it, but we haven't tried.
And if not, there are workarounds, like we discussed
really just make your character how you will, and when you notice your character isn't pathing anywhere come back here and we'll give you a solution
don't stress on the technical issues too much
is there a good guide on making unique npcs?
There's enough work to do on an NPC that fixing the home is the last thing you have to worry about, tbh.
!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.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
that said, you really super can't have your npc walking around the farm at this point
or the backwoods north of the farm. those two are just not it
why does the governor know so much about modding
wonder how the npcs react if you only mark Town as ExcludeFromNpcPathfinding: true
They stay in bed
Eepy
Depression
lacking in aspiration. lousy characters
Hi esca!
so there is something extra and cute i want to do where she has like pets that are npc’s as well like mr.ginger, but you have to max friendship with her pets before she’ll accept the boquet
that is doable
@lusty elm Sorry to ping, but I got a bug report and noticed Forever Falls Farm has 2 map name typos in the FTM content.json:
"MapName": "Maps/Draylon.ForeverFallsBeachCave" should be "MapName": "Draylon.ForeverFallsBeachCave"
(also it includes the data folder with some test save stuff, but that doesn't really affect anything)
the bug itself is just "FTM couldn't find the map, started looking for TMXL buildable maps, and errored because that code is ancient"
fixing that part separately
speen
same map typo twice, it's just the beach cave one (with two FTM areas)
my wife finally got a job. it's been 8 years.
fighting off a cat while map making is Hard
if she moved in is it possible to have the pets move in too
Yes with enough c#
