#making-mods-general
1 messages · Page 255 of 1
you spelled beautiful wrong
this one already scares me enough ... i dont need him to t pose on me he already does by existing
yee sadly you cant have the t pose its too wide
it CAN be a furniture item though...

hm....
players buy the t posing qi from the qi arena shop
i wonder what other totally random thing would be great qi-fied
everything
qi sprinklers
do you know those statues where there's water spewing from the mouth
I both thought of bombs and then also the actual mines
oh my god
there's worse options for sprinklers
Love being in some fancy, marble-carved location, a wonder of architecture, and someone's made a cherub peeing fountain
you took a stone-carving amount of effort here, WHY
because hehe funny ... i guess
honest thought: you will die before you finish drawing the leaves on this tree
probably
but i like to suffer
gonna have some fisticuffs with death
You could just make it be the very bottom/roots of a super big tree
"yeah, all the leaves? offscreen"
there's suffering and then there's climbing a brick wall with your teeth
"this is just a big stump for all you can see, the rest of it is way offscreen"
that was honestly my plan tbh
also sprinkler is too small to have a qi face i found out(or i have skill issues)
I was thinking just have his head in the world emoji(?) sprite but shrink it further
and have 4 of em, front/left/right/back
I know I'm not the mod author for bees plus, but they have a bug where if beehouse a has item x and beehouse b has item y, if you collect from them "too fast" the second item becomes whatever the first item picked was. They didn't define how fast too fast was, but it did happen to me with a good 5-10 seconds between behouses and I was curious why that may be
i rest my case at it looking bad xD (theres no qi emote in emotes, hm) anyway, enough tomfoolery lol
i am realizing i should probs take a break from writing out my events cuz i am finding every thing to do instead of continueing
make more horrific amazing qi things /silly
QiBaby
babqi
😭 more qi babies sounds like a nightmare good golly
hecate triple-headed god Qi
I still have to make the t- oh god
yes 
Furniture
(just saw this now)
perfect, ship it
H
Oh no
oh my god you made them cool
i literally just recolored the kids i didnt - 
he would look cooler with sunglasses wouldnt he...
Qi would put sunglasses on his kids wouldnt he
the baby was born with those spectacles
those are not accessories, but a bodily extension like the anglerfish's angler

