#making-mods-general
1 messages · Page 408 of 1
and studying vanilla/having fun with layers
im too gay to have edges this straight
and the hardest part? Not being overly critical on yourself
that is, very hard
feel free to ping me if you need anything. But play in the space. Be ready to erase / overwrite a lot. But you've got it 🙂
seems to not be my arguments for that, it doesn't like this either
public override void Entry(IModHelper helper)
{
var harmony = new Harmony(this.ModManifest.UniqueID);
harmony.Patch(
original: AccessTools.Method(typeof(StardewValley.Locations.Summit), nameof(StardewValley.Locations.Summit.UpdateWhenCurrentLocation)),
prefix: new HarmonyMethod(typeof(ModEntry), nameof(ModEntry.UpdateWhenCurrentLocation_Prefix)),
postfix: new HarmonyMethod(typeof(ModEntry), nameof(ModEntry.UpdateWhenCurrentLocation_Postfix))
);
}
public bool UpdateWhenCurrentLocation_Prefix()
{
Monitor.Log("prefix called!");
return true;
}
public void UpdateWhenCurrentLocation_Postfix()
{
Monitor.Log("postfix called!");
}
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Unix 6.11.0.29, with 3 C# mods and 0 content packs.
time to beleaf in myself
Harmony patches need to be static
It's not a good error message
There's a few ways, I'm guessing it's something overwritten?
And u just want to do the equiv of base.draw(b) or whatever
mhm, i'm prefixing a method that's an override
but can't do the equivalent of base.method() by calling extended.method() since that just creates an infinite loop
and it's not static
i assume in this case you're making it so you can call NPC.ChooseAppearance by running NPC_ChooseAppearance_Call?
Ye
okie
Child is subclass of NPC
It's IL so u can write ldarg_1 and so on
ahh
i will do my best to yoink it too ty for the suggestion
public override void Entry(IModHelper helper)
{
ModEntry.smonitor = this.Monitor;
var harmony = new Harmony(this.ModManifest.UniqueID);
DynamicMethod dm;
ILGenerator gen;
var GameLocation_UpdateWhenCurrentLocation = AccessTools.DeclaredMethod(typeof(GameLocation), nameof(GameLocation.UpdateWhenCurrentLocation));
dm = new DynamicMethod("GameLocation_UpdateWhenCurrentLocation_Call", typeof(void), [typeof(GameLocation), typeof(GameTime)]);
gen = dm.GetILGenerator();
gen.Emit(OpCodes.Ldarg_0);
gen.Emit(OpCodes.Ldarg_1);
gen.Emit(OpCodes.Call, GameLocation_UpdateWhenCurrentLocation);
gen.Emit(OpCodes.Ret);
GameLocation_UpdateWhenCurrentLocation_Call = dm.CreateDelegate<Action<GameLocation, GameTime>>();
harmony.Patch(
original: AccessTools.Method(typeof(StardewValley.Locations.Summit), nameof(StardewValley.Locations.Summit.UpdateWhenCurrentLocation)),
prefix: new HarmonyMethod(typeof(ModEntry), nameof(ModEntry.UpdateWhenCurrentLocation_Prefix))
);
}
public static bool UpdateWhenCurrentLocation_Prefix(Summit __instance, GameTime time)
{
GameLocation_UpdateWhenCurrentLocation_Call(__instance, time);
return false;
}
not even sure how it's managing to infinitely loop into a stack overflow
It has to do with how vtables work
Tbh a reverse patch is easier
But yeah
Emit a Opcodes.Call.
in the generator for the dynamic method? what method is it calling?
oh i ithink i got it
i love you, this is fantastic. i had seen the {} item registry stuff in the spacecore example i found but had no idea what that syntax was, so thank you so much for the breakdown and explanation!!
trying to get a portrait to work for the Traveling Merchant, but I can't seem to find what her character name is? I've gotten them to work for every other character, and when looking at other mods to see what they named the png, i can't seem to get those to work either
does anyone know what i should name her png file to work in portraiture? 
In portrature I have no idea but I'm pretty sure shes just called "traveller" in the game
is the merchant actually a real npc to begin with? 🤔 i think she's just part of the cart itself. i
I see another person who likes to go nuts with canopies! 
aah it looks so nice
im still a canopy novice, one day i'll get on your level maybe XD
(That map is for Denver, when his creator is done updating him!)
well I think I'm going to add multiple layers of canopies now, makes it look so much better!
Canopies are great. With a few layers it makes it pop
Also Nova, hey!
DH! I missed you, my friend. ❤️
She's not a NPC
What kind of map are you working on?
I'm not sure Portraiture is capable of applying on her out of the box
Let me DM you the preview. Still keeping it vaguely secret!
And also she only exists with a portrait if u put one in the data
Mods like portraits for vendors do it
Secrets dont make friends
Based on breadcrumbs my theory is that joja has dumped toxic waste all over the farm and now your trees turn slimey
{
"LogName": "Editing Traveler Shop",
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [
"Traveler",
"Owners",
"AnyOrNone",
],
"Entries": {
"Portrait": "Portraits/LottiMillerVMV",
},
"When": {
"TravelingLadyIsLotti": true
}
},```
the when condition is the config i use in VMV so players can disable in case they use another mod adding a portrait
note that i load the portrait itself
otherwise calling it will do nothing
i have a silly question—when is a C# mod considered a framework? i assume my little “custom wedding reminder” thing doesn’t qualify?
or is a framework anything that allows extra features for CP mods?
🤔 im no C# expert but i guess it would be a framework when the purpose of the mod is to add stuff that other mods can then utilize to do cool stuff
there is no one agreed upon definition of a framework
my personal definition is something is a framework if it doesn't do anything on its own but gives others tools to create unique things, and those things can be unique across all mod authors who use the framework
Yeah i agree with button here
I'll add that a mod can have both mod author features as well as user features
I'd also add that how generous you are with what counts as "unique across people using the framework" also depends on the intent of the framework
small frameworks that do one thing and do it well are still frameworks
i code witha dozzen different dictionarys and cheat sheets open
And while usually people here make content facing frameworks (something that tells you to give me some data somehow) there are C# facing frameworks too
spacecore skills is a big one
There was some discuss about whether a mod that adds some more game delegates, possibly named something like THETAs, is a framework or a library 
the important thing to remember is that the specific name "framework mod" is entirely made up. you could always call your mod a framework, you just might get people questioning it. or you might not.
i would still call BETAS a library and not a framework
a bit muddier nowadays admittedly but still primarily a library in my thoughts
As you can see nic it's just how you feel about the thing 
Content Patcher is undoubtedly a framework because if you give two people its features, the mods they create would/could be totally different
I think my personal criteria is a lot simpler, if it's a mod that does nothing user visible without a content pack for it, then it is framework
The ambiguous cases come when the mod does a lot of user visible things and happens to have some content pack extension options
would you say atracore is a framework?
Yeah personcores are C# frameworks
we also have now the fact that a lot of frameworks are more CP compatible and so people can use it for one or two features without making it a whole requirement, with an hasmod condition
I can theoretically use it to have atra's fancy span string ops
for me, betas as i use it is a framework, but that's the content pack modder perspective
And atra's fancy scheduler parser
Atracore is a mistake not a framework
hmm
I mean i think basically every personcore should just be a shared project instead
(There are sub dll loading problems. And atracore has shared caches)
i am scopecreeping myself by considering that harvey should adress you to another doctor if you date him. But then i wonder if i should have it for (new project) or for harvey apologizes or if i should even merge harvey apologizes in the (new project)
It's a mistake because I'm, actually, not a game dev and not actually good at this type of code lol
i still don't really understand what a shared project is, or rather what the benefit is over stuffing things into a dotnet template
nod nod i see thank you for your opinions everyone
It's for larger bits of reused code
But it's as if you just copied over the .cs file and compiled it
so what's the benefit over stuffing it into a dotnet template
wouldn't that make a personcore better as all that reused code would be run only once
and from one central location
There's no benefit over stuffing it into a dotnet template cus that would be literally copying the code over on a filesystem level and that's like, fine tbh
I used it only because i have some stuff that only 2 mods need
I had thoughts of a personcore recently for a bunch of farm maps I wanted to make to hold all the special little extras I might wanna add for my farm maps only, that seems like a core would be better than shipping every map with its own dll
Rather than stuff I want on every mod like a static Log(Once)
Wow button joining the "c# person and their random map baubles mod"
it goes with my NPC plans which are very full of hyper specific custom ideas I plan on implementing for her alone
benefits of being a c# modder, I can do whatever I want
As for shared project vs personcore I think it kind of depends on the usecase too
I think for me C# mods intended to be used by others in the way button described (do as little as possible on their own, enable unique functionality) are all either cores or frameworks and it's largely based on how cohesive the things they do are and also kind of vibes
(speaking of thank you for reminding me I gotta move my console command stuff from CMF into my dotnet template still)
But my opinion is more that I don't want to make every single one of my mod dependent on a nebulously named chucore of unknown features
If I do actually need extended tas shenanigans in a 3rd mod one day I'll probably just turn it into a temporary animated sprites framework
personcore mods scare me
i think that makes more sense than every mod duplicating a harmony patch on some function though but changing the unique id check on top
is this not just the same thing as using it as a core mod
just with a different name
No cus I would also just rip out all the special tas stuff in mmap/trinkets and move it over to the new mod properly
So that it is an actual framework someone can use by itself
that sounds like you'd be making a core mod
I haven't done this bc i don't have particularly good unifying concept for a standalone temporary animated sprites mod
not-a-core Core
whenever you do you need to figure out how to add an IS to that acronym
Standalone
Temporary
Animated
Sprites
I
S
Wow
Is
S'awesome
i was going crazy looking at the code, that already had the line changed to IDictionary. glad you solved it
Inspired
Story
maybe "I Suppose"
But yeah not knowing the specifics is why it's just a shared project and i live with the fact that some ppl's games have 2 assets with type Dictionary<string, TASExt> whose TASExt are actually different classes all together
i was mostly indifferent till I'm now learning you have duplicate content pipeline assets /lh
duplicate internals is one thing
I think it actually is possible for me to load the TASExt from the other mod
Cus i used helper.GameContent
would need to load them as JObjects
Not Game1.content
unless you hard reference the other mod dll
So I don't think I'm poisoning the cache per say
it's possible for me to load your asset in my mod and I don't even have the TASext class
Yeah dynamic go brr probably
Improved
Solution / Situation / Selection
Improved
Conviviality / Coolness / Creativity
(Yes, i feel Static can work pretty well too)
no I literally just use JObjects from newtonsoft whenever I need to do that
stasic does still sound cool though
they are perfectly usable if you reference newtonsoft
It's not really something i explored more than a 👁️ tho
I did this for Searchable Collections Page
before secret note framework got an API that's how I loaded the note says
Note data*
asics : animated sprites improved considerably superior
Wouldn't i need functions that took JObject and turned them into the right classes tho
I'm confused tbh but I'll trust that the reflections crime lord knows what is up 
it's not even reflection!
Let it be know they won't ever be referred to as Better Animated Sprites lol
I would link it but apparently I didn't put that mod on GitHub and I'm not at my desk
The other reason for this is that back when the code wasn't unified there was just 2 different Dictionary<string, TemporaryAnimatedSpriteDefinition> assets one per mod and I never really wanted to load the other mod's tas defs over
Even though i absolutely could with no trouble since that's a base game class
The vague ass ideas i had for a unified TAS thing is
- make concept of position tracker that can be specified from content through [idk im working on it :)], this could be say a map tile, an item, etc
- make tas spawning stuff be rooted on a position tracker
if you’re still looking for something to solve
, now they got a new issue: https://smapi.io/log/248bfa5f532f41f0bc8a502fa54c0bed
Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 11 C# mods and 2 content packs.
(I can look at it myself a few hours from now, pls don’t feel obligated)
that's on you actually
this needs to be public
AnimalProduceCreatedEvent too

thanks for the quick fix
there is a setting in Pintail that makes it ignore access modifiers of types, but still look at access modifiers of methods
but SMAPI doesn't set it
(dont judge my code too much chu this mod is old im better now i promise)
(yes, i do constantly search for "pintail" in this server)
Oh it's a little different than what i was thinking
I have like a record that the live state of the tas and it takes TASExt as ctor arg
That was the "annoying to use across 2 mods using this shared project" bit
But i made my peace with it
I egosurf for my mods every day too
i used to do that a bit too
i also search for my acronyms sometimes though mostly to see if anyones having trouble or falsely attributing crashes to them again
yeah i search for Pintail to see if anyone is having any trouble
everytime i see a new message about it, i dread i'll have to look into its source code again
but i kinda feel obligated
is it used in other communitiues too, or is it mainly stardew?
Cobalt Core modding
I'm guessing making machine output value scale logarithmically with the input item price (so that processing more expensive things gives less of an increase) is not something that can be done exclusively with content patcher/extra machine configs, is that correct?
but i'm the author of its mod loader, so it's a given
ah i see, the obligation came free with your xbox sort of situation
Shockah can i pintail the content
the obligation here is because i pestered Pathos about it several years back and ended up making Pintail into a lib, which SMAPI now uses
you can Pintail a lot
So that maybe i can do smth about this
but a dictionary is gonna be a total pain in the ass
I suppose you can make discrete buckets up to a certain value
but yeah I don’t think it’s possible to make a log-like curve with just the basic arithmetic we have access to
buckets are probably good enough™, items more expensive than 2000g don’t exist in my book
I tried to do a similar thing but couldn't figure out the best way to do it, in the end I think the recipe.json file is somewhere around 200 lines long just for some recipes that produce the same thing
And if I wanted a properly smooth curve I could theoretically make a bucket for every whole number input (up to say 2000)?
(oof I lied, it's not 200 lines long, it's 3000, yes thousand)
indeed 
Horrendous, I will not be doing that
if you wanna dip into c# for this it’s a perfectly fine good first mod
not with CP alone. I don't remember what extra machine stuff is doing, i believe however PFM may have some calculations allowing to approach that
basically, CP price changes are limited
but PFM if i remember well can have stuff like "base price * multiplier + addition" which allows better modularity of price
however my math knowledge isn't good enough to remember what a logarithm is looking like really, so...
last I checked PFM has even less options than vanilla quantity modifiers
(just multiply + add)
Exponential curve reflected across y=x
to clarify, you can do price modifiers with CP machine output
yes but they have annoying limitations
as far as i remember you were able to do only either addition or multiplication of base price but not both
you can do both, and then some
I think you accidentally set the quantity stack mode to Max or Min instead of Stack
no, i remember the stack thing
i can't remember the exact use case i
ah yes
i wanted also a max price
so i can't have an item like "price is 2* the initial price +500 while being max 15000"
For that you can just make a second rule with cond on item price perhaps 
which PFM allowed as far as i remember
you can do a Set operation conditioned on the output item price being larger than 15000
well not 15000, but some input value that would have the output being larger than 15000
mm
so “set price to 15000 if the input’s price is larger than (15000-500)/2 = 7250”
this is good to keep in mind but :
- math
- still less straightforward than PFM
- math
- i am not sure how i would even set that
But it's good news for MissSweetBean
it’s less straightforward but way more powerful 
yes
still wont help with log though sadly
Silly question. Is there a way to re-trigger a DynamicToken at the start of each day?
Right now I have this:
"Format": "2.7.0",
"ConfigSchema": {
"Ammo": {
"AllowValues": "Baby,Eevee,Pam,Random",
"Default": "Baby"
}
},
"DynamicTokens": [
{
"Name": "ChosenAmmo",
"Value": "{{Config:Ammo}}"
},
{
"Name": "ChosenAmmo",
"When": {
"Ammo": "Random"
},
"Value": "{{Random:Baby,Eevee,Pam}}"
}
],```
But i'd like to re-trigger daily when random is chosen
i mispoke of poor data/machines format and apologize to the fields i hurt /lh
it should already change daily
how are you testing the changes?
Im in game and sleeping
Wait. I just got unlucky apparently and got the same one 4 days in a row....
slept one more time and it changed
ugh
you don't have that much values so it can happen (althought i understand the frustration)
Sorry to bother
...I should add a Rubber Duck
it is usually when i have the adrenaline of "i asked for help" that i notice the typo i missed the 5th previous times
because OF COURSE
Alright, a related question: does the game store an item's value as its base price and then only apply profession modifiers when sold/rendered through the price catalogue, or does it hold the value modified by professions in the item's data?
former
Lovely, that's what I had hoped
[game] Can't parse tile property 'Action' at Buildings:25,13 with value 'DLX.PIF_Door_Warp_INTERNAL_USE_ONLY' in location 'handwrittenhello.dbda_CrystalAndNiko': required index 1 (Point tile > x) not found (list has a single value at index 0).```
this is an error from PIF - personal rooms, right? any idea why it's got an issue with my custom map? this is the door and tile data at (25, 13)
Oh hm do you have a placed pif door
no i know nothing about PIF
Why...
It's a fairly easy fix but I don't understand how it's even happening in the first place 
@spice inlet hello remember the internal use tile action i added in my PR? Can you change it so that the action name no longer contains the word Warp? For some odd reason it's hitting map warp point parsing logic and emitting a base game warning.
Just ignore it is harmless lol
There shouldn't be any issues changing it since it's internal use only 
i'll let the player know it's a harmless PIF issue and they can ignore it until PIF is updated 👍
To explain what this is, i added this so that PIF can do door zones on it's furniture
It's not meant to be placed into a map ever
Hence my confusion about why this is getting fired
yeah "internal use only" kind of implies you shouldn't see it lol
if it'll help you debug i'm happy to send you my map
Do u have pif installed
logless...
I mass renamed a bunch of mmap's (non internal) warp actions to wrp specifically to avoid this warning lol
yeah did you guys know "submit a log with every bug report" actually means "do whatever you want" lol
someone commented about this issue earlier today. ^^ fairly simple fix
Thanks! Apologies for the trouble
not your fault the game has magic strings like that ^^;
the error didnt pop up during testing either and apart from causing confusion it appears to cause no harm
many of the bugs I get at work rn are like that now that I think about it
Just lurking in the codebase, waiting to ambush you
the customer reports an issue, qa reproduces it and opens a bug, I recreate the test case, no bug. Check with qa to make sure test case is correct. yes. she cant reproduce the bug anymore either
absolutely classic
tbh that's me whenever i have to report anything to IT. i'm sorry i swear it wasn't working before
i can't change this smoke without C# can i
Nope
😔 sigh
i refuse to do C# for a furniture recolor
i'll just have to never turn the cauldron on
Just want to ask, is this mod possible to do with Content Patcher?
The logic is simple;
If condition is met, change item description.
The condition could be anything like:
- if player in [place]
- if season is [season]
- if [item] is placed in [place] (statue of perfection is placed on farm for example)
And whether to have double condition, for example if season is [season] comes first then if player in [place] after
The first two are possible, the third is not (with just cp)
Ah okay, can we make it have multiple condition though?
Like if condition one is met, it will have A, but if condition two is also met, it will be A + B, in this case would be text a and b concatenated/combined, or have an entirely different text if both conditions are met
you can have multiple conditions
content patcher can have AND and OR conditions, yes, although i believe you need to define every possibility (so if you had A and B, you'd need A, AB, B, neither)
Cool.. that's all i wanted to know. Thank you very much guys!
If you add a new furniture you won't get the smoke
You can add the smoke with mmap if you want
I never tried it with toggle tas but i can look into it
can i check a dictionary in C# to see if it contains a key which is a valid spouse name? i'm trying to write this condition (which is all sorts of wrong but the closest way i knew how to express what i want). i'm trying to return a spouse-specific message if it exists, but the default message if a modded NPC hasn't had a message added
ContainsKey?
you don't have direct access to the dictionary here
do i have it somewhere else, or not at all
string line = Game1.content.LoadStringReturnNullIfNotFound($"yourasset:{spousename}") ?? Game1.content.LoadString("yourasset:default")
this is what i recommended earlier
oh i must have missed that, my bad
so with this i don't need an if/else?
to break it down a bit this is what it says as multiple lines:
string? line = Game1.content.LoadStringReturnNullIfNotFound($"yourasset:{spousename}");
if (line == null)
{
line = Game1.content.LoadString("yourasset:default");
}
// now line will definitely be a usable string
oh that makes it clearer yeah
the ?? is called the "null coalescing operator" and it's like fancy way of saying if this is null do another thing afterwards and put value in same place
im sure there's uh, roslyn details for what it actually does
The cursed part about ?? is that you can use it to throw exceptions.
In this case I think so but sometimes it will use Dup instead. I think maybe when it would require allocating an extra local otherwise?
can i do this outside of my GameLoop methods?
if i want to make the code cleaner?
well you can put it in a property
but you shouldn't keep the line around unless you want to implement invalidation handling
i thought invalidation handling is what i was doing by returning the default if spouse key doesn't exist
does invalidation handling mean something else
What chu means is that if you store it anywhere because the data might change and you'll have know when to recheck it
So either don't store it or keep an eye on the asset
Invalidation handling = What if someones Content Patcher patch on your asset changes?
Like, what if a When condition no longer applies, so they are adding something different to your custom asset now
and if i did it outside of the methods, it would be storing it? and wouldn't be checked after being edited by someone else?
(ofc not just for CP but mostly CP)
well if you did the loadstring directly at where you need it
game will try to fetch from the content manager cache, or get from asset requested edit
harmony patching the content manager is both fun and nutritious
don't knock it until you try it wren
it enabled me to do things that are absolutely possible to do in other ways
You're a worse criminal than your dog
look I spent like a week actually caring about writing good code, I needed a break asap
I love it when people say certain harmony stuff is a crime and they are some of the only harmony usecases I've done
"dont harmony patch smapi", "dont harmony patch the content manager", "dont harmony patch other mods harmony patches"
ive done 2 out of 3 there
unless you count patching SMAPI loading tilesheets for ATA as both 1 and 2
harmony is a path to behaviour some would consider... undefined
(i wouldnt)
does anyone know where the sprite of shane from his 6-heart event is? I know where the portrait it but I can't seem to find the actual sprite 
for the purposes of 1 and 2, 2 doesn't count as smapi
it's in LooseSprites/Cursors near the seagulls at the bottom around the rainbows
have you checked cursors
oh okay
it is! tysm!
how did you have that memorized omg 😭
built different 😌
cursors is like choosing C on the exam when you don't know
i showed my working, that's worth a pass
basically a 100% chance unless d is all of the above lmao
I've patched smapi and also spritebatch. Neither is in any of my current mods though (1 discontinued the other unreleased)
In 1.5 I was transpiling SGame.DrawImpl for Reasons™
(and now I don't have to)
Quick question - How do I go about adding multiple object properties of the same type (e.g Action) to an object in Tiled? Do I just type each property on a separate line? Thanks, first day learning.
I want to warp and playSound at the same time
you will need a framework for that
i use spacecore and betas for that but i believe you can do it with just betas now
i think u can also do it just with spacecore right
maybe that’s what i’m thinking of instead
trigger location changed condition on your custom location spacechase0.SpaceCore_PlaySound
you can achieve the same result with both BETAS and SpaceCore (though technically BETAS is slightly more flexible)
are you trying to replace the door sound with something else?
I see, thank you for the help! I just have two minecart warps between the upper and lower levels of my map and wanted to add a minecart sound to them
i thought minecarts have it
i also thought minecart networks played a sound by default
apparently not though, i dont see it in the decomp
interesting
berenstain beared
false memories...
new mod where using the minecart network requires you to complete one bespoke level of Junimo Kart before you arrive
and if you fail you die
Is that when using the MinecartTransport property? I'm just using warp because its two minecarts on the same map file and I don' t want them connecting to anything else
is CS custom shops, computer science, or cee sharp
central station
am i doing something wrong??? the path is right but i keep receiving simapi error: [game] Failed loading texture assets/objects/Stuff.png for item (5)Bunbun: asset doesn't exist.
well, we were wrong about there being a sound for minecarts anyways, so dw about it
do you have another patch which loads the texture? you need that and then set your texture to whatever the target of that load is
you can make a minecart network independent of the Default one though
Texture isn't a local asset, it's a game asset target. you need to Load it yourself in a separate Changes entry
i have this, is it right? still not working tho
good! now use that Target as your Texture value
use Data/Objects/{{ModId}}XavierObjects as your texture
nah i made that mistake many a time
spawn a new item
trash the old item and spawna new one
I gave this mod so many stuff its making me go crazy lol
WORKS!!!

Thanks girls ure awesome
do i need to do anything to a WeakReference on a IDisposable
nvm this is a silly question i should just not use a weak ref 
Take the ref to the gym. Get it good protein intake. Will be a strong ref in no time
that'd be pretty bad
extra-strong refs that keep your data in ram even when the game/system is shut off
why keep it in RAM? too volatile. theres a perfectly good system drive you could fill up to the brim instead
(also idk because my solution has also been "just use normal refs"
)
i believe people call that malware
is it malware if i name my mod "Fills Your System Up To The Brim Framework"
IDisposable is "please, gc, clean up for me if i fuxk up"
WeakReference is "please, don't let this become a memory leak"
so the actual usecase i have is
- i need to assign a crib (Furniture) to a Child
- i have a
ConditionalWeakTable<Child, CribAssign?>atm - when child is older than 2, i will do a manual remove of the child from the CWT
- at this point i could handle all the unassigning bits, but what if i make
CribAssignanIDisposable
to me that sounds like whatever is removing the child should also just remove the cribassign
yea i dunno, i do think i am being very extra 
Hello
i am getting this error
error CS0234: The type or namespace name 'Framework' does not exist in the namespace 'GenericModConfigMenu' (are you missing an assembly reference?)
I am following the instruction in https://github.com/spacechase0/StardewValleyMods/tree/develop/GenericModConfigMenu
How does the meadowlands farm start with a coop? I'm making a map that I'd like to also start with a coop. I'm looking through that farm in Tiled & map properties and not seeing it there
it's hardcoded
you need either spacecore or buildings included
sorry for asking again but is something wrong here? I set the correct texture path but its that red circle again https://smapi.io/json/none/86bb3c6039054fd2891a06667ac686d9
same path just another item (a cooking one)
blehhhh ty lol
i checked the templates and everything but it seems right?
Did you set the texture to the right thing before you spawned the item in game?
Yeah
Suddenly the other one isnt working anymore too

Dammit
Did you change your Load patch? The one I'm replying to? Or accidentally delete it?
Nope, its still here
Can you show a screenshot of it?
maybe you made a typo and fixed it without realizing
I recommend that you press Shift+Alt+F on your keyboard to fix your file's formatting by the way
Probably lol
It's much easier to see if you have made mistakes if your indentation is right
But is the template for adding to the shop right and recipe? I dont even know i just got it from wiki but there wasnt any ready
@lucid iron For your animal & building MigrateIds PR:
- Do you have a test save to make sure they still work fine after my changes?
- What happens if you don't remove the interior location when migrating to a building type whose data doesn't have one? I'm just a bit worried about players accidentally losing everything inside a building (e.g. animals, machines, etc) if a mod author makes a mistake in an update.
- i had one but ive deleted it sorry, can make another
- mods like lookup anything explodes because the reference for interior remain on the building unless i manually remove it and it's also just inaccessible, i felt this behavior is expected and basically like removing a location adding mod, but perhaps more warning is needed
No, your hotpot's ID should be {{ModId}}_BeefHotpot (or {{ModId}}_Beef_Hotpot if you want) and so should its "Name".
Your recipe patch should not have the "Hotpot": { bit on line 40, the ID of your recipe should be {{ModId}}_BeefHotpot (or {{ModId}}_Beef_Hotpot if you want) the same as your object, and you need to actually add your {{ModId}}_BeefHotpot object as the yield because at the moment your recipe doesn't produce anything (you have the wrong number of fields, check the wiki page again).
Your shop entry needs to have the key changed to {{ModId}}_BeefHotpot (or {{ModId}}_Beef_Hotpot if you want). Same with the Id and ItemId field. If you want the shop to sell the recipe instead of the object, you have to add "IsRecipe": true. And your MoveEntries bit is wrong - you need to be moving your item entry before a different, already existing entry in the shop.
Here's a tutorial: https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Recipes_with_CP#New_Cooking_Recipe_for_an_Existing_Item
I just didnt put modid cuz i wanna make it a gift in i18n default file
If i put the gifting thing next to like {{i18n:food}} for example in the dialogues on content, it wouldnt work, would it?
I don't understand your reasoning, sorry. Why would your gifts list be in i18n? Anyway, if you don't put {{ModId}} then there's a risk that another mod will have the same item and your mod will break.
Not the list
Just the command to give a gift in one of the dialogues
You can just write out your mod ID in full there
In i18n? So it works in the default json?
I thought it wouldnt since it doesnt work in dialogues
What is your mod's ID?
mylittlestar
The whole ID
mylittlestar.Xavier
Okay so in the default.json instead of writing {{ModId}}_BeefHotpot you'd write mylittlestar.Xavier_BeefHotpot
omg
Im stupid

Changing it rn
Ty
I swear im not dumb ok my head is just different (doesnt work right) 
It's easy to forget you can just do that
I've had my own "wait, the token stands in for text, I can just use the dang text" moments
alternatively you can pass item name as a token to the i18n
which is better
if you're just going to write the text again why even use tokens
i would just split the dialogue into 2 keys tbh
well yes, ideally you'd be adding your individual translated display texts to the gifttastes string, not the other way around
e.g.. "{{i18n:gift.loved}}/10 20 30/{{i18n:gift.liked}}/40 50 60/{{i18n:gift.disliked}}/70 80 90/{{i18n:gift.hated}}/100/{{i18n:gift.neutral}}"
or however gifttastes are fielded
then you can use your {{ModId}}_myfunnyitem text in the item IDs as usual
If I understood correctly, this is about an NPC giving the player the dish
I would personally just put the command to give the item outside the i18n
ah. i mustve been on autopilot
then yes, either put the whole command outside of the i18n and in the token string, or pass the item name as a token to the i18n
NPC Clothing Framework is updated to 1.6... it might even work as expected! https://www.nexusmods.com/stardewvalley/mods/13940
the CoopToSilo save has 1 coop with 1 chicken inside, and a patch like this will turn it into a Silo
https://smapi.io/json/content-patcher/14cf434245844218a71cb5c2b9bbc55c
at this point the game will start having StardewValley.GameLocation.updateEvenIfFarmerIsntHere exceptions every so often, though it didn't crash ought-right
the second save is after sleeping on CoopToSilo, and a opposite patch can be used to turn Silo back to Coop. this does actually keep the chicken around
@red egret if you're interested, i ended up making that wedding reminder mod that you suggested! #mod-showcase message
(I'm just about to sign off for the day, but here's a preview build in case you want to try it in the meantime.)
I also sleep gn 
Sleep well Chu. Go to bed knowing I now understand Localized Strings because of you and will be making much use of them
Does anyone know from experience if for Alternative Textures, can you Skip IDs?
For example:
"ManualVariations": [
{
"Id": 0,
"Name": "1-NonSeasonal.Empty.Basket",
"Keywords": [
"Empty",
"Basket",
"NonSeasonal"
],
"ChanceWeight": 0
},
{
"Id": 1,
"Name": "2-Seasonal.Seed.Weed",
"Keywords": [
"Seed",
"Weed",
"Seasonal"
],
"ChanceWeight": 0
},
{
**"Id": 5,**
"Name": "3-Seasonal.Tea.Bush",
"Keywords": [
"Tea",
"Bush",
"NonSeasonal"
],
"ChanceWeight": 0
},
I skipped from "Id": 1 straight to "Id": 5
Will [AT] accept that and still merrily list options in order or will it throw a fit?
Ok so I just checked: [AT] doesn't throw a fit in the sense that it doesn't print angry red text to the console: But it DOES refuse to acknowledge the non-serial ID even exists.
...This sort of complicates things.
Super, this will work nicely! 😁👍 good job.
chances are this is me being stupid, but schedule isn´t working. npc spawns in but doesn´t move
{
"Changes":
[
{
"LogName": "Ogami Schedule",
"Action": "EditData",
"Target": "Characters/schedules/{{ModId}}_ShirouOgami",
"Entries": {
"spring": "610 BusStop 29 18 2/a900 Hospital 4 14 2/a1500 Town 32 55 3",
},
},
],
}
If you made this happen on a new save, did you sleep a day first?
Schedules won't start working until you've slept a day, if you put them in a save in progress
i´ve tried this, yes
Have you loaded a blank schedule first?
i haven´t, might i ask how i would?
Add this patch before your EditData one.
{
"LogName": "Load blank json",
"Action": "Load",
"Target": "Characters/schedules/{{ModId}}_ShirouOgami",
"FromFile": "blank.json" // this can be in a subfolder if you want
},
Your blank.json file should contain a closing and opening curly bracket pair like this:
{}
like this?
{
"Changes":
[
{
{
"LogName": "Load blank json",
"Action": "Load",
"Target": "Characters/schedules/{{ModId}}_ShirouOgami",
"FromFile": "blank.json" // this can be in a subfolder if you want
},
"LogName": "Ogami Schedule",
"Action": "EditData",
"Target": "Characters/schedules/{{ModId}}_ShirouOgami",
"Entries": {
"spring": "610 BusStop 29 18 2/a900 Hospital 4 14 2/a1500 Town 32 55 3",
},
},
],
}
No, you've put the Load patch inside the EditData patch. You need to fix your brackets so they're two separate ones inside the square brackets of the Changes block.
ah, okay !!
HE IS MOVING !!!
thank you for the help ❤️
is there a standard style people have gravitated towards for mod-added custom GSQ IDs
modid or just mod author prefixed
in uppercase? with period?
iirc normal casing with a period seperator
the one thats shipped with ContentPatcher is Pathoschild.ContentPatcher_MigrateIds
so guess it is underscore seperator then
thats a trigger action not a GSQ
ah true
GSQs are almost always {{ModId}}_GSQ_NAME_LIKE_THIS
e.g. Spiderbuttons.BETAS_HAS_MOD or EscaMMC.EMP_IS_TIME_PAUSED
i bet that sure looks a lot better with an acronym uniqueid than with blueberry.BlueberryMushroomMachine.CP_MY_FUNNY_GAME_STATE_QUERY
(though i guess maybe a not so good example to use two mod ids where the mod name is all caps'd (though i did just guess what EMPs is idk what it is)
Esca.EMP_IS_WORLD_READY from their docs
im sure all internal IDs would look better if we didnt follow the mod id convention
but we do in order to prevent conflicts no matter how unlikely
when VS eventually loads I'll dump the list of GSQs my modded save has to see if there are other examples
this is nice
your VS might need to lose a little weight
there isn't perfect consistency
most common is modid_UPPERCASE_ID
but there are some that modid all lowercase, some that modid all upercase.
VMV has both
VMV.HasSeenActiveDialogueEvent
VMV.MONSTER_NAME
and whatever this is, does the inverted convention
NAT_NIV_DonatedSpecific
NAT_NIV_CaughtSpecific
having both is diabolical
i feel like its just beneficial/less confusing to stick to what mod authors already expect a GSQ to look like, which is screaming snake case to match the 100 or so odd vanilla ones that set the example in the first place
thrilled to see the love of cooking is the only mod in the list which uses screamingsnakecase and a unique id (maybe unlockable bundles counts)
really i'm the one breaking convention here
I find the ones that put their modid after the PLAYER_ prefix hilarious
i think it's actually spacecore doing that for custom skills lol
i definitely didn't pick it for the cooking skill
cute that it makes them uppercase to match gsq style
ah yeah, they all also ended in _LEVEL
does anyone have an idea why the nexus mods site is no longer remembering form entries for autofill? at some point it stopped remembering things I put in forms and it only has very old autofill options in its forms. I'm using Firefox
firefox dropdowns for past input is just quite unreliable
the firefox cache is also quite volitile, depending on your privacy settings it gets cleared after a little while I think?
Are comments on nexus weirdly escaping characters for anyone else?
oh i saw that happen
I haven't replied to comments on nexus recently so it started happening sometime between now and a week ago, at least the comment still is there
why firefox, we trusted you 
can't remember off the top of my head, whats the standard form for QualifiedItemIDs for mods?
Like is it (O)[ModName].ItemName?
preferably "(QUALIFIER){{ModId}}_ItemName"
awesome, So if my mod was called abc and the item was called def and it was a standard object it should be (O){abc}_def ?
or is that double brackets
so (O){{abc}}_def?
{{ModId}} is a content patcher token which CP replaces with your mod id. don't use literal braces
no, your item would be "(O){{ModId}}_def"
use the item's actual id as seen by the game, and prepend it with the qualifier, which for object is (O)
Is content patcher a seperate thing from SMAPI? my mod is currently just using SMAPI and harmonylib
yes
If you are doing stuff in C# then just do normal string interpolation
are you writing your qualified item ID in a C# mod? if so, you can't use CP tokens or tokenisation
- is this for your item in your mod, or are you specifying an item from another existing mod?
this is an item in my mod but I wanna make it work with the standard for other mods for compatability reasons
ngl I was using item ids like 3501 etc. which I'm trying to fix way later than I should be
definitely do not use number ids
I guess it's probably worth asking like
for an item from your own mod, you might use $"(O){this.ModManifest.UniqueID}_def" for the qualified ID (assuming it's called from a ModEntry instance)
just wanna get things up to standards so I don't mess up other mods
Do you actually need C# here lol
yes my mod adds a loooot of C# stuff
(it may still be easier for you to outsource the content parts of your mod to a CP pack)
for example, if you have an NPC, using CP is likely to save you work since it already has many helpful features that you would have to implement yourself
Then yeah get ur mod id from Manifest.UniqueID (did i spell it right)
yeah it's fine to divide your mod in half and add all the content via CP. i'm just wrapping up doing that for Mushroom Propagator
imo it's much, much better
I also just put my own mod id in a const string cus it is not like I want to change it often
Content patcher is ridiculously powerful in what it can offer. With a bit of creativity I’ve managed to do some things that should’ve technically been with C#
also weighing up renaming the solution and projects from BlueberryMushroomMachine to MushroomPropagator
i'm happy to rename the whole mod, but it does involve wiping all the git history
which is rotten
❎ rotten
✅ fertile fungi grounds
while true,
i am fond of telling people that my NPC started as all-C# and i switched to CP for most of it when i found myself reimplementing content patcher poorly
hah yeah I'm sure I've done tons of stuff that content patcher already does better
i'll push develop and see how well github likes it
but I'm not in a position to change it rn cuz the structure is very dependent on the items being in the C#. Thanks for the help with the IDs though guys!
--force solves everything trust
believe me, because of the whole content pipeline structure and separation of assets from codebase, there's no amount of coupling that can stop you from moving all the basics out to CP
it might be dramatic, but it's doable and a huge improvement
just to be 100% sure we got it, how to format your unique string ids
anyway i'm not gonna tell you how to make your mod, just tell you how i made mine
that's for the id itself. the qualifier is separate and you put that on if you need it
thanks for the advice!
i am making yet another child, and fighting more pixels, someone save me from myself
I like having purely content mods and purely c# mods for vague feelings based reasons personally
the qualifier is definitely gonna get confusing. Hoping I dont break anything here
oh well, I'm sure I will, but shoulda started with stringIDs rather than numericIDs
Just so u know if ur mod is already released people will get error items bc you changed id
yeah its not yet thankfully
I'm changing it before release so I don't have that problem later
[sweats in error sushi]
Content Patcher has a traction for fixing this (migrateids) at any rate
Bea u probably could have used it
i did not know this
qualifiers are pretty simple, it's only adding new ones that gets hairy. it's worth noting that you can't use the qualifier in certain contexts, such as Data/CraftingRecipes keys, but you have to in others, such as in Data/CraftingRecipes output fields 💫
or rather you have to if there's ambiguity
i am once again sadge about things i don't know
i thought ignorance was meant to be bliss
yeah thats what I'm worried about haha
I think it was made to migrate JA to 1.6 CP
Is there a mod that adds a new qualifier
chu you'll be glad to know that my "core mod" has its own bespoke migration stuff in it because i'm not sane (and because i think it predates CP's)
don't worry, a minute of testing is worth an hour of troubleshooting. just try things as you go and you'll be fine
It's not for u persay, just to move the would be error items
true true
per se*
👁️core moment
ya'll got cores
sure, i make one every minute. LOC has one, mushroom propagator has one as of an hour ago, RGB probably has one, unfinished mod has like half a dozen by now
Why do keep making them
(i don't, but chu calls lacey my core mod because it's full of weird core mod shit. its name does contain the word "core" but that's mostly unrelated)
LaceyCore
What if u just make one qualifier (BB)Thingymajig
it's almost a requirement to make a new qualifier if you create a new item class and have it created through the ItemRegistry
because they're entirely different classes of items
I guess that's the other part I don't understand cus I am allergic to new classes too
if i made one qualifier the definition would have a dozen branches
you'll find there's only 3 results in this channel if you search BaseItemDataDefinition and 2 of them are me
I think i been getting by with just (O) from a special item query
my strategy is to avoid creating items that aren't (O) 😌
highly recommended

i was considering having a config to move sushi stall to central station but then it's like:
- im gonna get comments about where the stall is if they enable it by accident
- ew, maps
- effort, mostly
also do people who use CS even like, go places
once CS has the rotating shop feature it'll be easier to have it as an additional content
Yeah I don't think it's there atm
and people may have both shop at the same time but honestly since they warp, why couldn't the npcs anyway
However I was always confused that the sushi stall is in the forest instead of the beach
i would say it's the kind of things i would personally keep as a "future scope creep"
there are fish everywjere
Yeah but you shouldn't eat fresh water fish raw, parasites
fairy vendor does fairy magic to remove them for the sushi, clearly
surprised that git is okay with renaming the whole project, history shows up fine in vs and github. very cool
this is extremely not a concern in stardew, have you played the game smh /lh
vanilla has u making sashimi with anyr aw fish
Is the fairy FDA certified
if your farmer isn't horfing down cheap raw fish and algae to make more energy for more fishing what are you even doing
yes farmer. throw a pufferfish into the luau soup. doom us all
Fairy Doeswhatshewants Administration
exactly 
if you wanna file a complaint, you must give your name
dynamic dialogues my beloved
(featuring DSV for haley/emily portraits, and quinn in the background)
cool!
shouldn't the 2nd one be "Emily has a lot of different ones" or even "different types"?
look at me, talking about grammar. who am i
oh yeah, i often have extra or missing s
skipping letters like it's french. smh 
the cheese is distracting me
Food and drug administration iirc
ah, t'was a joke, should've added /j
FDA probably doesn't exist for stardew
unless it's the actual fairies being like "eat a raw fish"
Probably it’s fairies in Stardew
Making it so none of our wine goes all gross
Despite the fact that we literally just learned to make wine
u put it in a keg and forget about it till its done. magic i'd say
god i wish i updated instant farm caves before updating the mushroom propagator
what does intant farm caves do?
instead of the cutscene u just get it at game start?
without delay.
he do be talking a lot
Just give yourself 14499 money only
I was thinking of making a mod which replaces the regular NPC’s to Attack on Titan characters, but it might take effort so if anyone wants to help me it’s definitely appreciated! 
Can you rewrite his event to make it skippable
Just send me a DM
code for that wouldn't be very difficult
There's several AoT new NPC mods out there (but don't let that stop you from making your own!)
I point this out because you don't need to replace vanilla NPCs you can just add new
has any one of them made a titan for them to attack
in general there's a lot of mods that replace NPCs
Yeah I’ve seen those! I was just thinking of making one that replaces vanilla NPCs because I feel like it would be more immersive for me
Sure go for it
I don’t think so, I wonder how that would work 
But take a look at the npc guides anyways
isn't there like a boss monsters mod or framework or something
Okk I will!
replacing vanilla NPCs other than visually is actually arguably way more difficult than just making new NPCs , i was originally going to do replacers for my pokemon expansion and decided it was very not worth lmao
!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!
i assume you'd use that (i don't know anything about attack on titan. i assume the titans are big)
Oh seriously 😭
yeah aede made one ichor
Yeah compat very hard for lore things
changing schedules.. houses. dialogue. etc
But hey you should only care about compat in ur own mod list
i'd argue replacing a vanilla npc is simpler if you're not going the full distance, since you're fine to change only as much as you like, all the rest is done for you in one way or another
Oh I was just thinking of replacing sprites and portraits, not changing the lore
they are quite large
https://www.nexusmods.com/stardewvalley/mods/5864
thi isn't a framework per say
We r ofc gonna warn u so u know what's the deal
if it's only visual then yeah replacing is not difficult at all
oh yeah for sure
i was going full deranged mode and wanted dialogue and my self indulgent lore and stuff so 
Yeah I was just thinking visually
Realized it was better to go full expansion for my case
so do you go through central station to get to johto, or /lh
visually is simple enough, just it's impossible to account for all the instances where names and nicknames appear in various dialogues and events in the game. it's best not to worry about that though since it can't be helped
Yeah that’s true 😭
there's C# mods out there that will try and replace them for you, but nothing's all-encompassing
dialogues and not using display names instead of static ones
Maybe I could just keep the names, imagine a portrait of Eren being named Clint 😭
easier as a game maker, not so much for a mod maker
LMAOOO
it won't straight up be going to a pokemon region(I prefer having NPCs that fit into sdv lore rather than going full 'they got isekai'd' or Yeah This Pokemon Location Exists In SDV Now) but I'll have it accessible via central station and possibly the bus once unlocked
current idea is that it's actually not Horribly far from pelican town but not super close either
shane would adopt a chicken pokemon
Does CP have an if/else syntax? I doubt it, but wanted to double check. Would love to write something like:
"Min": ( conditiontrue )? "VAL1" : "VAL2"
But I'm guessing I just have to keep creating paired dynamic tokens
CP has query
they can do a lot of stuff but you need the proper format
i can't really help with that as i don't like the logic involved but if you need help you may need to provide some context
Alright. I've used query but don't like the syntax. Was hoping for a shorthand
Ah well xD
if i wanted to change the machine assets in industrialization redux to something else would using the method used in bogs resource rituals be the best way? link to bogs: https://www.nexusmods.com/stardewvalley/mods/26331 link to industrialization redux: https://www.nexusmods.com/stardewvalley/mods/22351
I love the mod Resource Generators so I reached out to them to see if I could make a retexture of the machines to fit with my mods better. They approved and im so excited to bring to you a ritual summ
it will be hard to tell for people not familiar with those mods
for industrialization, the asset files contain one large sprite index rather than individual files
you may want to provide examples of the goal and the method you want to use
large file is slightly better in term of performance, althought it is probably negligible on this scale
so it's about what is the easiest for you (what is the most logic, easier to maintain and such)
forgot to do that sorry! did an edit that contains the links
Sorry if this is a dumb question - if I export a vanilla tilesheet (e.g. outdoors.tsx) to load and use in a custom map, do I have to include that tilesheet with my mod's assets?
no
no, it's not dumb, and no, you don't include vanilla assets
you can have them in the same folder if needed if they are prefaced by a dot like .spring_whatever
i find it cleaner to not have them at all in mod release, but i know different people work differently on their mod
Thanks, that's what I thought but for some reason outdoors.tsx can't be loaded unless its in the same folder as the map file
Ah shoot, I didn't realize in my process of learning to not copy tiles between maps... That means I'll need to include the tilesheet with the dot preface, I assume?
i'm not sure of the reasoning?
Sorry, I'm quite confused right now because I'm learning so I might not be able to communicate what I mean in the best way. I exported outdoors.tsx from the Mountain map to use to in my custom map. In the process, I copied the train tunnel tiles from the Mountain map and pasted them to my custom map. Now when I try to load my custom map, it refused to load unless outdoors.tsx is in the same folder as the map file. I am not quite sure what to do from here
you need to embenning the tilesheets if i remember right
this option (yours is likely not in french)
honestly i'm not quite sure of the details so you may want to have a backup and tinker with stuff
if it's a tsx file ur doing it wrong
not really, it is convenient to import some datas as far as i remember
all the tiles animations
if they're just using map tilesheets like spring_outdoorstilesheet is it also fine? will the game recognize it.
i mean, it's why i suggest the embedding, but potentially, i don't remember what is the content of the file exactly
The method I've been using is Map > Add External Tilesheet which loads a tsx file. It doesn't prompt to embed it. Should I be adding a new tilesheet instead, checking embed in map, and setting up the animations myself?
there should be a checkmark, lumina showcased it
I am unsure how smapi handles tsx maps
Tene Nova got me using tsx sheets bc they save all the animations in vanilla on export. I just always forget to embed it
if you embed it you can remove the tsx file later?
Thanks, I've found the embed button on the tilesets tab and it now works without the tsx file 🙂

Yeah
There's no functional difference between just the png and a tsx after being embedded, all the data is in the map afterwards
The tsx just comes with the data already bundled in
yeah it's really convenient if you set everything on a map in term of anim and for whatever reason needs to export it to another but can't copy the map as a base or whatever
ah, I understand now, thank you Ender and Lumina 💜
Hi, I'm a new to mods.
I wanted to know if there's a way to ALWAYS show me a menu like the one shown in dialogs or schedules ($q), or something similar, when I right-click on an NPC, for example Robin.
Using Content Patcher.
The multiple choice dialogue?
Yes or some other function that displays a menu with options to select
Needs a framework usually
Might be able to hack around it with enough $q
Thanks, I'll check it out.
Hello SDV Modding community!
I'm determined to make a whole new Bachelor Mod with doing the coding and all. With just one problem... I don't know how to code or even find my way around Visual studio code. I wanted to do it entirely myself but I figured very quickly that I'm absolutely gonna need help. I've downloaded the september 2022 version (1.72.2) of VSC, SMAPI, ContentPatcher and .NET v6.0.428 like the Stardew Mod wiki instructed and have already added C# but the .NET doesnt even show up in VSC. Instead it installs .NET Install tool (is it supposed to...?)
The wiki then says to "create an empty Class Library project. (Don't select Class Library (.NET Framework)!)" - The option to "create an empty class library project" doesn't even show up for me and I'm honestly overwhelmed...
I hope some more experienced modders can help me figure out the the problem(s) and help me solve them. ✨
What does Bachelor mod do? New NPC?
Ah yes! I would like to add a New romancable character!
then you don't need C#
you may be able to do everything with CP unless you really want fancy stuff
Content Patcher
!npc do we have a command
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!
this is quite a nice command
(dear junimos, i'd like to report a bug, i used a command and it was the correct one, i believe there is an error somewhere /j)
lmao
makenpc is now an alias for npc!
figured that'll be helpful? idk
Omg thank you so much! I'll try that out!
sure! note that it is still a lot of work, but you can do it step by step and get help
I've found it pretty easy to follow as a pure content modder, it's just events that scare me still now lmao
hi! anybody know where to start if i want to make a dialogue expansion mod for npcs? 
Oh.. wow... either SVE or Alec revisited do this to the forest map... it's so laggy!
what, happened
lot of tiledata
It seems many tiles have multiple layers of tile properties
ok, time for a break before tackling {break}
this is something to do with the game, not a mod i don’t think. i’ve seen this happen when i open patch exported maps
Oh, odd? I've never seen it happen before, even with the same map
Ahhh so patch export maps will always look like this from now on?
is this from the alpha version of content patcher for .16
No it's just current smapi
ah
Look, the second I get some free time I'm taking a long well deserved nap
And then I'll putter around a bit
And THEN I'll consider cleaning that up
Any mods that will show the number of days before a CT expires to the user?
I don't really want to make one, no :/ I was hoping I could recommend one to users who get impatient when timers don't run out quickly
"If you want to see how long before X happens, install this mod"
If there isn't one... maybe I'll think about making one eventually
I think the best thing you can do as mod author is just send some mail
Or hud message even
sigh Yeah. Mail requires an in-universe explanation for immersion. At least, I feel like they do
HUD messages are interesting. But is that a C# thing only or can I do that with just CP?
Farmer the unusually large chicken statue you ordered is ready please come pick it up -Leah probably
My problem is that, for wedding proposals, I introduced random timing between when you reach 10 hearts and when the proposal happens. So even for the proposals that require letters to start, I'm not going to have NPCs saying "Hey farmer, I'm going to propose to you in 10 days. Mark your calendar."
People can turn random timing off. But they get impatient
Patch the calendar then
Hmmmmm
Hey, I'm not sure if this is the right channel but I was trying to debug a mod and the game would fail to launch. I put in the right game path, the debugger would update the mod, but it would fail to launch automatically. It got fixed when I moved the project to the same drive as stardew is on, is that a bug with the debugger or was there just an issue with the project I was using?
I do kinda want to make a calendar display mod
Are you using rider
What's that?
A C# ide, has known bug for debugger stuff
No I was using VSCode
vscode or visual studio?
Visual Studio Code
(also, what's your beagle's name
)
btw this is absolutely the right channel dw
but most people here use either Rider or VS so it's hard to tell tbh
it may well be an issue with the debugger
I had fixed the issue by moving the project to the same drive, but I'm mostly just wondering if it was an issue with what I'm using or I should make a github report about it
both rider and vs are free for non-commercial use though so I really recommend downloading those if you're going to be dealing with c# stuff!
(also, what's the bug? because I used the debugger a few days ago and it was laggy but worked just fine all in all)
@brave fable saw the mushroom propagator update !! One of my OG favorite mods hehe. I was wondering, I saw that other objects can be added via config, but would you be ok with CP mods that add objects and matching growth sprites to the propagator? I was thinking an add on for either WAG or Rose and The Alchemist could be a lot of fun for folks (and me. Im folks. lol)
You can't attach debugger on linux on rider
learning how to make 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!
!pixelartinfo
Here is a selection of the best entries from the Pixel Art Infographic Contest hosted in the 2024 Pixel Art Jam:
Hue Shifting by @slender badger
Dithering by @tiny zealot
Anti Aliasing by @twilit goblet
Character Animation by @faint cypress
How to Draw Stacked Stones by @lament berry
Making a Stardew Valley Portrait by @ornate trellis
Alright, I'm as far as creating the manifest.json file and used the code on the wiki as a template. I do have a question about the UpdateKeys Space: Do I NEED to have a ''Nexus: X/Y'' number thingy and if yes - where and how do I retrieve it from?
Oof I assume that means I need it lol Thank you!
(you don't NEED it though)
(changes with different mods ofc)
Oh!
oh yeah it's optional, can always add it later
just don't forget to add it before you publish your mod
ahh I see
making a mod page is a finallizing step so just, keep it as "Nexus:" for now
so I can just put "0000" in the blank until I have it?
could also just put []
Alright thank you!
smapi will complain, but nothing will break
I wouldn't put a real number because then SMAPI won't tell you that you're missing the update key
but in this case the SMAPI telling you it doesn't have an update key is good bc it hopefully means you won't forget it
hopefully
hopefully indeed
I'll just write placeholder in it then haha
no don't, do that
writing the placeholder is the opposite of what was just recommended
Oh
["Nexus:"] or just []
The first one would need quotes bea
ahh alright, Thanks
Tbh if you are worried at all just go make a page now
they would yes
you can get the number before you ever upload a file
hello guys
idk if this is the right place to look for minecraft and 3d modelling commissions ngl 😅 considering this is a stardew modding channel
Very new account?
i don't think we allow for self promo either
is it not? there's the commissions command and everything
You can put commissions on your dn but can't promo yourself
ah I see
Am sorry guys, am new to discord
that is different. see rule 5
Can you invent sdv 3D before you offer sdv mod 3D comms
someone tried doing that once no
I mean i think it'd be cool
tbf they only offered minecraft mod comms
yup, Casey
FPS stardew
If you mod minecraft enough its basically indistinguishable from stardew
elaborate
with enough mods anything is possible
can you romance shane in minecraft tho
Mc villager noises mod...
depends. what do you consider to be romantic
huh
Is there anyone with the tractor mod here ...
what do you consider a shane
Instead of good VAs we just give everyone villager noises
nexus, probably?
if you’re asking questions about using mods #modded-stardew is a better place
oh, then what selph said
Oh oh okay thank you
Sorry im a bit slow shsjajajs
no worries 
dw, hopefully they have an answer
well pathos didn't make a tractor, he put a tractor costume on a horse
i think he fixed it showing on the animal tab?
I thought tractor was originally made by someone else
still a horse 
just invisible now
While Pathos has made many mods, they also maintain many many mods that have been either abandoned or not updated in a very long time, CJB suite is one
what is a pathos
I'm struggling with my few, I have no idea how pathos does it, I swear they own the time turner or something
and maybe another job on top of that? Unsure
Pathos is the closest I've seen to an actual modding machine I think
maybe he just has a time machine
(/complimentary)
Have we thought that maybe Pathos is not just one, but many many people disguised as one
and erinthe 
Pathoschildren
if they are a collective, then at least they are all nice
i see them (unsure about their pronouns?) updating and im just like woAH it takes me years to update 1 mod
Is there a mod that lets you set a machine to only do specific recipes?
what u mean
Like sets a furnace to only process Iron bars, but not Gold or Copper
even though they''re in the same chest
forgor to say for use with automate
Machine Control Panel
Ahh perfect thank you! this will make it easier to debug which things aren't working
Unfortunatly it doesn't Quite seem to do what I'm looking for, unless I'm completly missing it, it only lets me set machine rules for areas and not specific instances of machines
at this point I don't even remember the original premise for this mod
no more working on it tonight, brain = mush
Well machine control panel isn't a framework anyways
It does do more processing than LA in terms of determining what recipes and what output so you can use it to check stuff easier
That's what I was intending to use it for, as a diagnostic tool than a framework
(Little experiment for Data Layers: an 'auto' layer which chooses the best overlay for whatever you're holding.)
is there a mushroom log range data layer btw?
Nope, though it's on my list of ideas for future versions.
Yep! That's on my list of ideas too.
I made a standalone thing for wiki graphic purposes
(And the 'auto' layer could show it when you select a fishing rod.)
But i wanted to PR the player version to data layers too
Dunno how we should display the fishing area though
Color-coded might be fine, with the default group borders so you can count depth even without color?
Yeah, solely colour-coded without configuration could be a bit of an accessibility problem.
That auto-layer feature would probably turn Data Layers into something I use and have enabled all the time, though.
Color coded only could work fine as long as the brightness/ contrast also changes with fishing depth
(or unique shapes for each fishing depth in a different brightness contrast or numbers like the image)
I was lazy so i just drew actual numbers (for this one off thing)
Did you know you can get 0 fishing depth sometimes
By fishing area, I meant the big white bordered box saying "RiverAndLargePond"
It's very at odds with the current data layer ux
I actually really like how yours looks.
Do I have to do anything specific for season changes on my custom map? The tileset doesn't change with the seasons.
Is it outdoors
Yeah it is
Are your tilesheets named like spring_blah and is sourced from content
Main one is outdoors.tsx, i am using spring_town too but only for one of the buildings.
rename to spring_outdoors ?



