#making-mods-general
1 messages · Page 126 of 1
Effects isn't a field
I'm not really sure what's going on with the recipe slapped into the middle of the entry either
Your texture and sprite index are inside the effects field, so they won't be read at all since that's not a real field
Is StarJewMod a dynamic token?
that is the mod id
ohhhh ok
Tokens are all double bracket enclosed
And that token is specific to pulling your UniqueID from the manifest
Have you unpacked the game contents?
I am sorry I really don't have any experience, what does that mean?
!unpack
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!
It creates an unpacked contents folder with all the games content files in a readable format
ohh no i did not do that
So you could open up Data/Objects and see what the other items in the game look like
that's a great suggestion, thank you
I suggest unpacking, opening up Data/Objects and checking out entry "204", Lucky Lunch
You'll be able to see what all the fields that an object can have are as well as how the Buffs field is set up
Recipes have their own data files that they go in, I however need to go try to sleep as I'm still v sick. https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Recipes_with_CP I can offer a guide I wrote and https://github.com/rokugin/CP-Examples/blob/main/[CP] cooking recipe ex/content.json a very generic example
anyone here who has made a custom farm map ever worked on adding SVE compatibility for the farm nexus warp point?
was wondering if i could change that warp without adding my own spot, otherwise i'll have to list it as a known incompatibility
last question i swear, the item appears in my recipes but it is grayed out, even though i set it as default. idk how to make the recipe accessible :\
I'm struggling to get my mail trigger to work, and after looking through the guides / examples, I'm not sure why it's not working... 🙃
i also tried unlock through friendship and it didn't work either
Is it supposed to be in this format? { "Action": "EditData", "Target": "Data/Objects", "Entries": { "{{ModId}}_TestObject": { "Name": "{{ModId}}_TestObject", "DisplayName": "Test Object", "Description": "Test object.", "Type": "Cooking", "Category": -7, "Price": 110, "Texture": "{{ModId}}/TestObject", "Edibility": 45, "ContextTags": [ "color_blue", "food_test" ] } } }, { "Action": "EditData", "Target": "Data/CookingRecipes", "Entries": { "{{ModId}}_TestObject": "20 1 22 1 419 1/25 5/{{ModId}}_TestObject/null/" }
this is what mine looks like and it is working perfectly rn
@tardy adder: check charity box compat, ponder dewb multiplayer (10h ago)
-> right
Hey guys I’m thinking about making a mod that replaces the town buildings, I should just be able to use content patcher right?
Sorry, I went to bed, but pretty sure there's no practical limit. If you're adding a bunch of similar items, context tags makes it less annoying though (for example, I have Jorts and Jean add WAG's tea_sachet_item because they don't have a preference for scent on their smelly cat toys
)
Individual items have priority over context tags
what coding language does mods use?
A quick question for people more familiar with tokens and game state queries - I can't find a built-in reference to your wedding anniversary anywhere (though it shows as a heart on the calendar!) - is there an easy way to refer to this or should I do something dynamic/count days since the festival?
stardew mods are written in C#, if they contain code at all.
plenty of mods are made only of JSON (a data format)
I don't think there's an easy way, unfortunately. You could maybe do something tricky with having a trigger action that increments a stat or something, but the easier way (depending on what you're trying to do) might just be to have a config for the player to set their anniversary date
i learned basic JS so do you think i can learn c#?
Reasonable. Thanks for the info, I'll probably do the day counting method for what I'm after.
yeah. they're both descended from C so the syntax will at least be familiar, but a bunch of macro stuff will be different.
it's generally the case, as chu was saying, that once you know any one language, learning others is easier. the fundamentals of thinking like a programmer translate easily no matter what language you are using
If you put your mind to it you can learn anything
should i learn python first as it is similar or c++or just start straight at c#?
Rather than immediately jumping into which coding language to learn though, the better starting point is what type of mod you want to make, because like Ichor said, plenty of mods don't need "real" coding at all
(that said, if you do want to write code, jump straight to C#)
i would choose almost anything over python, but i have Opinions™️
is python that hard?
"hard" is not a factor
i feel like nothing now like i struggled in JS to make a button change colors now im scared
one of the biggest difficulty spikes are going from css to js
Lol y’all are scaring me python is my main language rn
i heard that in c++ (not sure if in c#) every thing is in classes just like in html every thing is in div
Python is fine, it can teach your bad habits sometimes though
But we’re getting into #programmers-off-topic territory here…
Airyn is right when he says plenty can be done without C#
figure out what your goal is, then choose the best tool for the job. frequently that tool is Content Patcher or a similar content pack framework, and then you don't have to do "code" at all
is there a resource for all QualifiedItemIDs for all items?
Hi, i dunno if you guys support questions about mod editing for compatibility?
!itemids for vanilla stuff
what's your question
This is from a conversation with my friend who also does a bit of modding who told me to ask here.
welp, update on my mod compatibility editing journey, its NOT a schedule conflict. the schedule is fine. I've realized the issue is that the "editImage" part of the script for a mod isnt running. from what i can figure, i think it conflicts with the "load" of the dateable caroline mod which replaces her tilesheet? but changing it so both of them are "editImage" just gives me a blank space where caroline is.
is there maybe a way to get the other mod to target the tilesheet from the dating caroline mod instead of the base spritesheet?
etiquette question: is it socially acceptable to offer to copyedit peoples mods? theres a number of mods i have downloaded/nexus pages i have seen that are like Good Mods That I Like with random spelling/punctuation/capitalization errors, which like i know if i posted something and it had stuff id missed i would want to be told, but i have no idea if thats because i am Extremely Autistic And Have A Special Interest In Editing/Proofreading or if thats normal, and i dont want to try and do something helpful that is actually in fact being rude to people if it isnt socially acceptable
(re: the fact that this is typed absolutely atrociously, i prioritize speed over formality in casual communication. which discord counts as. i do this professionally i promise lmao)
i imagine you can't just send a PR to most of these dialog mods, but you can politely comment/dm them i feel
Yeah, i just felt like its such a niche case scenario that i may as well try and see if i can do something about it myself?
I don't have the greatest context as to what's happening, but you can add a false dependency so your mod's editimage block runs after that mod's load block
Tried doing so in the manifest. How does mod priority work on that by the way? Do i set the "load" mod as a false dependency of the "editImage" mod?
PLEASE NOTE: This method has been largely obsoleted with 1.6's mod Load Order, but may still be useful for 1.5 content mods.
False dependencies are one method of managing load orders for Stardew Valley mods. Say that you have two mods that you would like to use together: Mod A, Incredible Items, changes every item sprite, while Mod B, New Apple ...
(Assuming we're talking EN language mods here) A lot of them are written by ESL speakers or machine translated from other languages, so I think in many cases polite offers would be welcomed.
At the least, if you're not rude about it, it wouldn't be considered inherently so to offer.
Yup tried this first, didnt work. Although, after digging into the json a bit more the "load" mod had a "Priority":"High" setting on their load sprite and load portrait sections. Is it possible that interfered with the overlay?
Hey guys, I just wanted to pop in and say a huge HUGE thank you for all the help I got on here. I have never ever coded before in my life and now I have completed my first mod and I could not have done it without the assistance I got here. Thank you for being such a warm and helpful community ♥
⭕ hey i like your mod, but i noticed you spelled a few words wrong
❌ hey i think your mod could be good, but first rewrite this character completely to suit my tastes
yeah definitely just english as i am depressingly monolingual lmao
It’s possibly also helpful to reach out to the authors directly to ask?
oh yeah no copyediting is just. the actual words and like, format structure if relevant (mostly not for this because of the nature of videogame). i would absolutely never dream of asking someone to change dialogue meaning
It’s often something they would be happy to have help on, but it’s a little smoother when you ask first
If it’s just a couple lines, then summarizing in a comment on the mod works, but if you have a pretty long list, you could send them a zip of the edited mod, for example
that makes sense! im just generally used to working in environments where im being asked to edit by the writer rather than reaching out and offering, so I wasn't sure if there were any established methods of approach so to speak
/if it was like, cool in the first place (a la unsolicited critique on art for example since its basically the same thing)
Yup, no harm in asking politely, especially if it’s in good faith.
Please don't ping me on reply. Also which mods are you talking about and what sections of the code specifically are you looking at?
no, if the other mod was using EditImage. Load always runs before EditImage (the edit needs an image to exist first)
Woops, didn't see the no@, thats on me, my bad
(re: the fact that this is typed absolutely atrociously, i prioritize speed over formality in casual communication. which discord counts as. i do this professionally i promise lmao)
(I wish I could do this. It's legitimately a weird strain for me to type super casually! Not even that I don't like doing it, just that it's actually more difficult for me for some bizarre reason.
)
(I used to type super formally in my 20s and got all snooty about people who didn't lmao. Then I got old and tired and realized if it's understandable, proper grammar in casual convos wasn't really important
)
i shall word how i want when it not work 
when i realized that interviews and formal transcripts are edited to create the sentences the person was trying to say and not what actually came out of their mouth
actual speech is riddled with dead ends, stutters, mistakes, elisions, and the like
i think its a function of the way/reasons i write + edit actually! most of my writing is either super super technical or very character/context/dynamic variable, because its either academic or for a LARP i'm assistant staff at. having to jump between so many style rules (or non-rules: one of the characters i write the most viewable text for writes like a homestuck character lmao) at high speeds really enhances the ability to toggle proper capitalization or fully-spelled-out words on and off at will
You know, since this is at risk of derailing into language talk (as modders here so easily do)...
Whoops Yep Sorry
thats so smart
Now if it happens again, things can just shuffle over to there!
anyway thank u all for the input!! i really appreciate it :3
It's definitely a kind offer, though! Just as long as it's done as everyone suggested and it's obvious there's no pressure for the author to accept, it's a great idea.
I started a C# mod but I'm not actually sure how to add the internationalization aspect yet.
https://github.com/a2937/WishingWell
It's a spirit of the water. They take a coin and heal you. I wanna replace the hard-coded English dialog text though with dialog from internatilization JSON files. I know a key value pair is involved but is there anything built-in I can use specific towards internationalization.
It's not Content Patcher so that doesn't seem like an option.
Thank you.
The nuget package option does make the process very nice.
Question - when people make content patcher replacements, how do they know the exact dimensions for the image file of the item they want to replace? for example, the unpacked game files have most of the town buildings in one image file but what if i just want to edit and replace one at a time? For example, This mod does it that way: https://www.nexusmods.com/stardewvalley/mods/14524
open the .png in an image editor and measure the part you care about with some kind of tool, like rectangular select
any reasonable program should tell you the position and size of your selection, so those are the coordinates you give to content patcher
what if im off by a few pixels, does it matter?
generally you want to get it exactly right. if the thing you're editing is surrounded by empty space, then you have some wiggle room
most things in the game (not the stuff on Cursors.png, though, lmao) are multiples of 16 pixels wide and tall, so that may help you line up correctly
how will i get it exactly right 😞
do i just keep cropping it until its perfectly in the middle
maybe it will help if you tell us what you are trying to replace? perhaps i can sort of walk you through it
i want to replace the harvey/pierre shop building in the town
I have the game unpacked already
for tile sheets, they are always multiple of 16
once you set up the initial content patcher mod with an edit image, you can patch reload to get any changes in without restarting
mhm
so crop it test it in game and if its not centered crop it again?
after reloading ofc
you can specify a cropping area for the source image too
{
"Action": "EditImage",
"Target": "Maps/springobjects",
"FromFile": "assets/Flooring1_summer.png",
"FromArea": {
"X": 0,
"Y": 192,
"Width": 16,
"Height": 16
},
"ToArea": {
"X": 16,
"Y": 560,
"Width": 16,
"Height": 16
},
},
this example is editing item icon on springobjects, but the principal is the same
pierre's and the clinic are in multiple pieces on spring_town so this is a good example for piecing together multiple edits
yeah. (you can make your life a bit easier with the {{Season}} token, but we'll cover that later)
the X and Y and the Width and Height is the stuff i hate
for now, just do spring
(yeah, i just mean using the token to write one set of patches instead of four identical sets)
anyway, @tropic lichen in your image editor you can probably turn on a grid overlay. what are you using?
if you can get your grid set to 16x16 then you can easily see the outlines of tiles
wait but i still dont know how big my canvas needs to be
i guess i could just crop then spring town png and adjust it later?
im using aseprite for lineart and procreate for coloring
your canvas can be whatever size you want, based on how much of the town tilesheet you want to replace, but you'll have to edit your FromAreas to match whatever you use
both programs have grids but idk if i can do a 16x16 grid in procreate
this is just for finding the values for your rects, so open it in whatever
even if the canvas is really huge......
to be clear, no matter the size of your canvas, you will only be telling Content Patcher to use the part of it that is the same size as the thing you are replacing
you cannot replace a building with a higher resolution texture
How do i put a custom shop on the map? Is it just Action and the custom shop name?
even if your canvas is 5000x5000, you will be telling content patcher (for example) "i want you to use this 50x50 block here in the middle, ignore everything else"
So, hopefully last question for this mod. I'm testing an incoming phone calls content pack but I'm not getting calls when I think I should from the wiki documentation. From some poking in-game and on the wiki it seems like there's additional conditions I can't access in StardewValley.Objects.Phone::CanHearCall - how do I find out how this class behaves?
here's me selecting one of the regions at issue in GIMP. i can tell that i've got it right because of the 16x16 grid.
this part of the spritesheet is at (80,176) and is size (160,144) so that would go in the ToArea for one of your patches for this building.
(i can also tell that those values are correct because they are all multiples of 16)
Action OpenShop
Wiki should have info on the arguments
And where do i put ths shop name so the game knows what shop?
[[modding:Maps]]
alr ty
phone calls dont happen just because the TriggerCondition is true. every phone call still has to pass a hardcoded chance to happen at all
it would be in CheckForIncomingCall in the DefaultPhoneHandler class, and you can view it with ILSpy after decompiling
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Because I'm testing the code I put the base chance override to true though...
ok thanks for this that is very helpful 😭
have you double checked that your TriggerCondition is correct then?
Yeah, it triggers for one of the four tests but not the others. They have the same TriggerConditions.
quick question, whats defaut direction?
sure! you have to do the same thing for your source image (FromFile) to get its location to give as your FromArea, and you'll have to repeat for all the other pieces that are put together to make the complete building, since they're not contiguous
Remind me in 6 hours to plan for the scope creep powered by MEEP, and by Elli and Shrimp
you're in luck, I have one spare egg timer available. I think it's broken but we'll give it try. (#6397382) (6h | <t:1733269877>)
great...
(also CanHearCall doesn't exist so im not sure how out of date the wiki is for that in particular)
is this possible in aseprite?
Remind me in 18 hours to start dealing with the xmas mod and ze dreaded sprites (again)
Sure thing, 13midnight (#6397385) (18h | <t:1733313186>)
i'm sure it is, but i don't use it so i can't say for certain where the info is exposed to you
sorry for ze random reminders am setting, my every electronic is saying bye bye now
It's in the bottom left in a similar, though slightly more confusing layout!
(there's no way it's more confusing than gimp, which only displays the position if you try to move the box, and the size if you try to resize it, so you have to click and hold without moving the mouse)
Gives you the top-left corner, bottom-right corner, and the dimensions.
It's just... a little more to parse.
(Dimensions if you make a slection!)
wait is the corners the coordinates? or am i cooked
It let you only open shop from 1 side of the tile
Yeah, gone through ILSpy, I'll work it out, CanHearCall doesn't appear but thanks for the link! Gets me to where I need to be.
top-left corner is the X and Y you need
(0 48 is "X": 0, "Y": 48, btw)
Does the game have a function to resolve indefinite articles for item names, like "a cabbage" vs. "an orange"?
i believe thats in the Lexicon class
i could be misremembering though and iirc its not like... the most sophisticated
Lexicon.getProperArticleForWord
Wow, you weren't kidding, it just looks at the vowel.
about on par with Lexicon.makePlural, which used to give great results such as Hay => Haies
I just realized it's counted so it's better to use a number instead of the article and yeah, I see pluralization is in the same class.
Pluralization is... slightly better, I guess.
I love that for any language other than English it just... gives up.
tbh i dont know how i wouldve solved it for any arbitrary language either
ICU syntax, each item defining its own traits.
But what we have is what we have, not what'd be nice to have.
Is there ICU lib for c#
I'm trying to edit the spouse portraits is this the right code. "Action": "EditImage",
"Priority": "Late",
"Target": "TileSheets/junimo_furniture",
"FromFile": "assets/junimo_furniture.png",
"FromArea": { "X": 0, "Y": 0, "Width": 32, "Height": 32 },
"ToArea": { "X": 0, "Y": 272, "Width": 32, "Height": 32 },
"PatchMode": "replace",
assuming its formatted as json correctly in your actual file and your coordinates are correct that looks tentatively fine to me
ok thank you
lmao i forgot about this one. magnificent 
how the hell am i meant to know what layer is passable in tiled
Buildings is the only not passable layer by default
so we can't edit that?
And you can change that with a TileData object on the Buildings layer if necessary
You'd use the Passable property on that TileData object to set passable tiles on the Building layer
That's why you would typically place your walls and map boundaries on the Buildings layer, but you can cover them up visually with things on the Front and Always Front layers if needed
guess i gotta just redraw everything then
i think you can make tiles on other layers impassable by setting the Passable property
If it helps, in Tiled you can right click with the tile stamping tool to "grab" that tile to use again, and just place it on a different layer.
maybe that's only Back? or maybe i'm misremembering. for me it's always been enough to have one layer that blocks passage
Considering that we can add extra draw layers now, there really isn't any need to have more than one block passage layer
thanks, chu 
something like this I think?
https://www.nexusmods.com/stardewvalley/mods/12638
Hello all. I'm playing with calendar data. I can find the festival dates and passive festivals (e.g. midnight market). Where does one find when the bookseller will be in town that also shows in the calendar. As I type, I'm also thinking about desert festivals (yet I haven't made it that far in the game yet since 1.6 so not sure what to expect there)
desert festival and others are static and defined in Data/PassiveFestivals
bookseller is random, and you can check with Utility.getDaysOfBooksellerThisSeason in C# code
not yet possible to check bookseller in content code I think
I see desert festival there now! Thanks. Cool for bookseller. Thank you!!
I've fallen a bit out of the loop with some of the new modding / content patcher options with the recent updates. I looked through the current Content Patcher docs on github but am not sure if I'm missing something.
For Content Patcher, is it possible to perform query expression arithmetic operations on a value without also having to explicitly define the value?
E.G. Currently I use query expressions to change the price of an item like so:
"Price": "{{Round: {{Query: {{Crops Value Multiplier}} * 55 }} }}"
},```
where I define the custom token `{{Crops Value Multiplier}}` elsewhere.
However, is it possible to do something like this, but without having to enter in the `55` value, and just have it perform an operation on whatever it finds as the current value in that field? Something like:
``` "188": {
"Price": "{{Round: {{Query: {{Crops Value Multiplier}} * {{CurrentValue}} }} }}"
},```
using `{{CurrentValue}}` or something to just refer to whatever the current value is?
How come the game only sometimes checks whether a quest is accepted before progressing/completing it? Is there rationale or just the usual Stardew randomness?
Is it possible to add a when condition for a config schema?
Could be wrong but I don't believe this is possible with CP
Yeah, I seem to recall that being the case but figured it was worth a check if any of the 1.6+ updates changed anything. Thanks!
trying to decide if i should publish my mod with a lack of polish or bite the bullet and learn transpilers. because my head is spinning trying to comprehend transpilers
you only get one first impression and one chance to get to trending
so take that under advisement
that's very true
is this the "no nausea debuff from ghosts" thing
because tbh from an average mod user's perspective there's no difference between "immune to nausea" and "immune to nausea from the only vanilla source of nausea"
Funny how much of mod culture is built around one arbitrary and silly Nexus popularity mechanic.
I mean, if you want users lol
Unless you're the type who only cares about user #1
God I'm tired but
yeah it's related to this
Tbh you don't need transpilers for that
But it might be a fafd
Faff
I can explain more when I get home if I remember
heck you'd get more users if you do the former
But the jisr is to find the function that ghosts use the launch projectiles
Anybody know where this method went in 1.6?
Utility.getUncommonItemForThisMineLevel
And then track the projectiles produced and remoce the debuff
well i've already got it working that there's no debuff, it's just. so the mod is actually a necromancy mod, you can summon undead monsters and make them fight for you
and it seems a bit silly to have them trying to debuff you and throw bones at you while they're under your control
Sounds interesting!
That's a lot more complicated than just making player debuff immune 
that seems like a completely separate problem you should be solving
Have you solved the problem of getting monsters to fight each other?
Enjoy!
I think u should probably just make Companions
I'm going to go cry over labview, see y'all later
That sounds like a nightmare given Stardew's collision mechanics (or lack thereof).
it's not, Walk Of Life solves it
yes actually, i have it so that when they collide the ones you're controlling do damage to the others
but do your minions actively seek out your enemies?
Certainly vanilla does it only for trinkets but there's no direct dependency there
they're... supposed to. i have the code for that sort of working, i've copied the code that makes them track down the player and targeted it at other monsters instead, but it's kind of bugged right now
tbh this was probably a lot for my first ever c# mod but i'm so close! it's really close to being there!
I just wanted to point out that Walk Of Life does it if you need some code for reference:
https://github.com/daleao/sdv/blob/main/Professions/Framework/Patchers/Combat/MonsterFindPlayerPatcher.cs
It's definitely not a simple problem for a first mod. But the general idea is to create "fake" farmer instances and position them on top of enemies.
oh thank you, that could help
(just realized this code may be hard to understand if you don't know what the mod does.. but I recommend cloning this repo and searching for uses of FakeFarmer class)
Walk of Life uses this to control Slimes as minions, so its basically the same idea.
I'm trying to think of a way to have a list of stuff preloaded that can be accessed by anything that isn't a static list but can be accessed by anything I'm doing
that is basically the same idea, there's probably a lot i could glean from this code base
Put it in a core mod
technically not for a mod
No down with core mods
me neither, its almost a meme at this point
Put it in ur project template 
but some times they're a necessary evil
two questions with map making:
- How the hell does lighting work
- How do I place doors
I'm only again core mod posted on nexus for sole usage as a dll for ur own mods to ref
the basic idea is that I want this program to access a list you generate when it starts up and keep it somewhere so I don't have to constantly reload it
i suppose... I was just thinking if there was another way
😮 that isn't really a bad idea actually
I'm trying to keep my new code neat and that's the stuff i'm looking for
I was gonna say put it in your ModEntry, then I remembered you said not a mod
You can also make a normal class that u instantiate once (as a static on something else)
The general term is singleton
singleton is just static with extra steps
i like the static thing
testing out my mod and forgot I put this dialogue line in lol
mini-mod idea to add shop entries based on a chosen context tag works.
I've only got vanilla food items in there for now, but it works! I set up a Dynamic Token so that the context tag can be set via the config options.
Only negative is that you have to predetermine the context tag options for the config
blargh trying to populate data and i feel like eating nachos
How does one learn to add locations I have tried the
Modding:Location data
and I have no idea what to start doing it, and all the tutorials I have found are for pre 1.6 locations tuff
have you unpacked your files?
Yeah
you basically wanna do what Data/Locations is doing then
if you know how to add an object to Data/Objects for example, you're doing that now but adding stuff to Data/Locations instead
It pains me that I got the minimod working but not one of the food mods I downloaded actually sets a food_ context tag in them for their dishes
you'll also need to make sure you load your map to the Maps asset now too
i think. dont remember if Locations can load them directly from a tmx
We need standardized context tags for food mods xD
someone else more familiar with location and map stuff will probably correct me if they are around
Why did they make it more complicated T-T
well, it wasnt feasibly possible at all before without a mod like CP to do it for you
now they made it into a data model so its very easy to add new ones
and customize things about them
Data/Locations is actually pretty straight forward, quite a lot of the fields in the data model are optional
I guess there's still category_cooking
(i know CP still does it for you in this case but yknow what i mean. it did a lot of the things f or you)
Was looking for more specific types of food, though, via the tags
Like, someone yesterday wanted to filter for food_sushi, for example
Also what is location context do I have to worry about htat
So they changed it to make content patcher have to do less?
also I opened location .json
I have no diea what I am looking at
they changed it to make modding them in general much easier for everyone
with or without content patcher
So, what kind of location are you trying to add? A farm, a building interior, an outdoors map?
That determines what has to happen and how much detail you need to add
An interior
There are people still using xnb filres in 2024? damn XD
Wait so it was harder before?
It was way more fragile before, IIRC.
So if rn it seems like everything is written in Chinese, before was like hieroglyphics.
To make a new location u need to load the tmx and add a new entry to Data/Locations that's about it
That is what I tried to do but there is now something called location data that I am trying to wrap my head around
hey can someone help me with my mods? I can't get my tileData to work on the game for some reason and I'm not so sure cause I'm new to modding
Most of the fields r self descript and u also don't necessarily need to change em
But where do I even put it?
this is one of my outdoor locations, which has way more than you'll need to deal with: https://smapi.io/json/content-patcher/49b89bcdbd144dd790ccfdadaaf150c8
Do you have knowledge of content patcher in general
You can pretty much skip all the worldmap entry stuff in there, and the edit to the mountain map.
Erase the videos from your mind 
There are no other tutorials that I can see
I also did recolor abigail's sprite
Video tutorials are not common because they become outdated VERY quickly
but where would I go to get examples?
What particular kind of mod do you wish to make?
I just wanna create a room, and a warp to get to that room, I got the room in tiled
Made it
Now I just wanna load the room into the game
XNBs were really not that hard to understand.. just had to get an XNB extractor then you can see the data
Okay, so from my example Rito Roost that I sent you, you'd only need the first two blocks + wherever you're setting the warp to get into the room.
they were very fragile though, since they broke whenever the game updated
You had to then re-add them every time
i am aware.. I was messing with XNBs before CP was a thing x3
Rito Roost?
Oh
got it
found it
(just want to be sure we are absolutely not encouraging anyone to XNB anything in the year 2024 or beyond.)
I did try that once like 2 years ago (failed horribly)
(I wouldn't want anyone to either)
The third block in my example also shows how to add a warp from an existing map to your new area, if you haven't already got that bit figured out
yeah thank you
It's a bare minimum example that will get you up and running, but you can take a look at the optional fields in the Modding:Data/Locations wiki page if you need any extra bells or whistles. 🙂
Once I am a competent individual and not a bumbling cat stumbling around in the dark, I will hopefully make more tutorials
because god knows reading documentation can get confusing XD
[pops up] I would love to see more tutorials!
We have a bunch on the modding wiki, but since the game kind of upended all the old methods about 7 months ago, the documentation hasn't caught up.
The documentation is mostly there but like the applied step by step stuff
My constantly-a-work-in-progress Legend of Zelda NPC Overhaul mod is a great excuse for me to learn all the aspects xD
I had to get a crash course on NPCs and locations so far
(We do have a tutorial for NPCs if you still need help
)
(I made a NPC builder, I'm good at this point)
Honestly the best thing I will do is go dissect my entire modlist see what each part does
Damn!
I would in fact appriciate that
where may I find such a coveted piece of art?
!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!
Also feel free to pop into #1277457201077813280 for more specific NPC creation questions. 😄
Today, in fun things: "Oh hey, this update is getting hit with a Trojan detection."
"Well, that explains why it's not on Nexus."
yikes
I should probably bump some tutorials up my list since I finished most of the big updates I had pending. I could probably do at least the basics on adding fish and on farm animals 
Makes sense they are ramping up security after the recent epidemic
If you want to snag bits of my SDV Object Parser (the furniture spreadsheet) to transform into a tutorial on CP furniture, I will not complain.
I'm poking at the source code of StardewUI now but woof, I forgot how much I hate source code
(of GUI frameworks)
LOL a whole lot of it is optional fields, and they're all explained when you hover, breathe ❤️
(do a map one)
its ok u can just ask focustense directly 
#1293051032904925255 in here
eeeh. This one (Trojan:Script/Wacatac.B!ml) miiight be a generic detect. That's a real problem with Defender
i think its not that bad though, just dont think about the focus search code 
No what I mean that every time they ramp up it leads to more false positive but the ramp up is needed
is it?
Like every time something's gotten through Nexus is usually is stuff that wouldn't be in most AV stuff to begin with
did u check if the github version has same problem
i downloaded from github
oh i misunderstood cus of the nexus mentions 
.. flagging that again on Nexus for Project Danger Weather
the hell
grumbles, goes to load up virustotal
https://www.virustotal.com/gui/file/cfa7aa1bc056c7abfcc9400819fcf765d1a362fdbf44963e3f0301335c9764bb/detection/f-cfa7aa1bc056c7abfcc9400819fcf765d1a362fdbf44963e3f0301335c9764bb-1732903234 great, thanks, Defender.
VirusTotal
i think this is a problem with what file it scanned, but it's also clearely likely a defender issue
Looks like i'm not the only one making an NPC thing
I mean, you can submit it to Microsoft as a false positive, but not sure what else can be done.
I am, actually
(That requires knowing how to do maps)

i recommend cellar replace mod for baby's first map 
Alright, coming in with a weird question. I just got a log from a user that appears to have conversation topics being treated as events? Did a new mod come out that may have caused this or is there an error going on?
Log: https://smapi.io/log/fdda02fb638e41c0985f1dd06a1dbcfd
Specifically, a trigger of mine isn't working because breakfastpause is present, but so is breakfastpause_memory_twoweeks
so quick question, if a map patch (so like not the full map but a section of it that gets patched in based on a condition) has tile data for having a string shown when the user clicks (like how there's some flavor text in the houses) will that tile data copy over? or will it not?
Also, you can patch maps based on the in game season right? Like I'm not just going crazy there
i know some CT are autogenerated based on event name, i don't know if CT are generated based on CT names
The twoweeks is the vanilla 1.6 thing
Is the trigger A breakfastpause for the event?
do you have an event named this way, and how the second CT can even be interfering?
I'm not quite sure what you're asking. If your tile data string is part of the map, it'll patch in with the rest of the map.
sure, you can patch anything based on season. it's just another token to match in a condition
these
(the game will generate a lot of various CT including stuff like event_memory_oneweek and event_memory_oneday, but i fail to see how the two weeks one would cause issue without a check for it?)
sure, your TileData objects on matching layers will be copied in. of course there's certain EditMap PatchMode values that could prevent them from being copied, but generally they'll be included
I want to have them on the patches I'll be patching in for each season...for flavor reasons
tysm
it may be easier to have the seasonal in the i18n if you use translation than in the map patch
Lets just say my NPC farmer will have a special coffee plant that grows year round.
(unless the sprite too is changed)
the sprite does change...
hi! is there a way to obtain for my added object a number id? the problem is that i need to create TemporaryAnimatedSprite for bomb, and for bombs the argument accepted is int initialParentTileIndex.
so is it possible without modifying the tilesheet?
ok...
if the sprite changes, you can still use a seasonal tilesheet and have it change automagically without any unique conditions
ok... i hope you'll grow one day...
just follow the same conventions as in the base game (spring_ + myFunnyTilesheetName, summer_myFunnyTilesheetName, ...)
I mean I am trying to learn, so I may add it, but I'm working off of what little I know and what information and help that I can get from you all.
tia's jort and jeans is a great npc example mod
I would 100% eventually like to have translations for my mod...I just need to not bite off a lot, lest I get burnt out again
FYI I18n is really extremely simple and saves you so much time and effort
So I've been told, but I've also looked into a lot of it....and well, my brain just doesn't compute properly...
the only setup required is having an i18n/default.json file in your content folder with as little as {} as the content
CP does the rest
you can ask question but i18n will save you lot of effort in the end and can be very cool for some dialogue trick later
Honestly I probs will ask more questions...when I have more time lol, I need to get ready for work and I've been pretty busy for this holiday season.
from there, just grow your content and default files as you go:
// MyFunnyMod/i18n/default.json
{
"myfunnykey.dialogue1": "Hello world!",
"myfunnykey.dialogue2": "Man i love internationalisation$h"
}
// MyFunnyMod/content.json
{
"Changes": [ { "Action": "EditData", "Target": "Characters/Dialogue/MyFunnyNpc", "Entries": {
"winter_1": "{{i18n:myfunnykey.dialogue1}}"
}
} ]
}
i typed that in 2 mins in a discord chat. that's all the setup for i18n
it's that easy
There is a tutorial on the wiki for it, but also you can just make your mod and then convert with nomori's converter 
is this for custom bombs?
iirc you can just use one of the other constructors and set bombRadius after the fact
custom numbers wouldnt work anyway since it's checking against one of the 3 vanilla bomb numbers
maybe something other here's wrong, but with this method overload, by bomb is spawning, shaking, etc., but it doesn't explode
TemporaryAnimatedSprite customExplosion = new TemporaryAnimatedSprite(
textureName: "Mods/Arteesian.ExplosiveKegs",
sourceRect: new Rectangle(0, 0, 16, 16),
animationInterval: 100f,
animationLength: 1,
numberOfLoops: 24,
position: placementTile * 64f,
flicker: true,
flipped: false
)
{
scale = 4f,
color = Color.White,
layerDepth = 1f,
alphaFade = 0.01f,
bombRadius = 5,
bombDamage = 50,
shakeIntensity = 1f,
shakeIntensityChange = 0.0002f,
extraInfoForEndBehavior = idNum,
endFunction = location.removeTemporarySpritesWithID
};
i am looking at another custom bomb mod, and it works like that. the creator uses CP to add a new row to a tile so his custom sprite gets the number 936. however, i don't want to modify the game's tilesheet so i'm looking for a more optimal way
it seems like it's exactly this overload is used for bombs, according to its description
There's a iridium bombs from a while back
I don't know if the code is open source but I believe it just patch placementaction to let u put bomb and then modify bomb radius after creating the tas
Might be able to find discussion of it if u search up this channel
but the code above also modifies bomb radius after creating the tas
I dunno why they bothered to put an ID then 
how do you mean?
well the (the other decompiled) mod author is using the default bomb TAS ctor, which takes a sprite index
and our (beloved confused) mod author is not, using the more sensible custom texture sheet TAS ctor
I made fireworks work like a bomb in Fireworks Festival
936 because i think the creator adds another row to the game's original tilesheet via CP, it makes sense why 936 this way
I didn't do very much custom though
Just dropping the damage to very low and making the TAS colored
The 936 thing is bad practice...
How sinful 
yeah, that's why i'm looking for another options
I think u can use any of the TAS constructors
gotta be honest, I don't remember what I did in FF
I'm pretty sure it works though
As long as u set the explode related fields it'll blow up
fireworks also have integer ids, but my custom asset doesn't
unless your fireworks are also custom
Could probably have a bomb object that places as a different sprite if u want
they did, and it should
just in case there's any confusion over int ids, you don't need a Data/Objects entry or anything like that -- it's just checking the position in the texture
Since Fireworks Festival predates 1.6
It looks like I had to force the texture name for reasons that I have never understood
x0y0 is 0, x16y0 is 1, x32y0 is 2, ...
I pull from a custom spritesheet I made though which it sounds like is what you want?
Still combing the game code as to why this doesnt explode, but im on my phone and also at the gym so probably not going to find anything lol
I do not, and to @brittle ledge No. The intent was the event adds the Conversation Topic, then once it ends a special order can activate. The problem is the CT... isn't expiring when it should
sorry for the delay, it's been a bit
the explode chain of code is wonky
I thinkkkkk it might have to do with Bomb radius or bomb damage
but it's been way too long
The vanilla 1.6 behavior of _memory_twoweeks I know happens for events, but does it happen for Conversation Topics?
i am still confused about what is the rapport of the memory ct with the initial issue
you have a CT set by the event, named whatever, that didn't expire after how long you set it to last?
what you need to look for in the code is GameLocation.Explode getting called in TAS cleanup code iirc
Correct. Here, let me grab the code
(how long should it last?)
I sympathize greatly as I recall lots of hissing and such
"177751/SawEvent 96/DaysPlayed 84": "Saloon1/14 19/farmer -100 -100 0 Gus 14 18 2/skippable/addMailReceived breakfastBegins/addConversationTopic breakfastpause {{CTDelay}}/pause 1700/textAboveHead Gus \"{{i18n:Crisis.177751.0}}\"/pause 1500/
{{CTDelay}} is the config, which is 1 (one day) per the log
what is the max it can have?
@tall shale I found the source for Apryll's Iridium Bomb mod, you can reference and see what she did: https://github.com/ApryllForever/IridiumBombs/blob/master/ModEntry.cs
the max is 56, but the default is 14
that's exactly the mod that is using the 936 id xd i'm currently looking at how the fireworks mod works
ok
(i don't trust user to have set it properly then not realising that maybe the duration is already set)
i wonder if there's a way to check the remaining duration of a CT
and for the record, the CTDelay is only for the backup. They're tired of waiting on it on the board, so they're using the backup system to get the special order
And since 14 days is two weeks.... well, that's two cycles of special orders. I doubt they got tired second run XD
(and yes, the breakfastpause_memory thing is strange and intriguing, but i doubt it's the cause of the issue, it may be a symptom but it would be weird that it's only on your mod it happens)
aah
but as said, I don't think that constructor is the thing. you can decompile the game's source and see exactly what the bomb constructors do
maybe your own TAS has some extraneous fields?
Oh I don't think it's the cause, but I think it happening may have caused the original CT delay to not expire
which is why I'm trying to figure out said cause
i'm not sure what that means, but it's likely because i don't fully get the backup thing
In short:
- Gus's special order has to show up normally on the special orders board, where it may compete with 100s of them
- Backup system, if enabled, causes Gus to send the special order by mail to activate it, using a trigger action
- The special order can show up immediately, but the backup system has a pause (configurable) meant to give Gus at least a little time in universe
What the user is saying is they're not getting the backup mail. Because they still have "breakfastpause" for some reason, the trigger action will never fire
ok
cool cool cool
i checked quickly, the gsq for the CT cares only if it exists
i don't remember anything that would see what is the duration left for a CT
Yep. So I'm wondering why the CT still exists
maybe it's stored in the save
in which case you can see if they are ok to share it with you
it may give you extra informations and maybe a possible solve by save editing (as long as they backup of course)
I mean the solve is easy from a "I can tell them how to fix it"
trigger action via debug command to force end breakfast pause
I'm trying to figure out why it happened in the first place 
yeah but if it's stored in the save it may show that the value remaining is 40 and it would be likely "user entered big number by mistake" or that it doesn't exist and it's a clue
maybe an harmony summary can show if something is strange too
but i don't have more ideas
Gotcha. I'll ask for their save, but that's unfortunate. Thank you for the help, regardless!
Yeah, the only other thing I could think of was Lasting Conversation Topics, but that's not installed and even if it has been, it wouldn't affect CTs after being removed
Id like to make a try to make a mod but i have no idea how to code
!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.
depending on what you want to make you dont need to write code at all, just json files and pixel art
@tardy adder: plan for the scope creep powered by MEEP, and by Elli and Shrimp (6h ago)
AH THE MEEP
MEEP?
ah, right.
@calm nebula: edit the wiki (12h ago)
Ahhhh no u
Remind me 2 hours to edit thr wiki hopefully your dumb ass will be home by then and not yelling at labview
then i think my question is how do i make it check in my mod's custom sprite instead of game's springobjects. so my png file is 16x16 and consists of only 1 asset, so i understand that the id i want to type is 0. however, i can't get how to set this asset instead because if i provide 0 now, i will just get the springobject0, aka these leaves
weeds honey
you need to load in your custom asset, and direct "Texture": to it
hello! I have an incredibly specific question - my goal is to make the Stone Floor completely invisible, so I can use it as a connector for Junimatic without worrying about having it look nice. I have the code to replace the image working successfully, and it's pointing correctly to my 64x64px transparent image correctly, but it's showing this semi-transparent gray layer (presumably underneath?) any thoughts or tips on how to remove that? i can send the code I have, if that's helpful - no mentions of opacity or anything like that currently. i'm running several mods, but this is pretty lightweight, so i'd be surprised if there was any sort of issue with compatibility
you should just make a new flooring
how do i do that?
edit Data/FloorsAndPaths
i've never modded before, so I figured (possibly incorrectly) just replacing was easiest haha
yeah i don't really use flooring as decor, and i worry that adding a new one might screw with Junimatic? but i can experiment
it will not
if you do this method with a path it will not have the shadow
aside from what other people have already said
if you mean the textureName string, that i've tried it and this way the bomb never actually explodes. the overload for bombs only requires the initialParentTileIndex, which is an integer
!unpack
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!
thank you! i've never looked at the game code before, since i've been sticking to editing mod files, so this is a helpful place to start
u need to add new thing in Data/FloorsAndPaths, and a new Data/Objects for placing those
unfortunately, Junimatic doesn't work with paths :(
ah
only flooring?
i dont think junimatic cares about what floors u use
only that it's a FloorsAndPaths thin 
that's my understanding, my (invisible) gravel paths that i had set up for automate didn't seem to work :( but maybe i just totally misunderstood the mod wording!
ermm yeah i swear mine use stone paths
ok cool i'm probably just stupid and making things more difficult for myself lmao
woohoo! that sounds like i'm just being stupid, which will be easiest to fix in the long run
but since ur stuff is invisible maybe u just placed them wrong 
thank you all for being SO helpful you're incredible
also i love your iridium recolor mod! ty!
if u dont wanna fuss about too much, this mod has a grass looking gravel path
https://www.nexusmods.com/stardewvalley/mods/15224 this mod was working great with my gravel paths being invisible, so I'll just go back to this :)
there really arent that many flooring mods that r actual separate flooring huh 
its been 9 months 
Also there was a framework that did it on 1.5 but it was fragile and kept breaking saves
Chue
but also i find having more flooring kind of fussy
9 months is short in modding time lol
archaeology skill adds glass and bones flooring
perfect for my "spooky and extremely slippery dungeon that cuts you if you slip"
In before flooring with special effects
the flooring is lava
hmm
Randomly teleporting flooring
pokemon conveyer belt
I was thinking the Team Rocket hideout warps, but that works too
pokemon...
(my bad, I thought you meant the spinner tile mazes from the first games)
Its hard 😭
I tried and gave up
if u send png here i'll whip up a quick example
Then apparently I'm still a baby.
Lol
Can anybody help me convert Yellogs furniture mod to AT? I'm having a hard time getting cp2at to work.
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
you want the first option
there's a CF version of yellog's as well, and you may be able to use the CF-to-CP converter (to add new furniture)
also, please remember that you should not publish without permission from the original author, and this should be for personal use only until then
The issue I'm having is I have both the CP and CF version but I would like to switch to AT so the furniture isn't replacing anything. I'm using CP2AT but im getting a error.
mind you it doesn't impact how to put it in game
but then i realized i needed to edit corner size and you cant do it in AT
only that it will look weird at certain connections
everything in Data/Objects after "SpriteIndex": 0, is optional actually
i left it cus lazy
this code is so long but i will bookmark it for when im ready to tackle it again................
can you tell me why there are two edit actions with different targets
yipee
so Data/Objects is about adding in the flooring item
which u can spawn and place
i didnt add any recipes or shop entry btw u gotta do that
Data/FloorsAndPaths tells game how the flooring works
ok cool
missing connect type oops
I might wanna make a Dateable NPC
!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!
and also u only have 1 texture but u can make a winter texture thats all frosty if u want
the other 3 seasons need to use the {{season}} token
Um.....how would I do the art? I dont really do pixel art ^^;
!pixelart
Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.
To start, you'll want an art program. See a list of recommended programs in the !software command.
Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab
To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.
Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396
SDV has a few quirks to remember too:
- Colour limits: Limit the number of shades you use - stick to six including the outline.
- Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
- Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
Would anyone wanna work on a mod together?
What mod are you thinking about?
what do you need from the collaborator
A romanceable NPC mod. Id take on the writing and art stuff, I just need someone to do the coding and bounce ideas off of.
DM me, lwt me know what the NPC is about, I am good at the code, let me know!
Idea for Stardew 1.7 code change: Farm Animals can be picked up, to take them back to the coop at nite. (I got super terrified cause little Annie the Chicken got very lost on my mermaid farm. I found her in the middle of a random forest and cleared the way for her to get back.)
I sent a few ideas when your free
I'm running very limited mods right now doing testing and I don't think it's mine that's doing this... does this happen in vanilla?
wild guess, but did you install SVE halfway
I've used SVE but in this install directory don't have it at all. These are the mods - Law and Order is mine
After a quick search it's maybe a very old bug that takes care of itself after a couple days... I guess I'll wait and see
if i have loaded an asset in the event handler,
if (ev.NameWithoutLocale.IsEquivalentTo("Mods/Arteesian.ExplosiveKegs"))
{
ev.LoadFromModFile<Texture2D>("assets/Objects.png", AssetLoadPriority.Medium);
this.Monitor.Log("Asset 'Mods/Arteesian.ExplosiveKegs' loaded successfully!", LogLevel.Info);
}
how can i access the texture out of this event?
TemporaryAnimatedSprite TAS = new TemporaryAnimatedSprite(0, 100f, 1, 24, placementTile * 64f, flicker: true, flipped: false, location, who)
{
texture = ???,
8 hours into this and i am understanding less and less xd
if u look at TemporaryAnimatedSprite.loadTexture it shows u 
texture = Game1.content.Load<Texture2D>("Mods/Arteesian.ExplosiveKegs"), i believe
it's finicky iirc
with tas
like
you should set the texture name and let the tas load the texture itself or else it looks weird if you broadcast it in mp
TemporaryAnimatedSprite TAS = new TemporaryAnimatedSprite(0, 100f, 1, 24, placementTile * 64f, flicker: true, flipped: false, location, who)
{
textureName = "Mods/Arteesian.ExplosiveKegs",
};
atra probably knows what's up, ignore me
I...was about to ask you to call TAS.loadTexture, I just realized that's like private
sorry, ichor
I have a photographic memory and I use it very badly, lol
no worries, i shoot from the hip a lot on here
see, the next thing I want to do is call TAS.loadTexture() but that's private
so I guess reflect for that?
you did the "ending your sentence with 'i believe' or 'iirc' or 'maybe'" thing which absolves you of everything
the snippet I linked earlier today
out of my mod
I force the texture name
idk why but I had to do that to get it to work
what is the bomb code lol
alright, this piffle is a sleepy
the real secret to knowledge is to learn that you don't know anything, so you always have to hedge
But it works
Oh, that's neat
i'm trying to figure out the bomb code
I used to know the bomb code
bomb
It's spread across toooo many classes
There's TAS -> GameLocation.explode
But then also some of it is MP broadcast
Testing it was a huge pain
TIL flooring violently crash the game if the texture is not found 
if (this.currentParentTileIndex - this.initialParentTileIndex >= this.animationLength)
// stuff
// beforewarned my day job is heavily python
// so my syntax is stupid
if (this.currentNumberOfLoops >= this.totalNumberOfLoops)
// more stuff
if (this.bombRadius > 0)
// flashy!
// explode
yeah, I would 100% believe it just uses bombRadius
Mr. CA, bless his heart, did not originally design the game to be modded, and Mr. Pathos the best did a lot of work to make it moddable, but yes.
in many places the game looks at bad data and Just Dies TM
there's a bunch of nonsense where it goes through a bunch of animations before/during exploding
which took me a bit to figure out which tilesheets it was using for that
I think it's both tilesheets/animations AND maps/springobjects somehow
yeah, it's fairly hardcoded lol
hello! i'm new to discord, if I want to have the mod author range I have to have the Farmer range first - do I get if from just texting here a lot? Or do I have to do something else
basically, yeah
easiest way to get points is to answer questions in #1272025932932055121 tbh
okay, thanks 🙂
isnt this new in 1.6 though 
i think it just didnt get a fallback error texture, unlike items
if u want to post to #mod-showcase u can ask someone to do it on your behalf
until u have the level for the role
now it can't be placed and i caught a NullReferenceException: Object reference not set to an instance of an object.
Anyone knowlegeable about how quest IDs get assigned? Trying to figure out if it's just the daily quest that gets no ID, or if it can happen to other quests.
i think quest ids are the keys in data/quests (unsure about special order quests; those might come from the special orders asset?)
interesting... how sure are you the texture exists?
I had issues with this but eventually ironed them out
I forget how, but I might have had to load the texture separately?
Special orders IDs are in Data/SpecialOrders, yeah
Thanks; makes sense that the ID'ed ones come from game data, though I'm still a little unclear on what the sources of unidentified quests are.
But they can be a little confusing since some of them are just the NPC Names being used as the Id
i don't know of any other sources of quests besides plot quests, special orders, and the help wanted board
What do plot quests mean here? The game has a plot?
Trying to change a (custom) map based on conditions on warp, is there a way beyond going tile by tile with SetmapTile? Like maybe a way to hide / unhide layers in code
Just create the changes you want in a separate tmx and patch it over your map
plot quests, like the ones that you always get based on certain points in the game?
(I mean, maps are mutable ....
)
In terms of all the ones I can think of, they do have IDs. Lost items, item deliveries that you get specific requests for (George's chili pepper, Clint's iron bar, Robin's hardwood, etc.), they have IDs.
now the error is like that:
[06:27:19 ERROR game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
at ExplosiveKegs.ModEntry.DoKegExplosionAnimation(GameLocation location, Int32 x, Int32 y, Farmer who) in C:\Users\volts\source\repos\ExplosiveKegs\ExplosiveKegs\ModEntry.cs:line 156
at ExplosiveKegs.ModEntry.PlacementAction_Prefix(Object __instance, GameLocation location, Int32 x, Int32 y, Farmer who, Boolean& __result) in C:\Users\volts\source\repos\ExplosiveKegs\ExplosiveKegs\ModEntry.cs:line 109
at StardewValley.Object.placementAction_PatchedBy<Arteesian.ExplosiveKegs>(Object this, GameLocation location, Int32 x, Int32 y, Farmer who)
at StardewValley.Utility.tryToPlaceItem(GameLocation location, Object item, Int32 x, Int32 y)
at StardewValley.Game1.pressActionButton(KeyboardState currentKBState, MouseState currentMouseState, GamePadState currentPadState)
at StardewValley.Game1.<>c__DisplayClass964_0.<UpdateControlInput>b__0()
at StardewValley.Game1.UpdateControlInput(GameTime time)
at StardewValley.Game1._update(GameTime gameTime)
at StardewValley.Game1.Update(GameTime gameTime)
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)
sorry, i just meant the ones in data/quests
you can do this, but it's finicky. i do it in my mod Portable Hole: https://github.com/ichortower/PortableHole/blob/prod/src/HoleManager.cs#L338
the idea in my example is there is a sort of base form of the map, and some overrides which you want to apply based on your conditions (in mine, it's to add the ladders only for the entrances which are currently open)
so when you warp in, i reload the map, clear the set of applied map overrides, then run the ones i need
you can look at line 109 for more clues perhaps
your conditions may not require you to clear and re-run on every warp in. as you might expect, i recommend doing that as little as possible
Especially since the flooring makes you move faster like other paths!
could you just use the usual vanilla bomb TAS ctor, and then in the{} initialisation group afterwards assign your textureName: ..., texture: ... ?
and maybe sourcerectangle if possible
that's what I did, plus forcing the texture name (for some reason it was necessary at least in 1.5)
i'm not really clear on which part is doing NRE for atreesian
there's a harmony discord 
Yup
i'm so mad at myself
i had been putting off making colorable clothing items because i thought it was complicated
it's actually the easiest thing ever?? 
As long as you remember to make the sheet width the correct size, pretty easy
@brave fable Hey I've been doing a little Better Crafting stuff today and I was thinking about LoC. I don't use LoC so I might be missing some stuff, but I had an idea for a couple things that might be useful for you for API stuff. Any feedback on these thoughts?
- An event that checks if a recipe can currently be crafted by a farmer, with the ability to return a string to display as a reason why it can't be crafted. I was thinking you could use an event like that to implement the ingredient count restriction of your upgradeable Frying Pan. Probably something like
bcapi.CheckCanCraft += evt => {
if (Utilities.GetMaxIngredients(Game1.player) < evt.Recipe.Ingredients.Length)
evt.Fail("Learn to cook better nerd.");
};```
2. An event that's run during the crafting process for the express purpose of applying seasoning to a recipe. You can basically do whatever you want in the method and modify the output item. And you can return an IIngredient list which will only be consumed if the craft doesn't fail for some reason.
```csharp
var someIngredient = bcapi.CreateBaseIngredient("917", 1);
bcapi.CookingSeasoning += evt => {
if (evt.Item is SObject sobj && sobj.Quality == 0 && evt.HasIngredients(someIngredient)) {
sobj.Quality = 1;
evt.SetSeasoning(SomeIngredient);
}
};```
The only thing I'm still thinking about there is how to handle multiple different things trying to apply seasoning, and what to do about the base game's Qi Seasoning. 🤔
You can already handle your extra drops / burnt items with existing events. Is there anything I'm missing?
that works! now my texture finally is both visible and exploding! tysm!
Suppose I could just add a evt.DisableQiSeasoning(); call for mods to stop that from working.
Actually, yeah, I like that. A call to disable the vanilla behavior and a property to see if another mod has already set seasoning. Though just checking the state of the output item should be sufficient there.
since you're here I sent a PR to BC that fixes SpaceCore recipes not showing crafted count
this all sounds real good! i haven't been thinking much in general so i can't say if anything's missing -- as far as i remember the seasonings were one of the very few incompatibilities/inconsistencies with BC+LOC, so covering that is a great step to saying the two work together.
LOC includes Qi Seasoning in its own itemid: quality dict (https://github.com/b-b-blueberry/CooksAssistant/blob/master/LoveOfCooking [CP]/assets/mod-data.json#L134-L148), so at least if we only consider vanilla OR loc it'll always be accounted for
checking output item quality might give dubious results if say, a cooking skill or other cooking mod sets quality based on other factors, so it might still be worth checking the seasonings local if possible
Does your seasoning logic run before or after cooking skill quality logic?
that does assume that all custom seasonings will transpile and use the local, but hey, they all do now ☀️
uhhhh it's in my craftitem transpiler
I'll go have a look in a bit.
In a game now, like some kinda weird person who plays games instead of only modding
i'm at work now, like some kinda weird person who has a job instead of only modding. but github looks like work so it's fine
https://github.com/b-b-blueberry/CooksAssistant/blob/master/LoveOfCooking/Harmony/CraftingPagePatches.cs#L29
my cooking skill doesn't affect output quality, but it's possible that others do (eg. the original cooking skill)
crochets a sweater
so i actually transpile the default seasonings pick behaviour out of existence entirely and replace it with my own method call
which sets the seasonings local declared immediately before
Hi, I’m using this to get new invite code because sometimes invite code randomly becomes invalid:
var multiplayer = typeof(Game1).GetField("multiplayer", BindingFlags.NonPublic | BindingFlags.Static)?.GetValue(null) as Multiplayer;
multiplayer.Disconnect(Multiplayer.DisconnectType.ServerOfflineMode);
multiplayer.StartServer();
Game1.server.setPrivacy(ServerPrivacy.FriendsOnly);
When I run this, SMAPI throws a bunch of error like this:
[game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
at StardewValley.Network.LidgrenServer.receiveMessages()
at StardewValley.Network.GameServer.receiveMessages() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Network\GameServer.cs:line 263
at StardewValley.Multiplayer.UpdateEarly() in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Network\Multiplayer.cs:line 1948
at StardewValley.Game1._update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3538
at StardewValley.Game1.Update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3222
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/SCore.cs:line 1093
Is there a better way to get new invite code without causing these error?
this is an always on server?
yea
well you shouldnt have to reflect into Game1.multiplayer
there's Game1.Multiplayer
i wonder what is cause NRE here tho 
lidgren is the ip-based backend
I would say that whatever you're doing, it's the wrong thing 
So sorry to butt in here. Is there a possibility to make a mod that changes an npc's name, gender, portrait and sprite
i have been reading through a lot and my head spins at the sight of making a new npc
Yes? All of that is contained in the Data/Characters model
That's easy, yeah. Lots of examples in existing mods
what about the manifest and content .json files?
What about them?
You still need them for your mod, you aren't directly editing the Contents folder
any cp mod needs a manifest and content.json
Most aspects of editing an existing NPC are about the same level of difficulty as creating a new one, you just don't have to load a blank file to edit
i have been trying to find a tutorial on what to write for the content.json file but the ones i have found were specifically for custom npc making
unless i am mistaken and missed something
i mean they're pretty much the same
just instead of it all pointing to your custom npc, point them at someone like robin
All that changes is your Target
so instead of editing Data/Characters/Dialogue/YourNPC, it would be Data/Characters/Dialogue/Robin
Shrimply, they want the character data model not dialogue
(also dialogue is in Characters/Dialogue/[CharacterName], not Data)
what is the motivation
deleting a vanilla npc has many consequences
As I mentioned earlier though, Zomibom, there's a lot of existing mods that replace a vanilla NPC with a custom character, so you can look at their code to figure out what you need to do
Chu, it sounds like they want a genderbend mod based on the initial question
Not nulling the NPC entirely
i have been trying to disect a lot of different mods but i got incredibly confused sadly.
my goal is to replace sebastian's portrait, name, gender and sprite
you'd want to change DisplayName to get the name change to show up
noted! for replacing the portrait and sprites do i have to replace the name of the directory to the png's name or turn the png into a xnb file?
No, you just edit the existing art to overwrite it with your new files
There's a tutorial for that on the modding wiki and I'm pretty sure it's in the CP docs too
You can EditImage to replace the original XNB with a FromFile to your PNG.
That's likely the easiest method
Which mods did you look at?
Ladies of the Valley should have the portraits and sprite code at least
portraits and sprites ( i will get the path right this time) are under
Portraits/Sebastian and Characters/Sebastian
it's not hard to write up a few lines in your content.json to target those (don't forget the beach/winter sprites and portraits otherwise you'll get vanilla seb at GI and during winter 😔 i forgot to do that once.)
But I don't think they have changed the Data/Characters model at all
An Ultimate Complete Villager Manager, Portrature and one more but i cant seem to remember what it was
noted! tysm
That definitely has the image code in it
😭 for a second i was confused as to why maru was there... nope, demetrius
ill definately look into it!
Better than the Adarin designs at least, but of course they had to also make everyone younger at the same time because middle-aged and old women don't exist, right 
i would be unstoppable the moment i know how to code properly /lh
With the amount of people who ask for the bachelor and bachelorettes to be older/not seem like teens, I am surprised we don't see more of them aged up honestly
i know what im gonna make next
Finish your first project before getting too caught up in future plans 😆
i cant im too excited to make mods 
😭 im gonna be so real when i first played sdv i thought abby was around high-school age
She definitely acts pretty immature, LOL
She and Maru both felt like they were on the younger side to be sure
Same with Alex and Sam tbh
i can make my own older bachelor/bachelorette... as a treat. 😔
(this is why I aged up some of the WIP Zelda mod NPCs when I drew them.)
Ralph and Maple both got aged up
that's not very scope creeping of you airyn
Scope creeping is for people who have a handle on the basics 😆
fair fair
i think i messed it up a bit
im gonna attempt it one more time
okay imma pick it back up tomorrow
thank you all for helping me out!
i might come back and ask more questions as its giving me some trouble
Better Crafting's API file has officially hit 2,000 lines \o/
(What am I doing with my time it's just crafting)
YAYYYYYYY!!!!!! I love this!!! Heading to Downloadsville!!!
2000 lines of just declarations? Or XML docs too?
XML docs too. I should do a cloc on it to get the declarations count
I'm 42. People usually clock me as super young. Autistic ADHD queer girl powers!
my biggest API file is 918 lines long with XML docs, but that mod has like 30 of these files. but it's an all rounder library mod
for the sake of making chairs can the seats be on layers other than the building layer?
Looks like no
any info smapi 4 for android?

@tardy adder: start dealing with the xmas mod and ze dreaded sprites (again) (18h ago)
!smapiandroid
SMAPI isn't updated for Android and does not work past version 1.5.6.39. We don't know if/when it'll be updated or who will update it. It is not possible to legally downgrade to 1.5.6.39, so do not ask how to do this.
Please see Installing SMAPI on Android for more info.
Be advised we most likely won't be able to help you with android modding issues.
Also if you're asking as a mod user, that question goes in #modded-stardew, not here
No worries. Someone told me to check this place out to ask about an Android SMA for Stardew Valley 1.6 mobile. I found it on GitHub already.
It doesn't work yet, for the record. It's an alpha only
works for several mods
Don't ping me on reply, please.
btw airyn, have you turned off message highlights in server settings? or do you still want those for other kinds of pings
Message highlights is a separate thing, it's not related to pings 😅 And it's the ping background that annoys me, which doesn't get removed if I turned off @ mentions
Highlights also seems like a dumb feature
is it possible to have a single special instance of an item and change its properties to make it not sellable?
In my case, i want to a add a price catalog book in players inventory, but i dont want to allow the player to sell it or only sell it at 0 gold
You can certainly set it's price to 0
You can also make it a quest item if you're in c#
would it affect all price catalogs in the game or just this one
i think there's probably some option to do that since aren't a lot of catalog furniture unshippable?
Just do the quest item thing
ok got it thanks
oh ok
Catalogues are big craftables aren't they?
they are objects i think
they're in the furniture tilesheet
They are indeed furniture
I think you already can't ship furniture, though I haven't tried to see if Robin buys it
the book i meant was the price catalog thing which is sold by the book keeper
wiki said its sellable at 1000g , ill double check
Oh books
Then yeah probably just have to 0 its price
Wait you're trying to make just a single copy of the price catalogue unsellable/worthless?
yes
But you want any other copies of the item to have value?
yes
I don't think you can do that unless you make them separate items
oh
yeah, in a C# context, each instance should be able to have a different price
Are you a c#?
CP wouldn't really have access to individual instances of anything
CP best way I could think would to be to patch price to 0, spawn the item, then unpatch lol
item.Price = 0; is probably what you want there
but that seems implemented on Object, so maybe (item as StardewValley.Object).Price = 0;
thanks for the help it worked
I just noticed one of NOP issues reported that I thought was a Linux issue was caused by me wrapping NOP with ModBuildConfig 4.3.0.
9 days later I got to it and pushed an updated version with the updated package to fix it.
I am utterly ashamed...
I think I figured out my fish issue from the other day, for some reason I was pointing to Data/Objectinformation, instead of Data/Objects in my Edit Data for the fish items
Always fun how you can rewrite something multiple times, and rewrite it wrong each time
muscle memory is a bitch in coding...
I'm having something that I assume is a really basic issue - I'm putting in dialogue but it's giving me an error when I try and make a choice - "System.Collections.Generic.KeyNotFoundException: The given key 'PhoneCallsExpandedSVE_Hayley_DesertRequest_Yes' was not present in the dictionary". I'm not sure what I'm doing wrong as that key is loaded in the same file.
A patch export makes a copy of specific stuff in your content folder so you can see what changes have been applied.
- Load up a save (with Content Patcher installed)
- Type
patch export <FILEPATHOFTHING>in the SMAPI console and hit return - Look in your
patch exportfolder in the game folder for the relevant json file or image - If it's a json file, you can share it via smapi.io/json. If it's an image you should just be able to look at it.
I just now noticed you doubled with atra with the nickname. and I loved it
the urge to change mine to Relativistic MathPerson is bigger now
do it. embrace chaos
Hmm, I did a patch export and it's definitely there. Curious.
done. If anyone asks, I will blame you
Still the same error but I've no idea why. I'm loading the key into Strings/Characters. I'm doing a phone call but that shouldn't make a difference as I understand it, it's just the standard dialogue engine... the in-game behaviour is that the question keeps repeating and not going to any answers.
I know it is not very productive, but seems like you are forgetting to load it somewhere else.
I would test the dialogue as a normal dialogue to see if it is working that way, or look in a mod that does this through a phone call to see if they added something I didn't somewhere...
I'll keep poking around. The patch export says it's in the file but I'll try out some combinations of alterations.
are you making an incoming call (i.e. your phone rings and it's someone calling you)?
ok. the dialogue for that call can actually come from anywhere. when you add it to Data/IncomingPhoneCalls you specify the Dialogue, which for the vanilla ones gets pulled from Strings/Characters via LocalizedText
Yeah, I've been adding the phones into data and the strings into Characters. All the calls trigger fine but when I do a question it breaks on finding the responses, which is odd.
ah, ok. sorry i thought you were just loading it into Strings and maybe missing the data part
Hah, then it wouldn't ring at all! I got past that bit, I'm into the dialogue sections now which are oddly giving me more trouble than the phone calls themselves.
If it's breaking on the question, is it possible that the formatting is broken somehow? Would you mind sharing your dialogue string?
"PhoneCallsExpandedSVE_Hayley_DesertRequest_Yes": "Great, you can pick me up a coconut then!#$h#$b#...thanks!",
"PhoneCallsExpandedSVE_Hayley_DesertRequest_No": "Oh. That's disappointing...#$s#",
"PhoneCallsExpandedSVE_Hayley_DesertRequest": "Um, hey @.
#$q 1013/1014 PhoneCallsExpandedSVE_Hangup#You're going out to Calico Desert, right?
#$r 1013 10 PhoneCallsExpandedSVE_Hayley_DesertRequest_Yes#Yes, I will be soon!
#$r 1014 -20 PhoneCallsExpandedSVE_Hayley_DesertRequest_No#No, sorry.",
As I said before, first mod, probably doing something really silly
ok right off the bat you don't want # characters before your portrait choices
...coconut then!$h#$b# is what you want
i'm not 100% on how $q works but i'm fairly sure if the dialogue is linked to an NPC, the key references there are loaded from the NPC's normal dialogue asset (i.e. Characters/Dialogue/Haley) and not from the asset you are "in"
One question, if I install this mod: CJB Item Spawner, in a cooperative world, will my friends also have this mod?
meaning: dialogue items like PhoneCallsExpandedSVE_Hangup should be loaded into Haley's dialogue and not into Strings/Characters
If you want to ask questions about existing mods, you'd better ask in #modded-stardew
But to answer, you need to both have the mod to both use it. This mod in particular, I'm not even sure you could use it yourself if both of you don't have it
Ah, interesting! The wiki implied it searched through all the dialogue areas.
I'll rewrite and test it in a bit, I'll take a break from the wall first.
Which anti-malware are you using? I know some of them are often raising false positive on games
This is not the channel to ask that
There is a megathread in #1272025932932055121 , please check there!
ok so sorry! ill delete these messages
You're probably looking for https://discord.com/channels/137344473976799233/1312885102807744563
where can i find this data?
my goal is to modify the prices of some buildings in robins shop
is altering this data the right approach?
Data/Buildings?
The carpenter building menu draws from Data/Buildings, yeah. Not shops.
do i need to seperately decompile StardewValley.GameData.dll to see this data?
ive only decompiled the base game .dll until now
@lucid iron Congrats on winning today's Winter Star raffle! Your DMs seem to be closed, so feel free to DM me to get the game code.
Why are the most basic things listed as an advanced guide for modders?
yes
!unpack
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!
Ah whoops I should clarify, decompiling GameData.dll ia useful to see how the game reads the game data under the hood. Unpacking game files is useful to see what the game data actually is.
thanks. im able to see the details now
i assume CP would allow changing prices easily. But in my case, I only want the price to change after a certain condition is fulfilled in the game, so would somehow unpackin,modifying and repacking this data programmatically be possible, and would it even be the right approach?
CP can apply any patch conditionally
so you can easily set up a patch for just the price field on an item that only applies in certain conditions
Remember that changing the data won't change any existing items
thanks. i checked CP docs
the condition things seems to be the "when" keyword, which I assume would look for the state of some variables in the game?
In my case,(not sure if im following recommended design guidelines since its my first mod)
I am storing a dialog response in a local string variable, and ideally i want to check if the variable is equal to something specific, if yes, then change prices
but would this random local variable inside a mod.dll be visible to content patcher?
does your mod already have a CP content pack component?
any one mod can either be a SMAPI/C# mod or a content pack for CP or another pack framework. so to do both in one "mod", you make two mods ("components") and ship them together in the same zip
is it possible to do this only in C#? i want to keep things simple this time
if you don't already have a separate CP component, you can either add one or you can do your price changing directly in C#
you react in #junimo-bundle-rewards , and one random reacters get the free game of the day
Is there a way to add ring effects with CP yet or another framework mod that would allow this without the use of C#
I believe spacecore has it
Thank you so much!
Would anyone have a good example mod using spacecore to add ring effects? The only one I can find is Skill Rings
So, I made myself a small VSCode extension that automatically adds schema to manifest and content files, so I figured I would share, If you know of any other schema for frameworks, I can look into adding them.
https://github.com/bsavage81/stardew-modding-schema/releases/tag/v1.0.0
https://www.nexusmods.com/stardewvalley/mods/2054
this is written by the same guy who made spacecore
maybe it has what ur looking
thank you!
How does one create a door, as in add a door sprite into a prexisting area without replacing the map
like what PIF does?
I have no idea what PIF is
PIF is a framework for new rooms in your farmhouse.It's especially useful on tiny farms and in multiplayer, as time stops in that room on days when the player didn't play.Access to your pe
probably should with how popular it has become
No I would more like to add a door in the cave leading to a custom location, I have the location done, and can warp through commands, just need a way to get to it naturally
But for compatibility reasons I dont wanna overwrite the entire cave map
You would need to make your own map file with the door, and then patch it over the cave map
So use the map overlay function from content patcher?
yeah
this mod does what you are talking about
adds a new door at the back of the farm cave
Interesting mod
!stone

