#making-mods-general
1 messages ยท Page 49 of 1
Oh you formatted the line spacing lol
it bothers my soul, okay
Yeah the normal spacing is flat along the left, I also formatted it lmao
contemplating yeeting {{InternalAssetKey:
The comment blocks look fine if you don't touch them :P
i guess i can just manually go into each npc and remove the internalassetkey and not touch the other two
That's the goal, to do away with InternalAssetKey
tbh that's really the only thing that needs to be added/removed, i can throw a load at the top of each of the npcs
Or do you just mean a find and replace situation lol
find and replace, and then throw the load
Well the Targets are wrong then still
Because InternalAssetKey is a path not a Target
the portraits are never loaded though yeah?
I guess you could make them those
or are they in a different block from the npc's file
Only the base stuff is loaded as the spring variant
under what .json is that in
Loadables
But yeah, the appearance stuff isn't Loaded so you could make the Target the same as the current path
lemme get breakfast
I hate that idea personally, but it would work lol
oh i was going to do the festival data the way that ender suggested
hey having a few problems with some new mods i just downloaded the most recent versions of into my SDV mods folder- it keeps saying they're either not installed, or not up to date, or some other thing but i know i literally JUST downloaded and installed them today, and they've been very very recently updated too so i dunno what's going on?
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on macOS Unix 10.15.7, with 29 C# mods and 27 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
#1272025932932055121 is where you wanna ask for help with installed mods, this is more for making mods
my bad sorry
i'll try and figure out which of the many topic tabs it belongs in then, wherever it goes in...
(i will be back in roughly an hour and hopefully have this file for fellow roughly two hours or so from now ๐ )
You would make your own
oh i see
oh actually it's not that bad lmao
eggo in mouth, time to work

i wonder if that'll do that to .pngs
@normal kelp Hello, Ruin! do you mind if I DM you? (it's about your SDV Rich Presence mod) 
Wrong channel, but go ahead

oh no, not another brain worm
(it's the mod making channel and it's about mod making ๐ )
i kinda wish i had a mod that would reward me for progressing toward shipping goal, so i can see the actual progress. Sadly i don't think there's a way with CP to like, track stuff like "shipped X% of the items"
crawls in
im back sorry for vanishing
my brain was becoming mush for a second there haha
so whats the plan?
i'm already roughly 80% done, i'm just double checking some things and i'll write the load block
gotta love ctrl+h
but can't the stuff be solved by using an higher precedence appeareance?
oh okay ill make sure to put you into the credits list too for helping me switch this over
so clown doesn't have to do anything?
they want me to get rid of the internal assest thingy
yeah that i saw
maybe my solution wouldn't work for reasons, i didn't see the entirety of the discussion
i was mainly curious
i can test the higher precedence
Depends on how many replacements someone has for the original portraits/sprites, but sure they could just add some more appearances on
Lower precedence actually
Lower gets checked first
handwaves i don't understand weight
Negative number first lol
what's base weight if there isn't one set
0
yeah i meant higher in term of getting checked, but it's indeed lower number
I could just.....make full seasonals and use the token
let me test the precedence, then we might not even need to change anything for you
okay sounds good
just makes a copy real quick
Technically, it would be only one patch block per NPC if this works
Since you can put however many entries into the Appearance as you want in that one block
Considerably less than one block per Appearance entry
I thought we were doing away with the appearance entry
nah not the entire entry
just literally the {{InternalAsset string
that's all i've done, ctrl+h'd that out, but if precedence from an outside mod works, then we're fine
once i see it written out ill be ok in the future i think
There's technically no reason to get rid of the Appearance entries, unless you don't want to use them anymore
what's edelweiss in context?
ohhh
to test the outside precedence
it's one of the flower i consider to add into VMV
i wondered if it was some sort of program here ๐
oof a lot of loading
yeuhp
okay gotta usurp my already running mod to throw this into cause i don't wanna make a manifest
didn't know it was relating to a mod they were making.
i understand, users tend to ask more question ๐
(and not always in the right place indeed)
i think i get it now
but i would have to rename my festival files to include the npcs name
i think
bah
oh you don't have to
"ID": "spring",
"Condition": "SEASON Spring",
"Portrait": "Portraits/FC.Alan/FC.Alan_spring",
"Sprite": "Characters/FC.Alan/FC.Alan_spring"
},
{
"ID": "winter",
"Condition": "SEASON Winter",
"Portrait": "Portraits/FC.Alan/FC.Alan_winter",
"Sprite": "Characters/FC.Alan/FC.Alan_winter"
},
{
"ID": "SwimWear",
"IsIslandAttire": true,
"Portrait": "Portraits/FC.Alan/SwimWear",
"Sprite": "Characters/FC.Alan/SwimWear",
"Precedence": -10,
},
{
"ID": "flowerfestival",
"Condition": "EVENT_ID festival_spring24",
"Portrait": "Portraits/FC.Alan/Festivals/flower_dance",
"Sprite": "Characters/FC.Alan/Festivals/flower_dance",
"Precedence": -10,
},
{
"ID": "spiritseve",
"Condition": "EVENT_ID festival_fall3",
"Portrait": "Portraits/FC.Alan/Festivals/spirit_eve",
"Sprite": "Characters/FC.Alan/Festivals/spirit_eve",
"Precedence": -10,
},```
i was going to specify the loads
back to testing the precedence
my friends use the internal asset method too
if the precedence works then you won't have to change anything
we'll just have to make a mental note of it
(and you can still change it later when you feel like doing it, if you feel like doing it)
im just overwhelmed i think, i have 19 npcs
yeah i get that
and its weird having peopel telling me different things too
it's because there are different approachs
alright where's alan
Yeah at this point, I think you're just waiting on the results of Avi's tests and then you'll have a better idea of where to go
oh no i meant in game 
ooh my game did not like debug spawn FC.Alan lmao
he's at debug wtc alan!
it should be FC.Alan
warp to character is fuzzy search
You can type part of a name and it'll try to find a match
A lot of console commands are fuzzy search and I love it
me : "debug warp ham"
would it be weird to ask for someone to explain why I shouldnt just leave it as internal asset?
are masked links not allowed in here? lmao
outside access (portrait editing/sprite editing) mostly
they are not, scammer reasons
So like portrait mods need easier access basically?
As said before, you don't actually have to do anything about this
i tried to post a link to my mod's github for assistance, but tried to use a masked link to make it less obtrusive. timed out for 10m but i think a mod saw it and removed the TO. ๐
we are trying to see if another solution exists so you don't have to rush a solution
but now i have to re-type the whole message.
i can still post regular links, right? just to github?
yeah markdown masked links are not allowed here
Yup
yep!
feels almost like a rite of passage to get timed out for trying to use one
And editing the way I have it set up would make the code??? Longer?
:P I didn't even know about masked links before the post about them not being allowed
maybe, clown, but you can relax for now, take a break or something
Alright, any idea why the..... presence... of my Rich Presence mod (https://github.com/RuiNtD/SVRichPresence) could be causing @formal crown's WIP professions mod to have untranslated text?
because right now avi is testing things and you don't have to do anything
okay ill relax for now
I just like understanding things but I should be resting tbh i have a bad case of the flu
Has Kedi tested with only your mod and theirs?
would be nice if my stupidity could remember to put the actual jsons i'm testing into the 1-6-8 folder and not the 1-6-9 folder but y'know
from kedi:
Well, same thing happened to me too with the mod installed, Screenshots from the SkillsPage with and without the mod
Both were from the same save, with minimal mods
be nicer to yourself youre doing a lot
does it only happen with Kedi's mod, or other mods that change profession names too?
๐ซ or else
I'm not changing profession names, I'm adding new professions
Vanilla professions are left as-is
provides more detail on your discord "Playing" information, like this
Why use localization strings instead of i18n?
yeah i get wanting to understand, the thing is, sometimes it's good to give you time to process. Once things are more clear it's also easier to understand, rather than right when people are trying different things
shouldn't be touching anything in the game, other than reading some save information.
AYYYYYYYYYYY
@formal crown just curious, did you happen to install Generic Mod Config Menu with my mod as well? it's not actually required and could potentially be the cause as well.
"Changes": [
{
"Action": "Load",
"Target": "Portraits/EdelweissSeungL_Spring, Characters/EdelweissSeungL_Spring",
"FromFile": "Assets/NPC/{{TargetPathOnly}}/Edelweiss/{{TargetWithoutPath}}.png"
},
{
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": [ "FC.Alan", "Appearance" ],
"Entries": {
"{{ModId}}.EdelweissSeungLSpring": {
"Id": "{{ModId}}.EdelweissSeungLSpring",
"Condition": "SEASON spring",
"Sprite": "Characters/EdelweissSeungL_Spring",
"Portrait": "Portraits/EdelweissSeungL_Spring",
"Precedence": -100
}
}
}
]
}
``` anyway
No, actually
thank you lumina for the input
Do you invalidate the asset on save load
If not go do that first
No, afaik, but how would it cause that? 
i gotcha thank you
Do you request the asset in GameLaunchdd or earlier
Asset? You mean just calling Generic Mod Config Menu?
Helper.Events.GameLoop.GameLaunched += RegisterConfigMenu;
No
my mod doesn't touch strings at all. it just uses SMAPI's i18n.
@ruby rapids #making-mods-general message you'll have to set a weight to your appearances
see: precedence
So this means i dont need to change anything at all?
Thank you Aviron youre really awesome for figuring things out
Do you call the strings.
I don't mean edit them, I mean cause them to be loaded
thanks are for lumina for suggesting precedence because y'know, i wholly forget about it
hehe yes thank you Lumina as well, youre always so helpful wherever you are โค๏ธ
thanks ๐
yeah don't change anything for now clown, in the future if it is really needed at least you know the option exists
maybe its cus you are do lots of stuff in Entry instead of GameLaunched or SaveLoaded
i might actually swap to internalassetkey for portraits/characters now though 
It really is a great way to do it
not too clear what could have caused the cache to fail though 
loads faster, less code
but as mentioned on content patcher the changes apply 2 ticks after launch
You still need the loads you have
the base ones, yes
...potentially...?
WTag( // Registers a tag
"Farm",
() => Game1.content.LoadString("Strings\\UI:Inventory_FarmName", api.FormatTag("FarmName"))
);
And those callbacks are ran on
Helper.Events.GameLoop.UpdateTicked += DoUpdate;
perhaps 
Huh, @calm nebula The invalidation fixed it
hm i do? hm thats odd it was running without it
u could try delaying the update stuff to after save loaded
let me see something
I'm still not sure how not invalidating caused it though
The way the game handles content errors, if your appearances failed for some reason I guess you would likely just have a broken NPC
game caches the strings. if the strings are loaded, you need to invalidate the cache (so the game will check the assets again) after you change them.
game also sets presences on the main menu
Then why did it work properly without presence mod?
because my mod loaded before yours, and because i'm reading strings, it creates the cache
worked just fine without the loads
No one requested it earlier
yea i mean, disable this and see if it is indeed because you are access strings too early
should i keep them in just in case?
and see about adding invalidate if that is the cause
No, Ruin is doing the access
actually, this right here is probably the earliest case of my mod loading strings ๐
public string None => Game1.content.LoadString("Strings\\UI:Character_none");
Kedi is doing the edit
I would leave the base Load's, there should always be a default for the game to fall back on just in case
The invalidate on her side is sufficient
okay โค๏ธ
I was just explaining why it happens
no changing things yay
but could it cause similar problems in other mods 
if (e.NameWithoutLocale.IsEquivalentTo(PathUtilities.NormalizeAssetName("Strings/UI")))
{
e.Edit(asset =>
{
var editor = asset.AsDictionary<string, string>();
foreach (var item in ModEntry.Professions.Keys)
{
editor.Data.Add("LevelUp_ProfessionName_" + item, ModEntry.Helper.Translation.Get("Profession." + item + ".Name"));
editor.Data.Add("LevelUp_ProfessionDescription_" + item, ModEntry.Helper.Translation.Get("Profession." + item + ".Desc").ToString().Replace('_', ' '));
}
});
}```
Fwiw, this is the part of code that adds the profession strings
yeah, i should probably update this to
public string None
{
get => Game1.content.LoadString("Strings\\UI:Character_none");
}
well, if it could but they could solve it on their end, and we know how, i think it's ok? like lot of this kind of knowledge is about sharing the solution sometimes?
i'll update this on my end, but you should probably invalidate caches anyways, since you don't know what other mods are gonna do.
aw man now i have to redownload VS
Ngl, I was doing more invalidations before, but I was afraid of causing lag issues since VPP is a big mod in size and the variety of assets it edits ๐
That's equivalent
Equivalent syntax
alright i did it. very easy actually
oh oops did not need to ping you for that one my bad
oh.
No worries!
So it'll do the same thing as before
I may have said it to nerd snipe you
Lol
I knew it was eays
oh. i see now what's causing it to load string.
it's only used 5 times, but yeah i can just replace that usage.
though, now that ive done it... ive immediately realized that i dont think you actually need a token for it at all?
i never knew you could just prefix it with SMAPI/UniqueID/[path] and itd just work
Yup
true
i suppose the token will always work even if that changes
so i still might as well keep it now that ive done it, plus if nothin else opening up the project again made me realize i left some debug console logging in there again oops
have u considered #if DEBUG
reminder to check your multiplayer logs
i swear this time i did a whole project search for every `"Log.[level]" call i had, i just missed one 
its not the worst one leftover anyway, just lets you know that you are indeed grabbing a token. just meant to change it from Warn to Trace
internal static void Log(string msg
#if DEBUG
, LogLevel level = LogLevel.Debug
#else
, LogLevel level = LogLevel.Trace
#endif
)
{
mon!.Log(msg, level);
}
internal static void LogOnce(string msg
#if DEBUG
, LogLevel level = LogLevel.Debug
#else
, LogLevel level = LogLevel.Trace
#endif
)
{
mon!.LogOnce(msg, level);
}
i build my mods in debug bc im bad at this
"bad at this" says the one causing a 3rd earthquake for content authors
because im lazy at this*
yea that one reason why i did move mod to new single repo, so i can dotnet build -c Release without specifying the csproj
I ban debug builds from generating zips
So I can only release release builds
it is annoying that vscode C# plugin doesnt let you put build config when u right click to build
i will eventually parse the thing chu sent to me for external folder zipping, but that is for a more patient me
look i understand that there are like a million things i could do differently to make all this better and easier for me
however whenever i get a random mod idea and spin up a new project i tend to just forget about things like that a nd just go right into experimenting, bc most of my ideas start off as "idk if im actually gonna bother doing anything with this, i just wanna mess around with OnButtonPressed to test things" and then by the time i decide its actually gonna be a mod, im too lazy to set up any of that other stuff
This is why I have a common csproj
see line 1
Yeah a few days ago we were discussing how like
None of the autostash mods handled multiplayer right
And I had liek the thought that I throw it together really fast
As an example
And then was sad nothing in my repo builds rn
my git repos will be chaos and i will not care
my 12 git repos will be chaos and multiply and i will not care
more repos more better
if it means someone can easily fork to tell me how to do something better, i take it
i keep things a lot tidier and doing-things-right on my professional github, the personal one i use for stardew modding is the equivalent of placing things on a shelf haphazardly bc ive got nowhere else
I might still make an example
I have a monorepo but outside a couple files they're all independent
aka the best way to do it
I'm not actually that messy I think, but I do have the same standards for work because academia
I used to have mine in all separate repos. But then I went on hiatus and pathos maintained my mods for me and he wanted to merge them to make things easier
I still had them all in one sln though
tbh if someone did the work of merging them into a mono repo with preserved history and everything for me id switch too
Hi, I made a mod to add a crop, the mod works and does what it should do but... when the crop is harvestable, you should see a white flower and when it is not ready to harvest, you should see a yellow flower but the exact opposite happens, when it is harvestable it is yellow and when it is not harvestable it is white.
I have no idea where I went wrong, could you help me? What information would be useful to know?
post your json and png?
I could
ok now I upload the files
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
for the png just post it here
is anyone else get compatibility errors for the public beta? im using the beta versions of the mods cjb and spacecore and still gettin errors
smapi beta yelling at me that it's downgraded when i have no idea what happened
for spacecore you need to build it from source, or find that debug build casey sent in this chat
I know it's not a pretty design but I did the best I could hahahaha
for cjb there's 1 line in HeartsCheat to change from socialQuest.checkIfComplete(npc);
socialQuest.OnNpcSocialized(npc);
For regrowable crops the last sprite is the "full grown but not ready to harvest" sprite
So I should invert the last two sprites?
It's funny because my real name github is a mwss
But luckily for me, I get to also have a real name gitlab
Which we will be keeping cleaner
yes
Ty = )
I was gonna put out a call here today asking how folks organize their mods (things like shared code, etc.) to minimize duplicated work without constantly having to rerelease old mods when some bit of shared code changes but it sounds like this is already a topic lol
Like I'm extracting a bunch of code from my current mod into a shared library and I haven't decided whether it should itself be a mod with a ModEntry and a config
And I refactor this stuff a lot right now and am a little worried about breaking things since my ideal flow is "run a script to clone a mod template and then hammer out something fast"
I totally did lolol
the only stuff i share between my mods is some specific logging functions that i dont mind just duplicating in every mod so i dont have much input here
But I'd be just as happy statically linking this stuff, though I've never really done that in C#
As long as I don't have twenty copies of CollectionExtensions.cs
Does make ur dll bigger ofc
Yeah I'm not terribly worried about that for this, at least not at the moment
Maybe I'll just convert this after all
Yeah, that sort of thing I would absolutely break out into a proper mod
i thought usually the intent with a core mod was not necessarily that or even the opposite, and just happens to be used by other people
But I think it's better to name it by what it does in that case
Sure, but how do you name "a glob of stuff shared between my mods"? I really don't want to make multiple core mods just so they have separation of concerns
most core mods ive seen (admittedly just in the stardew and minecraft communities) have all just been like. "this is a collection of stuff i personally use for all of my mods, so i made it a common mod thing for myself. you can technically use it"
Yeah I can't speak the motivations of making such a mod, just that I personally wouldn't do it and rather just have shared projects
Like sound dev principles are great and all but they have to make sense from an end user perspective too
Or u know, some boilerplate to copy
SpaceCore at this point is not really a core mod, but a framework in its own right
I haven't seen a real 'core' mod in SDV, not after the downfall of AtraCore anyway
thats a different thing altogether tho i was just responding to you saying thats what a personcore mod was
Boilerplate is a nonstarter for me, I've been down the road of updating twenty copies of something when I change it and no thanks
Time to make yer own c# template
(why is this red)
theres birbcore, poohcore, and stardustcore
(i agree abt Spacecore tho)
Hm I'm not sure about the features of these other core mods actually
Calcifer as well
Ik the one dalion has (dalionheart?) did have user facing stuff involving hoppers
(doesn't understand the differences between core and framework, is it just user vs author?)
those are all frameworks right?
So u could install that just for this 1 thing, without anything else from dalion
I know the first two have users that aren't their authors
theyre all mods with functions for those authors to make their other mods work
i dont think other users using your core makes your coremod suddenly a framework, personally
i think its about intent in making the coremod in the first place
Framework is already kind of a nebulous term, like anything you build on top of could be considered one, but some folks use the term to mean only systems large enough to have their own API, so to speak
if you make a mod with a bunch of stuff you just toss at it bc someone might use it, id call that a framework. if you make it because you have your own mods that you are actually making or have released and want to consolidate the duplicated code between them, thats a core mod
Since we're talking open source (in my case, anyway) anything I make that is shared between my own mods I have to assume someone else might also use
true, and the line can be blurry
And I write it with that in mind because otherwise it feels a bit like the coding equivalent of running around in my underwear
(derogatory, not fun)
BETAS for example is undoubtedly a framework, bc i use none of it. if i had several different NPC mods though and each of them had custom triggers written in them and i decided to put all those triggers into one DLL that i could just set as a requirement for all my NPC mods, that would be a core mod
i think framework in sdv also carry additional meaning
other people could still take my core and use it for themselves, but i made it bc me and my mods needed it
And and, slipping from simple shared code into frameworkland can be very fast. I had a glob of shared code, then I was like "I really want to be able to patch a function and add configs to enable/disable it with literally one attribute and no other work" so I wrote that, and that is pretty frameworky tbh
(yes it uses strings, don't judge me)
Hmm, I can see that
hmm does that make Extra Animal Config my core mod since my animal mods are the only users for about 80% of its current features
you put torpedo trout slingshot ammo in extra machine config selph
(i also agree with this too, bc really a core mod can have framework features too in the literal sense of having things that are. yknow. a framework for you to build off of. but when Framework means something Specific in the SDV community i think itd be better to call those things in your core mod like, utilities or somethin instead)
yea library 
Eff it, I'll just make it a core mod, deal with it 
Yeah
librarys a good word for it
AtraCore does have content mod facing features
It did also in 1.5.6 I just never documented them and then just killed that entire feature anyways in 1.6 for being unnecessarily unperformant
(Prismatic draw masks on any object in the game. So many transpilers.)
is that the same thing as the recent prismatic anything mod I saw
(as in the same idea)
Same idea yes
Not really able to VC currently, but If need be I can send you some example code - and by example code I don't mean "my own mod", but more like "I'd code the equivalent of Abigail's gifts in your mod in the different patch structure for you so you can see how it would work", with some annotations to help explain
Looping back around, do y'all tend to have different solutions for different mods, a shared solution with a project per mod/shared, or both
(this is assuming VS or a similar build architecture)
I keep everything separate, but I do keep some common classes in a common directory which gets included in each project individually
my solution is i keep a Helper.cs file in my dotnet template with the small code stuff i share and it just gets ppackaged into each mod
Shared solution.
I would also recommend a shared library
Is it a matter of personal preference or do you see a concrete benefit? I'm kinda leaning toward a shared solution now but I would probably break out anything with assembly dependencies on other devs'mods into different solutions
(Just so folks checking out my source didn't have to grab a bunch of stuff for Bob's Mod if all they want to mess with is ThisLittleMod)
Refactoring is a bitch if you have a shared lib and separate solutions
I don't find having to fork all of someone's mods a problem
True, almost as much as if you boilerplate it
I've run into this issue before, when grabbing a mod repo and it referenced stuff in unexposed parts of another dev's mods (not through reflection but directly) and the thing I wanted to rebuild had nothing to do with any of that
I ended up pivoting to literally patching their mod instead of modifying it but ugh
You can select all projects and disable them
I'll give it some more thought. I think it'll come down to what exactly I'm sharing between projects
I have Big Goalsโข but right now a shared solution with a shared library for "core" stuff and another each for, e.g, my patching framework (lower-case f) is probably the way to go
It's been maximum ADHD fun, though, setting out to do something simple like "let's fix the UI scale graphics offset issue in the Love of Cooking alpha" and finding myself a week later learning how to generate entire types at runtime
Yeah, I had a decently sized shared prkect that was mostly "stuff I wish was in dotnet"
God
Span Split Enumerator in net 9 my love
I'm very happy about this
Despite not getting to use dotnet 9
Or at least in .NET 6. Just simple stuff like math interfaces
"This is a nice little class, lemme generic it off of a number type NOT SO FAST"
I'm alllll the way back in framework for work rn
(i am curious about this patching framework (lower-case f))
Anyway I'll spare y'all my tinkering with a duck typing generic since it better belongs in p-o-t
Shortish version: I'm writing a collection of bug fixes for base game and various mods/mod interactions and I really wanted a way to just write a patch function or two and have it automatically group them into a config-toggleable patch group without updating any mod entry code. Kinda like Harmony's patch classes but even lazier
It mostly works but is pretty gross as it relies on strings due to the "types in attributes break on Android" thing
So, for example, if I want to add a fix to this bugfix collection, I can be like
public static void CrabPotMachine_PlayerNeedsBait_Postfix(ref bool __result)
{
// If Aquarism is loaded, we can still load crab pots for effects, so do it
__result = true;
}
Right now I still have to manually create patch groups but that's also on the radar
I'm also interfacing with labview
(this is not the best implementation of that fix, but that's not the point of the example lol)
oh is it like additional annotations then 
If that's a specific thing then I'm not familiar, but yeah it's custom attributes similar to Harmony's
I dunno how generally useful this will be compared to a better organized patch collection (e.g., DaLion's) but for our server it's been nice when a player says "huh, these two mods aren't interacting well" and just go "brb" and fix it in a single function
(rather than, say, declaring an entire class for one prefix, as some such collections do)
finally, evil animals are done-ish.
its cus you didnt clean the poop selph
can i make it so that chickens get angry if i toss them using Tater Toss like zelda cuccos
they r hold revolution for better living conditions
Is PoopMod yours as well?
(i know cuccos dont get angry after being thrown but i think itd be funny)
they should get angry like metal heads
and explode
(this is a joke not a feature request)
as in that mod that makes all animals poop? yes
Brb, upgrading to iridium muck shovel
(side note, I looked up 'poop' on Nexus and found some very... cursed mods. 2 of them by aedenthorn even)
Guys, how do I make my furnace emit light like a furnace? (Only emit light while it is melting some ore)
I have found some really, ah, weird mods by simply checking out the repos of some of the more popular mods and looking at the folders that never got published
LightWhileWorking
See https://stardewvalleywiki.com/Modding:Machines for more info
@round dock cuz I know you're looking forward to this
since selph did the evil animals i might make "bongo your cats" a mod
I still have "put hats on everything" on my mod queue, maybe it can quiet angry animals (or enrage them further)
selph did u end up pushing that emc fix for beta
ah woops, I totally forgor
i keep remembering things i was gonna do after publishing the mod
but last I checked I think the only thing that broke was the crafting page transpiler
yea i can just go comment that out and build it's not a problem
or just test in 1.6.8 tbh
hmm I don't think you may even need to rebuild, but I don't rember how I handled that exception
Does this work with a mod framework?
which framework? machine data is vanilla
if you're using PFM, I imagine it has its own settings for that
(but I recommend using vanilla machine data)
It does have it, but I tried to use it and it just got bugged
My furnace was transparent and I couldn't fix it
But wouldn't that just be for c# mods?
I'm doing it on my cell phone and I didn't find anything that would compile to .dll
Well
you can make vanilla machines with vanilla machine data with content patcher
Yes and no
you CAN do it with C#. but you can also just use content patcher
modding on mobile sounds like you're modding 1.5?
(oh i thought they just meant they were writing their jsons on mobile. if you are actually modding the mobile game then ignore me)
Also, but I'm just tidying up something I left behind
I had made this furnace in 1.5 and 1 month later I arrived at 1.6 with a new furnace that does the same thing, only better
as mentioned, in 1.6 you can make vanilla machines with just CP, no C# needed
I don't think a lot of us here (still) use PFM so help might be limited
Is it possible to add this light using the 1.5 cp?
need clarification, are you modding 1.5 or 1.6?
1.5
got it, in that case you have to stick with PFM
and are you modding for the PC version or the Android version? I imagine the latter
you can post your code here for ppl to look, but keep in mind that we might be able to help fix problems and typos with your code, we likely won't be able to help with actually getting your mod to run to Android if it doesn't
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
just uploaded!
I hope the all caps message will make people not on the beta not download it
its not on fire so it won't work
im submitting a bug report literally as we speak bc it broke my 1.6.8 playthru
there isn't really a gif that doesn't make my eyes hurt blingee-style 
The furnace becomes invisible when I try to use the pfm function
if I have to guess you enabled AlternateFrameProducing but didn't add a frame for it
what does your sprite file look like?
also Button forgot to throw in my congratulations for this (wasn't here yesterday lol). this is so useful; in fact this should be part of CP (but I see why Pathos might not want it). one problem I had with Chicken Feed (before I just switched to C#) was adding compat with animals that may be enabled/disabled by config, and there's no way to know whether an animal is enabled or not, leading to warnings in the console when I tried patching them (and bug reports). Will definitely consider this for future mods
i can also see why it might not be wanted; i feel like Pathos generally likes to keep a mods personal stuff to its own scope, and since my mod grabs config from non-CP mods too, it's actually SMAPI itself that I have to reflect into to grab things, so it'd require a change to SMAPI itself. but luckily i do not have to maintain the strict standards of scope and non-interdependability required to keep something like SMAPI or CP ultra stable and can do whatever crimes i want 
(the dynamic tokens are the only thing that would actually just require a change to CP itself, but i can definitely understand not wanting to try and make those public to other mods too. its a scope nightmare, and they are kinda very inefficient since they always need to say "im ready to update!" regardless of whether or not the token actually changes due to the way CP handles "checking for updates" vs "Actually recalculating the values" so its just Bad. trying to officially support that would be a nightmare of a change, i think)
How do you propagate changes
In the config. Say I write a new config mid game
like, just update the config, or add an entirely new config setting mid-game?
Either
the GetValue function grabs the value from the config based on the input given to the token, so it always grabs the updated, and tries to cache the value for the UpdateContext function to check later for a change, though lookin at my code again to answer this I see I can make that better, so I will probably do that later
and those are the only two sprites?
the culprit is probably the ProducingAnimation block on your code, which needs sprite 2 to 7. Try removing it
But then the light no longer appears ๐คก
its definitely not the ideal way to do things, but i struggled to find a better way to do it since the token depends entirely on the input, and i assumed in the api documentation where it said stuff about how dynamically calculated values are fine too as long as the calculation itself didnt change, that it would be fine enough and not break things. and it hasnt broken things in my testing, though i did not test every single possible usecase or load order issue or update propogation path etc
if a config setting does not exist when the token is initialized, the token just returns an empty list of values atm. if it does exist and gets changed, the value gets changed and updated at the next UpdateContext check
In that case keep it but remove all values from RelativeFrameIndex and add only 1 to it
dynamic tokens are different though their UpdateContext check always returns true at the moment because otherwise they get updated one UpdateContext late
becauses the dynamic token it checks does not get its value updated in time for the UpdateContext call
The working animation is expecting frames 2-7 but you only have frames 0 (rest state) and 1
Wtf, now it works ๐ค
Ah, i zeeโค๏ธ
it does without my suggestion? In that case keep it removed lol
(if you had a better idea for the dyamic tokens thing i am all ears i tried everything i could think of to get around that but could not figure anything out whatsoever that didnt lead to the "theyll be one update late" consequence)
I had tried before without the frames and the light didn't work, I added the frames and it started working but the furnace was invisible, now I removed the frames and it's working perfectly ๐ค
Yeah
I only asked because other-mods-configs was a feature pathos has considered for CP itseld
So within CP
i think you asking me that has made me realize that the UpdateContext check for the config token might also accidentally always be returning true bc of incorrect assumptions about how tokens work that I never realized I needed to correct, so its good that you did ask lol
(which also doesnt break anything if it does. just inefficient for no good reason)
another mod making question, for fruit trees and crops, do those use a 16x16 pixel tile grid like objects, or a 16x32 pixel tile grid like machines?
"Pathoschild is typing" 
me when i was lost in the sauce of fixing green squigglies, "1 fear"
I think they're both bigger than that. The best way to be sure is to compare against vanilla files
objects are 16x16, so the 'fruits' on the trees
trees are........ a strange beast
yeah I did but I can make an argument for both >_<
are you talking about the tree sprite itself?
yes yes like the actual tree and crop sprites
crops and trees are just whatever multiple of 16 gets to the full dimensions
put a 16x16 grid over the vanilla tilesheets and you'll see
36^2+72^2!
How are you
oh so I can just put it over a 16x16 then gotcha
i would look at the unpack, TerrainFeatures for trees and you set the 16x16 grid to see what gets lined up to what
I wasn't sure if like, it was one full grown tree = one tile in the grid or not ๐ never done crops/trees before, only objects
six thousand four hundred and eighty, where are my big trees
in my dreams ๐
yeah where's my 8x scale trees i can't be the only one
im applying to schools, wrapping up a big research project, and getting ready to move. So thats where ive been
ah, life. gl in all of them!
grids are for your convenience and the overlay you use is arbitrary. I recommend 16x for everything unless you really need it different.
so for example you say you're using 16x32 for machines, which is fine. But if you set it to 16x16, now you can see the lines between machine sprites AND you can also see the one tile of collision at the bottom of each machine, and judge if it feels right. The 16x16 grid adds more info. Same for crops and trees
putting a 16x16 grid on a fruit tree sheet, i can see the 3x3 tile space where fruits need to spawn, the 2x tile tall part where the player might overlap with the sprite, the 1x1 spot where the player collides with the tree, and the 1x1 spot thats the tree "stump"
(i have now fixed this and the config token now properly caches things and only updates as necessary thank u atra)
@velvet narwhal Thank you for the coding help on FellowClowns PC mod! Since I am new to CP coding I am trying to learn what all of it means code means so I can edit it myself. I just taught myself what TargetFields are. I need to read up on what the stuff in the {{}} means. For now I plan to physically replace the images until I figure out how to understand the code of this.
the testing and the back and forth was a tldr of, you just set a "precedence" to your appearances, you can use my format and change out the portrait loads to your filenames as well as the ID for clarity for yourself
@golden basin Hi Fellow! This is AhCuteArt from Nexus. I am trying to learn CP to replace your portraits because I know you update regularly. Progress on the portraits is slowly coming along, but there are tons of Nyapu retextures to do. LOL
Hey there, I hope you find the learning experience nice. I update regularly but the portraits aren't being updated so if you make your portrait replacement mod there shouldn't be any issue keeping it up to date
@golden basin Ah, it's good to know that the portraits aren't being updated. I am just in the habit of deleting the old mods and replacing the new ones so there aren't any issues. (Thus having to replace the pictures everytime ๐ ). So creating a CP file will save me time in the long run.
Hello agian! yesterday I spent a bunch of hours here. Had nice people helping and caused probably 2-5 headaches. I'm ready agian lol. Long story short, custom farm, but fish won't appear. 1.6 override fish tag in tiled doesn't work with it, and all what I tried ended up in only sun fish in water, but after fishing for the first time a single sunfish, all fish disappears from water, and it will only give trash at 100% rate. This is the current log https://smapi.io/json/none/1e865345157c42099303ca43ae563df8
You're trying river right?
Don't do river, do Mountain
There is a reason behind this
it was intended to be beach but didn't work
You need to find a map that does not have....beach should work
Map that does not have zones was how it was supposed to end
i copied straight from the beach farm and it's set to ocean 
hello there, yeah aviroen was helping me yesterday but we didnt manage to make it work
it loaded, but same outcome
day 1 then went to sleep/reload map, notice no fish in water anymore
this is with the current json
The sunfish is special
It is the first fish
Hey, why not copy beach farm
Oh wait you did, hmm
maybe i needed to add the fishareaid into the randomized fish?
i assume because i didn't add it to the list it's set to 'null' so it's not applying?

Can you check what you get for crab pot
in the actual tiled data, you have the map property FarmFishLocationOverride Ocean 1.0 or whatever <chance> you want, yeah?

delete it
is it... the forward slash...?
I don't think so?
i don't even know if sekun's data/locations works properly if this one isn't working, but i can't compare unless default farm doesn't get green rain spawns?
https://smapi.io/json/none/c3258b334e5040258ecb408e7c321ab8 what if i just deleted the after forward slash
welp
My shot in the dark would be changing the "Id" field to something unique
Right now it's identical to "Default" and I don't know if that'd be an issue
what could I change it to_
Hmm anything really, maybe use your mod's id
the farm name?
Yeah
{
//
// Summary:
// A key which uniquely identifies this farm type. The ID should only contain alphanumeric/underscore/dot
// characters. This should be prefixed with your mod ID like Example.ModId_FarmType.
public string Id;```

oh
is this it?
{
for (int x = 47; x < 63; x++)
{
base.objects.Add(new Vector2(x, 20f), new Fence(new Vector2(x, 20f), "322", isGate: false));
}
for (int y = 16; y < 20; y++)
{
base.objects.Add(new Vector2(47f, y), new Fence(new Vector2(47f, y), "322", isGate: false));
}
for (int y = 7; y < 20; y++)
{
base.objects.Add(new Vector2(62f, y), new Fence(new Vector2(62f, y), "322", y == 13));
}
Building b = new Building("Coop", new Vector2(54f, 9f));
b.FinishConstruction(onGameStart: true);
b.LoadFromBuildingData(b.GetData(), forUpgrade: false, forConstruction: true);
FarmAnimal starterChicken = new FarmAnimal("White Chicken", Game1.multiplayer.getNewID(), Game1.player.UniqueMultiplayerID);
FarmAnimal starterChicken2 = new FarmAnimal("Brown Chicken", Game1.multiplayer.getNewID(), Game1.player.UniqueMultiplayerID);
string[] chickenSplit = Game1.content.LoadString("Strings\\1_6_Strings:StarterChicken_Names").Split('|');
string chickenNames = chickenSplit[Game1.random.Next(chickenSplit.Length)];
starterChicken.Name = chickenNames.Split(',')[0].Trim();
starterChicken2.Name = chickenNames.Split(',')[1].Trim();
(b.GetIndoors() as AnimalHouse).adoptAnimal(starterChicken);
(b.GetIndoors() as AnimalHouse).adoptAnimal(starterChicken2);
base.buildings.Add(b);
}```
That's the meadowlands farm ain't it
yeah but there's no cases after 7
{
switch (type)
{
case 0:
return "Farm";
case 1:
return "Farm_Fishing";
case 2:
return "Farm_Foraging";
case 3:
return "Farm_Mining";
case 4:
return "Farm_Combat";
case 5:
return "Farm_FourCorners";
case 6:
return "Farm_Island";
case 7:
if (Game1.whichModFarm != null)
{
return Game1.whichModFarm.MapName;
}
break;
}
return "Farm";
}```
// Game1:
```public static string GetFarmTypeID()
{
if (Game1.whichFarm != 7 || Game1.whichModFarm == null)
{
return Game1.whichFarm.ToString();
}
return Game1.whichModFarm.Id;
}```
```public static string GetFarmTypeKey()
{
return Game1.whichFarm switch
{
0 => "Standard",
1 => "Riverland",
2 => "Forest",
3 => "Hilltop",
4 => "Wilderness",
5 => "FourCorners",
6 => "Beach",
_ => Game1.GetFarmTypeID(),
};
}``` 
ignore me for awhile i'm digging into the guts of the game
tried adding id to modid_Ocean but nothing happened
or am I using the wrong farm type
it might or not be something associated to additionalfarms, i cannot understand this code well enough
i'd set it aside again cause this is apparently a bigger problem than me being wrong about syntax?
So what's the problem? Trying to get beach fish on a custom farm?
yeuh
Is it a swap or an additional farm?
additional
Additional
Remove the requirement for a fish zone maybe
I haven't found anything else
what was the value of the FarmFishLocationOverride property again?
that got removed from the tmx
can always add it back, but it doesn't work anymore at least with the custom farm in 1.6
https://smapi.io/json/none/84c6f720ad754a4587c4a3130a7991ad by fish zone i assume you mean from the random object fishlist
did you just change something here?
what happens if you debug warp Farm_ChuChu.TinyBeachFarm
like, place something down in your original farm, then warp
is it still there
oh
let me see
shouldnt do tht cuz
i placed crabpots and well, they were there for 7 days
soo
yeah i'm trying to see if it's loading a completely separate instance instead
trying
I remember in 1.5 water starting day 1 would give you anchovy so as soon as I see the sunfish ik im doomed
you warped and the crab pots are still there?
i mean in the smapi console 
quick question, what the texutre height and width of the Modern Lamp
This one is finicky but should work
Sunfish is the hardcoded first fish
Sorta
Hello
If you roll trash or a hard fish it gets replaced with sunfish
Where can I find the C# class that handles the inventory bar that appears on the top and bottom of the game screen?
FarmFishLocationOverride could work I read yesterday but not with custom farm
Toolbar
Is it InventoryMenu.cs?
!unpack if you've unpacked your files, you should be able to find it (and it'll help with every other aspect of modding)
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.
Away from home right now so I don't have the files I'm afraid
Is this still accurate?
inventorymenu is the backpack
yeah
Try removing the quotes around null for ItemId
"ItemId": null not sure what happens when it gets an error item, might just default to trash
ill try
(nevermind, apparently vs22 added those)
just remove the " around null so that it looks like "ItemId": null,
Ok. Yeah I needed the toolbar.cs, because I have an item I added that when triggered it asks a question but it interferes with the toolbar you can't click it when holding said item.
icry
i hijacked a different mod and it did not work 
Is that a mod that makes fish visible?
even the char is doomed look at the eyes, she knows it
yeah
it shouldnt even be sunfish there, but see what happens after I get 1 sunfish
it'll always be sunfish
also: re, warping to the Farm_<uniqueid> doesn't exist
(sorry sekun i've hijacked your mod)
oh I think it is something nothing related to this mb
downloaded that to test something some hours ago
I dont think thats causing the issue
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโt occur in your last session, please load the game to the point where the issue occurs, then upload the log.
Bold assumption
Remove every other mod except CP and your own and visible fish
I don't think spouses island is the problem
but see this is what happens after fishing once, all fish gone, only trash
But there is a nontrivial chance you have a different mod causing an issue
i am testing alongside with just sticking the fishdata and it isn't going through 
Do you only fish up trash as well?
(yes i'm only getting trash)
Mk, just wondering because Visible Fish has A LOT of complaints about no fish being visible in various locations
removed all mods, im sure it wasn't another mod causing it
same outcome 
oh no, visible fish indeed works, it shows all sunfish around water before fishing 1
it's saying my data/location patch applied, but i cannot warp to it's internal name
For farms you don't generally set a CreateOnLoad, so they don't actually have a location
Temporarily change the ignorefishdatarequirements to true
It's just there for the location data
Only reason I could think to set that would be if you wanted multiple farms lol
trying
just trash 
Just a heads up: I don't care to debug code when I cannot see it
yeah, didnt work
Or, you know, the logs I asked for
I'm going to sleep.
If it was actually broken we would have every third map maker in here trying to figure it out
what is this madness 
So clearly you're doing something wrong
nevermind don't mind me
is trash just... overwhelming?
i think it actually works but even with a 1.0 chance, it took awhile to get tilapia
https://smapi.io/json/none/8912d4f3fc8c4eb68bc6279ef2ce9506
(again, sorry sekun i yeeted your map for a second)
yeah it does work
So like using that template
manually entering the beach fish?
I could work with that anyway cuz it looks like a cool idea to have a modded farm with variety of fish different than in x zone at valley
I like that tbh
I just wonder, so we have to give up the season part of it then
you don't have to
the condition i set you can have specific fish spawn during whatever season
welp that confusion is over i go back to staring at my empty csp canvas 
trying
that ain't the farm
the farm you were working on? that log is linked to SVE's frontier farm
Why is it 2.0?
uploaded the wrong one hold on
I was checking what SVE did to make it work, for some reason I posted their json, im malfunctioning 
Thanks chu, it was fairly easy to add a check if the player mouse is within the bounds of the toolbar. Finally can work on something other than c#
line 90 has a ]
Is that for a custom farm map?
yeah found out the fish stuff worked, it's just trash is overwhelmingly prevalent, could probably get around it by setting object data to -1 but that's too much for my brain right now
oh wAoWwwww
Yeah In the beginning only trash is in the water since Stardew is polluted by joja. I will be creating a new custom ring now
this was the attempt 45
I guess I'll have to create more fish templates and specify season but the outcome is amazing, you can tell the diff by visiblefish working there
maybe, it's even better than what vanilla offers, I could put some unusual fish there
I think it took me 200 attempts to make my code work just now lol
Aviroen
yessum
read: i spent an entire 12 hours realizing my harmony patch wasn't even going through
can't thank you enough, you're truly amazing
Coffee
your name sounds familiar from nexus, cape stardew?
Yeah I'm working on adding light to an object but the light_source context tag doesn't work as expected....
Yes I mainly work on Cape stardew
So, to make some fish be specific to one season, do I delete where it says location, and add the season? like LOCATION_Spring?
yeah the condition field is linked to this syntax: https://stardewvalleywiki.com/Modding:Game_state_queries
Also, this is the entire map. It's supposed to be a challenging map cuz of the limited space, but in exchange has both stone/wood renewable resources
not the top stumps tho
it surely has been giving me a headache ๐
I haven't tried any custom farms yet. Definitely will try yours have you checked if it works with easyfarmswitcher yet?
Not really, I was actually finishing it, I needed to get the fish part done which is what caused the most trouble, now I just want to edit the farm creation png and finish testing before releasing
maybe changing a bit of the shape of the bridge tiny island, and that will make it. I was thinking in adding a custom cave but uhhhhhhh
I use it very often
what's your question?
I wanted to know if I could commission someone to make me a map for a 1.6 challenge thats custom :DDDD
id be able to pay
I have some in nexus you dont need to pay for
I tried asking and I only got artists who didnt understand
!commissions
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
and I know there are, but I want something 100% custom thats all
There's a few people that do commissions like me
Ive tried and no ones gotten back to me or gotten confused
๐ฆ
its been a nightmare
I am open right now
I have a Kofi page with the details since no one got back to you Ive been using tiled for 2 years
what is the color of stamina
hex #4FE69D ? isn't it attached to the sky
isnt it just like almost pure green. the titular staminaRect
yea but health is already green
oh you mean like, other games
the reason why i ask is cus was considering floating number for stamina recovery
i think Game1.staminaRect is a 1x1 white rectangle
i think i would wonder why it was anything but the same green as the stamina bar, even if thats also used for healing numbers
is health green? i thought it was red
when you get healed by fairybox
(it is i shouldve been more clear that i was also just saying its not from cursors.png attached to the sky)
the number is lime green
ah i see
i just vaguely remembered the stamina being attached to the skybox for no reason, if i'm wrong on that then i can wipe that from brainram
while we're at it, get atra in here to complain about the pixel in the moon that is used for the particle effects when the farmer eats/drinks

atra sleep 
thats my favourite pixel
electric yellow sounds fine too
oh btw ichor did u encounter shenanignas with making menu child of gmcm 
i got bug where doing this doesnt restore daytimemoneybox and toolbar when you exit gmcm, but im not sure if its gmcm quirk or stardewui quirk
Has anyone tried to replace character spritesheets, and the game only loads the spring-summer-fall sprite, not the winter one?
its cus you didnt replace winter sprites
Never not magic
What about a moon?
there's an appearances system added in 1.6
I tried to, I am replacing both Char and Char_Winter
hmmm I see though, it's more complicated than I thought
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...
thank you
now if you dont want to add new outfits just doing EditImage on winter sprite should work
cool, appreciated, time to give it another go
you can do patch export Characters/Abigail_Winter while in game to see what game thinks abigail's sprite ought to be
perhaps u got targets wrong 
Thanks to you I am enjoying some ramen right now. Agian, ty for going through that fish hell with me. Hopefully you can also find some use to it
5 minutes late to the convo but I'd have blue popup for stamina recovery, and a sickly yellow for stamina drain
What a very good morning to me Selph
this is awesome
blue is for magic damage!
blue has too many positive connotations. Use purple for that
This is giving "I hope you find this email about the manure, before I will" 
I know you'd love it
I'll release this as an evil goose mod some time after 1.6.9, maybe with an optional hard mode of every animal
Tater toss mechanic where instead of tater tossing them lovingly, they toss you 
Mess with the honk, you get the bonk 
i hate this emote
(use blue!)
(told you it was magic)
that looks better in my very biased opinion
i would personally not clock that as stamina
yea i also think its magiks
hmm maybe a different green shade then
cuz that yellow still feels negative to me
maybe because it is one of the damage popup when hitting monsters
monsters, not animals, bleh. Those goose got me
its fine probably
man i have no idea what the api would be like 
if someone else want to make their own trinket ability
if you just make all your classes public ill just reflect my way into whatever i need if the api isnt good enough /j
(i dont know what id want out of a trinket api either)
It needs to tell me how much the trinket fetches at auction
Wait.
Wrong type of trinket sorry
(I wouldn't know eithrr.)
Well the main feature of this framework is that how the trinket draws/moves is independent of their abilities
I think people would use this in C# if they don't want to do the draw but do want to do the ability
Maybe it could be some api that takes delegates 
who said public was needed in that case?
its not but it makes things easier if i dont need to reflect literally everything
just enough private/internal to make it clear im not supposed to be there. but not private enough to make it a pain after i break in
internals are easy to fix with the IgnoresAccessChecksToGenerator library, can just specify the assemblies in your csproj that are now accessible
privates are more fun with publiciser, but the two hacky solutions dont play nice together
As casey would suggest it, a programmable state machine
i do still want to do that for motions, but the ability stuff ended up being event based
its good to have real deadline for this at least, which is 1.6.9 release
stops me from feature creep 
That game state query I linked should help, if you want conditions to be additive you can just add it like season spring, weather rainy (or is it rain?) I'm currently out of the house now though 
(it's rain)
(but yes read that page)
(it's good)
(just memorize it you'll probably need it a lot)
got this comment from polyamory sweet creator regarding a custom npc not working: "Downloaded it, looked at it, it looks like the Character is still in 1.5 format. They work, kind of, but also don't fully work all the time. The fix isn't super hard, the character just needs a 1.6 character entry."
anyone able to help me with a character entry?
!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!
Data/NPCDispositions is no longer used and the tutorial and wiki page linked in that bot command will tell you what the new formats should look like
(the new format also absorbed Data/spousePatios and Data/spouseRooms too)
ty ty - im still confused just for clarity i should update the dispositions file to data/character for 1.6 and the room? or do you recommend just re doing the character from scratch
you can keep all the dialogue and sprites and stuff (though if you have conditional appearances theres a new system in 1.6 you can use instead) just the dispositions and spouse patio/room being moved into a Data/Characters edit is the main thing
oh perfect thank you so much
If anyone could help at all I'd be grateful. Just a small question;
I'm using MenuChanged to check if there is a new menu and if so; switch things around (currently just sorting chests). However, you can see the slight stutter when it sorts it right after changing the menu.
It seems that MenuChanged runs after rendering. Do I have to use Rendering and have my own logic to check if the menu changed in there? Or is there a better way
im losing my mind.
im trying to add a spouse room for my custom npc and i have no idea WHAT im doing wrong but every time i open the game to test it, smapi gives me an error saying that "NPC SpouseRoom can't be found in stardew valley/content/portraits/spouseroom.xnb"
i genuinely have no idea why it's looking there of all places for it, can someone tell me what im doing wrong?
Did you set the MapAsset field?
i did, im really not sure why it's not working, im sure i just made a typo somewhere because i know for a fact that everything is right
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโt occur in your last session, please load the game to the point where the issue occurs, then upload the log.
Also this just in case
for the json validator, it says there aren't any errors
It's not to find .json errors, its for us to see your code (well in this case at least)
ah my bad, never done this before
i assume that means you want the link it gave me?
Yes
you're currently just trying to define an NPC named "SpouseRoom" instead of changing the SpouseRoom field inside your Andrew entry
I'd like to see the Disposition.json as well, but if you're setting the MapAsset only-- What Button said
you should just define it in your Disposition json instead with the rest of your character data
(assuming your disposition is using the 1.6 format)
that makes total sense
in my defense, the guides online did not specify that at all
which guides?
well honestly the closest thing to a guide i could find was what little description of spouse rooms there was in the custom npc page on the modding wiki, ive actually mostly been using other mods as references
that guide does link to the NPC data page though, as well as a full NPC template
i must be blind then, as if this situation weren't already embarrassing enough ๐
You dont know how often mod authors misread and mistype things, its fine 
its a lot of text! easy to miss things
the SpouseRoom in entries mistake is more of a content patcher in general mistake though, if you end up needing to edit specific fields in specific t hings later on you might wanna look over the content patcher editdata docs
i think the funniest part about that is the fact that i copy and pasted that entire thing from someone else's mod that works perfectly fine despite that spouseroom mistake
which mod?
sve ๐ i just copied some of lance's data
i don't see a patch like that anywhere in Lance's file, but there is literally 0% chance something written like what you had can work in any mod
so i think you mightve just copy pasted the wrong thing into the wrong place by mistake
that's entirely possible, ive fumbled a lot of things like that in the past
easy to do with an NPC mod for sure, theres a helluva lot to do to make one
i think my biggest plunder was probably when i was trying to make a custom recipe and attach it to a letter, i think i wound up struggling with it for a solid six hours before realizing i just spelled something wrong ๐
stupidity and determination is a dangerous combo
THE WAY I SPELLED BLUNDER WRONG IN THIS DOES NOT HELP MY CASE
So, I'm having another problem of my own, I have a machine that uses two Temporary Animated Sprites in its LoadEffects, not only the (notice how the little screen and vent(?) on top suddenly get slower) and when the machine is pickaxed, the animations stay there ๐
anyways. this happensss i get a lot of errors from spelling mistakes you're not alone :)
(I'm getting the log)
Log: https://smapi.io/log/87d39b75999e467a99863a9fa77d1950
Json that adds the machine data: https://smapi.io/json/content-patcher/d480e2ee385b4faa84a8ba9de212fece
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home Single Language, with 7 C# mods and 1 content packs.
Is the stuck parts TAS
Yes
good news, this worked immediately
I think you better use the other way to animate
is it because you set Loops to like a fuckton
TAS need to have some fade set or else they get stuck like that yea
Other way = Frames
๐ I mean, I'm using it for the drill part but using only that for every part of it means I have to make so many frames
How many loop did u put
9999 or such, its in the json link
(like literally a million)
(i dont know what interval does either, is that also important)
Scammed
I admit, its from ILSpy but it probably wont misreconstruct the code to change that much?
nah it wont show code thats just blatantly wrong
The other thing I recall being important on TAS is AlphaFade
I'll try setting that and try again
though you only have one WorkingEffect anyway?
oh wait i misread
forgot you were responding to chu's idea ignore me
Worst case I guess you do just make n x m frames 
If you use something to script the combination it can't be that bad
(what the heck is SortOffset)
(Where to place the TAS on the machine, offsetting based on its collision box)
SortOffset on the machine data wiki page says to look at the temporaryAnimatedSprite entry in event commands b ut that doesnt have a sort offset :v
ah, i see
"The tile Y position to use in the layer depth calculation, which affects which sprite is drawn on top if two sprites overlap."
Yeah ๐
i guess thatd be the depth in temporaryAnimatedSprite then
After setting the AlphaFade, it no longer stays there after machine is gone but the animations still start late 
What's the WorkingEffectChance
1
Perhaps the TAS only shows up after 1 interval passes
can you just put like one frame of it in LoadEffects to make up for the WorkingEffect starting late
i know not enough about machines to be able to help any further with that specific issue 
I suppose I'll have to try make the large amount of frames, it was worth a shot 
Well at least it works and animates smoothly now 
So if I wanted to have a building with a config option for it's exterior would I would just use one texture for it and have a separate EditImage that then changes that texture instead of trying to directly have a dynamic token in the building's texture?
like this doesn't work (very well at least)
why doesnt that work well?
it's not changing when i change the config
or change season or run patch update, i think i'd have to reload the game for it to change?
it works on the name and desc but according to lookupanything the texture is still the same one
hm. does it update if you dont use a dynamic token there but just use a When condition to change the Texture field with EditData specifically?
this is the texture in the blueprint so i'm assuming that's why it doesn't work
having one texture with a conditional EditImage would (i think) work but iirc EditImage is not the cheapest operation to do so if you can avoid it i think its recommended
(also just to be clear, was {{Building}} a dynamic token or a config token?)
i tried it with both
Building is config
though maybe my dynamic token sucks?
this is correct though maybe
okay i changed the texture directly on the blueprint, reloaded, and it's still using the old one
i'm guessing which texture to use is just per-building bc of the skins thing
maybe an editimage is just the way to go then
or i just make this building have skins instead of it being a config, though that seems like it could be annoying if you change your mind and then have to rebuild and move all your animals 
(unless you can just change skins from the carpenter menu and i haven't realised that)
ooh wait you can with the painting thing, that's how you do the pet bowls! i can avoid editimage after all!
funnily enough if the paint mask specifically is updated that will cause the texture to reset which im pretty sure would make your dynamic token work lol. idk a lot about paint masks tho
Yeah. MenuChanged sometimes feels a tick late. I wouldn't use Rendered. UpdateTicked if you're terrified of Harmony, else Harmony
You know, I'm not sure that effects are removed when the machine is
There's not a way to filter Nexus search results so that mods dependent on a particular mod (Portraiture) aren't shown, is there?
Don't think so, Nexus search is worse than Discord
Poop. Didn't think so either.




