#making-mods-general
1 messages · Page 29 of 1
Right but that's good, I'm more worried about why so many people think the horse needs to be one of the NPC's or an anime character
funi
Rokugin, the internet is like that
I liked the mod where the horse was a ducati cafe racer motorcycle.
For any speakers of non-English languages here, are there situations where noun phrases don't exist or can't be substituted for nouns?
Example:
- Sentence 1 is "XYZ is visible with {{thing}}"
- Sentence 2 is "XYZ requires {{thing}}"
Where "thing" could be either "X profession" (an actual noun) or "equipped ABC" (noun phrase).
I'm wondering if some languages will make it impossible for the substitution to be grammatically correct, like if in some cases "equipped ABC" would have to be written as the equivalent of "ABC to be equipped" which makes no sense in the context of "visible with ABC to be equipped", etc.
seems very likely that this sort of thing would come up. you should check out project fluent, which is about this situation
I mean, the very little I know about Japanese, I believe this does in fact happen
One of the reasons I think English is so fucked to learn is that its sentence structures are absolutely buck wild, you can do whatever you want basically
it's like russian, throw words wherever you want
just one 
there's "comprehensible" and then there's "actually what native speaker would say"
I know this definitely comes up; hoping to know if it would come up in this specific situation.
{{XYZ}} and {{thing}} are both variables so I need a way to write this where they can both be substituted, and not have a combinatorial explosion of translation keys.
i often struggle to translate -ble words like visible into chinese
try something less verbose, like Required: {{thing}}
that strikes me as easier to manage but what do i know
It's a good suggestion, I might do that. Still curious about the more general formulation.
this is part of reason why i preferred icons over text
maybe you can just draw a lock icon (is there one) to indicate the required
Well, every GSQ can be more or less described with a pithy name, but there isn't going to be an icon for all of them.
For something like "equipped {{thing}}" the message has to communicate that you not only need {{thing}} but it has to actually be equipped.
I'll rework and muddle together something, hopefully. Thanks again.
@rancid musk
Hi! Sorry to bother, but I was wondering if the dynamic rules in Better Crafting can be done with context tags through PerItemCondition: ITEM_CONTEXT_TAG <target> <tags>
🤔
Urgh I am probably not putting the rule in correctly vv
can you post the json/GSQ?
(FYI if you only need to match context tags, SpaceCore is also an option, which I think has slightly better compat with other crafting/cooking mods)
Okay, So I know I'm missing something, or something is in the wrong spot, but I can't tell what.
"Action": "EditData",
"Target": "Mods/leclair.cloudyskies/WeatherData",
"Entries": {
"{{ModID}}_IrrGH": {
"Id": "{{ModID}}_IrrGH",
"Condition": "BUILDINGS_CONSTRUCTED All \"Irrigated Greenhouse\"",
"Trigger": "DayStart",
"Actions": [
"leclair.cloudyskies_WaterDirt --indoors \"Irrigated Greenhouse\" ALL"```
Essentially its this part I am not sure
"Rules":[
{
"ItemId": "RANDOM_ITEMS (O)",
"PerItemCondition": "ITEM_CONTEXT_TAG Target kss_breakfastitem"
},
],
I might just repatch :3
ITEM_CATEGORY checks that the item has a category number (like -6 for milk)
You want ITEM_CONTEXT_TAG
Also Rules is a list of models, so you want curly brackets surrounding both of those lines
dammit wait I wrote it wrong
Is your upgraded greenhouse using the same interior map, or different?
it's a new map
hallo, would it be okay to copy this mod’s code stuffs (just for leo's outfit replacing, not their custom dialogue or perched bird outfit), but replace all of their art with my art? is that moral?
or should i try to talk to them directly to ask about it?
i still haven’t quite got the jist of mod ethics yet 😵💫
copy paste issues vv
try Location \"Irrigated Greenhouse\"? The "Target" parameter needs Location before the actual location name if you're specifying a location
you can choose to make that mod a dependency to your mod
(you can test it in the console to get immediate results)
then you only load your sprites over their targets
Oh! I'll try that out
no need to copy code for changing appearance
interesting ^^ thank u for being smarter than me on this hehehe
I still don't see the {} brackets inside Rules?

Yes, that should work. It's basically the same as the example rule, just with a context tag check rather than a category check.
You have the wrong Target there. Triggers are defined in Data/TriggerActions. When making a custom trigger that runs daily, you also need to make sure you flag it so it can run more than once by setting MarkActionApplied to false.
😮
Also you want the command to be leclair.cloudyskies_WaterDirt --indoors Location \"Irrigated Greenhouse\"
I believe.
do i also need to indicate Tile All?
Nope. Using Location will do every tile in that location automatically.
thank you 🙂
You can use debug action "leclair.cloudyskies_WaterDirt --indoors Location \"Irrigated Greenhouse\"" to test the behavior in your console.
Ok let me see if I can get the dynamic rule to play nice in the category
would the MarkActionApplied be on it's own Action line?
Ah, i clicked links to read more, so i know it does 🙂
{
"Id": "something",
"Trigger": "DayStarted",
"MarkActionApplied": false,
"Actions": [ ... ]
}```
ty ♥
smapi is saying my location doesn't exist -_-
Question for folks. I only really dabble so my scope is limited.
Is there a way to have your custom farm map spawn fish similar to the river farm? I found the "FarmFishLocationOverride" property but I dont think thats quite it
if you look up Large Meadow farm on nexus, I've got that so you can fish up the different kinds of fish, you can check out the content file to see how i did it 🙂
Will do. Much appreciated
https://smapi.io/json/none/28663af337dd44239b48793ab131f22f Not sure what's going wrong here.
15:59:12 ERROR game Trigger action 'Zinnalynn.UpgradeableGreenhouse_IrrGH' has action string 'leclair.cloudyskies_WaterDirt --indoors Location Zinnalynn.UpgradeableGreenhouse_Greenhouse' which couldn't be applied: Unable to parse value for argument 'Target': Could not find location with name 'Zinnalynn.UpgradeableGreenhouse_Greenhouse'.
Ah. Because it's a building interior, it's probably instanced so its Id won't be exactly that. I'd probably need to do a Cloudy Skies update so you can use non-instanced names as well.
ah.
I do want to maybe do some updates next week, so I'll put that on my list.
The summer work rush has been slowing down.
I see. Do you know of anything I could do in the meantime, or will i just need to wait?
Nothing immediately comes to mind.
Alright. Waiting it is then. I can make the maps for the upgrades look nicer in the meantime
Real quick, can I ask how you settled on the specific chance values, etc? Or just trial & error
Is this where I can possibly suggest an idea to any modders?
!modideas
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
It was just a guestimate based on how it's coded on the other maps
It felt right i guess lol
How do I edit maps without getting path errors... I used to know but it's been a while and forgot... I put all the tile sheets in one folder when I edit the tbin but as soon as i re add the tbin it throws the error... i use the vibrant color recolors so when I try to add the tile sheets to the same place the tbin is in my mods file... all the trees are missing. when I use the main tile sheets the recolor does not apply 😦
you open the file in an editor like Visual Studio, and delete the bits that are like
<image source="../../../../../../../Program Files (x86)/Steam/steamapps/common/Stardew Valley/Content (unpacked)/Maps/townInterior" width="512" height="1088"/> should look like
or if you have a tilesheet asset/mod that you are using it would be like
<image source="[CP] HxW Tilesheets/Assets/Vanilla/Spring/hime_outdoorfurniture.png" width="512" height="352"/>
🙂 thank you ❤️
Should I decompile the game myself or is there a version available?
you gotta do it
Alrighty thank you!
🙂
I will say, I'm learning alot by just reading this content file lol
Whether Im doing it right though, only time will tell
also, how do you get that red null/false text?
you should also consider exporting to tmx, since tbin is outdated and you get the "reflect/rotate tile" feature
I am editing someone elses map... not my own... so I wouldn't know how to do all that... I am just trying to turn a dirt plot into a grass plot 😄
Made a mod that added a few extra crops a little while after the update. Managed to get the seeds sold, and managed to get all the crafting with the plants working. Somehow I never checked to make sure that the plants themselves worked. I can't plant the seeds.
I could have sworn that I wasn't that stupid
I just made a crop mod, maybe I can help! what content loader are you using, Content Patcher or JSON Assets?
content patcher. As a full disclosure, it was essentially an update to the long dead PPJA mod
exporting is in the same spot as saving, so the "File" in the top left of Tiled, export
I'm not sure what you mean
Probably just a formatting thing. Makes no difference for output. nvm
you need to remember to add a season entry to your crop.json for every crop
I highlighted them in mine to show you what I mean
Oh, the DisplayName isnt functioning with my LookupAnything mod. The area isnt displaying in the fish locations
how do
"SourDieselSeeds": {
"Seasons": [ "spring", "summer", "fall" ],
"DaysInPhase": [ 2, 3, 3, 4, 3],
"RegrowDays": 3,
"IsRaised": true,
"HarvestItemId": "Sour_Diesel",
"HarvestMinStack": 3,
"HarvestMaxStack": 5,
"HarvestMaxIncreasePerFarmingLevel": .05,
"ExtraHarvestChance": "{{25Percent}}",
"HarvestMethod": "Grab",
"Texture": "SakakiYumiko.YumikosArtisanUpdate/Crops",
"SpriteIndex": 2
}```
and doing this to someone else's mod will not completely destroy anything... reason I ask is because I assume there is things in the content that apply to whatever the modder used tbin and not tmx...
is it a personal edit? it's pretty simple to just change the filetype in the content.json
is lookup anything displaying not translated name or just not showing where the fish is from?
I made my maps using tiled, so i was able to just see the x,y areas using that
Yeah, ditched quite a few crops, added more things to do with the produce, and tossed in a couple custom ones based on the existing oens.
From what I can tell, the original mod was 100% json files and PNGs.
I was referring to the Data/Locations entry for the farm. I omitted the FishAreas in favor of the entire map but as a result, the Display name isnt functioning. I have it as [FarmName] rn. Since the token should function
yes it's just a personal touch-up edit... I used to always do this and never had to change content or anything... which is why I am a little offset on exporting cause i feel i would mess things up if i had to edit something anywhere else... I was able to get everything to work... but am open to learn things...
not showing the location in the list
hm. one thing to note if you're changing it over from a pre-1.6 JA mod though, is HarvestMaxIncreasePerFarmingLevel actually increases the cap you can get off a plant at one time, depending on your Farming level, so those can spiral up and out of control really fast, especially if you've got ExtraHarvestChance also set
Ahhh, I was wondering why there were two different things I was seeing when I was referencing other crop mods.
yea i think lookup anything only checks for location fish, are you able to hook your fishes?
so far, ive been able to catch sunfish so I assume it works?
I got things to work.. I was editing the SV Immersive farm cause the plots had a path between them.. I wanted it to be a solid grass area... it works fine now... i was having issues with the path.png....
prob something to fix in LA instead then, ive never looked at that part of code
the path issue i was having was a direct climbing error...
Oh my god. HarvestMaxIncreasePerFarmingLevel doesn't have quotes
yeah, those two stack with each other, so when your mod gives you up to 5 additional crops per harvest outside of the 3-5 you've already defined when you're at farming level 10, you're also rolling the dice for an additional crop drop on each and every one of those crops with your ExtraHarvestChance of 25%
also, something else to consider, you have the seeds classified as seeds in your objects.json file, right?
"Type": "Seeds", and "Category": -74, are what you need to tell CP that that item is a plantable seed
Yep. All the info is correct, lookup anything links just like it should
did u copy the template from cornucopia because idk if you should use the {{25Percent}} token if you dont understand it
ummm is there a thing in buildings that say where Robin goes when she's doing an upgrade? cause this isn't right lol
hmmm. and they're not planting? that's bizzare. the only thing I can think of is that there must be a mismatched connection somewhere, but I can't think of where it might be
well, it wasn't the lack of quotes on that one line. Guess it's time to dig deep and find the missing link. The new tree works just fine.
Yes, it's in the building data, like upgradeStandingTile or something like that
Check the wiki
ah, i see it. thank you
crops wont plant if the harvest item id links to a nonexistent item
idk if thats your issue since you say lookup anything "links correvtly" but i want to make sure you double checked that
Hmm. Well now that I look at it, it doesn't look like it lists what it produces. So that would be the issue then
I had one more idea for where the mismatch might be, because this tripped me up when I first got started moving my mod over from JA to CP. is your content.json loading everything that you're using and having the right file paths mapped out?
Hopefully. going to try and add a better path to link the crop and then I'll check that
In your crops.json, could you show me what your HarvestItemId is? Not exactly sure what should go before the object id. Is it the unique id for the mod in manifest.json?
Update: i dont think its actually applying. I checked it with the ModdedMeadowFarm aswell and it doesnt function there either.
Is it cause its an AdditionalFarm?
actually, i don't see that, i misread
I'm not sure. My farm is a completly new one, not a makeover of an existing one.
As is mine.
prob need to have the fishing area data in locations then 
hm
I can try adding one sure
can you mod on nintendo switch?
Modding on the Nintendo Switch is technically possible in a very limited capacity, but it requires jailbreaking your Switch, which is only possible on select models or by physically altering the hardware of your Switch, and can run the risk of bricking your console and/or being banned by Nintendo. Only visual texture and dialogue replacer XNB mods can be installed. Due to these limitations, we do not provide guides on how to mod the Switch and it is up to the individual if they want to take these risks.
i don't see in the Buildings file anything about where Robin should stand. Closest I see is
"UpgradeSignHeight": 18.0,```
this channel is for making mods btw, not using mods
my switch is patched sadly
I think the NPC that's doing the building is positioned based on those values
Either that or this animation is for the building itself, never sure with temporary animated sprite what the hell it's using
I see. I tried looking up with Tiled the coords to see where she is, and if those numbers matched anywhere, but didn't see anything matching
I'll just have to play with the different numbers and see if anything magic happens lol
sorry for the delayed ping -- i was debating with myself whether this was worth asking or not, but i figure it’s better i be safe (by making sure) than sorry (by assuming i know what’s best)
but would you say your advice of making my mod dependent on zilchaz’s is still the same, even though my plan for my mod isn’t 100% the same as zilch’s? since i’d ideally like to add a flower dance outfit and winter star outfit, which zilch’s doesn't have?
and if it’s indeed the same advice, is it okay to just go for it and upload the dependent update to nexus, or would it be rude not to message zilch about the situation and wait for a response before that ?
( thanks again for your advice btw -- i’d be helpless without this chat >v< )
That's the coordinate of the "building being upgraded" sign
It seems Robin is hardcoded to stand at coordinates 1,5 for buildings other than the shed?
In NPC.updateConstructionAnimation
Ew, hardcoding
if its not exactly the same then yea make it separate for more control
😮
you can follow this tutorial https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances
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...
and yeah this screenshot looks like 1,5 to me lol
Not without C#
eugh
alright, noted! 
i don't have the mental capacity to learn c#
well did you add the object entry for tje actual produce item?
its ok robin is just working on the windows
we'll just pretend she's peaking through the windows lol
Just patch Robin's tilesheet to have those frames be invisible when she's working on your building lmao
😮
Yeah about to say that you may be able to replicate the suspended platform that Robin stands on while upgrading the Shed
https://smapi.io/log/74f5dd15229f4888a15b3eb1dac15dca
I cant tell what im doing wrong here
https://smapi.io/json/content-patcher/9afebc462f5241ef968516f6b2e5565d#L633
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Pro, with 24 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Oh yeah, adding some kind of scaffolding would be easier
I'm not sure if you could reliably find out when she's working on a building without C#
though with our luck this may also be hardcoded
you could change the spritesheet to be invisible when the player is just in the greenhouse right
Oh yeah, that's probably perfect
(to get around having to check when shes working on a building specifically i mean)
Alternatively since Robin is actually physically warped to the Farm when a building upgrade happens, maybe you can do something with the Appearances system
Oh yeah, if she's actually there then I guess you could reliably tell when she's working on it lol
Well, the upgrade allegedly happened, but the map didn't change like it was supposed to, so that's something i gotta figure out now
I attempted to. Tried a few more things, but nothing took
your seed id is wrong
these two things have to be the same value so it knows what your seed item actually is
also please dont leave the cornucopia thing there
absolutely! sorry, I had to run to the store. it's highlighted, but still kind of hard to see, so it's the 5th line down, starting from "Seasons"
Ah, yeah there's a bunch of stuff I need to do before I publish it, if I ever even decide to
Damn, that would totally do it
yeah
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 22 C# mods and 43 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
yeah there would be major permission issues unless you've completely redesigned/reinvented the mod from the original ppja mod, as that mod is not allowed for people to modify and republish without permission
even if you redrew all the art
Yeah, if I ever released it I would definitely redo basically everything from scratch. Even if I don't I'm considering paying a pixel artist to make custom assets for me
You're a lifesaver
Now it's time to actually add a new crop. Gonna add mustard seeds, since google says that they grow well in winter. And I think it'd be fun to figure out how to turn them into mustard.
@next plaza hi, just wondering if you'd had any reports about spacecore skill progression seemingly pausing from time to time. i've had a couple of posts about the cooking skill in loc building xp way past the end of the experience curve value for the current level and then not showing the level-up screen after sleeping. is it something i couldve screwed up myself, or known issue?
@distant arch wany updates on Wood Maker??
its generally not appreciated to bother mod authors about updates to their mods
@next plaza: look into marriage schedules with your 0 schedule fix (19h ago)
Were they playing splitscreen? I need to fix some stuff for that.
Besides that, I haven't heard of any bugs with skill profression
(Well, I have, but they were because S&S has 5 skills and one skill was adding exp for the wrong skill - so nothing related to spacecore)
@night harness details please 💏
actually if you have a log from when last playing with love of cooking that'd be incredible since i think it logs your skill progress
reminds me i need to add better crafting hooks for xp gain
I just need more free time
no worries man i was just checking
can i make the 'start with debugging' green button build the CP folder as well as the C# project? annoying having to 'rebuild solution' for every change
how do out parameters work in harmony postfix?
I think out and var compiles to the same thing, the former just gets the compiler to complain if it isn't assigned
i symlink the CP folder to the mod folder
if you had the CP thing a dependency it should rebuild with it
there is some AfterTargets thing u can do i feel
i was hoping for a more project-based solution rather than symlinks haha
the cp mod is a dependency on the c# mod actually
i wanted them to be mutually dependent so the c# mod spits an error and dies if the cp component isnt found, rather than the cp component quietly doing nothing if the c# component isnt found in a When HasMod condition
This is why I wrote my CP alternative
So I could just embed them into my project
That being said
After that one person deleted the CP element of my crane game mod, I forced my C# mod to die and throw an error if the CP mod was missing
Maybe this will get merged one day https://github.com/Pathoschild/SMAPI/pull/940
(I meant a C# project reference/dependency to the CP "project")
Funny, we did the opposite for S&S - make the CP component not load if the C# didn't (though I recently added an error and return if the CP component didn't load, too)
examples please 👁️
I made the CP mod dependent on the C# mod, so they'll both die without the other, but I couldn't do circular dependency so it was easier to put the kill in the C# lol
Yeah, just a dependency entry in the manifest for CP, and a mod registry check in Entry for the C# mod
Plus I could log additional shame in the console
aw man i thought i was just adding skill xp in better crafting, but i still need to apply custom seasonings, burn the food, play animations, ...
This is specifically what I have in S&S
public override void Entry(IModHelper helper)
{
if (!Helper.ModRegistry.IsLoaded("DN.SnS"))
{
Monitor.Log("Failed to find CP component of S&S, make sure you installed everything from the download. (S&S will not load without it.)", LogLevel.Error);
return;
}
// ...
(Just noticed I'm missing a "the" there)
visual studio / dotnet will rebuild the entire dependency tree, so if you have a project reference, it should rebuild the other thing too, though you would then need to deal with potentially getting rid of it from the bin folder
One thing I don't like about the copying-project-from-VS approach is you still have to relaunch the game when editing the content pack instead of patch reload (or edit in two places)
I added a workaround for my CP alternative so that it would read from my dev folder when a debug build is launched
could the copying-project-from-VS approach just create a symlink instead of actually copying
(Specifically, I'm doing:
#if DEBUG
Content.OnReloadMonitorInstead("assets");
#endif
with
public void OnReloadMonitorInstead(string pathModifier, [CallerFilePath] string path = "" )
{
if (path == "")
throw new ArgumentException("No caller file path?");
Parser.ContentRootFolderActual = ContentRootFolderActual = Path.Combine(Path.GetDirectoryName(path), pathModifier);
}
)
Probably? That could be nice
Out and ref are identical in IL
The compiler enforces that you assign to an out but it is invisible in IL
But in is different
.choose now, wait for 1.6.9
Choose result: now
FUCK
do you think people would want to have different machine rules per location
That's already possible
no i mean, turn it on and off per location
ah okay, probably? I can't think of any use case for myself though
yea same 
Night time only rule?
Or day time only rule
Or conditionally enable it after a mail flag (story progression)
This is for chu's mod which allows dynamically enabling/disabling rules in game
Otherwise all of that are possibls
one of my upcoming mods gate machine rules behind a special order
Ah, I thought chu's mod was an editor for machine rules
Remind me in 24 hours to do this
oh kittycatcasey you sweet summer child. trusting me with such a task? all right ;) (#6236489) (24h | <t:1726184111>)
Lumi has one after a museum donation
Super cool
Buildings data has a Builder field that you can specify any NPC that has a construction menu apparently, but the construction animation seems to be hardcoded to Robin lol
Yes
hm it occur to me that i have to make emc compat 
Which makes me wonder, does the other NPC just show up and do nothing or does Robin show up?
and multiplayer compat
pfm doomed not worrying about that one
from what I read of your mod, and I may have missed something, you should not need to do anything
PFM doomed?
no i need to support displaying custom fuels
Is Digus not around anymore?
ah okay lol
*compat with pfm doomed
Ah
digus still around i think
When I was looking at some SpaceCore stuff for that Skills discussion the other day, I noticed that mods seem to use SpaceCore's types directly. How does that work, aren't we normally required to go through the mod API system? Do the "direct" users have to jump through various hoops to use the SpaceCore types directly (i.e. is this easy to replicate with a different mod)?
but uh EMC'a custom fuels is defined per output, not input, so it's totally possible to define rules that are like "consume X fuel if present, otherwise Y fuel, otherwise none"
and your mod as I understand it is per input
(Or is it just a nuget import, non-private assembly, modbuildconfig handles the rest... somehow?)
it was actually inputs product outputs, at somepoint i refactor to inputs x 1 output
but not hard to go back to original layout
ooooh btw suggestion for gmcm, clicking into a page currently clicks both the link and the following page:
suggestion is pleaese ifx ✅ thanks
isn't there so many hacks for gmcm that if casey updates it, the world will implode?
so in that case you can pick what item you get out of recycling trash? 
I think I'm the only one doing that. (Hacking GMCM)
my next suggestion is make page links look less like headings and more like clickables haha
yea hm good point, maybe bad idea then 
loc's menu is so hacky
Skill stuff predated the SMAPI API system if I remember correctly - but you just reference the mod (and probably do one of those 'private' settings)
Lots of people hack the game, but not lots of people hack other mods.
but i guess its time to make use of the foldable widget
I noticed that recently, I need to fix that, yeah
so u can see more than one rule but disable em together
Hmm, I wonder how I can do that besides the hover color changing. Stardew only has so many fonts
Would it also be possible to prevent tooltips from appearing while trying to select from a dropdown?
So someone using SpaceCore skills would just add an assembly reference to... the SpaceCore DLL inside their Stardew installation? Or they copy the SpaceCore DLL to a "lib" directory like I did for GMCM/publicizer?
i don't remember if silicon's is a gmcm hackabout
https://www.nexusmods.com/stardewvalley/mods/23234?tab=files
add a button background or smth! even the scrolls that loc uses are fine
the former usually
(A)
It is, but not published yet. Took it from focustense though
oh silicon you're here 
I take it that causes some problems with source control, building on different machines, etc.?
could just underline it like html links
I guess either works, what I'm doing for MMR (since it's in a separate repo now) is essentially a $(GamePath)/Mods reference. (Well, the manifest builder <SMAPIDependency reference=true> thing)
Since ModBuildConfig does magic to find the correct assembly location, and direct references will not.
i think my to do is
- make it work
- determine how it will work for multiplayer, perhaps only host gets to do anything
- support excluding particular items rather than whole rule
- emc compat, which should just be display?
just display yeah
behold, love of cooking's hacky centred scroll buttons in gmcm
string s = new(c: ' ', count: 46);
int offset = 20 * Scale;
gmcm.AddPageLink(
mod: mod,
pageId: "info",
text: () => s);
gmcm.AddComplexOption(
mod: mod,
name: () => string.Empty,
draw: (SpriteBatch b, Vector2 v) =>
{
v.Y -= offset;
int width = SpriteText.getWidthOfString(text) + 32 * Scale;
SpriteText.drawString(
b: b,
s: text,
x: (int)v.X - width / 2,
y: (int)v.Y,
width: width,
scroll_text_alignment: SpriteText.ScrollTextAlignment.Center,
drawBGScroll: 0);
});
I didn't completely understand this but it sounds like what I want.
You can use my ModManifestBuilder to reference mods without worrying about their paths
Is $(GamePath) an MSBuild variable that's available whenever using MBC?
This is the example on the manifest builder docs:
<ItemGroup>
<SMAPIDependency Include="spacechase0.SpaceCore" Version="1.10" Reference="true" />
<SMAPIDependency Include="spacechase0.GenericModConfigMenu" Version="1.9" Required="false" />
</ItemGroup>
I wouldn't mind doing that for my own projects; however I would be somewhat hesitant about providing that as the only viable solution for users of a library.
hi khloe, do you call CraftingPage.clickCraftingRecipe at all in BC 👉 👈
Hm, I had no idea about this SMAPIDependency. I'll go check that.
Is it new, or just infrequently used?
I use it a bunch
Oh, that's not part of SMAPI proper, it's part of Khloe's builder. Right?
It's ModManifestBuilder, yes.
Yeah
(I did a search and that was the only result that came up)
I don't. I don't use CraftingPage at all. Didn't want to cause issues with mods that patch it, given how extensive my changes to the menu are.
That's not bad, just hardcoding a few coordinates. Have you seen my entire directory of thousands of LOC just hacking GMCM?
GMCM 2.0 looms in the distance
(Very far in the distance)
(Perhaps past the horizon)
perhaps... in space?
Anyway, thanks Khloe and Casey, maybe what I can do (if I go forward with this) is provide "easy mode" instructions with ModManifestBuilder and regular/more byzantine ones for vanilla SMAPI.
is this a normal error to see on the load game menu
https://smapi.io/log/5d01fbda2c4c4fa3aa680cf2d4955492
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Pro, with 24 C# mods and 4 content packs.
I've not seen it before
ModManifestBuilder is great... even if it's one thing causing me to postpone converting my mods to 1.6, since my common.targets assumes my projects use it now
But also that code dies if a content modder inserts an invalid recipe
well i'm the content modder in this case so that sucks
(fwiw, on the whole GMCM_hacking thing - lot of separate threads going on at once here - I do plan to de-hackify that and externalize the custom menu so Casey doesn't have to worry about updating GMCM, whenever that happens. Anyone else doing serious hacks should consider doing the same; it's not nice to create implementation dependencies, I just did what I felt I had to do at the time.)
does the error go away if i fix the mod, or do i have to rollback to a backup
I only took the simple stuff from your example I think so I'll probably be fine (probably)
Silicon - I don't think you need to worry, unless your code changed a lot.
If you didn't copy any of the crazy Publicizer/Reflection stuff, you'll be fine.
Lol
Ngl
That code is bonkers
"Farming10" unlocks at level 0
if it helps at all, it errors for every save file and then continues to a 'no saved games found' loadmenu
so not a per-save issue
Can you run patch export Data/CraftingRecipes and show the resulting file?
"BlueberryMushroomMachine.Propagator": null, 
Ah, that would make sense
How did you manage that
Hey Casey what's the chance of getting a fix for this
i think i removed the asseteditor behaviours to add the propagator to bigcraftablesinformation when i dded its itemdatadefinition entry, so that code probably was also responsible for formatting the recipe data with the item id
Sure, I'll get that in a bit.
Should I just post it here later?
It would be fairly simple but I wonder if it would be a problem that it doesn't show up on the level up menu
(Since it does profession choice instead)
if only sdv1.6 had another year in the oven, we could've had a crafting recipe data model
please!
Nah
Iterate fast
Break shit
Make stardew 1.7 a thing
....huh
I did not realize
i like to use a waterfall approach to development. it's named for the amount of crying
I like to use an agile approach. Constantly dodging all the right ways of doing things
(And bug reports)
I'm currently doing the knitwear design method to development
Better Crafting has a data model for crafting recipes. 😄
... which doesn't help for the vanilla crafting menu at all. But it is a thing.
So does JA!
there are now 3 conflicting standards.
(dodges tomatos using previously mentioned agile approach)
The number of conflicting standards will increase until morale improves.
love of cooking was meant to be the big mod that people have to make their mods compatible with. how come i still have to make compat updates. it's not fair
so far, i have a monopoly on secret note data models (afaik)
@brave fable I think this might be a few days old but regardless:
https://smapi.io/log/f2e692748cf441bbb7df4a31835f6be2
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Pro, with 102 C# mods and 119 content packs.
It's because your mod doesn't have the word "better" in its name.
That's required for any major Stardew framework.
I would want to provide a screenshot too for the sake of it but I'm a bit short on time.
Just wait until I release Gourmet Overhaul. Finally, after all these years, I shall surpass you!
i fully intend to make Best Crafting
Bestest Better Cooking
you're all gonna be out of business then
Rename to that and you will capture 100% of the market
Just wait till I show up with Worse Crafting and corner the market
Worse crafting = you can combine anything with anything but the output is always trash?
random input, random output. good luck
(That reminds me I still need to fix a bug with trash cans in Better Crafting when using a different UI zoom level)
If you implement minecraft crafting I will laugh and cry
Worse Crafting would just be the minecraft crafting grid.
GOD
tfw you want to add a minor feature to crafting: #modded-stardew message
Honestly I had thought about doing that for April Fools with Better Crafting.
Maybe I should.
Anyone know the best way to add sub entries in Locations to existing lists? I tried this but it erased all other forage entries for the location:
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [ "Woods" ],
"Entries": {
"Forage": [
{
"Chance": 0.2,
"Season": "Summer",
"Condition": null,
"Id": "{{ModId}}_Butterfly",
"ItemId": "{{ModId}}_Butterfly",
"RandomItemId": null,
"MaxItems": null,
"MinStack": -1,
"MaxStack": -1,
"Quality": -1,
"ObjectInternalName": null,
"ObjectDisplayName": null,
"ToolUpgradeLevel": -1,
"IsRecipe": false,
"StackModifiers": null,
"StackModifierMode": "Stack",
"QualityModifiers": null,
"QualityModifierMode": "Stack",
"ModData": null,
"PerItemCondition": null
}
]
}
}```
modidea: all cooking requires you to wait several minutes in real time for the recipe to be ready. 🙃
(totally not a DQVIII reference)
Generate random recipe layouts for every recipe. Set up a fake JEI-like interface.
brb inventing a way to harmony patch socks
best crafting
i really wanted to do this for love of cooking but it was just too dumb
what fresh hell is that
but let it be known i wanted it
(referring to chu's thing)
one of those android minigames where u do wood work
i rmbr playing one when i was wee lass
that looks like one of those minigames from squid games
Android didn't exist when I was a wee lass 
But you saw the light and decided that gameplay actually mattered. Good on you for that.
Fields instead of entries let's you not overwrite everything
Hmm... would I prefer a broken anti-feature or a working anti-feature?
oh no, the whole mod was broken. completely
Technically you could interrupt a crafting event from Better Crafting to display an animation or something, and only send a complete signal once the animation is done.
I think I'd prefer the broken one, as long as it breaks the bad part.
the feature didnt even exist lol
You'd definitely want special handling for bulk crafting to not accidentally trap the user in a hell of their own making though
Is this not the mod you're working on now? It was broken from day one?
tried, started, gave up, too much art
ngl carpentry mama would go hard
(As a user of Better Crafting: If you implement this feature, I will have to make a mod to Harmony-patch the removal of that feature.)
Let the black-hat/white-hat arms race begin.
love of cooking took about 2.5 sdv1.6 updates to become close to usable
please do not look at the number of pages of bug reports on the mod
Right, I figured 1.6 broke it, but sounded like you were saying it was broken even before that.
Better Crafting already has asynchronous crafting. Just no one uses it for something silly like playing animations. I implemented it for the Buildings add-on. When you go to place a new building, the craft starts, puts you into a menu to actually construct the building, then it either cancels or completes based on how you interact with the menu.
this pos has taken years off my life
BC is very over engineered lol
Async is OK - not my preference but it works sometimes - but that is very different from "sit here and watch this 5-minute cutscene in order to get an item that boosts luck for 30 seconds"
I'm exaggerating of course, but it did feel like 5 minutes sometimes.
An optional minigame that can increase the value or buff strength would be nice
I'm just glad I finally fixed mutex handling forever. It's been months with no more users reporting bugs.
(On the topic of being over engineered)
Mutexes in Stardew. I guess there's no useful SynchronizationContext.
And then someone will make a mod to patch out the minigame but still get the benefits. You can't win.
I mean, that's fine, if that's what they want to do
If it was requested I'd probably even just add an option to disable the game and still give the reward
half the modded community with fishing be like
Isn't this just... Qi seasoning?
They're weird mutexes, used for exclusive access to inventories like chest contents. Forcing them to update in non-current game locations was a lot.
Is it? I've never used Qi seasoning lmao
Qi Seasoning just boosts the quality of food you craft.
Yeah I never do either because it's a late-game item and at that point I'm only cooking for Perfection. But that's what it does, increases the strength/duration of buffs.
(By way of boosting the quality... which increases the buff strength/duration)
Well, that's half of it done, just need to make a minigame
Yeah, I've never used it outside of testing.
Late-game balance is still a bit wacky in Stardew, Qi gems and radioactive ore are ridiculously rare and there's no way to make them less rare. So why waste gems on Qi seasoning?
But it is there, technically.
maybe if u could mass produce qi seasoning
Qi Seasoning should be more like... a casino reward or something. Maybe something you can get at a festival once a year, but in bulk.
Being so endgame and expensive just makes me not want it.
I contemplated a recipe for qi seasoning for my tree mod tbh 
found your empire upon cooking triple shot expresso, somehow
It would be useful for gifts, since some NPCs are very difficult to gift with gold/iridium items.
Just reverse engineer his secret recipe: salt
^ nah it's gotta be MSG
it's make a good currency dump for the desert festival ngl
This whole time it's just been MSG
MSQi....
Also very good lol
MSG is just Salt 2
Salt 2.0
I'm waiting for Salt 3
salt 3 is fish sauce
SMSG (super)
starting work on a new mod Better MSG
(starts pounding an entire container of Accent seasoning)
I'm pretty sure your doctor will tell you that you can have too much sodium.
noooo... i have to harmony patch... better crafting seasonings behaviours for my own custom seasonings
I got my updated map to load, now I've just got to figure out how to get planted stuff to move too
You can also have too little sodium lol
Oops
"inflammable means flammable? what a country!"
My doctor says a lotta things. Just call me George.
Rather than a Harmony patch, how about you tell me what sort of behavior is needed and I can look at extending the API? I do want to get a new release out soon.
would plants count for this?
"IndoorItemMoves": null,
well love of cooking adds 2 new seasoning items (silver and gold quality), so naturally it has to transpile the base seasonings behaviour to get whichever items are defined
and also show a different popup on seasonings exhausted
i'm not sure if it's something you can really add to BC by default
speaking of new release have you looked at the PR on better crafting? It's technically not needed anymore (I've put the fix in YACS instead) but might still be useful 🙏
Yeah, I've looked at that. One of the reasons I want to do a release soon.
Though I also am trying to remember why I specifically didn't expose the vanilla crafting recipe for SpaceCore modded recipes.
(speaking of PRs, if i wanted to submit one to a mod thats a part of a big monorepo, is my only choice to have to pull down the entire repo and all the billion mods just to edit the one i want
)
Unfortunately yes
As for LoC seasoning, maybe I should just add an event for applying seasoning to cooked items. Ill think about it.
;-;
ah well
these two methods are transpiled into CraftingPage.ClickCraftingRecipe, inserting to the usual seasoning list of items to be consumed in the base game code, and then later replacing the Seasoning_UsedLast message with some new behaviour:
https://github.com/b-b-blueberry/CooksAssistant/blob/feature/sdv-1-6/LoveOfCooking/Core/Utils.cs#L927-L950
(obv not a big deal just a ":/" thing)
which turns into this transpiler:
https://github.com/b-b-blueberry/CooksAssistant/blob/feature/sdv-1-6/LoveOfCooking/Harmony/CraftingPagePatches.cs#L29-L141
or just happens naturally in some loc CookingMenu/CookingManager methods
Well in theory I gues it would be two events, since there needs to be a check for ingredients first, and then a consumption later
could the seasoning only be consumed in postcraft and the item modified? it wouldnt show up in the ingredients list then but
what is good way to match for ldloc.*
You want to modify the item before then for proper stackability checks.
like, you want to match every single ldloc, or you want to match an arbitrary but specific ldloc and the * is a placeholder
arbiturary one yea
aaaahhh that might be why I cant bulk craft in one of my mods that use postcraft. Thanks
This is what I did for stloc recently
if (insn.opcode == OpCodes.Stloc && (int) insn.operand == local ||
insn.opcode.ToString().StartsWith("stloc.") && insn.opcode.ToString().Substring("stloc.".Length) == local.ToString() )
{
It's... pretty terrible
oh i just noticed that CodeMatch keeps List<OpCode>
just doesnt expose it in any constructor 
ldloc and stloc are just annoying in general
casey that code is absolutely atrocious 😄
i suspect i can just append to it 
I did say it was pretty terrible
is the ldloc you're trying to match possible to catch if you just add some more specific instructions around it
im just being paranoid
understandable
atm it's usually ldloc.1 since its the first local var in this not very large function (MachineDataUtility.CanApplyOutput)
or actually, second
RIP
You got my hopes up
I mainly want it so I can use SpaceCore's GetLocalIndexForMethod function easier
(For reference, the function that code came from)
public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator, MethodBase original)
{
var local = ModSnS.sc.GetLocalIndexForMethod(original, "playerParryable")[0];
List <CodeInstruction> ret = new();
foreach (var insn in instructions)
{
ret.Add(insn);
if (insn.opcode == OpCodes.Stloc && (int) insn.operand == local ||
insn.opcode.ToString().StartsWith("stloc.") && insn.opcode.ToString().Substring("stloc.".Length) == local.ToString() )
{
ret.Add(new(OpCodes.Ldloc, local));
ret.Add(new(OpCodes.Ldarg_0));
ret.Add(new(OpCodes.Call, AccessTools.Method(typeof(DualWieldingOffhandParryPatch), nameof(OffhandSpecialCheck))));
ret.Add(new(OpCodes.Stloc, local));
}
}
return ret;
}
(ModSnS.sc being S&S's copy of the SpaceCore API)
So many strings
Well this is that method if you want to steal it. https://github.com/pardeike/Harmony/blob/master/Harmony/Tools/Extensions.cs#L511
OR.... hear me out... we pester Pathos to update Harmony

Is there a date for 1.6.9 yet btw? I have not been paying close enough attention to that.
none known yet
speaking of I wonder if I should bug pathos about eliminating the "one special order dropbox property per tile" limitation, but that would require reworking either map properties or special orders
Which is probably severely out of scope
Yeah I don't think we're getting any significant changes at this point
(Hence why I put the 0 schedule thing in SpaceCore)
(Though that is more of an experimenetal change)
Clearly the best time to rewrite the whole scheduler
Clearly
Can I rewrite the whole scheduler but do it wrong as a joke
this worked as expected 
CodeMatcher matcher = new(instructions, generator);
CodeMatch ldlocAny = new(OpCodes.Ldloc_0);
ldlocAny.opcodes.Add(OpCodes.Ldloc_1);
ldlocAny.opcodes.Add(OpCodes.Ldloc_2);
ldlocAny.opcodes.Add(OpCodes.Ldloc_3);
matcher.Start()
.MatchStartForward([
new(OpCodes.Brfalse_S),
ldlocAny,
new(OpCodes.Callvirt, AccessTools.PropertyGetter(typeof(MachineOutputTriggerRule), nameof(MachineOutputTriggerRule.RequiredCount)))
]);
Ban town instead of the backwoods from pathfinding
Make NPCs always take the wrong warp
!c#
I thought that might work nvm
I remember a lil getting started with c# prompt thing here, maybe someone can help me
!yellowbook
A good book for learning c# is https://www.robmiles.com/c-yellow-book
I need to get the right tools etc going so I can start learning
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
tyty
Okay I came and asked this a bit ago but I think I asked it wrong: if I have a list and want to add a bracketed list to that list without overwriting the existing list, what do I do?
For example, in data/Locations, each list within "Fish" for the location tells you everything you can fish up:
{
"Chance": 0.1,
"Season": "Spring",
"FishAreaId": null,
"BobberPosition": null,
"PlayerPosition": null,
"MinFishingLevel": 10,
"MinDistanceFromShore": 4,
"MaxDistanceFromShore": -1,
"ApplyDailyLuck": false,
"CuriosityLureBuff": 0.1,
"SpecificBaitBuff": 0.0,
"SpecificBaitMultiplier": 1.66,
"CatchLimit": 1,
"CanUseTrainingRod": null,
"IsBossFish": true,
"SetFlagOnCatch": null,
"RequireMagicBait": false,
"Precedence": -100,
"IgnoreFishDataRequirements": true,
"CanBeInherited": false,
"ChanceModifiers": null,
"ChanceModifierMode": "Stack",
"ChanceBoostPerLuckLevel": 0.0,
"UseFishCaughtSeededRandom": false,
"Condition": "!PLAYER_SPECIAL_ORDER_RULE_ACTIVE Current LEGENDARY_FAMILY, WEATHER Here Rain Storm GreenRain",
"Id": "(O)163",
"ItemId": "(O)163",
"RandomItemId": null,
"MaxItems": null,
"MinStack": -1,
"MaxStack": -1,
"Quality": -1,
"ObjectInternalName": null,
"ObjectDisplayName": null,
"ToolUpgradeLevel": -1,
"IsRecipe": false,
"StackModifiers": null,
"StackModifierMode": "Stack",
"QualityModifiers": null,
"QualityModifierMode": "Stack",
"ModData": null,
"PerItemCondition": null
},```
I don't want to replace the existing 5-10 sets of the above terms, I just want to append a new one to the existing set. As far as I can tell, Fields would only let me replace information within that section (like StackModifiers) and Entries will replace the entire list with whichever I provide.
Is there a way to do this without copying the entire former set of lists to my new EditData --> Entries patch?
You can edit a list like a dict
Existing should be keyed by Id I think? But u r add new fish so just use {{Modid}}_fishId
But if that's the case why is adding a new one replacing all former entries in Fish?
Because you have to use the TargetField way
you need to do it like this
there you editdata and target data/fish
and add entries
no, not like that for adding to location fish lists
thats for adding a new fish entirely
oh location
Twizz wants to add to a list inside Data/Locations entries
as chu says that is indeed the TargetField requirement
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#target-field
twizz needs code like this then, this is mine for adding new random items to the trash randomisation but it can be done with any list yeah
targetfield
(but ofc Twizz remember you're adding those sets of terms and not just a string but the concept is the same)
special note to the "#-1" trick I was taught that orders things nicely without replacing
which means i also believe you can just use regular ID based entries
since each fish spawn object has an ID field
though, actually, with CP 2.4, i think you can do that at all times now i think?
i dont think you need the negative number trick anymore
Wow I didn't know cp supported negative index 
The part I'm still not understanding is how I can use that to add an entire bracketed field of information
like this doesn't work:
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [ "Mountain", "Fish" ],
"Entries": {
"ApplyDailyLuck": false,
"BobberPosition": null,
"CanBeInherited": true,
"CanUseTrainingRod": null,
"CatchLimit": -1,
"Chance": 0.2,
"ChanceBoostPerLuckLevel": 0.05,
"ChanceModifierMode": "Stack",
"ChanceModifiers": null,
"Condition": null,
"CuriosityLureBuff": -1.0,
"FishAreaId": null,
"Id": "{{ModId}}_Dragonfly",
"IgnoreFishDataRequirements": true,
"IsBossFish": false,
"IsRecipe": false,
"ItemId": "{{ModId}}_Dragonfly",
"MaxDistanceFromShore": -1,
"MaxItems": null,
"MaxStack": -1,
"MinDistanceFromShore": 0,
"MinFishingLevel": 0,
"MinStack": -1,
"ModData": null,
"ObjectDisplayName": null,
"ObjectInternalName": null,
"PerItemCondition": null,
"PlayerPosition": null,
"Precedence": 0,
"Quality": -1,
"QualityModifierMode": "Stack",
"QualityModifiers": null,
"RandomItemId": null,
"RequireMagicBait": false,
"Season": "Fall",
"SetFlagOnCatch": null,
"SpecificBaitBuff": 0.0,
"SpecificBaitMultiplier": 1.66,
"StackModifierMode": "Stack",
"StackModifiers": null,
"ToolUpgradeLevel": -1,
"UseFishCaughtSeededRandom": true
}
},```
you'd do it like
"IdForBracketInfo": {
...
}
even though the bracket info sets dont normally have an id like that
yep, same way you'd add an object to Data/Objects
Yeah it's just throwing me because they don't have one to begin with
I didn't know you could add that
the key you use should match the Id field inside it ofc
it does say on the CP documentation for it but there isnt really an example of it, just says you can do it, so i dont blame you for missin it
Think it's like
"Entries" : {
"SomeId" : {
// 🐟
}
}
yeah, combined with the TargetField set properly and it'll add a new one and it'll correctly become just a regular { } object like the game expects it to be once its loaded
I've still got it wrong somehow, I'm just not sure what the problem is that I'm getting error messages
Yeah it's just editing the actual Fish field which is not a single fish.
is that from one of your mods? bc that When condition isnt correct
ohno really pls to help
I want it fishable year 2+
When conditions go in the same level as the Action: EditData and Target fields
since theyre a content patcher thing
currently, that fish you posted is available all the time as long as its spring
but you dont need a when condition at all if you just add YEAR 2 to the condition
the one with LOCATION_SEASON i mean
like so?
also if want more specific guidance about the error you're getting now we'll need to see the log/json
GSQs need a comma between them, so LOCATION_Season Here Spring, YEAR 2
it's not super clear to me how many things I need to report when I'm "drilling down"
ty
I just have the location (mountain) and then the second-level heading (fish)
I need to clean up my other attempts at GSQs and conditions then lol
can you send your content json again
with the uploader preferably
You're trying to edit a single Fish Spawn but your edit is applying to the entire dictionary of fish spawns.
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [ "Mountain", "Fish" ],
"Entries": {
"{modID}_Dragonfly": {
"ApplyDailyLuck": false,
"BobberPosition": null,
"CanBeInherited": true,
"CanUseTrainingRod": null,
"CatchLimit": -1,
"Chance": 0.2,
"ChanceBoostPerLuckLevel": 0.05,
"ChanceModifierMode": "Stack",
"ChanceModifiers": null,
"Condition": null,
"CuriosityLureBuff": -1.0,
"FishAreaId": null,
"Id": "{{ModId}}_Dragonfly",
"IgnoreFishDataRequirements": true,
"IsBossFish": false,
"IsRecipe": false,
"ItemId": "{{ModId}}_Dragonfly",
"MaxDistanceFromShore": -1,
"MaxItems": null,
"MaxStack": -1,
"MinDistanceFromShore": 0,
"MinFishingLevel": 0,
"MinStack": -1,
"ModData": null,
"ObjectDisplayName": null,
"ObjectInternalName": null,
"PerItemCondition": null,
"PlayerPosition": null,
"Precedence": 0,
"Quality": -1,
"QualityModifierMode": "Stack",
"QualityModifiers": null,
"RandomItemId": null,
"RequireMagicBait": false,
"Season": "Fall",
"SetFlagOnCatch": null,
"SpecificBaitBuff": 0.0,
"SpecificBaitMultiplier": 1.66,
"StackModifierMode": "Stack",
"StackModifiers": null,
"ToolUpgradeLevel": -1,
"UseFishCaughtSeededRandom": true
}
},```
like so
What error do you get?
well, {modId} should be {{modId}} but i would also like to know what error you are getting
oh thats not twizz's code
whoops lmao
was about to comment I did that mistake yeah
i just saw the code block appear and assumed twizz sent it bc the name/avatar was scrolled up too far, my bad 
"Action": "EditData",
"Target": "Data/Locations",
"TargetField": [ "Mountain", "Fish" ],
"Entries": {
"{{ModId}}_Dragonfly": {
"ApplyDailyLuck": false,
"BobberPosition": null,
"CanBeInherited": true,
"CanUseTrainingRod": null,
"CatchLimit": -1,
"Chance": 0.2,
"ChanceBoostPerLuckLevel": 0.05,
"ChanceModifierMode": "Stack",
"ChanceModifiers": null,
"Condition": null,
"CuriosityLureBuff": -1.0,
"FishAreaId": null,
"Id": "{{ModId}}_Dragonfly",
"IgnoreFishDataRequirements": true,
"IsBossFish": false,
"IsRecipe": false,
"ItemId": "{{ModId}}_Dragonfly",
"MaxDistanceFromShore": -1,
"MaxItems": null,
"MaxStack": -1,
"MinDistanceFromShore": 0,
"MinFishingLevel": 0,
"MinStack": -1,
"ModData": null,
"ObjectDisplayName": null,
"ObjectInternalName": null,
"PerItemCondition": null,
"PlayerPosition": null,
"Precedence": 0,
"Quality": -1,
"QualityModifierMode": "Stack",
"QualityModifiers": null,
"RandomItemId": null,
"RequireMagicBait": false,
"Season": "Fall",
"SetFlagOnCatch": null,
"SpecificBaitBuff": 0.0,
"SpecificBaitMultiplier": 1.66,
"StackModifierMode": "Stack",
"StackModifiers": null,
"ToolUpgradeLevel": -1,
"UseFishCaughtSeededRandom": true
}
}
},```
yess
that's what I have
as far as i can tell that should be fine, what error are you getting?
never mind, it's working this time 🤣
(also, if it makes it easier for you in the future, you could probably leave out a good number of those fields. like, a lot of the ones you have set to "null" probably are null by default, so you can remove the line entirely, to make it easier to read)
maybe I just forgot to save hahaha
I just looked at locations.json and fish spawns are a list, not a dictionary. Are you sure the ID style is supposed to be allowed?
I'm tired and brain is dumb, thank you all for finally resolving this for me 🤣
thats how you add to/edit lists in CP
CP handles the Id stuff its own way presumably to make it work
(well, only way its allowed without overwriting the entire list obviously)
Hello, sorry for the newbie question but I wanna know, GetFish() also gets furniture, right? Is there a way to exclude them, like checking if the item is a furniture and then loop again if so?
I guess getFish can return any item but why is there furniture in the fish spawn list?
iridium krobus?
Oh, yeah, and that thing in the pirate cave.
Those are pretty rare though... why need to exclude them?
(also getFish or GetFish and also from what class bc theres several different ones)
Indeed, and many/most locations override getFish for themselves, despite the spawn lists.
It's getFish, sorry my keyboard keep auto correcting it.
Like, you can of course call getFish as many times as you want and filter out the items you don't want, but is it supposed to correspond to something? Are you trying to predict the catch?
No, it's for machine output. You put the bait in machine, the machine uses the custom output method to determine which fish to get and then return an Object, which is used as output item.
I guess you would just generate "fish" until the resulting item has the category you want.
Or if you don't need it to precisely mimic the fish randomness, then you could just read the spawn data and use your own random.
can u just query for random fish item
a lot of the furniture would also just never show up by virtue of their Condition field not matching i assume
or BobberPosition requirements, like krobus statue
is there an accessible list of the buffs with their IDs somewhere? I cant seem to find it with internet searches
Yeah, that's weird. I might have to think of a different approach.
Pretty sure there was a buffs page linked from the modding home page but the wiki is down...
It's being super slow for me, but not quite down
that must be why it kept throwing errors when I tried to searhc it
Aside from that, Data/Buffs
Their names are all obfuscated by translation, so you'd have to go dig through the string assets to figure out what each one is called
yeah trying to use a PLAYER_HAS_BUFF condition for a fish to require you to have a speed buff
could I do "PLAYER_HAS_BUFF Current speed" or no?
i dont think you can check for any speed buff
Only if you add a buff called speed
Otherwise you need to figure out which one of these numbers corresponds to the specific buff you're looking for
"22" adds 2 speed for 3000ms
but I could do PLAYER_HAS_BUFF current X where X is all the speed buffs in the game ye?
Is that the only speed buff?
PLAYER_HAS_BUFF only allows for one buff to check
not sure if thats changing in 1.6.9
oh it is being changed in 1.6.9 yes
oooh
you wont be able to account for modded buffs though
Love to see more GSQ's get the plural adjustment
unfortunately no, since some buffs are defined in data/objects
BETAS does have a PLAYER_SPEED gsq too
...that could work. I'd be happy with just checking if the player has a minimum of default + 1 speed buff equiv or higher.
actually most of them are. eel, coffee, and espresso all have non-unique speed buffs in data/objects
I guess I wait for 1.6.9 for that then?
(i should be clear that BETAS =/= 1.6.9 beta, BETAS is the acronym name of my mod)
Isn't there a book that increases speed?
ohh
there are 2 books that increase speed
is it my imagination or is the KnockbackMultiplier buff effect really, really subtle
but they dont give you a buff i think they just Do That
Rather than checking for an explicit buff, you might want to check the temporarySpeedBuff (float).
even with a multiplier of 10 it barely feels different
That's C# though isn't it?
Although, caveat, could be one of those things that looks like it should work but actually doesn't.
Yes it's C#
Yeah they aren't in C# lol
I realize that, but we were onto the "need to learn C# for this" part of the conversation.
I'll add it to my notes to ask about when I try C# to make this work then I guess
apparently the books of speed only add to Farmer.addedSpeed.... not Farmer.speed
i didnt realize that field existed
its also where speed buffs are added from too
If temporarySpeedBuff works the way the name suggests (or that + some combination of addedSpeed if you want book buffs) then it's probably easy to write the GSQ.
Lol
thank you
(and Button can add it to the thing)
"What's this field doing here?"
What does BETAS check currently?
BETAS checks Farmer.getMovementSpeed()
which accounts for speed, addedSpeed, and temporarySpeedBuff
Oh, the whole kit and kaboodle
Ive got the tutorial stuff open in all my tabs I definitely intend to have a solid go at c# tonight after I test my current progress on my mod
Does that include a horsey
addedSpeed gets the Farmer's speed buffs. temporarySpeedBuff is from... uh. Farmer.MovePosition(), TerrainFeatures.Flooring.doCollisionAction, Grass.doCollisionAction, and HoeDirt.doCollisionAction()...
getMovementSpeed does indeed account for horsie
D'awwwww
i forgot that flooring gives speed buffs
Go horsie go horsie
It does. And there's a mod that slightly buffs the flooring speed buffs. (One of the few balance-changing mods I use)
I don't know if I ever knew this, I do tend to plaster flooring all over my farm for Automate though
ngl if it was possible to fish from horseback that'd be a fun condition to require to catch like... a hippocampus legendary fish with.
You need at least 1 horsepower to catch this fish
why is life hard 
So does that one book too
float movementSpeed = Math.Max(1f, (float)base.speed + (Game1.eventUp ? ((float)Math.Max(0, Game1.CurrentEvent.farmerAddedSpeed - 2)) : (this.addedSpeed + (this.isRidingHorse() ? 5f : this.temporarySpeedBuff))));
however you dont get the flooring buff if you're on a horse? i guess
One square yard of sunlight is approximately one horsepower
The slitherlegs book doesn't actually completely remove the grass/crop slowdown, just nerfs it.
@rancid musk hi do you have a clue. any at all
adding a new book to my mod called Lil Slitherlegs
Well, there are two Way Of The Wind books, so it's consistent with the uh, "lore", anyway...
That name is gonna be confusing, though. Just do "Old Slitherlegs Part 2"
Older Slitherlegs
That works too
Are you on 1.6.9 or anything?
It just hit me... I was going to say "once you get all the late-game speed buffs from the horse + all the books, you can move around the map at a pretty decent rate and the tiny crop slowdown isn't so bad". And that made me think just how unbearably slow movement is in the early game, when you have to stack a dozen buffs just to make it barely passable.
1.6.8, no mod update notices
dont forget the coffee too
Of course, going even 10 in-game minutes without the spicy eel + triple shot is pure pain.
entire reason i added the book to my mod whose sole purpose is tripling the duration of coffee buff
Triple-decker triple-shot
A whole jug of espresso
I'll try to look into that, but I've never seen it before. In the middle of something right now.
Khloe what do you use a publicized for
Some games have addiction mechanics. Drink the triple-double-triple-triple espresso too many days in a row and you can't get out of bed the next morning.
Publicizer
Because casey took too long to update SpaceCore
steps to reproduce:
- install console code and better crafting
- attempt to use console code
I needed to be able to tell Pintail to ignore access
So both you and monomod use it
(I do not actually blame casey, I am just impatient)
And somehow this is causing issues
It's a thing you have to explicitly define to use.
Are you actually going to do this?
Wait wut
It's like that weird duck typing thing
Oh. I see
I have a version that fixes that
there was a good possibility of it, i was wanting to add more books for 1.6.9 since im gonna be updating the mod anyway when it comes out
Also this books internal name is fucking Book_Grass wtf
Publicizer is just an analyzer, IIRC. You have to make the attributes yourself.
I ran into the problem from some other mod
but dont let me stop you from doing it yourself if you wanted to
If you're going to do it, I'll just make a temporary mod for myself, I don't have any other books I wanna make so I wasn't about to make a whole mod for one book currently lol
@brave fable
thank yooou
only reason i wouldnt just do it right now is bc idk what id make for the art lmao
Sometimes I wonder if I should just set player speed to 5000 and be done with it. But I suppose, you take away the pain, you also take away the fun.
Books are so short term, I don't even remember what the current art is lol
Will it go that high? lol
Well it's just a float. As for what it would do when it's that high, who knows.
i was just thinkin that.. either that or make it look dead
Grass can't stop you if it's dead
I struggle with controlling the character at 10 speed lol
Brown Patch: The Book
i spent all this time troubleshooting why my buff's BuffEffects.KnockbackMultiplier value is always 0
Most people want to eliminate brown patch. We want to add more of it.
Hurrah a fix from Console Code's side
BuffAttributesData doesn't even contain KnockbackMultiplier
If 5000 would work, I wonder if the collisions still would lol
Well I have noticed that speeding up NPCs as part of the fishing acceleration can make them stuck, but that might be an unrelated bug in my speed-undo mechanic.
it can get too high. I watched in awe for around 2 whole minutes while a streamer with her speed hacked high up struggled to position her character to be able to properly open the mailbox
book of grass is one of those ones thats 1 pixel shorter than most others. pain.
shorter and thinner..
Clearly this is an Ask Pathos
Mail is overrated anyway.
My thinking is, "if you can't hit the magma sprites, they can't hit you either"
- sdv 1.6.9 request: allow edible objects to add any buff properties
- to do: add missing fields from BuffEffects to BuffAttributesData (AttackMultiplier, KnockbackMultiplier, WeaponSpeedMultiplier, CriticalChanceMultiplier, CriticalPowerMultiplier, WeaponPrecisionMultiplier)
thank u for ur consideration
Why is this a problem?
My irl books are all different sizes and shapes
i dislike the inconsistency
It's different therefor it must be punished
(but mostly its bc its harder to fit things on a smaller canvas)
And shelving them all with the pages facing outwards
Okay well that's just evil
in this case it didnt end up mattering bc the grass was still c entered even on a bigger book b ut sometimes they cant be centered afterwards
I was gonna say I don't even sort my books, but damn
I keep forgetting AT is broken in the latest build of the 1.6.9 beta
At least, I think it was working with the SMAPI 4.1.0 beta 2
I am not very consistent about actually launching after updating
oh my god i cant even set the buff.effects.knockbackmultiplier on item eaten. this was going to be a 5 minute update.
..
yessss
leeks.effects.KnockbackMultiplier.Value = 100;
who.buffs.Remove(leeks.id);
who.buffs.Apply(leeks);
is anyone familiar with how visible fish works? I loaded up my game with the current working build of my new fish mod and visible fish is exploading on me in the logs and even worse my new fish isnt visible in the water.
On the subject of "will very high speeds break collisions", I believe the answer is... yes, yes, absolutely yes.
public void tryToMoveInDirection(int direction, bool isFarmer, int damagesFarmer, bool glider)
{
if (!this.currentLocation.isCollidingPosition(this.nextPosition(direction), Game1.viewport, isFarmer, damagesFarmer, glider, this))
{
switch (direction)
{
case 0:
this.position.Y -= (float)this.speed + this.addedSpeed;
break;
// Snip other cases implemented essentially the same way
}
return nextPosition;
}
}
Where nextPosition just adds the speed to the X/Y position. It's the most naive collision checker you can think of.
build up speed for 12 hours
Is it possible to add (not replace) music in 1.6? I used to use CM to just stack them and they played randomly, but using the new CP format to replace tracks does just that, replaces, if I make a separate pack replacing the same tracks, one just overrides the other and they never play.
You need to name them uniquely so that it creates a new entry instead of creating an override
You will then have to also patch wherever they're being used to use the new track rather than the old
"MainTheme": {
"Id": "MainTheme",
"Category": "Music",
"FilePaths": ["{{AbsoluteFilePath: tracks/HarvestMoon.wav}}"],
"Looped": true,
"StreamedVorbis": true
},
You want me to rename the main file and not the ID?
oh I have no idea how to do that x.x
So because CM is outdated, we can't add say multiple mainthemes to the one maintheme, to have it play randomly like before?
cause CM used to do it
You could add the original main theme into that override as well as your other desired songs where it has a list of FilePaths
Just have to unpack the audio files and find the main theme
how would I list multiple tracks over the one? Sorry I am still very new to content patcher
FilePaths is a list as denoted by [] which means it can take multiple entries, separated by a comma. So:
"FilePaths": [
"{{AbsoluteFilePath: tracks/HarvestMoon.wav}}",
"{{AbsoluteFilePath: tracks/ASecondAudioFile.wav}}",
"{{AbsoluteFilePath: tracks/MainThemeOnceYouUnpackIt.wav}}"
]```
OHHHH you are my savior thank you so much
now i can have my omori and harvest moon music
(sadly cant upload due to copyright)
It'll pick a random one from the list every time it needs to
thank you!!
I made a support thread as my mod is causing visible fish to throw errors I could really use help debugging because I'm new to this. https://discord.com/channels/137344473976799233/1283625737861201960
at last, a unique buff for a recipe for each cooking level from 3 to 10 🥬
lv2 is off the hook since it already has food +tipsy, drink +def, food +speed, and food +so much
which is probably all busted and weird enough
Looks nice. What are the plates and silhouettes on the right all about?
Anyone know how to edit Challenging Community Center Bundles to edit the amount of an item you need? I want to change the amount of fish to only need 1 of each listed instead of the original
Is what it shows in the config
I can't figure out which one of the numbers I edit to change it
number of ingredients slots, determined by frying pan tool upgrades. wonder if the mod would just make more sense if i had you collect plates from around the world somehow
probably not so far-fetched now the game has so many bizarre collectibles and systems
Oh, they looked interactive, I thought maybe you had to drag the ingredients onto them or something.
clicking inventory items moves them to the slots
it's more clear when you're actually doing it rather than reading it
Why does it say there are 3 ingredients?
To take the river fish as an example, find this bit 704 10 2 and change the 10 to 1, I think. Each set of 3 numbers within the third field is the item id, the number needed, and then the minimum quality needed. If you edit the second number within each set of 3, you should be changing the number needed.
that's the craftable count, it's shown in the base game and bettercrafting menus
Yea I figured it out after going in game to see how much fish was needed and changing all the 10s and 5s
But it's
Oh, you mean the number you're able to make.
"River Fish": "River Fish/BO 154 2/704 1 2 137 1 2 139 1 2 145 1 2 699 1 2 706 1 2 144 1 2 707 1 2/6/8/6"
I changed the 10 to 1 and it worked
So 154/2/704 "10" to "1"
Also thank you!
Glad you were able to figure it out :)
This might be a silly question, but you can define a custom object entirely on the C# side without content patcher?
yes. Content Patcher is just a C# mod that does it for you
celebration pic. thanks everyone who showed up to my support channel the mod is not working perfect in its current state I just need to figure out the fiew last conditions I need C# for, and do the aquarium loot json.
I did. I used assetrequested to import a meleeweapon, included the sprite in the C# side, and defined some custom behavior for it.
Is said mod open source? I wanna take a looksy if that's cool 😄
Content Patcher is yes
But fairly complicated
There is however this page on how to do it through SMAPI
I think there was another page, but I can't remember where I'm thinking of right now
https://github.com/Teoshen/StardewValleyMods/blob/main/BriarSinger/ModEntry.cs
don't look too hard, it's extremely messy and still WIP. Dwarven Mattock also does a custom melee weapon and does more custom behavior than mine.
https://stardewvalleywiki.com/Modding:Items#Weapons
And then this was very helpful for me, it has other tool/object info as well.
Thank you!
Adding stuff to the pipeline through C# definitely makes me appreciate CP more, it's kind of a pain in the ass
I haven't found it too bad on the declaration side. Though if I were patching the content of other mods, I imagine it might be less than pleasant to deal with Dictionary<string, Dictionary<string, Dictionary<string, object>>> or whatever gets thrown at you because you don't have access to the real model type.
Is there anyway to turn off pickles/juice for crops or is that just too hardwired into the game?
You need to add your own rule to keg/jar
And ban a particular context tag with it
Oh ig u can just modify the original rule's context tag too 
Dunno if any big mod has claim on that
RequiredTags is a list so it should be safe to add
just add a tag !id_o_youritemid to ban it
There is cornucopia artisan machine which adds a veggie wine rule above the juice rule
Thanks!
Just gotta modify that one too
Some of the juices are fine but some are just kinda weird
I think that's par for the course, hence the Pam quest
Vodka mod where
There was vodka in Starbrew Valley i think
Wildflour adds a distiller which among other things turns potatoes into vodka
And the Cornucopia successor to Starbrew (there will be one I think?) will probably have vodka as well
Okay, I tried to figure it out myself but am dumb and don't understand content patcher that well so have no idea where I'm supposed to add your own rule to keg/jar/ban context tag or what RequiredTags is
Look at Data/Machines
find the entries for the jar/keg
If your goal is just to ban a bunch of items from the rules you don't need to do much, just need to add a few entries to an array
search for Default_Juice or Default_Pickled specifically
and see the RequiredTags field below it. Basically an item that has every tag in that array (or not have that tag if it begins with a !) will be considered for the rule
So for example, Default_Pickled accepts any item that has the category_vegetables. You want to add a new entry !id_o_youritemid so it will accept any item that is a vegetable AND not your item
(you can use Lookup Anything and turn on debug fields to get the context tag corresponding to your item)
once you've identified the changes you want to make, use TargetField to target the RequiredTags field to add your new string
(I'm going to bed immediately after this so I'm dumping everything. Apologies if that was rambly lol)
No no that's super detailed and a big help!
(It's 2:30 am so I should sleep too lol)
Thank you so much
❤️
Hmmm xnbcli is not unpacking Data/Machines for me
That's gonna be a tomorrow problem
!unpack @fiery cobalt
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!
use stardewxnbhack instead of xnbcli! it supports all sdv1.6 files
but do it tomorrow lol
@vernal crest @inner harbor wont be releasing it to nexus and will stay a floating file on discord, as 1.6.9 now does the logging for me when dialogue failed to be hit and fallback text is going to be used
What about if it can't find a fallback like with Lemur's ... problem?
the game itself will be logging in places where ... would be used
patching the spouseroom when it's already built becomes a problem, right? i can't remember the nuance of how that works
Well, thank you for making your one anyway
I haven't played around with it much yet because I have to figure out more about marriage schedules but I have had plenty of messages already telling me what lines have been missing from Hiria's marriage dialogue.
You can patch the spouse room whenever, but if you try to patch it in the middle of a game it won't update
I think it would reflect any changes on a reload
@fiery cobalt here is how we ban oats from the vanilla juice rule (necessary in our case)
"Action": "EditData",
"Target": "Data/Machines",
"TargetField": [
"(BC)12",
"OutputRules",
"Default_Juice",
"Triggers",
"ItemPlacedInMachine_Vegetable",
"RequiredTags"
],
"Entries": {
"#-1": "!id_o_cornucopia_oats"
}
}```
*personally* i would not bother with banning stuff from the vanilla rules if the only outcome is that they make weird stuff, people play with lots of other mods that mess with those rules/replace them without care, its not really worth it; imo if some artisan good is weird then people typically just will not make the artisan good
but if you want to do it, that is how you do it
When does 1.6.9 releases (approximately) and how do I build my mod for it? Do I just have to update the version of Pathoschild.Stardew.ModBuildConfig in the csproj?
just have 1.6.9 and hit compile
The beta is going now so you could check compat with it currently
I'm sure there's a chance that something could still be breakingly different between beta and release but most likely it probably won't
neat
(I think it was a couple of Platonymous's mods that are still built for the 1.6 beta lol)
You can use the Aba Hack (someone else said they were doing the same thing but I can't remember who
) of manually editing the spouse room and then patching the farmhouse maps with that when you want to update it
i kind of just wanted a funny, "have this specific mailflag that i arbitrarily added at some point? get a spouseroom that has a basement"
If you do, make sure you make Farmhouse Fixes a dependency of your mod otherwise you will warp back to the front door when going back upstairs
I can't access it through Steam rn, is it a private beta?
Yeah, check pins
euh too much work and i'm already feeling that, "you're putting too many frameworks on an expansion of an npc"
It's more like, invite only beta lol
Since anyone with the code and on Steam can get it
thanks!
also, side note, i have given up on the incrementstat trigger action for a day counter, unless i'm doing something inherently wrong, but i'm also not in the mood to have 4 trigger actions per event just because i want to space my events out 
Good thing I checked the changelogs, there are changes in light sources, I'll rework them later to avoid breaking stuff
Uh, I can't check the CP compatibility on the beta since there's no CP version for the beta.
I still have a bunch of stuff to do anyway
is there data/Objects code for making items prismatic?
(or some other way)
I added bugs to my mod and thought really rare prismatic versions would be cool
There is a CP version for the beta, should be on Nexus
oh, didn't see it, thanks
I like adding mods to my mods too
It's hidden by scrolling down to keep people from downloading it when they don't need it lol
the ideas won't stop
just draw them rainbow?
I haven't even designed the mod that I originally planned for, I'm having too much fun with everything else 🤣
I meant like the glow function in the game
Woo I have a hack named after me! I'm famous 
Prismatic isn't supported on Objects I'm pretty sure, you would have to patch the draw code and also change how the sprites work
what glow function are you talking about because objects dont glow
prismatic shards dont glow
I meant bugs, I ruined my joke....