oh m ygod
do it i double dare you /j
alternate alternate baby sprites - do you want your children to look rad as hell? use these
Qi House
There's already qi cow but what of qi chimkin
Just stick sunglasses on blue chicken ez
the possibilities are endless ... qi tree... qi horse... qi shipping bin... qi house...
qi valley
i originally named my folder Qinsanity if thats no testament
Welcome to the qi zone
i did make a Qicken
my silliness knows no bounds
I love all of the qi things youve made honestly theyre neat
even t pose Qi?
Even T pose qi 
oh my
what do u think the relation between qi and joja is
man, I started drawing my tree and I already suffer
Please release all these Qi things
it looks bad, man
is there anyone who likes doing trees
i do when they arent this big
I was given permission to make them into actual things
which I will be doing
hatred and loathing
Maybe not that intense but I would imagine he doesn't like them very much because of the general 'easy way' of doing things (lots of shortcuts for profit etc)
Does Console Code https://www.nexusmods.com/stardewvalley/mods/3101 still work? I tried it and only got errors, am I missing a dependency?
it mighttve broken in 1.6.9 i guess? but
- why do you need it
- its not really a making mods question
I'm trying to debug my mod. I think I'll just make my own console commands for any info I need to get
this is maybe like the worst way i can imagine trying to debug your own C# mod
just add an OnButtonPressed event to do debug logging stuff when you hit F2 or something
bumping this
if it broke I will cry
all time favourite mod. rest in pieces buddy
woo, tentative success on BV compatibility and recolor support (Earthy and VPR) for the apartment mod! And also got a shop configured for Leah's house with the spouse portraits.
What are you struggling with
Trees mentioned, THE CLOWN RISES
👁️ 👁️
I like trees
I can't draw one right now but maybe I can help with the one being made
i think chu was just commenting on void's tree suffering
I like trees. Mossy trees specifically.
Expanded adds new wild trees, but make them unable to have moss, which is a crime
tbh I think I just like moss
oh its just observation, i feel like not liking tree/foilage is common
I was incredibly surprised to see that the pacific north west had actual mossy trees
do you guys not have mossy trees?
I mean, I'm in Alabama, mossy trees just kinda happen
I cannot for the life of me make it look 3D in this size
mossy tree ❤️
that is a beautiful amount of moss
Trees will haunt my nightmares for years to come once I do my apple trees
Like Spanish Moss, that stuff loooves trees
How does one make 12 unique apple trees? suffering thats how
spanish moss on trees is so gorgeous
It's pretty damp here in general, so the moss goes off
you can even find multiple kinds on the same tree
i think my biggest mistake was to just eyeball the shape
im gonna head over to the art channel and cry there probably
Does anyone perhaps know what PackedValue means in SaveGameInfo? I'm trying to change my farmer's hair and eye color via that file since the sliders on my phone are tiny and horrible, but I wish to not break things
this has solved my steam data issue problem for now. thanks for the work around
Welcome!
It's a single-value representation of the RGBA color values. Here's how it's calculated, in case you want to create a quick script to convert RGBA values to the packed value:
/// <summary>Constructs an RGBA color from scalars representing red, green, blue and alpha values.</summary>
/// <param name="r">Red component value from 0 to 255.</param>
/// <param name="g">Green component value from 0 to 255.</param>
/// <param name="b">Blue component value from 0 to 255.</param>
/// <param name="alpha">Alpha component value from 0 to 255.</param>
public Color(int r, int g, int b, int alpha)
{
if (((r | g | b | alpha) & 0xFFFFFF00) != 0)
{
var clampedR = (uint)MathHelper.Clamp(r, Byte.MinValue, Byte.MaxValue);
var clampedG = (uint)MathHelper.Clamp(g, Byte.MinValue, Byte.MaxValue);
var clampedB = (uint)MathHelper.Clamp(b, Byte.MinValue, Byte.MaxValue);
var clampedA = (uint)MathHelper.Clamp(alpha, Byte.MinValue, Byte.MaxValue);
_packedValue = (clampedA << 24) | (clampedB << 16) | (clampedG << 8) | (clampedR);
}
else
{
_packedValue = ((uint)alpha << 24) | ((uint)b << 16) | ((uint)g << 8) | ((uint)r);
}
}
Thank you! I don't understand how this works tho
I can't seem to add more than one buff to a custom item. I try, I don't get any errors, but I only have the first listed buff take effect.
On CP?
Yes
Idk how to make items with CP 😭 I'm sorry
Here's a quick LINQPad script which prints the packed value for the RGBA color you want:
I assume you're adding them through the Buffs field in Data/Objects? Can you post your JSON?
Yep I am, here's my JSON https://smapi.io/json/content-patcher/41aa48544a234a09b4e8aefa2bfe48fd
I took the other buff out
Can you post the version with both buffs, so we can see why it might not be working?
Okay, so it's one buff with two attributes? What does it show when you hover on it in-game?
Yes it is, it shows +2 Luck and doesn't mention Combat or give me the buff
ah I recall that the new attributes added in 1.6.9 don't show icons
CombatLevel, AttackMultiplier, CriticalChanceMultiplier, CriticalPowerMultiplier, Immunity, KnockbackMultiplier, WeaponPrecisionMultiplier, and WeaponSpeedMultiplier
yeah
I used them on my new alchemy potions, but no icons, as far as I can tell the buff is there, you just can't see it on the hover
Ahh ok, I've used CombatLevel
you can consider using entries in Data/Buffs instead, and elaborate their effect in the description
that's what i ended up doing
fair warning though: buffs stack unlike drink/food effects (because drink/food is a single buff that replaces with each new one)
but if you make foods with actual buffs then you can have all of them
Oh I have made a food item though
right, what i mean is if you add it via an actual buff (isntead of the natural buff effects on the food item itself) then it becomes a seperate buff and stacks with other food or drink effects
(You can add a buff to Data/Buffs, then apply it using the BuffId field in the food's Data/Objects buffs list.)
^
Ahh ok I gotcha. Thank you both 
(also FYI extra combat levels do nothing other than trigger more and harder monster spawns. letting you know in case you thought it increases stats)
so increasing combat level is almost a debuff 😛
Haha I thought it increased stats
im thinking of learning C#... is it worth it?
sure?
is it worth what?
that's a very vague question
Like is the time and effort put into learning the language worth what you can do with it?
If I put 3 hours into learning it, but I can't do anything with it then it wouldnt be worth it
is there something you want to do with it?
This type of things depends
I don't think you'll learn enough c# to do much of all in 3 hrs
if the max amount of time you're willing to put in is 3 hours then no, it isn't
It was an example
If you put enough time and effort in, you'll be able to learn as much C# as you want
But it will be probably be a lot of time and effort - speaking from personal experience lol
I've spent hours and hours and hours trying to learn so far and can barely manage anything
"is it worth it" for c# for modding is like asking "is it worth it to learn to draw" or "is it worth it to learn a craft". We can't really answer that. Do you want to do it or not?
But I am enjoying it so it's been worth it
If you're just wanting to achieve an end without experiencing the means, better to put your effort towards earning money and then commission someone else for the C# lol
Well with more and more stuff being available to CP... I don't think I will do it yet
One day I'll do more art haha
I want to do more art too
but crafty stuff is easier when you can't decide what to make haha
Yeahhhh
Ermagersh I managed to use a game method all by myself! 
is Elizabeth not a mathperson any more???
Does anyone know which parts of SDV Aquarium are C#?
oh, no, she is, discord is just being weird again
discord was showing me just the name Elizabeth and I got concerned that she abandoned the mathperson collective
No don't abandon me, Elizabeth!!!!
anyway back to playing this game I'm very bad at
Hi all, I have a problem, I tried to use getAllCharacters() to get the data of all the NPCs. But when it outputs I find that it outputs two Qi gentle, and there is no leo, kent and gil. Is this normal?
‘’’ public static readonly IList<NPC> NPCdata = Utility.getAllCharacters().Distinct().ToList(); // fix rare issue where the game duplicates an NPC (seems to happen when the player's child is born)’’’
Gil is a map tile iirc
Leo and Kent might not be spawned yet, and Qi has some weird hardcoded shenanigans
(there's like, the NPC Mr.Qi and then theres some weird references to other stuff for him in some places, so I think it makes sense for two to pop up)
Thank u Friendable QI
Probably a better question to ask is can I have a donation system (like the museum) in a CP mod?
Is there any way for me to change or intercept the vanilla method that adds the island mailbox? I need it to be created two tiles to the right.
i think we already answered you but not right now
there's a wip museum framework from button, soon™️
but you can use unlockable bundles for something similar 
Oh I don’t remember anyone answering. Ooo that’s good news 
Yes.
What are you planning on
Use DataLoader.Characters if you just want the data; getAllCharacters would be to get the actual instances, and some instances may not exist yet at a given point in a playthrough.
(And Gil is not a character, right? Gil is furniture, or a map tile or something.)
I m trying to make my mod compatible with other mods. Now npc list is set up manually by me and hardcoded
That doesn't really answer the question of what you are trying to do. The salient point is whether you actually need the NPC (character instance) or just the character data.
Because Leo literally does not exist until you get to the island, and Kent literally does not exist until year 2. They are not in the game. And mod-added NPCs may have similar rules.
Leo not existing until you have fed his parrot the 1st golden walnut was a pain for me to find out, since it meant when I replaced his sprite I had to use EditImage on his spritesheet instead of the Appearances system.
(He doesn't even exist yet when you see him run to his house)
Hm.. I'm guessing in order to have custom interaction tiles for furniture you would need FF yes?
(i.e. if I want the bounding box to be the center instead of starting at the bottom left)
Question regarding CP and local tokens: Is it possible to list a series of LocalTokens for the same value in a single patch and have it iterate each of them?
For example, I want to have a list of objects (spouse portraits) and apply a context tag to all of them, without having to make dozens of copies of the item EditData code.
no
.
Fair enough
The dream of easily applying context tags in bulk will have to wait for another day
What is the noun for calling a method? Like instantiating a class is an instance, calling a method that I've defined is a ______?
No that's still a verb
method call
well you did say "whats the noun for [action]" 
invoke is how u call methods from the MethodInfo tho
calling -> call
invoking -> invocation
Yes and I meant what is the noun for action
perhas good to tell us what u r hoping to do
i suppose 'a calling' would be a noun too
I was hoping to be able to talk about calling a method using the correct wording xD
action is also a noun 
In some code types, that's also a 'function'
Isn't the method itself called a function though
verb is a noun (i'll see myself out)
well, how would one be expected to answer "whats the noun for running"
I might call it a “function call”
i think technically a function has an output, so a void method would be an action
Like I would say “once during every function call, this function runs this line of code” for example
Is that the kind of thing you’d want to express?
If function call and method call mean the same thing, I think so
Or “before each function call, this Harmony prefix gets run”
I’ve never been clear on method vs function tbh
I assumed it was just style
in C# terminology at least you'd use method over function, for C/C++ i've only ever heard function
personal experience only
I was asking for general understanding of the C# terminology, but my specific usecase right now is that I want to ask how to edit or replace a vanilla method call.
Specifically I want to change the value of the first argument in both setMapTile calls here
public void ApplyFarmHouseRestore()
{
if (base.map != null)
{
if (!base._appliedMapOverrides.Contains("Island_House_Restored"))
{
base.ApplyMapOverride("Island_House_Restored", (Microsoft.Xna.Framework.Rectangle?)null, (Microsoft.Xna.Framework.Rectangle?)new Microsoft.Xna.Framework.Rectangle(74, 33, 7, 9));
base.ApplyMapOverride("Island_House_Bin", (Microsoft.Xna.Framework.Rectangle?)null, (Microsoft.Xna.Framework.Rectangle?)new Microsoft.Xna.Framework.Rectangle(this.shippingBinPosition.X, this.shippingBinPosition.Y - 1, 2, 2));
base.ApplyMapOverride("Island_House_Cave", (Microsoft.Xna.Framework.Rectangle?)null, (Microsoft.Xna.Framework.Rectangle?)new Microsoft.Xna.Framework.Rectangle(95, 30, 3, 4));
}
if (this.farmhouseMailbox.Value)
{
base.setMapTile(81, 40, 771, "Buildings", "untitled tile sheet", "Mailbox");
base.setMapTile(81, 39, 739, "Front", "untitled tile sheet");
}
}
}
(This is in IslandWest)
javascript uses function 
Yay, transpiler time
i was thinking of mentioning typescript using function but we don't use either in this channel haha
its relevant for documentation!
not that id put my code talk about it in here anyway, even if it was for my docs
Drat I was afraid it might be Harmony
(Also while we're on about functions, C# uses call for the name of the opcode but if you have a delegate you can call .Invoke() on it so that's fun)
you can always do skipping prefix sins
Harmony is the only way to do any kind of method replacement

yes, 'how to edit or replace a vanilla method call' is about as explicitly a Harmony thing as you can get
I don't think I am allowed to use Harmony yet :(
Why not? Who will stop you?
in this case tho i do have a no transpiler way, set this.farmhouseMailbox.Value to false in a prefix and keep it's original value in state
then do the actual work in postfix and restore this.farmhouseMailbox.Value
My belief that nobody should release a mod where they have no idea what they're doing lol
I cannot support a mod when I don't know what it does
My experience on NexusMods tells me you are not necessarily alone in that belief, but it is certainly not universal.
buildingfy ginger island
oooh yes please. i'd like to be able to put a ginger island on my farm
that is, turn the map patches of farmhouse obelisk shipping bin into buildings
so i can move em around
I'll put two ginger islands on my farm. One for me and one for my farmhand friend.
that's a PIF mod but i support it too
Right now my ambition extends to "maybe I can make a 9 tile wide farmhouse"
i, too, started with harmony. god knows why. it was terrible lol
anyways you arent gonna become worthy of harmony or whatever if you don't try it
or i dunno
my code, not the experience
button can you declare aba worthy of harmony
i dont think anyone needs to be declared worthy of harmony unless theyre touching the save serializer
That's worthy of madness, not harmony.
well there u go, be free and do crimes
its really the only way to break something permanently
i'll give you a written note if u want to make a clickCraftingRecipe patch
Look I did not even know how to access a list until last night
Making a PIF version of ginger island so you can put multiple ginger islands on your farm sounds horrifying /pos
If I were to Harmony this, someone else would literally be writing the entire thing for me because I would not even be able to start
theoretically if you had any walls in there you could also put ginger island IN the ginger island... inside.. of the ginger island...
anyways if u do the building-fy approach
you are perfectly justified to go skipping prefix 
I want to be ambitious but I also want to be realistic of what I am capable of right now
tho hm, might need to do the map patch to make them not have the rundown version of buildings? unclear
Not that it's normally worth nitpicking about, but since you were asking, a method refers specifically to a function declared as a member of some type (e.g. a class). Function is the more general term for any self-contained piece of logic with discrete inputs and outputs, and can refer to things other than methods - for example, local functions in C# (a function declared inside a method).
Most of the time you actually should say "method" because it's unambiguous what you're referring to. (Unless it's one of the rare cases when it is actually not a method)
Thanks, that's helpful context :)
what if I do what dh did to Game1 but only for the save serialiser
declared guilty of harmony
i'm trying to make an extremely basic tilesheet modding resource--do i have my content.json set up correctly? i thought i would need to load each season separately but i looked at others for examples and they didn't
actually, instead can i just release these as images and give authors permission to pack them in their own mods, with credit? would that be preferable rather than making people download it?
What are you making these tilesheets for?
i made them for my mod, but then i wondered if maybe other people would want to use them
it's just grass/sand transitions
If you're still on the fence about other people being able to use them, you can just pack them with your mod
if a tilesheet starts with "spring_" and there are other seasonal variants loaded in, the game will swap them automatically, but they do need to actually exist
i believe a lot of tilesheet authors simply use the {{season}} token to load them in as necessary
also, your tilesheet load targets are rather non-standard and likely to confuse people, probably
Because tilesheet mods usually contain much more than just one type of tileset, I doubt people would download an entire dependency/resource for just that (this is not a critique, just what i think is realistic)
yeah that totally makes sense
as for whether or not you can just release them as images, then... ofc! theyre your images.
in that case, how could i offer these up to people if interested?
you can decide what people are allowed to dow ith them
Just upload the images to the Nexus?
You can load them in your map for the time being. who knows maybe you end up making enough tile edits you end up with a big tilesheet you can eventually release as a resource.
if you decide to bundle them with your mod, you could specify in the permissions section that anyone can use the sand-grass tiles for their own use, with credit
That's even better.
okay cool, then i guess that's what i'll end up doing, since i'm definitely using them in my mod (i've already got the map made and everything lol)
i did also make a whole lighthouse, but the sand/grass tiles seemed like they would be much more useful for map makers
Do you have recolor compatibility for these tiles?
not at the moment, but i was going to make them compatible with the popular recolors after finishing my mod (which i've only got one event left to code + testing)
I see! so for earthy, VPR, and starblue then?
yep and i thiiiink one more but idk off the top of my head, i'd have to re-check the list someone sent in here a bit ago
i find those three covers enough bases
good to know i won't complain about less work haha
wittily, if you want. my tilesheets have earthy, VPR, starblue, and wittily
Someone submitted foliage redone to me which i still havent evaluated yet, but thats also what some people use
Do you use Photoshop? DaisyNiko's uploaded her Edit Layers to the Nexus.
i do! i will absolutely check that out
There is also soft slow seasons but i definitely understand if you don't want to do that one 
Will this work without the reference? I'm on mother's computer (my laptop is broken) and SDV isn't installed
I feel like I interrupted something 😅
i don't mind! this discord is fast-paced :)
Either everyone is talking at once or it's been hours since anyone has said anything lol
god im so done with looking at trees 
Hi Kisaa
It's ... going. I regret deciding to make this catalogue
i realized i cant even make the trees how i want anyways cause of how CP does furniture tiles (I think I'd have to use Furniture Framework for it... and I kinda dont wanna do that so)
awww that sucks. but yeah i understand not wanting to use too many extra frameworks
blurry picture of my progress... there's so many left to do.. im ceasing
also, catalogue? 👀 will this mod have furniture too?
Ouh different mod :)
Though If I make furniture for Honey I will also add it as a catalogue /furniture option :3
Like I did with the decor I made/used for Qi
This one is me turning all of the foliage i could find in stardew into furniture
(puts on enabling hat) you will make furniture for Honey
apple baskets, apple foods (candied? pie? apple slices)
Also it's not really the framework stuff that'd bother me with this mod, it's more so that I'd have to reformat everything IIRC and ... I'm already almost 200 furniture items in so
ough yeah thats a mood
There are a lot of apple foods I'm making yeah :3
i have not touched the code for the furniture pack im working on because scope creep forced my hand
im scared of having to change too much 
:(
In CP, if I call the value of a token array without specifying valueAt, will it just return the first available value?
Hi guys. When adding a custom location, do you think having two midway points before reaching it would be a big deal to players? The end location would be nice, but mostly just the house and corresponding land for my npc. I think two middle maps, not too large in size, would emphasize the distance it really is in relatively simple way, but what do you think?
depends on how big the transition maps are, and what you put in them
and if they play a role or not
I for one wouldn't want to walk through transition maps where all you can do is walk
I was thinking a not too long, pretty forest and a small cave area maybe
also of course, it depends of what annoys you the most, feedback from players about "useless maps, take too long to get there" or "hu!! how can the location be here, there should be a beach there!!!"
I would try to avoid making the main point too long. I was thinking a somewhat short walk, like maybe the size of the secret forest
Personally i find just foraging to be one of those "pointless" activities in a transition map; id probably add a fishing spot and some resources to collect, and eventually a progress locked warp that transfers you to (near) the end destination
if you want an example, take a look at the hidden woods optional area in my wildflower acres farm. the end destination is ||the hidden spring|| and activities you can do in that woods map are foraging, fishing, resource collecting, and rare monster forage (e.g. slime eggs)
Interesting point. There would be more at the end location, really.
basically, if you add a map it needs to serve ideally several purpose
so right now you have immersion/storytelling
i suggest to add at least one or two
I think I need both points unfortunately for the implied distance of my end map to make sense
farmer is also essentially a 1x2 object. traversing a map you think is small can take a while once you actually see the map in game
don't worry too much about making sense
some people will not get it anyway, and some have no trouble anyway
i mean, you can worry about it a reasonable amount 😄 just not too much!
Well, that and the atmosphere I feel a forest in between would give
but basically what you can add is :
- forage/fishing/trees/other things to collect
- events taking place here
- monsters if fitting the vibe
Hmm, I actually forgot about monsters as a possibility…
you don't have to go crazy about it, just a bit of forage/tree on the way to your place will already be cool enough so it doesn't feel empty
Yeah, I wouldn’t want to over complicate it…. Unless I end up making more custom stuff to make the forest feel more unique. I always have a chance in getting caught up in doing stuff like that…
Well, thanks for some of the ideas/opinions from you both.
sure! and maps can change so you can always have some placeholder, see how you feel when playtesting or playing, and adjust
i resized some of the maps in my mods/added some
I just tested calling {{ChildNames}} with patch parse and it returned both values so I think not using valueAt returns the entire list.
Okay, thanks 👍
I think I need to have SDV on mother's computer for the file PathosChild sent to work 
I'm legit gonna cry ;-;
well yea it's a linqpad script
I don't know how ts works!
it's pretty hard to do C# dev on a phone 
That's why I'm using mother's computer
and its pretty hard to do modding without the game installed
(to add on to this, it will return the entire list but most tokens do not have any sort of order entirely guaranteed. some do, like ChildNames, tho. but not most)
Is that for mobile?
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
the problem is bidirectional too
EDIT: i figured out my issue, no help needed! i had "AddWarps" in my edit map json from the previous version of the map and it must have been confusing them since those warps were now inaccessible. they use the elevator as planned now!
@latent mauve (or anyone else who might know): i tried adding an NPCWarp to the elevator in the community center, but the characters are getting stuck right after entering the community center. how do i get them to use the warp?
"LogName":"NPCWarp for elevator",
"Action":"EditMap",
"Target":"Maps/CommunityCenter",
"MapProperties":{
"NPCWarp": "50 18 DeadBoyAgency 6 18"
},
},
it's annoying as hell to test mods on android smapi since it doesn't run in emulator
I literally just want to change my farmer's hair and eye color to a specific color, why is this so damn hard 
does your location name not use a modid in it?
they want to edit their save on mobile
Yeah, but mobile sliders are horrible
to fix it
it doesn't, because that was the first one i added and i was getting issues with having . in the name, so i coded it without the mod id
if any other mod uses the name DeadBoyAgency for a location i'll be shocked
i see, hence the packed values thing 
Mhm, I feel like that's helpful
at least u wont need game then, just get something to run C# real quick
thats what linqpad is
There's something in the file that references the game tho
And it's not working without it
Well idk what to tell you. Again, me stupid
public static int Clamp(int value, int min, int max)
{
value = (value > max) ? max : value;
value = (value < min) ? min : value;
return value;
}
this is what MathHelper.Clamp is, just add it as another method and replace MathHelper.Clamp with Clamp
That's not what I got sent 😭
well thats bc im telling u the thing required to eliminate Microsoft.Xna.Framework usage
Okay? So just delete the whole line?
you need to modify the script yea 
So I just delete the line with the Microsoft thing?
i can't run linqpad myself, so im not sure what is valid
in terms of the headers i mean
also not too sure where uint.Dump is
I barely even know what's being said to me
Okay, y'know what? I give up. This is ridiculous. I'm genuinely about to cry
why did you 👆 me then
Because I also don't know what uint dump is
but anyways i did go take a look myself and it's not that complicated without script
so for instance here's a hairstyle color i pulled from one of my saves
<hairstyleColor>
<B>50</B>
<G>90</G>
<R>193</R>
<A>255</A>
<PackedValue>4281490113</PackedValue>
</hairstyleColor>
if i convert 4281490113 to hex i get FF325AC1
And you've lost me again
i believe the order is A B G R
Oh
so we group like this:
FF 32 5A C1
and convert each 2 digit hex back to decimals
u can just use https://www.rapidtables.com/convert/number/decimal-to-hex.html to do all this
Decimal to hex number conversion calculator and how to convert. Base 10 to base 16.
We get numbers I understand?
its manual ofc but no fiddling with linqpad required
https://dotnetfiddle.net/1TzBQh
if you just want to run it and dont much care how it works you can also edit this script (the values under the "Change these values!" line) and hit Run
(... why is it serializing both the individual values and the packed value that's so dumb lol)
Okay I think I get it
to get the packed value from some RGBA you just do the reverse
so RGBA to 2 digit hex, 4 of em
and then order em AABBGGRR
then do decimal again
Well, 201010FF is pretty easy 🤣
I'll mess around with that at a more reasonable hour (after I calm myself)
Honestly, I probably could've made the connection myself if I'd been looking at familiar hex numbers instead of somewhat random ones. Thanks for explaining 
It's not meant to be xml ser like that
Wait. I'm scared. Why is the packed value 10 digits??
Actually, does the 42 in 4279905105 do anything?
I'm confused again
its hex converted back into decimal
Okay so
The decimal value I want to use is 32,16,16,255 (rgba)
That would be 201010FF in hex
Yes?
convert it to decimal
So 255161632
that gives you 4279242784
Thank you 🙏
Also, idk about you, but my brain cell needs sleep ;-;
Alright. Backup has been made. Revisions have been saved. Time to boot up the game and hope it's not broken!
IT WORKS :D
Thank you sm 🙏
was it quicker than trying the sliders /lh
No, but it's more accurate, and now I know how to do it much more quickly 
more knowledge is more good
Also idk what that tone tag is 😅
lighthearted!
Ah, thank you
Hi, friendly reminder that the server is english only.
(i know it was 1 word but sometimes it can send a message to other people, also I do not intend to mini-mod, this is just a reminder.)
My bad
1,366 unseen events 
No wonder I've been having a hard time getting through them all!
Hey, we’d appreciate it if you don’t make reminders on behalf of the staff team please
Just report messages that break the rules or say so normally
oh my god Aba...
how many mods do you HAVE ... how do you even tell how many events there are 😭
Chu and Atra wrote me some C# code to get all the event keys for unseen events from every location in my game. I have 499 mods.
sorry
I wonder how that number compares to Vanilla...
Wait, I have seen some of these 
if you need some more stuff for this, I know someone who is always happy to write C# for you who has messed with events enough to write a mod for them 
It seems that it is not actually excluding the events that have been seen
So it's 1,366 events total (probably)
not that I can do a better job than atra and chu, but I can contribute code if they don’t feel like it 
do you have a link to the code somewhere? if they sent it here as a message or something
It's in my thread #1256552123202539561 message
hmm, it should be filtering them
but idk how Except works haha (I assume it’s linq but I’m not quite certain)
oh, I see, yeah I think it should be filtering them? in theory, at least
are you sure it isn’t?
Yep. If you like I can send the log that contains both the list of supposedly unseen events and the patch summary that lists all my seen events.
I don't know if me having used it with 1.6.8 matters?
I trust you
I wonder if it’s a string sanitisation problem
actually, log would be helpful
I did change one line allEvents.AddRange(events.Keys.Where(key => key.Contains('/'))); because I wanted the preconditions but not forks.
I apologise for the horrific nature of my log. It's my actual playthrough save. https://smapi.io/log/7efe7c1c706c4374ac949afe2d9a7fb0
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 140 C# mods and 355 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
yeah it’s what I figured, the strings aren’t sanitised properly
#1256552123202539561 message looks like apparently chu saw it too 
Ohhhhh
Of course
When I changed it so that it didn't exclude the preconditions anymore (which chu also didn't do, but atra did and then chu was like "oh I didn't know that"), it made it so that it couldn't match against Game1.player.eventsSeen
Dangit
So I just gave myself a list of every event instead
basically, yeah. I think you’re using chu’s code as a starting point right now? try using atra’s and seeing if that works
No, I used atra's
But then I changed it because I didn't want just a list of event IDs
So now I'm back to trying to figure out how to stick the preconditions back on after removing them lol
do you want to do it yourself or would you like me to send some working code?
I am going to try it myself because I have an idea
And then if it works I will get you to show me the better way xD
Hi guys, does anyone know anything about this type of warning? I've been doing a lot of stuffs last night without testing bc I figured I'd do it today, but I forgot what I did and don't know where to begin looking
mismatched braces somewhere, i imagine
CP is detecting something as a patch that has no Action field
Ah dang
my worst nightmare
and probably not any other required field
or genuinely a patch with no Action field
would it say "invalid" for that?
i guess it does get the patch name from the action, fsr i thought it got it from the target
okay yeah it might just be a patch with no action
in whatever file E0 is
oh thats the mod name
Ah, I think I found it
Yeah this was the culprit,, I totally butchered that one. Do not write code at 3am
mm, you get this if you add an entry with no logname and action
it can be as simple as {} if you like. very simple and low-effort error for a busy day
I wasn't expecting my mod to get big when I started doing it so I stopped adding lognames halfway through. I should start adding them again
FromFiles would also be incorrect if you didn't also correct that to FromFile
Yup, already fixed that typo too hahaha
i did realize it and muse about that realization immediately after saying that 
{ "Changes": [ {},{},{},{},{},{},{},{},{},{} ] } is perfect for the whole family and it's ready in no time at all
the children are all lined up in a row
everyone wants to integrate AI into stardew mods but nobody wants to procgen content patcher patches, the cowards
Hooray, seen events have actually been removed now! So it looks like I had 1,366 events in total and have 540 unseen.
Which is still a lot haha
Thank you to @lucid iron, @calm nebula, and @gentle rose 
Under what circumstances will "Game1.CurrentEvent" be assigned by the game?
Iro when do you sleep 
Now lol
Aparently
Sleep is for the weak
Do what I do, which is repeatedly get less than 4 hr of sleep and then wonder why I feel like shit all the time
I am postfixing this to return damage anyways if it is an armored buggie.
public override int takeDamage(int damage, int xTrajectory, int yTrajectory, bool isBomb, double addedPrecision, Farmer who)
{
int actualDamage = Math.Max(1, damage - resilience.Value);
codeandwhatnot
return actualDamage
}```
I want a ref int __actualDamage parameter here?
and at the end, I want __actualDamage = actualDamage;
How much running and knitting do you do?
I neither run nor knit, unfortunately
Then I believe you are legally distinct from Atra
Any person claiming to be Atra must meet those minimum requirements for their claim to be considered in court /j
what is "sleep"?
Something that comes when you need to do something else and something that you can never reach when you actually want to
This error
System.Exception: Parameter __actualDamage does not contain a valid index
at HarmonyLib.MethodPatcher.EmitCallParameter(MethodInfo patch, Dictionary`2 variables, LocalBuilder runOriginalVariable, Boolean allowFirsParamPassthrough, LocalBuilder& tmpObjectVar, List`1 tmpBoxVars)
at HarmonyLib.MethodPatcher.<>c__DisplayClass37_0.<AddPostfixes>b__1(MethodInfo fix)
at HarmonyLib.MethodPatcher.AddPostfixes(Dictionary`2 variables, LocalBuilder runOriginalVariable, Boolean passthroughPatches)
at HarmonyLib.MethodPatcher.CreateReplacement(Dictionary`2& finalInstructions)
at HarmonyLib.PatchFunctions.UpdateWrapper(MethodBase original, PatchInfo patchInfo)
at HarmonyLib.PatchProcessor.Patch()
at IridiumBombs.ModEntry.Entry(IModHelper helper) in C:\Users\Apryll\source\repos\IridiumBombs\ModEntry.cs:line 61
at StardewModdingAPI.Framework.SCore.LoadMods(IModMetadata[] mods, JsonHelper jsonHelper, ContentCoordinator contentCore, ModDatabase modDatabase) in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/SCore.cs:line 1861```
is from:
```cs
private static void BugTakeDamage_Postfix(int damage, int xTrajectory, int yTrajectory, bool isBomb, double addedPrecision, Farmer who, Bug __instance, ref int __actualDamage)
{
int actualDamage = Math.Max(1, damage - __instance.resilience.Value);
__instance.Health -= actualDamage;
__instance.setTrajectory(xTrajectory / 3, yTrajectory / 3);
if (__instance.isHardModeMonster.Value)
{
__instance.FacingDirection = Math.Abs((__instance.FacingDirection + Game1.random.Next(-1, 2)) % 4);
__instance.Halt();
__instance.setMovingInFacingDirection();
}
if (__instance.Health <= 0)
{
__instance.deathAnimation();
}
__actualDamage = actualDamage;
}```
I don't think you can get locals in a postfix
And if that's actually a regular arg then you don't need __
baby don't hurt me-- (i'm so sorry)
it should be 'ref int __result'
Thanks!!! That worked!!!
No more! No more! 🤣
hello i am new to stardew, how can i minimize the smap terminal when i open the game?
Are you on PC?
same way you minimize any other app
is there anyway to make this not popup
i see ty
It's bullshit, that's what it is 
@brave fable just a quick question -- sorry to ping. Is your LoC mod supposed to be split as such? if i uncheck the cp one (despite another cp version being in the mod folder for the top one and is identical to the bottom mod folder labeled cp) it won't run. I'm just working on a vintage interface recolor for the LoC ui and it'll seem this way I'll need to replace the assets in both?
I'm not blueberry but yes, many mods are split by content pack. You can't have C# and a CP content pack in the same folder. If you look at some larger mods, like expansions, you should see the same thing.
I'm just cinfused because the cp folder is here twice -- this is inside the top one but in the actual mod folder it shows as this
with duplicate assets in both -- I'm sure I'm just not like fully understanding
like I'd get if in stardrop it showed the cp separately if it read from the top folder but these are two separate folders that generated when i unpacked the file
anyway In the end I'm guessing I just have to replace the sprite pngs in both the cp files for changes
I take it you're doing a file replacer and not actually doing a CP mod then?
yes
It would be a lot easier to do a CP mod because then you'd just have to target the assets they load into
I was planning to hand over to nomori who is currently caretaking the latest version of vintage ui and they just have a folder of "compat" files to copy paste into things that need ui fixes
I think you probably unzipped it wrong and/or stardrop shenanigans
If you delete the whole folder and reinstall again it's just one folder
I unzipped as I always do; I dont open through stardrop
You basically need same cp stuff
my answer remains; try downloading fresh
GOAT made this if u wanna ask for more details
and yeah seconding (thirding?) the suggestion of making a CP pack
file replacements should only be used for mods that do InternalAssetKeys/direct loading where you cannot edit their textures with the content pipeline
hey all so I'm working on a little something
how would one add weather to a custom map
basically, make it always storm there?
I'm trying to make a desert canyon maze, and it'll be storming while you race through it to avoid a flash flood
I've been looking here: https://stardewvalleywiki.com/Modding:Location_contexts
at weather, but I'm not sure how to actually write the code
thank you!!
use CP to edit Data/LocationContexts and add a new entry, keyed with something like "YourModId_AlwaysStorm"
and then in your map add the property "LocationContext" with the value set to the key above
Gonna try bumping one more time
Thank you for this! It just clicked fpr me
Let me know if this is a coding faux-pas, but I'm trying to replace sebastian's 8 heart event entirely with a custom one. I don't want the original to play. The new one has additional trigger conditions. I can't seem to figure out how to "kill" the original as "k [eventID]" doesn't stop the original from triggering. Do I make a replacement in the Entries portion of the original event with a null entry, or something to that effect?
Maybe just target the original one, and change it?
Like:
Action: EditData,
Target: Seb8Heart (whatever the actual event number is)
Cause if anything ever depends on having that 8 heart event seen, and it doesn't exist or cannot ever be seen, it will make that a huge mess.
Hm yes that's what I'm trying to avoid, the mess of killing the event entirely for that reason. I think I just don't want it to play without preventing the new version from playing. I should poke around more, I might be misremembering something about the process, but thank you for confirming that my worries are sound! I'll play around a bit more and see what I come up with.
Is there a reason you're not using the same event ID for your replacement event?
Or maybe you are, actually, I can't tell from your message. If you are, it's an easy enough thing to deal with. You just null the original event and add yours. Since the IDs are the same even though the keys aren't, anything relying on the event ID will still work the same way.
[[Modding:Event_data]] see here about the keys in the event data
the part before the first / is the event id. leave that part the same
make an entry exactly matching the key as it is in vanilla and set it to null, like so:
"2349328/f Sebastian 2000/whatever/else": null,
(as you can see, i made up what the key is)
I'll give it a go, thank you guys!
then add your own:
"2349328/your conditions/here": "your/script/here"
That worked perfectly, thanks! 🙂 My issue was putting quotes around null the whole time...
ah yes. this is one situation where the distinction is significant 😅
Is it possible to i18nify the configuration settings for a mod?
Good to know. I had a translator ask, and wasn't sure how to proceed. Thanks, ichor!
Y'all! I was interested in your opinion on this. My best friend and coding mentor and I were having a debate about my code implementation. I wanted to write out information manually for any hard-coded exception cases (like how Ice Pip and Stone Fish have their levels and locations completely separate from the rest of the fish, etc.), and he believes I should take the stance of not hard-coding ANYTHING
I'd love to know what y'all think as fellow Stardew mod devs. He's a professional so I feel his perspective on this is skewed :3
Ice pips, stonefish and other mine fish is fine to hardcode because the game itself hardcodes them
The submission behind today's schedule article was withdrawn; instead, I'd like to take this opportunity to present the practice of Soft Coding.
Most programmers consider “Hard Coding” to be a Bad Thing: it’s hack-like, inelegant, and all-around lazy code. And as such, many programmers try their damnedest to avoid it. Unfortunately, this quest ...
(It's not the best-written analysis ever, but it's directionally accurate on the basic points)
There's no universal rule that can substitute for actually looking at a particular piece of logic and asking: "Are these values baked into the logic itself, or are they arbitrary decisions that can change?" and "Would externalizing these values reduce the maintenance requirement, or would I have to rewrite the code anyway if something changed here?"
I suppose you could inspect the IL
On the other side of this, it depends how much you care about mod compatibility. Things that you think really shouldn't change, because they're hardcoded in the game logic, might very well be changed by another mod's Harmony patch.
So while I wouldn't "soft-code" everything and make the configuration a total mess and dump all these problems onto the end user to figure out, it's sometimes polite to other mod authors to encode your "assumptions" in a little file that's easy for other mods to Harmony patch and has the appropriate no-inlining attributes.
https://github.com/focustense/StardewFishingSea/blob/master/FishinC/GameRules.cs
'course that's totally optional and you can waste a lot of time on that stuff preparing for a situation that never comes up.
+1 the reason not to hardcode is to reduce maintenance burden if things have to change
Another thing you can do is to dump your hardcoding to a json file
This is what lookup anything does for various can't determine from data items
To me, dehardcoding is a really nice to have goal, but I wouldn't focus on it if it competes with just doing the thing you're trying to do. By that I mean, don't overwhelm yourself trying to make something perfect when you might be better off spending your time developing your mod and quickly iterating on changes.
Sometimes the best mod isn't the one where you've done everything the "right way" but rather it's the one that you still enjoy working on, and you feel like you're consistently making progress on it
Hiya, is there a way to make use of another mod's configuration in a content patcher mod? I'm basically trying to extend a mod, but that means that if the mod I'm extending makes a change conditionally, I want to make my change conditional on the same thing.
I believe spmething like that is possible with the cross mod compatibility tokens mod (i dont remembered what it was called tbh...)
Ah, hadn't seen that. That seems to be exactly what I needed. Thanks!
TIL that the FlowerDance doesn't respect _spouse dialogue. It appears to be the only festival listed as an exception. Fun!
Hi guys! I'm still struggling with the bug in my Bees Plus mod that when you have many machines working and you put different items in each, when you collect them, they all sometimes change into the first item collected. It's kind of ruining my mods gameplay and I thought I fixed it but at this point I have to ask again if anyone has any idea why this might occur? I would be really thankful. Everything related to my machine is here: https://smapi.io/json/none/f1356aec96af44b8a316831a4858844e
Hi, guy who updated your horse mod here, and sorry for the completely random ping for a years-old post. I happened to see you made these farm animal sprites, too, and I need the sheep in my life absolutely love them. Is there even a tiny chance you'll ever release them? If there is, I'd be more than happy to help out however I can.
Hello! My creative juices have been pretty much dead for years now, but I think I have most of the coop animals done somewhere, and a rough animation for the sheep (only the left and right movement, and that is somewhere on an old phone, I'll have to dig it out 😅)
Tehnically, I do intend to finish it someday, but, knowing me, it'll take years :')
If you want, I can send you all I have so far and you can finish it if you have the will and motivation?
There are definitely spouse lines that you can use in the spring24.json file, but they are likely not coded to work without the _y2 key on the end because it is not possible in vanilla to marry someone before Spring 24 in Year 1.
OMG HI I REMEMBER YOUR AMAZING SPRITES!!!
Hello :'D
I'm sorry I never quite manage to finish/upload anything :'D
But I'm very glad I'm still remembered :')
All of your sprites are amazing, so it's hard to forget you! I absolutely can't promise I'd do your art justice, but I'd love to take a look and see what I can do. If you don't mind sharing them, I'd really, really appreciate that!
I'm currently charging my old phone, max I DM you when I collect everything?
Absolutely!
And hey, 'done' is always better than perfect :P
Maybe my animals end up being even better from the collaboration :D
soooo this is maybe kinda silly but. I only have the Contentsmith role but I have a SMAPI mod and a pixel mod too now >.>
(I have updated the wiki page)
You can message the bouncer about it
Triforce
hiii birdb I hope you get a work for the issue :( I just wanted to let you know since I said I would follow up on nexus when my next set of beehouses were ready that, this time, they all displayed that they were honey ready to collect but I got 2 random beeswax out of it 🤷🏻♀️ (normally it would display beeswax if thats what it was going to be)
Hmm. Would it be too weird for my WIP building map override framework mod, which also lets buildings have Water tiles actually work correctly, also make it possible for Water tiles to render like water but not otherwise behave like water? 🤔
Every tile in the WaterTiles array has two bools, isWater and isVisible. It'd only take a couple patches to let isVisible work separately from isWater.
I wouldn't be messing with the indoorWater property.
But doesn't it... already work?
Water tiles are processed in loadMap for any location that passes cs if ((this.isOutdoors.Value || this.HasMapPropertyWithValue("indoorWater") || this is Sewer || this is Submarine) && !(this is Desert))
And my logic to reprocess water tiles duplicates that if statement.
This doesn't really have anything to do with just making visual-only water, though.
What happens if you use a Garbage tiledata on a non garbage can tile? Like what happens to the animation?
is the problem the flavored flower soap all stacking into one stack
it's probably because you didnt put the flavor id into the internal name (unless that's in the i18n? can you show it?)
side note, you don't have to put the internal name into i18n, because it's never visible to the player
No i meant, have the map properties on the patch tmx apply independently of the overall map
I wasn't planning on doing that. I suppose I could make a CustomField for specifically overriding water processing in a building's footprint.
That would let you have water in Desert
(... are there any buildable Desert location mods though?)
I don't believe so 
Anyways, my thoughts for the Water property are like... ```cs
string water_property = this.doesTileHaveProperty(x, y, "Water", "Back");
// existing logic
if (water_property is not null) {
foundAnyWater = true;
if (water_property == "I")
this.waterTiles.waterTiles[x, y] = new(is_water: true, is_visible: false);
else
this.waterTiles[x, y] = true;
}
// new logic
if (water_property is not null) {
foundAnyWater = true;
if (water_property == "I")
this.waterTiles.waterTiles[x, y] = new(is_water: true, is_visible: false);
else if (water_property == "V")
this.waterTiles.waterTiles[x, y] = new(is_water: false, is_visible: true);
else
this.waterTiles[x, y] = true;
}
And then in the water renderer simplify it from blah.isWater && blah.isVisible to just blah.isVisible
Who wants to do some testing rq if they have like 5 minutes to spare
Ive made buildable indoor locations tho
Yeah, so I can see value in an override for water processing.
Though it will make things a little annoying since I'll need to postfix loadMap and check all buildings.
Terror
Or I could just forcibly assume any building should override water.
That would make things a bit simpler.
This sort of remind me of an idea matt mentioned, flooring that grant location context to whatever's on it
spoopy
A little buildable patch of spring...
Overriding location context in a submap region sounds like a complete pain. I'm glad I'm not working on that.
I know Im not op but I think its (mostly) with collecting from beehouses -- theyre supposed to give either beeswax or honey and it seems whatever you harvest first, everything after that gets turned into it
at least, that is the issue ive been having and discussing with them and has been a known bug from the start
hopefully they can chime in if there are any other bugs -- i havent gotten around to being able to craft soaps and such because this bug kept me from getting beeswax so frequently
so you have 4 beehouses ready at the same time, and if you get beeswax from one you get them from the other 3?
-- i havent tested that order yet, but if you reverse it and its 3 honey and 1 bees wax, the 1 bees wax becomes a 4th honey
and then sometimes it doesnt display as honey being available and then i get some beeswax.. for instance earlier all of my beehouses said honey was ready, i think i have 8 of them?
and i got 2 beeswax, randomly
(and this is several in game days after loading the mod in, and last harvest)
ah ha, I see
the real issue is that beehouses have RecalculateOnCollect set to true, which means when you collect from it the machine recalculates the output
this is so that if a flower nearby matures after the beehouse starts producing it can still get flavored honey
however I see why that could cause issue for lookup mods, because what the beehouse starts producing and what it actually spits out doesn't match
anyway as long as you're still getting beeswax some of the time it's not a bug
i mean, it does show up but then... becomes honey in the inventory as soon as its collected
like I said, it recalculates on collect (not on ready)
😅
ignore what's shown in the popup
that item doesn't exist, it's yeeted and replaced the moment your hands touch it
so its incorrectly displaying beeswax/honey, is what youre saying? I think ive only gotten 4 true beeswax that havent disappeared in that case
and i think @floral canyon had beeswax at a 0.25 spawn rate? or whatever that section is called
so i think ive gotten like ~25 honey to 4 beeswax
if that math is mathin
0.25 * 0.5 = 0.125
There is no way to fix that is there. As the bubble is just going to be wrong.
aight, i guess thats good for bird then, just a visual bug 
hmm I see another bug in there, they have honey set to be 75% of the time and wax 25% of the time
what this means is that it's possible for the beehouse to produce nothing if both of them roll false
well in theory it will happen 18.75% of the time
but I'm not sure though
if they want wax to happen 25% of the time they should make it RANDOM 0.5 and remove the condition from the honey entry
or set RecalculateOutputOnCollect to true, keep honey RANDOM 0.75 and removd the condition from the wax
(also they should be using TargetField to target the OutputItem field; currently they're wiping all of OutputRules, which may cause problems with other mods that edit beehouse rules like Cornucopia or Better Beehouses)
apologies for the wall, I have opinions on machines lol
oh thats why it was conflicting with BB
BB's author wrote a compat patch
it was crashing at save previously until then lol
and no worries! I'm sure this will be super helpful for bird when they come back online
I know it would be useful for me if my mods were constructively addressed in such manner
Selph how terrible would it be if i let users rearrange rule order
I don't think ill do it for many other reasons but thought experiment
well for RecalculateOnCollect false it doesn't really matter
for true though, many machines are (should be) coded with fallthrough rules with no conditions, which may not be intuitive for the user, because rearranging some of them could mean "this gets checked earlier" or "nothing below this rule gets checked"
wait that's for OutputItems
for OutputRules, hmm
I... don't think there's an issue?
(how did it make it crash on save...)
actually I think that also applies to OutputRules, but I don't think there's a machine mod currently where that could be a problem
Bc this is machine control panel, the thing being rearranged would be input
yeah I figured haha
I think it's probably fine, for the users who want their~~ pickled teas and ~~wheat juice
for some gods know reason
I also can't think of a good way to do express it as UI tho
And you can have hops juice already
I can grab my old error log if you wanna see lol it gave me 3300+ errors (repeating, same error over again, essentially soft locked)
why does it feel weird to search for mods now 😅 the interface is throwing me off
You can?
Does anyone know where I can see the documentation for the producer framework mod, to use it in C#, in Nexus Mods there is only an example of how to use it with .json and in C# there is only a brief text, there are no examples.
I'm not quite sure why you want to do that
Yeah if you turn off the hops to pale ale rule
It will fall through down to generic juice
Anything you can do with pfm c# you can do with machine data and a custom output method
Oh, I thought you meant without mods
is downtown zuzu up to date last time i played with it the map wasnt loading right for me but that could have been it interfereing with another mod
!mh for help with mods
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
(I know little about zuzu)

(and for just asking questions in general about a mod its #modded-stardew )
Anyways, pfm does have an api if you want to query it's machine rules
Anyways
Good morning from 5am
I'm putting on a long history audio book and trying for another two hours of sleep
The interesting thing is that PFM has some interesting features to customize the fuel, which I remember you wouldn't normally be able to do just by modifying the normal data.
you can't, but you can use Extra Machine Config to add that feature to CP machines
i keep forgetting im in here im sos orry 😭
As far as I can tell there is no reason to use PFM any more.
nowadays we recommend CP + EMC over PFM, it's still only one extra dependency and there's better compat with other machine mods
I have converted all the mod I use that say they need it.
I'll give you an example: items that combine in the machine to make different things, but with slightly different ingredients, depending on the fuel. In PFM I could make a variety of things by combining them, but in Content Patcher I couldn't...
Yeah you can do that with emc now
I've never seen this EMC
Cornucopia Artisan Machines + Wildflour Atelier Goods now both use it, and they have plenty of examples of recipes that do that stuff
what is the full name of the framework to search in nexus
Extra machine configs
If you want to just write a custom OutputMethod to do it it's possible, but you will need to handle automate/junimate
(this is why i think people should put their acronyms in their nexus title)
Can't just assume player inventory
The main things that one might still use OutputMethod for is knowledge of the input item state
(I'm not familiar with machine code)
If u needed to dynamically do something according to that without exploding the rules count anyways
you can check if a machine is loaded by a hopper/automated chest by checking SObject.autoLoadFrom
And would it be possible to use emc with c#?
you use it by just doing CP stuff, but in C#
I forget the exist all the time. Only inputting items into machines is such a useless feature. They need to pull too, to be even a little useful.
Can you tell us a bit more about what you want your mod to do 
Perhaps the case is you can just cp it all
I already have the mod using cp and pfm, I'm studying c# and the idea is to translate all my cp codes to c#
I say you should do what you want, but keep in mind that you'll just be doing CP stuff in C#
And one subject of C# that I haven't learned yet is how to use the frameworks within it.
you do it the same way just in the AssetRequested event instead
There's not many frameworks for C#, you are at the framework making zone
Again, is there a point in learning this
some frameworks do expose a C# API, but EMC is a CP framework first and foremost, and you'd just be setting the same fields you'll be setting in a regular content pack
if a framework just has you editdata on certain targets or add certain data to normal things like Data/Machiens entries then you just... do exactly what they tell you to do, but in AssetRequested
there is no difference
I'll say I puzzled it out for More Fertilizers years ago (PFM would override my patches otherwise)
It's not worth it
It's not a transferable skill
Just fyi you basically use the c# mod to load a pfm json
If you look at 1.5.6 More Fertilizers it has it
It certainly makes sense, because when we use CP, PFM, Shop Tile framework, etc., we end up creating a bunch of subfolders within the mod, making it confusing. Doing everything in C# makes my mod independent of a bunch of subfolders, keeping everything together in one place.
Given your current situation of cp + pfm, I'd look at eliminating the pfm part in favor of CP
I think you might be trying to do this as an attempt to put c# on your resume tbh
STF is kill too
I'll say that I don't my mods on my resume at all
in this case EMC is a CP extension so you'd just have a CP folder
if all your frameworks are for CP then there are no subfolders
I know you are retired, but I miss more fertilizer.
But there is one thing that the shop tile framework does, that you can't do in cp, at least I haven't figured out how, which is to create a custom pet store.
This page helpfully notes whether a framework is made for usage via custom asset
Do you want the store to simply sell all pets like Marnie? That is available
I don't think you can filter for pets yet but i have been thinking about doing it, via custom item queries
Sell animals that Marnie doesn't have, like making a little shop just for barn animals and another just for chicken coops, like in Harvest Moon
Yeah i made the framework for that
With the STF it seems very easy
This is also a CP extension type of framework mod
interesting
STF is at least maintained tho (ty pathos) so if you want to keep it by all means
But can I create several stores and choose which one to sell in which?
Yeah
This example pack makes new stores for void chicken gold chicken etc but still provide option to sell at Marnie's if desired
I think it's cool how it was in Harvest Moon where there was the chicken seller on one side and the cow seller on the other.
My NPC is stuck at the bus stop even though there is an NPC warp for them to go to the custom town
{
"Action": "EditMap",
"Target": "Maps/BusStop",
"MapProperties": {
"NPCWarp": "7 12 {{ModId}}_TimbergateTown 37 6"
}
(Partial)
No errors in the console by the way
But are you also taking away the warp to the desert?
I dunno if i would do a mod that changes how marnie works but it would be fun to have this happen in a modded shops zone
No, This is at a different tile. Not the one for the desert.
Should it be NPCWarps?
unless your Bus Stop map is different, 7 12 is a wall
Yes, but this property is where the desert one is too.
Okay. But also, do a patch export on your BusStop map
So you can check that you haven't erased the existing Desert NPC Warp as Sakura Uta mentioned
On the normal map 7 12 is the foot of the tree
(Default NPC warp to Desert is 22 8)
It seems I have
22 8 Desert 18 27 is the default warp so you can add it back in along with your new NPCwarp
Worse still, these coordinates are very strange because the desert block is 17 11
But in the map properties it says 22 8 Desert 18 27
Hi, does anyone know how I could EditData the "CustomFields" of another mods farm animal with content patcher? Trying to add a meatindex to the new SVE farm animals for Animal Husbandry.
As it is now:
"Visible": false,
},
"ShadowWhenAdult": {
"Visible": false,
},
"CustomFields": {}
},```
What it needs to be:
"ShowInSummitCredits": true,
"CustomFields": {
"meatIndex": "Mizu.Quail_QuailMeat"
}```
What I tried to do: ```{
"Changes": [
// add meat drop
{
"Action": "EditData",
"Target": "Data/FarmAnimals",
"Entries": {
"FlashShifter.StardewValleyExpandedCP_Goose": {
"CustomFields": {
"meatIndex": "minothilos.meatysveanimalsCP_goosemeat"
}
},
"FlashShifter.StardewValleyExpandedCP_Camel": {
"CustomFields": {
"meatIndex": "minothilos.meatysveanimalsCP_camelmeat"
}
},
}
},
]
}```
It just removed the animals from marnies shop, nothing else
Where are you getting 17 11 from?
Use a TargetFields to drill down
17 12 was the coordinate on the Bus Stop where the NPC needed to stand, not the Desert. 🙂
Sorry I don't know what that is :/
NPCs don't use the ticket station, that tiledata does nothing for NPCs
Thank you!
Since they are trying to do two FarmAnimal entries in one code block, would Fields work better here?
not unless they wanna overwrite any other customfields
Jeez I only now realise how bug infested my mod is after I upload it
Well, if extra custom fields is a concern, does TextOperations / Append work?
customfields is a dictionary
would doing two separate code blocks help here? I think it's rather obvious but I'm not brimming with experience
just use entries
Is it possible to set up a GSQ or a mail flag for when you buy XYZ ammount from a custom shop?
Like a specific amount of an item? Or a specific amount of money?
Could possibly use a combination of ActionsOnPurchase to IncrementStat <stat key> [amount] with the amount being the price of the object being purchased, and then call the GSQ for PLAYER_STAT as a Condition?
keep in mind it wont work if someone changes the prices
That's fine
Do I need the stat key in escaped quotes?
Vanilla example says no, but I think they're all one word for safety
Vanilla example: PLAYER_STAT Current ticketPrizesClaimed 17
I'm really sorry I should have made it more clear that the machine with the problem is the wax station. silly me 🙈
It's easier to keep your custom stat key to one word or underscore-separated words and not use spaces in them to prevent issues.
So like this?
{
"Id": "{{ModId}}_Amaranth",
"ItemId": "(O)299",
"Condition": "{{Fall Seeds |contains=true}}",
"ActionsOnPurchase": [
"IncrementStat {{ModId}}_Unlock 5"
]
},
Hey does anybody know the smallest possible size map you can make without seeing black tiles?
Well the tent map is about 3x3...
That depends on ppl's monitors
Forgot about that one, and ok so I guess I just want to go bigger to be safe X| more work for meeee
The map, the moniter space is just black area because it isnt part of the map, it is just void.
in that case did you see my reply above
If you want you can use various transition to shadow type types
what I am trying to avoid
For example foilage
That looks correct to me
I'll doublecheck to see if I can get a vanilla ActionsOnPurchase example to compare against
That is smart didnt consider that
also, keep in mind actionsonpurchase only works for the first click of an item
Oh really 
actionsonpurchase only runs if your heldItem is null
I been instant closing menu for other reasons so i didn't notice
known bug, fixed in 1.6.16 i think maybe
Wiki says "These are run once per purchase click" so that's good to know that there's a bug
so if you keep buying and placing in your inventory and buying individually, itll work
Oh ok yay
if you hold right click on a blueberry and buy 500 of them, it only runs once
Oh I actually want to ask cause this affects something I am working on in my update, is that the first and only time you purchase that item or every time you close and open a shop menu
Yeah shrug I didn't test ut either
tbc thats technically correct since pressing and holding right click is just one click, but pathos iirc said it was not intended behaviour when i brought it up to him
Also, I didn't find a single shop entry in vanilla that didn't have null for "ActionsOnPurchase"
Wiki has an example, was just intrigued that there's not any vanilla shop objects using it.
side note but I keep meaning to ask if the undonatable minerals fix is part of 1.6.16
they were a 1.6 thing
later on in the alpha iirc
i think the minerals is part of it?
The non item kinds of salable in vanilla are all special item query right
Pets wallet items and such
yes
fix in what sense?
the fix for them showing up in the collections menu even though they cant be donated
oh that would be cool to have
i kinda gave up because i was under the impression it wouldn't be added
well, they tackled a lot of different things they found, including for the wax station I think? and found the conflict between your mod and better beehouses 
so alls well in the end
I had a quick question about year variants in festival dialogue. I understand that they increment _y1, _y2, _y3, etc. What happens when you get to year 4 and nothing is defined?
So I have to also edit the wax input as well? i'm a bit confused why the wax needs to be random 0.5 and honey random 0.75?
Will it use the last one in the list (_y3), will it default back to the original key, will it grab the first one (_y1), or will it do some unholy thing where it decides to rotate the lines afterwards?
the better beehouses compatibility will be fixed in their next update but obviously i want to make mine as compatible as possible. There is already the temporary compatibility version of BB
And if I want to rotate them manually through CP with a modulo operator, should I just define the original key without any year variants?
depends on if you want UseFirstAvailableOutput to be true or false
since the machine's default to false let's use it. in this case the machine will evaluate the condition for both entries, filter out ones that are false, and randomly pick from what's left
so if you want wax to be outputted 25% of the time you'd have it be RANDOM 0.5, so 50% of the time it gets filtered out and 50% of the time it has to compete with honey (which should have no condition)
How do I make it so that my custom tilesheets change each season?
CP or C#?
CP
put spring_, summer_, fall_ and winter_ in front of them
Ah okay! I assumed the function is simpler than that. just percentages
the answer is the same in both CP and C#. name them [season]_[tilesheetname], load them all, and they will swap automatically
Oh is it taken care of automatically then?
but make sure there are variants for each season
As long as they are all loaded to those targets, yep.
Ah ok, thanks everyone 
Yeah, game gets very mad if you only have one season variant and use that naming convention.
if UseFirstAvailableOutput is true, the machine will run down the list top to bottom and pick the first matching entry
in that case you'd move your wax entry to the top and have it be RANDOM 0.25
I have the flavor name i18n as in "bb.beesPlus_BFSoap": "{0} Soap",
in that case that should be fine
what was your issue with the wax machine again
that no matter what you put in, sometimes when you pick stuff up from different wax station they all turn into the first item
(shouldnt you explicitly not put any internal names in i18, rather than just "you dont have to"? would doing so not break things as soona s the user swaps languages)
Is that what the condition would be? (Ignore, I figured it out)
do not do Y3, it will break everything
I mean modwise, basically the only thing anyone uses is _y1/_y2. If you do more than that, it will cause no other mod NPCs to work for that year


hi lily

aren't they already HSV colors