#making-mods-general
1 messages · Page 132 of 1
Maybe StardewDelegateHelper
Since 99% of stuff is registering delegates with things that take delegates
hi everyone
can anyone help me?
I'd like to make a conversion of the farmer body types for fashion sense
but I have no idea how
I've read on reddit that there's some type of automation process to convert something to FS, but I haven't seen it anywhere
huh
can you explain it more?
see, I am the opposite. I would actually like all of those to be in one file due to it basically being a general requirement for a lot of mods.
Custom NPC Fixes and Custom NPC Exclusions feel like functions that should be included in the API.
But I am also the type of person who likes an extensive API with a lot of features and functions built in (Think like forge for minecraft, or the inscryption API) compared to the more bare bones API like SMAPI or Fabric.
I think the point is that out of that list 3 is obsolete and FTM is the only one that's still relevant. if they're bundled together that means installing a huge mod to use exactly 1 feature, with the other features only being kept to not break older mods which you don't care for
(i only used those as examples bc someone else used them as examples, i would feel the same regardless of whether or not they are obsolete)
true lol
Just curious, would the unused portions of the framework being bundled cause more lag or is it just a preference thing
there is definitely a balance between "this mod introduces 1 CustomFields that allows dying your dog green" and "this mod cooks dinner, prepares laundry, makes your bed, and dyes your dog green, unfortunately you only care about the green dog"
likely not on a scale you'd notice
That's fair, I was just providing the opposite side of the isle (some one liking big api mods that have a lot of features).
there's technically more load time, and often some extra cpu/memory use, for anything a framework does, but yeah, it's pretty trivial
adding a new NPC or map is much more significant than having every framework installed for no reason 
(and in a big enough mod list, its likely that you have one mod that will use every feature in the framework anyway)
I would prefer content patcher to just gobble everything up
depends on how it's coded. a thing could absolutely be a resource hog... but that could be true for any mod.
but in a nice get help from the framework people and give credit kind of way
content patcher isnt really the kind of mod to absorb other mods. it only does so bc of incidentally the vanilla game making it possible
I think it's a build tall vs build wide situation right 
that said the guide book feature of spacecore does seem kind of out there and random compared to everything else it adds
people say content patcher eats other frameworks and things but its only bc content patcher allows you to add stuff that vanilla can work with, so its really more that vanilla changed to make those frameworks vanilla-ly possible
it's ultimately a balance between user convenience, centralization, and who actually makes all of this code
"vanilla" not in the strictest sense obv when talking about mods but i didnt know how else to word it
Like imagine if custom skills was a specific framework rather than part of spacecore, the hope is that a 1 job framework can dig deeper
Even content patcher is a 1 job framework ultimately, it's just the most important job 
if anything i think CP's old customlocations stuff was an outlier adn should not have been counted
centralization is a good point, too. we mentioned before the fear of casey burnout, like when the surprise update broke spacecore and casey got an avalanche of complaints over like six hours, because spacecore's net is so wide that it's critical for tons of mods
a more accurate way to describe content patcher eating things would probably be "the game now lets you use the content pipeline for this stuff"
Does using the content pipeline make stuff easier
(this is just semantics though i just have a slight "ehhh" reaction personally whenever someone says content patcher ate things lol)
ok, while we are on the subject of frameworks, I have finally got my mod that allows for a user to configure the skins of all of the horses that are present in a save to be different, with support for NPCMapLocataion. I would like to release it in a way that people could make their own horse textures that My Mod would add to the list of available textures, but I am not real sure how to do it best.
using CP for everything makes it easier for pack makers who know how CP works, and allows some conveniences compared to unique pack formats
the hope is that a 1 job framework can dig deeper
I feel like that's a false hope. As it will only ever go as deep as the person (or people) have time for. If it's one person working on 500 mods or 1 mod, their time will still be split between all the features/mods.
Also while not dealing with it being one mod or multiple mods, they are open source (hopefully) so people can review and help improve the code. Like I've spent time submitting PRs to the skill code of spacecore. even if it was it's own mod, with how split Casey has been, I doubt it would be "better" if it was just a skill framework.
since your mod is for retextures, providing a custom asset that consumers edit with CP is probably the easiest route
guys, why are farmer bodies "cursed"? 
basically you just wanna let people use, say, Content Patcher to Load something into an asset name you define
and then you grab that asset from the content pipeline like you wouyld a vanilla asset
and do what you want with it
just an asset of string keys to data about a horse texture would be sufficient
said data can have 2 fields, one for the horse texture and one for the map icon texture
farmers use a bunch of "part" sprites animated together, rather than a single sheet of full-body images like NPCs, so it's relatively complicated
(and the code is a mess to modify for framework/C# people)
made up of many many little pieces stitched together like a paper puppet during the game and requires special rendering for some things
if I were to try to convert only the legs, what would that require?
quick somebody post the pants image
ok, I am going to dive back in and see what I can come up with
when you see your farmer perform a walk cycle on screen, you're actually seeing a locomoting flesh homunculus whose body parts are only kept together with sheer unholy magic
Oh, another question, can minecarts target the inside of buildings?
said homunculus has 300 legs that fade in and out of existence with every step
I have the body template for Fashion sense, but I don't know what to do with it, or how to add my own modifications or how to edit the json file
I thought I was targeting a building, but it ended up creating a fresh map of the building instead
Though if you're trying to warp to an instanced interior that might be a lot harder
Yeh, that
yeah, If possible
thinking once again about male farmer, who is 2 pixels taller in his swimsuit
instanced interiors dont really have predictable names, is the problem
I am able to leave the building from the minecart fine
I guess you could probably add one to an existing building?
it is the getting back to the building that is the problem
like the inside of a single coop is actually called like Coop3458_25235-364874356-2523656 or whatever
the boots take 2 inches off
You mean you don't grow when wearing a swimsuit? I thought everyone did.
But it would only be useful for that one save
I may just make the warp back go to in front of the door to the building
you'd need to edit the minecarts data every time a building with a minecart inside it is constructed to grab the uniqueid of that building
and even then im not actually sure if minecarts can go to those? do those count as "Locations"?
like theres no Coop entry in Data/Locations they just bring you to a map
yeah, they are not in locations
I think the minecart code would "get" the coop if it was set to a specific ID like that, but getting those in CP is the tricky part
I guess I'll have to revise my minecart sales pitch
a token could be made to output all of them with indices, I guess
It's a shame they generate with such wild numbers, seems like a simple appended incrementing number would have been fine lol
yeah, the game uses GUIDs in odd places occasionally 
you know what, i bet it's just this https://www.youtube.com/watch?v=BIaF0QKtY0c
...actually nevermind, I think minecarts don't check for dynamic structure locations 
The fact that this is Seth Rogen makes me think that Superman totally could have tricked people
public void MinecartWarp(MinecartDestinationData destination)
{
GameLocation targetLocation = Game1.RequireLocation(destination.TargetLocation);
//...
public static GameLocation RequireLocation(string name, bool isStructure = false)```
theoretically is it possible to add a C# mod that runs on day start and dynamically adds - ah nvm
i just followed that string of function calls too and i think they do find it
ok, so definitly not something that can be done without c#
it could be prefixed to flip that, but I think get loc from name cares about that in the call
at some point it calls Game1.findStructure
regardless of isStructure
and if it still doesnt return, then... it just calls the same chain of functions but with isStructure set to true lol
confusing, but good to know 
in Game1.getLocationFromNameInLocationsList
ah 
if (!isStructure)
{
return Game1.getLocationFromName(name, isStructure: true);
}```
i guess setting it to true just makes it a little faster if you know its a structure, i guess
even though if its set to false it just does a cache lookup anyway
so yeah, if you could get the instanced location IDs into the minecart data with a custom token or something, it should let you go to/from
(still a C# requirement, I'm not sure if anyone currently makes a token like that)
id be very surprised
but, this is an idea that has the potential to work?
as is, you should be able to use CP to put working minecarts in buildings, but to make the minecart network send you to buildings, a C# mod would need to add a CP token
Yeah, I have the Minecart working inside the building to send you out
if you're going with C# though you could also just do it entirely in the C#
might be easier to just loop over all the buildings and make entries for each
yeah, swapping out a special location ID or something might make more sense 
CP has valueAt for list tokens, but I'm not sure how you'd go about formatting "add an entry for however many buildings exist"
you would need to handle invalidation and buildings being added/removed ofc, but you'd need to anyway
and there is that too yeah
Thank y'all for the help and ideas, I think for now it will go on the back burner till I feel more confident in my abilities.
Yay, I have diagnostics.
It's a simple mathematical certainty that the more unrelated features one author or team is maintaining, the less likely it is they'll have the time or inclination to improve any one specific area.
Is there a chance of "IfModLoaded"
could anyone help me getting my custom Map.tmx file into the game?
I mean I could add something like that, though that'd get tricky as soon as you don't have an IModHelper reference if I wanted to support [IfModLoaded()] on all the things it has
you'll need to provide more details like:
- what have you tried?
- what isn't working?
- a log (from smapi.io/log)
Does anyone have a template to design mods? not coding wise but like knowing what it is supposed to do.
It's hard to have a template when there's so many things a mod can do
I drew a picture of how to choose what frameworks to look at back in 1.5, but it's mostly out of date now
identifying what your mod needs to do to achieve the result is like half the job
idk if what im doing is anywhere near what i need to do as all the documentation is abit vague and the tutorials are old. when i try to debug warp to the location i get a location not fouund error. like i said i said, i have the map and just need help getting it into the game
My issue is that I have no idea what my mod is
!mapmaking
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
If you want help debugging, I would start by posting a log link and a parsed json link
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Can someone point me torwards the list of mod concepts in github?
!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.
* `LocationName` and `LocationUniqueName` are identical except inside constructed buildings, cabins, and farmhand cellars. For example, a coop might have `LocationName` "Deluxe Coop" and `LocationUniqueName` "Coop7379e3db-1c12-4963-bb93-23a1323a25f7". The `LocationUniqueName` can be used as the target location for warp properties.
Would LocationUniqueName work for something with the minecarts?
no, because it only shows the location name of the location you are in
ok, that makes sense
so to add a custom map in my mod i make a Locations.json file in my mod folder and just copy one of the locations attributes from Locations.json from the real game and just change the path for map and the name?
Nah, you can do it in your content.json unless you have a reason to put it in its own json
Usually the reason is for organizing a large mod
You also wouldn't just copy from the base game
You need to EditData Data/Locations
You would want to set up a normal content patcher content pack
And do an EditData on Data/Locations plus a Load for your tmx file (and any custom tilesheets you might have made)
Please note that you should make sure to Load into Maps/ so it can pull from the vanilla tilesheets, and to name your map file something somewhat unqiue to prevent name collisions
Maybe I should make a tutorial for this, it's pretty straightforward
would be lovely
It'll take some time, so it won't help you right now unfortunately lol
what do you mean here? i made my own custom location, not like edit an exisisting location. would i still need to do this step and if so how?
Yep, edit Data/Locations and add new entry
so open locations.json from unpacked and just copy paste another place and set the name and path? just wanna copy another location just to make it fast, i just wanna see if it works
It doesn't work like that
im lost
just gonna wait for the tutorial ig lmao 😭
thank you guys for trying to help but theres something ive missed and or misunderstood
(Hold on, I'll add an example to the wiki.)
My god I have realized that my issues werent one of skill but of lack of knowing what mod I was making, turns out you cant make a mod you dont know what you are going to make
I was in your situation 3 days ago, I just downloaded a random mod and saw what they did
man i tried doing that but i just couldnt make it work
"Action": "Load",
"Target": "Maps/IRSOffice",
"FromFile": "assets/Maps/IRSOffice.tmx"
},
{
"Action": "EditData",
"Target": "Data/Locations",
"Entries": {
"IRSOffice": {
"DisplayName": "IRS Office",
"CreateOnLoad": {
"MapPath": "Maps/IRSOffice",
"AlwaysActive": "true"
},
"Music": [],
"MusicDefault": null,
"MusicContext": "Default",
"MusicIgnoredInRain": true,
"MusicIgnoredInSpring": false,
"MusicIgnoredInSummer": false,
"MusicIgnoredInFall": false,
"MusicIgnoredInFallDebris": false,
"MusicIgnoredInWinter": false,
"MusicIsTownTheme": false,
"CustomFields": {}
}
}
} ``` Something like this worked for me
so just put that in the content.json file in ur mod folder?
Yeah but put your files in there, is your map in a TMX file without directory climbing?
no clue what that means but i have an assets folder with my tmx and pngs i used
they are copies of the pngs the game uses should i add z_ infront of the name or does that not matter
If they're copies of the base game ones, you just delete/move them when you're done editing
You only need to ship custom tilesheets with your mod
Unless they're custom tilesheets from another mod that already loads them to Maps
The rules around map creation can be a bit finnicky
Just edit the names around for your mod, this is teh template i have been using
(I added the start of a location examples section.)
Thank you!
So I wrote some code that ran Game1.playSound("junimoMeep1");" every 200ms for 2 seconds. I would have thought I would have heard exactly the same sound played 10 times. But nope, each meep sounds a little different. That's actually what I was going to try and make happen by twiddling the optional "pitch" parameter, but it seems I don't have to. Anybody know why junimo magic is happening here?
Many audio cues have variations that are automatically selected
(That's why the FilePaths field in Data/AudioChanges is an array.)
Thanks!
And now I also have, based on the code in that screenshot, this: ```csharp
//-----------------------------------------------------------------------------
// <auto-generated>
// This code was generated by the Leclair.StardewDelegateHelper source generator.
// Changes to this file may cause incorrect behavior and will be lost if the code is regenerated for any reason.
// </auto-generated>
//-----------------------------------------------------------------------------
#nullable enable
namespace TestMod;
public partial class ModEntry {
public void RegisterEvents(StardewModdingAPI.IModHelper? helper) {
helper ??= Helper;
helper.Events.Content.AssetRequested += OnAssetRequested;
helper.Events.GameLoop.GameLaunched += OnGameStarted;
}
}
It's getting there
Can you make a bed sleep-able in a CP mod?
Im hunting for a mod similar to an animal journal.
Simply I want something that says
Barn 1: 3/8
Contains: Animal A, Animal B, Animal C
Barn 2 : 1/4
Contains: Animal D
Coop 1 : 4/4
Contains: Animal E, Animal F, Animal G, Animal H
Or A rework of the Animal page possibly to add this info?
I dont think one exists and I'm not sure where to start to develop it myself. Does someone have the know-how and patience to teach me or let me comission them to make it?
!commissions if you want to go that route
If you're looking for people who do mod commissions (either art or code), here's a wiki page with a non-comprehensive list of people who do them: https://stardewmodding.wiki.gg/wiki/Stardew_Mod_Commissions
Thank you
!startmodding if you wanna try your hand at it yourself
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.
Something like that will definitely be C#
Thank you - my next question lmao
hmmm I'm guessing that's what this is for
thank you, and I put that in the 'Back' object layer in Tiled, right?
Yep
Today I discovered Calcifer does TileAction :3
For furniture ><
I am excited
Imma bout to break stuff (lovingly)
Hi, I'm looking for some way to enable a custom item to be found when using hoe (similar as finding clay)... I'm looking to use CP but I couldn't figure out what target should I use to include this behaviour... any tips?
If you want to add custom drops from hoeing artifact spots, that's perfectly doable in CP; check out ArtifactSpots in this page: https://stardewvalleywiki.com/Modding:Location_data
if from hoeing dirt in general, that'd require C# and a patch to checkForBuriedItem
that kind of mod can't be discussed on this server
Where can I discuss it
dunno, but not here 🤷
it's in the rules
Okay
Someone is posting an error log (on Nexus, not here), wherein there are numerous very weird game base code errors, and a warning about base game components being corrupted. Is this a symptom of piracy? (It's on my mod, but I don't especially feel like helping people pirate this game at all, but on the flip side, don't want to wrongfully judge someone who isnt).
The game path at the top of the log will be a pretty clear indication if you want to share it
well it could be a DRM free GOG copy
You can install Steam games wherever you want also
you can also just copy stardews folder wherever after a steam install
wouldn't be able to tell otherwise (shoutout to the couple users putting their games in a folder named PiratedGames in mod help lol)
this is true too but it is insistent upon putting it in a steamapps folder still though
Simplest way if you are not sure, tell them they need to reset their game files. If they can't, well...
Will do, thanks!!!!
Both GOG and Steam provide ways to verify file integrity/reset the files if it's legit, so there is no excuse for why they can't if it's a legit copy
And it won't bust their saves so it costs them nothing
hey, since your here I have a quick question: would you mind if I remove the "furniture machines can stack to 999" feature from Furniture Machine and just make them only stackable to 1 like vanilla? that one feature is responsible for a disproportionate amount of patches and transpilers, and removing it would greatly reduce the chance of unforseen bugs as well as the mod breaking in future updates
Fine by me!
sorry late reply, trying to make a custom skill. probably out of reach initially but would be what I am aiming for eventually
Ah, well SpaceCore would probably be your best bet for adding custom skills, not something I've done so I'm not sure exactly what all goes into it but there's at least a few skills that use it
yeah! I know of love of cooking and the socialization skill that do this. I was poking around their code initially. long ways out for me for sure
@deep cypress If you happen to mean this log from the Poly comments, SDV's complaining because no audio output was detected (e.g. no speakers or headphones connected). Looks like a typical GOG copy otherwise.
https://smapi.io/log/d18470676f0f45e0952f050775a48605
Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 13 C# mods and 2 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
(or if they do have sound stuff connected, they might need to install OpenAL, I guess?)
https://www.stardewvalleywiki.com/Modding:Player_Guide/Troubleshooting#NoAudioHardwareException:_Audio_has_failed_to_initialize
Also yeah, looks like they probably have a bunch of xnb portrait mods lol
That's fine by me!
I have literally never tried to put more than one in my inventory at a time anyway and my mod isn't launched yet 🙂
I am hitting my source generator groove I think.```csharp
public partial class ModEntry : Mod {
public override void Entry(IModHelper helper) {
RegisterTriggerActions();
}
[TriggerAction]
[TriggerAction("My_DoSomething", includePrefix: false)]
private bool DoSomething(string[] args, TriggerActionContext context, out string? error) {
error = null;
return false;
}
}generates:csharp
public partial class ModEntry {
internal void RegisterTriggerActions(string? prefix = null) {
prefix ??= $"{ModManifest.UniqueID}_";
StardewValley.Triggers.TriggerActionManager.RegisterAction(prefix + nameof(DoSomething), DoSomething);
StardewValley.Triggers.TriggerActionManager.RegisterAction("My_DoSomething", DoSomething);
}
}
And if the class doesn't have an IManifest to read, then prefix becomes mandatory.
Would this be the right channel to ask for help with a mod I'm trying to make?
yes
Sweet
I'm trying to make a mod that replaces all of Gunther's dialogue with just "Wenk" (To pair with another mod that should turn his sprite and portrait into Gunther the penguin from Adventure Time)
I'm currently testing it on Pierre first, and it's not working
I have SMAPI 4.1.9, and the only mods I have enabled are Content Patcher 2.4.4, Gunther as Gunter from Adventure Time (also not working, possibly old mod that I might have to ask creator about later), and my Wenk Gunther mod
This is my manifest.json file right now:
{
"Format": 1,
"Name": "Wenk Gunther",
"Author": "Squimthesquire",
"Version": "1.0.0",
"Description": "Makes Gunther say Wenk.",
/*
Add later "UniqueID": "squimthesquire.wenkgunther",
Add later "UpdateKeys": ["Nexus:0000"],
*/
"ContentPatches": [
{
"Patcher": "ContentPatcher.Patches.ReplaceDialogue",
"TargetAsset": "Characters\\Pierre",
"Entries": [
{
"Entries": ".*",
"Replacement": "Wenk"
}
]
}
]
}
Not sure where you got ContentPatches from
is this AI generated
(Or, he'll, any of that )
And yea if you used ai stop right now cus it's all nonsense 
There's very little about that manifest that's right lol
...yeahhh
I haven't written code in a few years so after trying to mess with the files myself for a bit I tried messing with Gemini to be lazy
Not my finest moment
Yeah literally all of it is wrong
But also the mod that makes gunter say wenk and the mod that turns gunter into a
can all be 1 thing
Is Gemini Googles thing?
Content patcher can do multiple kinds of edits
Pls read the docs, try things, and ask if u got questions 
Alright, thank you all! A lesson learned in trying to take the lazy route
just as an FYI, love of cooking does way much stuff in one mod so it's not a great reference for someone just making a new skill. check out Yet Another Cooking Skill for a much more concise codebase to use as reference
also i wrote the original skill implementation in an hour between drinks and it's a huge mess and not to be looked at
But blueberry I think every mod should have a book flip animation
(i wonder if the person who made 2 fake mod pages just to pad the numbers to get id 30,000 knows that its public info that they did so...)
also LOC has the skill behaviours split between like a dozen different files (skill, api, modentry, utils, craftingpagepatches, interfaces, craftingrecipepatches)
don't look
Button did u miss 30k 
i did, but i dont count it as a miss cuz of that
it adds professions in a nested ternary with modulo index divided for pairs. do NOT look
really i don't know why anyone cares about mod update key numbers. the only person who has a legit excuse is 6480. you are all posers
i like having nice numbers so i can remember what my mod ids are
so i can search them in here
(JA)(PFM) Upgraded Artisan Machines
22256 is nice
That’s too many numbers to memorize lol
Lol
Thanks for the heads up!
I'm amused
Your primary cache is massive selph
loc's nexus id is 6830 so i misread 6480s name a lot
At work today: "so what is the ip address of this machine"
Me, who saw the IP address once the day before, rattles it off
21526, 22300, 27100, and 28284 are the main ones i memorize cuz those are the important ones
and error prone; one of them is wrong lmao
22991 not 29991
I'll chalk that to a bit flip
can you please stop posting my credit card information here it's a huge problem
for you maybe
Huh 29991 looks interesting
It's wack that nexus does not hide page titles on unpublished mods
Webbed site
is it spoilers when you can just see it
I mean how Nexus spoils it by showing the title
it's wild that my mod ids jump from 11k to 28k. i'm still making mods with 4k ids lol
you can also get the uploader from the api though it doesnt show it in the title bar
I don't make mod pages until I'm ready to publish
@gray linden https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_Custom_Location_(CP)(1.6) super basic tutorial
Not sure if you got what you needed earlier from Pathos's example, lemme know if you need any more help
Except today which is special occasion
whats the occasion
Same
I wanted to check numbers 
Though occasionally I get bogged down writing a description or something
i was very optimistic back then lol
I don't make mod pages until I've had the code done for a week and I've just been putting it off
in my defense, the mod i was aiming for 30,000 with is almost ready to publish i think, if i can finish it over break
small project, in and out, 1 month tops
Is this the one with the fun lanterns?
But I am looking forward to the Bug mod
incredibly it's both of those
And the speedboat mod
and that one
And the sunset mod, and the crow nest mod
you can see why it's not out yet lol
The creep has you by the neck
just as long as they actually post mods to all those IDs they grabbed 
And the pretty buildings?
well 29998 and 29999 wont—
Oh but the mod with long artemis isn't the Mod right
chu really wants the long artemis
I yearn for it, covet it
I want the pretty buildings
chu i've moved house twice since i posted a nice looking house that people wanted
you're not getting that long cat
Caaaaaaaaaaat
wasnt that like. 2 days ago
Yknow, me too
However, I also moved a lot in the last decade or so
I was complaining about how I hate moving and then realized I’ve moved every 1-2 years for a decade
no i mean the actual entire house, not the furniture inside of the house
thusly
Sorry for the late reply.
No custom nodes. Just need a standalone custom item with a custom recipe.
And I wanna look at lots of samples so I am looking for a mod that does this, if ever there are any.
done as-is
well the house sprite is lol
unfortunately the mod is more than 1 house sprite
weird to think i remember when i penned down the chara schedules to pass time during my grad project, and to this day i still haven't actually put them ingame lol
I don't have any samples on my hand rn (on my phone lol) but I'd start with learning the basics of Content Patcher, and then peruse these two wiki pages to learn how the data is setup:
https://stardewvalleywiki.com/Modding:Items
https://stardewvalleywiki.com/Modding:Recipe_data
Thanks for the link.
I've already read those and succesfully changed the sprite and added a crafting recipe for a vanilla item.
I wanna move up a level and I believe seeing a mod with actual examples would help me a lot.
I found this, which adds a new item to Data/Objects:
https://github.com/6480k/6480-Stardew-Mods/blob/main/[CP] Mouse-Ear Cress/content.json
you can ignore the other stuff about crops
I'm also on Mobile
But wow
That looks nice and detailed
I believe it will help me a lot!
Thank you so much
I should change those to block comments at some point
Organization is definitely not one of my skills 😂
Is there a guide somewhere for possible values/strings I can use for
"Condition":?
Thanks!
does anyone know how to open a text input box in a c# mod? like for example the animal naming box
look at NamingMenu
thanks! that looks perfect
Does anyone know how to modify existing Flavor properties? Specifically, I'm trying to change the color of smoked fish (to be pink instead of a dark gray) and change their particle effects (to be sparkles instead of smoke)
I looked around all the unpacked files, but nothing there seems to be wha tI'm looking for
You'll need to make a C# mod for that (so decompiled game)
Every day i get closer and closer to seriously thinking about making a custom tool 😔
Alternatively then, is it possible to add a new flavor and machine that has a similar function to the Smoker, but with a different look?
I wouldn't be able to apply a tint?
The animations for the smoke are custom, but flavored items like honey and juice are normal
Got it
(spritepatcher pls)
I would reference wine or jelly if you’re interested in colors
Sigh
Time to get cracking, I suppose
spritepatcher requires you to write C# 😛
you naive fool 😌
hii
My GF, bless her soul, loves fish with all her heart, and I know for a fact she wouldn't smoke them bc "then they'd die"
So I want to make a "Glitter Machine" that just makes them sparkly instead.
That, or i just make a custom crafting table
ur a girl and got girlfriend?
Go away
I've got 4 💀
how very stardew valley of you

Thats 4 more than me XD
they dont get in argument? its normal to have four?
This isnt relevant and also who are you
This isn't really the place to discuss this s-
yeah
this is really not the channel for this
This is the wrong channel for this
(I have been thinking about a custom item effect thing either as a framework or part of EMC)
(just thinking though, no plans, and not before Feb at the latest)
(And I'd still prefer sprite patcher to be a thing)
This is the making mod channel -
my gf killed me cuz i said gm to a girl in Facebook 💀
Would Spritepatcher work?
Does spri- i thought so lol
Ah, damn
It would work though
Hm? I'm a bit confused
It would work, if it existed, I mean 😆
Conceptually it would work lol
its not released yet, but if it was it would solve your problem
Ohh
If only 😔
But yeah for what you want to do I can only see a C# mod workting
Gotcha, okay
yeah just a bunch of modders fantasizing about a WIP mod that would solve many pressing problems
But hey, you dont actually need to smoke fish. So you could make a simple mod that removes the smoker from the game, that would just be CP I think
You could do something much simpler like override the fish smoking machine rule perhaps
you do, for raccoon
Might mess with perfection/raccoon quest though
Sigh
That damn raccoon
Given that some of this is done in C#
Yeah, but I want to replace it with something functionally the same, y'know?
Like you can still have flavored items
Well you could use Selph's EMC to make it copy the fish sprite (without changing it) and add something to the name?
They just can’t sparkle or smoke
out of curiosity, do we know why attempting to add hairstyles via HairData results in bald hair?
There's literally nothing on the wiki to imply that we can add new hair that way instead of replacing but I was curious and tried just to see.
you can add new hair though?
Do you have customize anywhere
nope
Well it at least used to work 
ok, so that seems to require another dependency according to the tutorial, which is what I was trying to see if I could do without. xD
It's not. It's just a template
God that coils do with a compiler macro
I’m guessing the bald means that something went wrong along the way
Maybe it lost the tilesheet
This is a very specific question but in case anyone knows, in C# I can get the top player pet using Game1.player.getPet(), but it returns a pet not a collection. Since 1.6 allows multiple pets, what are the other pets tied to? the farm?
...ignore me, I did a dumb
I forgot to make sure it loaded the png inside Characters/Farmer
As soon as I did that it fixed
yeah that's one of the hairstyles gotchas haha
I really wanted it. Unfortunately it came up while I was on hiatus
(whoever owns the mod page, if you're reading this I will pay youe 1000 dollars)
you can look at the source of that function. it iterates over every characters on the farm and returns the first one that is a Pet
Farm and farmhouses
I was going to say, what if rain
Thanks. I'm just getting back into writing code after a while so I forget I can do certain things including checking the source code lol, I remembered right after I sent that message
What code string do I use in "Tiled" for inspecting an item?
Thanks! Sorry for the late reply!
now just to come up with a way for the player to select a specific pet lmao
what do you mean inspecting?
i would say maybe you don't mean an item, but an element of the map
in which case you'd use one of the message thing to read a string
the one with them agnifying glass, yeah
Hm what if u make like
You can open a map that you know has one of the actions
A secret note...? Secret note framework
It should be Action Message <messageKey> https://stardewvalleywiki.com/Modding:Maps#Action
Oh right, I guess secret notes do require you to get the magnifying glass, I don't actually know if message actions cause a magnifying glass to pop up
I use hardware cursor lol
note that the messagekey doesnt actually have to be in StringsFromMaps
(so long as you do provide the full translation key string)
thatd probably work. dunno if the slash direction or amount matters for the games string path parsing function
doesnt matter iirc
i use 1 forward slash
oh wait, we're talking about in map properties
Slash Delimited lists need the \\ so that you don't break the list piece with an errant /
also dont think it matters then if backslashes arent involved
Otherwise, it shouldn't care
Yeah the only reason I was thinking it might is because AdventureGuild has a LockedDoorMessage with Strings\\\\1_6_Strings:guild_door
I mean, I couldn't ever get Action Message to show me the actual parsed text, so I ultimately gave up on it, I think.
if \ are involved then they need special counting in order to pass it through each level of implementation, but / can be used fine in Strings/etc filepath strings and it has no consideration for that issue
If you want u can use MEEP for those close up photos
Knowing. What I know of the code
I am starting to realise that editing menus is definitely above my stardew modding ability level rn unfortunately (or at least that it will require me to spend more than five minutes skimming the source code) 😭 might have a look at doing things through GMCM
It should work fien without issue with both slashes
Either Slash. Slash slasb
Slassshhhhhhh
(In and out was good)
Again i think u can just use an item, similar to butterfly powder
Its the hovering icon yes for messages
Do a lil harmony patching to do ur effect on item used
and I got it, dang typo in StringsFromMaps (I forgot to make Maps plural)
Can anyone help me with CP code for Passerby Cemetery? I am trying to create a CP that changes the portraits. I've been able to change the Seasonal portraits but not the festival ones. I am wondering if the fact that the festival portraits are in an inner folder inside portraits is what is giving me issues.
You'll have to patch your portraits into where the InternalAssetKey's are
Ah! LOL. Okay let me double check that.
sorry if you said this to me earlier, I must have missed it! so an item that would be used on the correct pet then?
After an enjoyable dinner, the source generators continue: csharp [GSQCondition] [GSQCondition("WHEW")] [GSQCondition("some_TEST", includePrefix: false)] private bool TEST(string[] args, GameStateQueryContext context) { return false; } generates: csharp public partial class ModEntry { internal void RegisterGSQConditions(string? prefix = null) { prefix ??= $"{ModManifest.UniqueID}_"; string baseName; baseName = prefix + nameof(TEST); StardewValley.GameStateQuery.Register(baseName, TEST); StardewValley.GameStateQuery.RegisterAlias(prefix + "WHEW", baseName); StardewValley.GameStateQuery.RegisterAlias("some_TEST", baseName); } }
Yeah, you don't have to deal with menu then
I'll have a look at adding a usable item later, thanks. I forgot how frustrated I get figuring out how to do things when modding sometimes and it's 1am here haha. The butterfly powder's function is hardcoded so I may end up just harmony patching a new item I add via content patcher or something.
Yeah there's no content way of doing this, C# is a given
You can add item directly in C#
Okay, I got it to kind of work. The test portrait loads like a charm, but for some reason it's loading the spring sprite and not the festival sprite. Sigh... Can anyone send me documentation where I can learn about InternalAssetKeys? I kind of get the concept, but I kind of don't.
Just don't use them 
You can Load the asset to a proper target and then use that everywhere else
@lucid iron What do you mean load them to a proper target? I was told that I had to use the InteralAssetKeys because of how Passerby coded their mod. (I am also a overall newbie trying to learn the lingo.)
You can't access another mod's internal asset keys
welp now I am confused.
But if they did a Load to somewhere then you would be able to EditImage it
For portraits what you can do in case of internal asset key on base mod is to Load your portrait to wherever then do EditData on the Data/Characters entry
To make it use your loaded target
I don't have passerby cemetery mod on hand, so I don't have more specific info
might be better to have someone examine the code in detail and give specific steps
you can also ask clown directly
Passerby uses InternalAssetKey instead of loading an asset name, so if you want to do patch a portrait for it you'd need to set up your own InternalAssetKey.
Why would you need to do that 
A internal asset key is private
You can't touch another mod's internal asset key with your own internal asset key afaik
No, you edit their apperance data to use your own InternalAssetKey.
You can do this with a regular load too
you dont need to use an internalassetkey
That was my rec earlier
But I think it'd be good if clown just change stuff to use Load
So that portrait mods don't need this song and dance
Yes, like dolphin stated. Someone helped me with the code to edit the appearance data (whatever that means)
I was staring at the code, like kind of understanding it, but kind of not.
Issue is when clown updated and added festivals... well I've been having issues because I am not completely sure how this code works. But I am trying to figure it out. LOL.
I mean, loading the image first and then editing the appearance data to use that asset name would be one step further than what the original mod does and I hesitate to do that.
its not much more work, and it means someone else can edit your loads later if they need to, but beyond that i believe the reason chu and i both responded to that specifically is because you said they'd need to do internalassetkey, which they do not
Internal asset key is just making smapi do a Load equiv for you, implicitly
To a secret place
correct
It's not about the amount of work. It's about matching the methods of the original as close as possible.
theres no reason you need to do that
But anyway I think asking clown to just add loads would be best
if you want to, sure, but you dont need to
Any chance you guys can look at the code to tell me what I did wrong (and why the spring sprite is loading for the egg festival instead of the correct one?)
Okay I'm sorry I used the word "need".
@golden basin hello sorry for ping, someone is making a portrait mod for passerby cemetery but it's inconvenient because of the internal asset key usage, do you think it's possible to change those to Load so that they can target the texture asset directly?
(Do I post the code here? I don't want to take up too much space.
Use the json validator and send link
!json if you have a significant chunk of code to post, you can upload it here
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
I can try to switch it over, but i dont have a whole lot of time and ive been struggling with narcolespy flare ups. Im open to help though getting it switched over
Yeah no worries, it's not a hard blocker just good practice type thing 
did you get EVENT_ID in the condition line from somewhere in particular?
im glad its not a hard block im just, I want to get switched over but since i do it all myself and ive issues with my health im just oofx2
@Button Honestly, I can't remember. But it's the only way to get the portrait to load. I think I was looking through clowns coded and found it?
That works lol
It's funny but it is correct lil
Festivals are evenrs
EVENT_ID isnt a vanilla GSQ, is why i was asking
It isnt?
it is not
what exactly are you struggling with
!gsq
You don't have to edit the whole entry, can use TargetField
there is IS_EVENT
To only change the portrait part
So the egg festival portrait loads, but the sprite is spring.
you were close! but like, when trying to figure out why an appearance isnt working, i had to ask about it lol
Sowwy
Barron's appearance ID for egg festival is {{ModID}}.Barron_eggfestival.
if its present in the original mod though im gonna assume its some dependency or another, i dont feel like checking all of them
Try to use that instead of {{ModId}}.Barronspring13.
Thanks Dolphin. I am testing that right now. Also, just so I can learn how to do this without hassling you all, where did you find that?
{{ModID}} = Fellowclown.PC
Fuuuuu there is no God. Still no good.
I wonder if I load them in a different order?
Oh, do you mean to only change the portrait and not the sprite?
Yeah.
It ....it would bb Fellowclown.PC.Barronspring13
take back your apology, bc apparently IS_EVENT has an alias of EVENT_ID, its just not listed on the wiki
Modid means my id
Oh, try that.
Testing it now. 🤞🏼
For real though i am open to getting help switching to the load method I tried to do it before but got overwhelmed due to have like 20 npcs
Sorry, Clown, I missed what you said.
It's fine
Oh do you want help? I can do it today?
I'd really really appreciate the help dolphin
If it helps ppl do things easily I'd want it done I just have a lot I'm dealing with irl so I've not been able
Mostly narcolepsy flares and family matters 
Alright! I'll DM you the altered disposition files. Do you have any other .json that takes care of portraits besides those?
My loadables file
Loadables is in data/technical/loadables
Character files are in data/characters/npcname
It didn't work, but I have a feeling I am not doing it right. https://smapi.io/json/none/f137591b0cb749bdbb4b7a3ea2320c3f
Was I suppose to replace the png name as well?
Ah okay. Thanks. Testing again.
{{ModID}} is a cp token that tell my mod to put my mod Id in place of the token. So in your mod having the same token tells the mod hey put in my id or well your id
Ahhh that makes sense
Got it! I'll try to do it today. WIshing everything goes smoothly with you!
❤️ I'm sure it will
By the way Fellow, I really like your mod. Great work btw.
Welp, that didn't work. I am going to try to rename my png again... If that doesn't work... I'll try to remove spring and see if that is doing something.
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": [ "FC.Barron", "Appearance", "Fellowclown.PC.Barron_eggfestival" ],
"Entries": {
"Portrait": "Portraits/Barron_eggfestival",
}
},```
You may want to try this format?
👍🏼 will do. Be back in a few while I edit and test.
Thank you I'm sorry my dispos are giving u hell
@golden basin I don't mind. I am learning a lot. 😄
What's the art you've done for your mod look like I'm so curious
With this it should target specifically only the field you'd want to change (the Portrait field)
I can show you if you like. Would you like me to dm or post a few here?
So to do it a easier way you just ....load the art traditionally huh
You can post here if you want!
hey guys, some help??
so I have converted some hairs to Content Patcher additive to the original tilesheet, but some of them are not showing up on the create-a-farmer screen
The new appearance stuff is so rough too having to load each seasonal is hell on earth
everything in the code is ok, but there's nothing showing up 😦
a converted hair pack before
the other pack
Are the pngs the correct size
then it only shows packs from other creator later down the line
yeah, I used a ruler for it that I found on imgur
Hmm maybe compare to the other packs pngs and code?
Oh god no so cute. 😭
I've bad news tho.....
She's fully seasonal now
Gosh though the art is so gorgeous
Well, that can be worked around by just reusing one of two portraits for the missing seasons
I mean, I did all of them over the tutorial
the conversion tutorial I mean, just copy paste and substitute
they're all right, idk what's happening
With 1.6 a lot has changed. I would still compare your code. But that's me I guess
make sure you didn't do the dumb thing I did and not load the 'broken' pack to Characters/Farmer/yourtargetname
I jus tdid them today 
the code is wrong?
but why does the first two (same thing) show up then?
@golden basin I am glad you like her. I had fun creating them in nyapu style. Since I am doing ALL the seasonal Nyapu-style portraits... it's taking a while since I have so many mods. LOL. I want to make them all.
which - do you mean?
between your two false values
really?! huh
OH GOODNESS
they're not!
he's so cute img
No problem, I thankfully just had to fight with CP Hair earlier today and got help from folks here xD
so it's fresh in my mind
@devout otter I could kiss you. It worked!
I like his hair in this i never thought to give him like braids
hopefully I can distribute
And your gun is masterful
it's an unofficial conversion of a bunch of hairs but I don't know who are the authors, though :\
Can I dm you I'd love to see the rest 
Unfortunately, it's generally a no-go to publicly distribute something if you can't find the mod permissions / can't get permission from the original creators.
@golden basin I am glad you like him. Yeah, I'll show you all the ones I've done so far.
is it ok if I send the tilesheets somewhere where they can identify the author??
I wouldn't like to distribute/redistribute like that tbh
you don't have the original JA mods?
I don't
I got a mixed tilesheet, the only pack I was able to identify was Coi's hairstyles
where'd the mixed tilesheet come from?
I found it online lol
the rest I have absolutely no idea, since it was a tilesheet
the coi's hairstyles were also cut
(the original mod has male and female hairstyles) and the tilehseet had only the female ones
there's some that are absolutely gorgeous and I've been using them for years now
it was an xbn mod when I found it, a long time ago
is there a place I can post them online so people can recognize them???
especially bc I don't know if there are official versions of them, since I don't know which mod they belong to
Aa, sorry, I missed this. Passerby Cemetery's appearance data is in Disposition.json in each character's folder. You'd want to use the ID fields there to target a specific appearance.
@devout otter Thanks again. This helps so much.
it's showing up!! thanks again!! ❤️
now onto doing a hosiery conversion for fashion sense!
Hey guys 🙂 sorry to interrupt. I’m making my first mod with demon slayer characters 😄 currently figuring things out as I go along. With NPCgifttastes, what do the minus values mean? At first I thought it was the amount of friendship lost relative to the specified item number, but looking at the responses some entries don’t have any item numbers at all, just minus values and sometimes more than one so I don’t know what they’re for. I couldn’t find anything about the minus figures specifically online. Can anyone tell me how it works?
Ohh ok that makes sense thank you!!
you can use the context tags listed in the context tag column instead of the negative numbers (those tags are automatically added to any item in the matching category). context tags are great and i recommend using them when it makes sense; in this case it's much easier to understand category_milk than it is to understand -6
(It also incentivizes food mod authors to use context tags that are fairly standardized, so, yes please!)
obligatory "context tags my beloved"
Yeah I get that, that’s really helpful advice thank you so much!
hi! i'm making a content patcher mod with a custom ring that gives the player a defense buff as its effect. i have the ring in-game already, but i'm unsure which field i should add to it to give it that effect
Naur my witty acronym
Tbh I just made the pages so I force myself to work on the mods in the WIP folder
well u better make good use of 30000
I aimed it for Cosmos a little astrology mod :3
I am making a telescope where you can see astrological phenomena (watch me struggle with the art)
And adding some fantasy space rocks
Still debating if I should make them museum donate
29998 is a little event mod for Christmas/New Years
29999 is a continuation for CAG kinda with animals :3
But 29991 is my main focus now
furniture struggles
ahem sorry I gots excited, I go to my modding cave now
you can't add new ring effects with CP alone, need SpaceCore
True Perfection
well you don't need spacecore, you can just c# it easily enough
oh, that's true perfection huh? prove to me you've cooked every recipe 📝
best i can do is 1 singular omlette
I'm unsure if this exist
But I was wondering if there was a mod that made it so that you can marry people of the same sex... without marrying them. Essentially having them as a roommate.
I can only offer ze fried eggy
looks blubs in the eye as i fail at making macaroons
Macaroons, or macaron
The nonsense continues csharp [TileAction] private bool Test(GameLocation loc, string[] args, Farmer who, Point where) { return false; } generates: csharp internal void RegisterTileActions(string? prefix = null) { prefix ??= $"{ModManifest.UniqueID}_"; StardewValley.GameLocation.RegisterTileAction(prefix + nameof(Test), Test); }
And I also refactored the whole thing after noticing emerging patterns in the code
Fascinating
Does anyone know why a modded artisan good wouldn't be able to be sold via the shipping bin? You can sell it at Pierre's just fine. It's for a mod I made, and I can't figure out why the artisan good is grayed out when I go to sell it. Is there a specific code that you need to designate that something can be sold in the shipping bin vs. not?
I've looked at other custom artisan goods that people have made for a frame of reference, and I'm not finding anything specifically different.
Sorry if this is a very obvious or silly question, I am very new to modding still.
This is what I see when I try to sell it. SMAPI is not giving any error codes, either.
yeah, assuming it's not a custom subclass or something, "can be shipped" is true:
if it's not a BC, type isn't null, Type isn't "Quest", it CAN be trashed, it's not furniture, and it's not wallpaper
Thank you so much, I didn't have Type at all in the content file. That's exactly what I was missing.
TileSheets/crops
ah found it, thank you@brittle pasture
with question forks it can only have two branching paths right?
So if a question fork has 3 answers two of them just lead to the same answer?
This generation has gotten a bit silly, but atra might be happy. ```csharp
[SMAPIEvent]
[IfModLoaded("spacechase0.SpaceCore")]
[IfNotModLoaded("some.OtherMod")]
private void OnAssetRequested(object? sender, AssetRequestedEventArgs e) {
}generates:csharp
internal void RegisterEvents(StardewModdingAPI.IModHelper? helper = null) {
helper ??= Helper;
if (Leclair.StardewDelegateHelper.StardewDelegateHelperHelpers.CheckModVersions(helper, new Leclair.StardewDelegateHelper.StardewDelegateHelperModData("spacechase0.SpaceCore",null,null,false), new Leclair.StardewDelegateHelper.StardewDelegateHelperModData("some.OtherMod",null,null,true)))
helper.Events.Content.AssetRequested += OnAssetRequested;
helper.Events.GameLoop.GameLaunched += OnGameStarted;
}```
I should probably just move the helper class into a different namespace than the namespace the attributes are in. The goal is to pollute the namespace / tab-completion less so just naming it "Helpers" was out. Same with "ModData"
Also supports things like csharp [IfModLoaded("some.OtherMod", minVersion: "1.20")]
Is it safe to create an Artifact-type item NOT acquired via dig spots or is there some weird obscure behavior I should expect?
ummm, so is it a boolean, or isn't it? 
I am trying to get the number a times a cooking recipe has crafted. I asked a similar question in the replied message about crafting recipes. I was able to get timesCrafted by doing the following
new CraftingRecipe("Chest").timesCrafted
I tried to do the same thing with an omelet, but that did not seem to work. I also tried the following
new CraftingRecipe("Omelet", true).timesCrafted; //0
Game1.player.cookingRecipes.TryGetValue("Omelet", out int timesCrafted) //0
Both print out 0 even though I have made the item twice. Here's some debug logs I have tried in order to figure this out along with a screenshot of what they print out (ignoring the FPS and Craft Omelet lines). I'm at a lost to figure out what to do next
Log($"Crafted Omelet (with boolean): {new CraftingRecipe("Omelet", true).timesCrafted}");
Log($"Crafted Omelet: {new CraftingRecipe("Omelet").timesCrafted}");
Log($"Crafted Chest: {new CraftingRecipe("Chest").timesCrafted}");
Log($"Crafted Chest (with boolean): {new CraftingRecipe("Chest", true).timesCrafted}");
Game1.player.cookingRecipes.TryGetValue("Omelet", out int timesCrafted);
Log("" + timesCrafted);
Can you even make a fork with more than two options?
(if you want to have 3 different responses that lead to different answers, maybe you want quick Question instead)
cookingRecipes key by the unqualified item ID of the output
not the recipe name
Well I made a fork that had three different responses the player can give but two of them led to the same fork ending, I see yeah
out of curiosity, how did you enter "local" ? Was it in quotes, in brackets, or just the word?
I'd wondered at some point if it were possible to shenanigan events into functioning as a "choose your own adventure" type story
it was just the word, I guess that wasn't a valid presumption. but it seemed to want to parse it as a boolean, right?
of course it is, that's exactly what the Solarion Chronicles event is in Events/SebastianRoom
doesnt that straight up spawn a custom minigame
I think just the word would make it think it's a boolean and then get annoyed that it's not true or false? Try it with the two other options just in case.
(I have a feeling from the wiki specifying "local" that it needs to be in quotes)
(I agree though)
you really don't need to do this, just use player.craftingRecipes.TryGetValue(itemId, out int timesCrafted) or player.cookingRecipes depending on your use case
I'll try it but I won't actually see the broadcast behavior I'm just on my own with it atm
yeah, but if it's right, you won't get an error. 😛
With craftingRecipes you need the recipe name not the item ID
but yeah that syntax is 100% cleaner
are you sure? I have made some debug lines that seem to mean otherwise, Unless I'm misunderstanding
Log(string.Join(", ", Game1.player.cookingRecipes.Keys)); //Fried Egg, Omelet
Game1.player.cookingRecipes.TryGetValue("(O)195", out int timesCrafted);
Log(timesCrafted); // 0
using local in quotes threw the same error. using true (no quotes) had no errors
Still doesn't seem to work
hmm hold on
try Game1.player.recipesCooked instead
Technically it might not be an unqualified item Id, it's just whatever the first output item is specified as. In a really awkward way because crafting recipes are super janky.
ah yeah you do want recipescooked
if you log this:```cs
string.Join(' ', Game1.player.recipesCooked.Keys.Select(key => $"({key} x{Game1.player.recipesCooked[key]})"))
you'll see the key format is unqualified item ids
That worked. Unsure why they're handled differently
If you have a CraftingRecipe instance you can do craftingRecipe.getIndexOfMenuView() to get the proper key for any given cooking recipe.
why oh why didnt ca just use cookingRecipes
no clue then
It seems cookingRecipes just keep track of the recipes the player knows, the int value isnt used anywhere
seems like the wiki is wrong and its a boolean after all, I guess?'
yeah it's weird; for crafting the game keeps track of times a recipe is crafted, while for cooking the game keeps track of times an output is made
For perfection purposes you need to have crafted with every recipe, and cooked every item (that has a recipe)
Don't suppose anyone with access to the code/decompile wants to check the actual arguments accepted for broadcastEvent?
public virtual void broadcastEvent(Event evt, GameLocation location, Vector2 positionBeforeEvent, bool use_local_farmer = true, bool notify_when_done = false)
so not only is it yes a boolean but its also true by default.
Easy enough to test, it's false by default
This is the delegate
Despite the actual method being true by default, the delegate that actual event scripts use sets it false by default
Now can one of y'all fix the wiki 😛
How do I find out the exact pixel size of an object because I'm having trouble working on something after copying it from the sprite sheet as there is so much empty space around it plus I have to keep moving to find it again after looking at another page for something that was in a different spot.
I did try to google this but all I can find is for portraits.
This is what I mean.
Truly a monumental ask
Does that program not offer size info for selection boxes?
Well, furniture sheets use a 16x16 pixel grid, where each 16x16 is one tile
If you can set up an extra grid, I usually try to do that to make it easier to tell at a glance
https://docs.google.com/spreadsheets/d/1nE9-qRqVA1LouhsVIMiu1b8QmJ7vGyToAksgcLztBnQ/edit?usp=sharing in case you need the tile indexes instead (you can look at the Furniture SpriteIndex tab for the size of the objects also, for pixel size, multiply the number of tiles the object takes up vertically or horizontally by 16)
i like to work on spritesheets with some patterns and backgrounds in the doc to set an ambient colour and visualise the tile space for furniture and stuff
much less obtrusive than a grid. i never use an outline
Furniture is weird, there is no consistent "pixel size" like portraits, because every tile increments the sprite index by 1, and you define the furniture by the tile size in the data, and the top left tile of your sprite as the index.
Aseprite I use the background thing but I've noticed a lot of programs use a non-static background which makes this impossible
Krita doesn't have a tool to show mouse hover coordinates, so you have to work around it by either selecting the size of the area before the top left corner and then do math, or you have to turn on the grid and count boxes.
Just for you atra, I have edited the wiki
so why does the ingame hud take the time to draw an extra 1px of hud between the date and cashometer 
those 2 pixels make all the difference
daytimemoneybox is a funny menu. move the mouse? updatePosition(). rightclick? also updatePosition(). every draw tick? believe it or not, also updatePosition().
This doesn't seem to work... how can I convert the "Condition": into a "When": to test if it can work?
{
"Action": "EditData",
"Target": "aedenthorn.BuffFramework/dictionary",
"Entries": {
"FjorlagRond.MWBM/FarAwayStone": {
"Id": "FjorlagRond.MWBM/FarAwayStone",
"Name": "Interdimensional Eyes",
"Source": "Far Away Stone",
"IconSheetIndex": 14,
"InventoryContains": "Far Away Stone",
"glow": {
"R": 144,
"G": 238,
"B": 144,
"A": 255
},
"Condition": "LOCATION_NAME Target Forest Woods WizardHouse WizardHouseBasement _customWizardBasement"
}
},
},
Conditions are a specific field provided by a set of data
The whole thing works, except for the condition. As of now, it occurs in all locations.
Also, I might be doing something wrong so please do enlighten me.
When is for CP patches, it goes on the same level as Action
A When decides if a patch exists at all
If you set up a When and it isn't satisfied, your patch will simply not be in the game until it is satisfied
Hmm, I see. A "When" would be better then
I don't know anything about the BuffFramework so I don't know if it even has a Condition field
Yep I don't think it has one too
So, is there any way for this to trigger only when the player has brought the item once to a certain location?
I mean you could target the glow field of that buff entry with a CP patch that has a when condition that updates on location change, but... I don't know how the buff framework would interact with that.
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#conditions
For When's this page has the various syntax and tokens you can use
Chances are good the timing of editing that data won't align well
I suspect it wouldn't do anything, because it likely just loads them at startup and never reads from them again.
At best maybe it re-reads daily
Thank you for the help. I will play around with When
Hopefully, I find something that works 
There isn't a single usage of the AssetsInvalidated event in the unofficial fix version of the mod, so it's definitely not checking whenever there's an update to the asset...
Yeah, it doesn't even load from the asset every day. It's just once per play session, or when something called the UpdateBuffs() method in the API.
Oof
It worked! 
}, "When": {"locationname": "Forest"}, "Update": "OnLocationChange" },
The glow buff only activates when the player is in the forest and disappears after leaving the forest
Now, is there an easier less cluttered way to make this activate in multiple locations or do I just make multiple entries with different locationname requirements?
"LocationName": "Forest, WizardHouse, .."
can't the cashometer animate in and out?
...man, i haven't played this game in a while
looks like it's pretty static 
naturally, drawMoneyBox() also calls updatePosition();
Thank you for the help it was very helpful but yay now I have to do math 😅
Thank you!
Heyho can someone explain to me how to make the custom Messages for my Mod translatable. I tried it myself with the Guides but i still dont understand what to do
how is this even giving j = -1
stloc.s 6 exists at index 654 and i < 0 is false
oh 6 isn't an int. of course
j = i < 0 ? i : ilOut.FindIndex(i, op => op.opcode == OpCodes.Stloc_S && op.operand is LocalBuilder local && local.LocalIndex is 6)
naturally
why did i make this 
I like it tbh
The horror
It’s not exactly a match, but it reminds me of Majora’s Mask. "Dawn of the Final Day"… and stuff.
That would be funny ngl, and kinda pretty too
this is prob an obvious and/or amateurish question, but where would I begin on getting https://www.postype.com/@kayainsdv/post/10290915 to be compatible with fish pondering? currently its only compatible with smaller fish ponds, and the janky work around I've been attempting only gets me to a broken textured pond
fish pondering does say its compatible with all pond replacer mods, however further in their comments the mod author says this one in particular is not compatible because it was built for [the return of] smaller fish ponds
I could continue to use gwen's medieval pond which is where kaya's was made from/for, however I'm just not a huge fan of the scaled down assets of gwen's pond from the full sized asset
So if you look at fish pondering you'll notice that it actually uses the full res pond image
like the pixel sizes are different from other stuff
it's downscaling whatever image you give it, so an already scaled image wouldnt work
I see.
I guess thats why it wouldn't even load the base mod? it just gave me vanilla if I turned gwen's off completely (I had to do some weird janky stuff adding it through gwen's just to see if it would work)
The transpiler for fixing draw was either change source rect OR change scale, I went with scale cus that works with more stuff
honestly i thought u redrew the sprites at a smaller size, i cant believe i didnt notice the scale haha
I did think about a separate 3x3 fish building but that is a pie in the sky rn
ah yeah the reason i went with pondering was because it wasnt a separate building tbh
Anyways I suppose u can like
Scale that 3x3 pond sprite up to 5x5 so that it get scaled back down to 3x3 in game
shenanigans
remember to use nearest neighbor when scaling up...
surely the pixel sizes won't be that bad
Yeah quake in fear ppl who notice this stuff 
technically wouldn't they end up at vanilla size pixels at the end
well at that size you'll be getting a lot of rectangle pixels
so when you downscale it back to 3x3 in the game a bunch of pixels are still the size they are now, but theres also a bunch of rectangle and pixels that are twice as big as other pixels
LOL
You could use this early build I guess, it did just use a manually scaled down sprite
No warranty and I think the netting is broken
here's leah from 3x3 to 5x5
or yeah it'll go horribly
since it isn't an even amount of scaling....
Leah from the evil rectangle dimension
thanks i hate it
portrait mod that just does that to everyone
...patching SpriteBatch.Draw() to slightly skew the scale of everything drawn to the screen? 
toy nightshade filter that does it to the whole game
oh my god.......
DH's way would probably be more cursed, but maybe slower
(early nightshade concept patched sb.draw but had to do some reflection. the performance was... poor)
just emit some IL, easy
(Heavy photosensitivity/epilepsy warning for this video.)
Not what I intended, but uhh...
What did you do
return new Random().NextDouble() > 0.01f;
Hm nice horror game concept
I am sorry my dear SpaceCore
So basically some random tile doesn't draw lol
Sometimes the player's limbs, too!
please explain the chicken
the chicken is just vibing, observing universe gliches, as one does
Ok so I am using the i18nifier app and am hella confused on something, can I get clarification? I put in my config schema and I am still confused on what it is I need to do. Like it spat out stuff like this:
"config.Animal Crossing Dig Spot.description": "Changes the worm artifact spot with the digspot from Animal Crossing.",```
But like what do I do with it now?
thats all you need to do
that goes in your i18n file
ah yes
it goes into your i18n file and then thats all you need to do, because config i18n is set up differently
(idk if the i18nifier is just a website or if it actually converts the files on ur computer so if it already put them in a file ignore me)
But then...what goes in lou if the config schema portion of my mod?
if you put in the config schema you already had then dont change it
Content Patcher looks for specific things for config i18n
so the i18nifier put it in the format content patcher will look for by default
only for configs in content patcher, you don't need to use any tokens or refer to the i18n in your code at all. It's set up like that by default
Ok...so I will say the config schema is in my content.json. but it still would be ok to just...not do tokens/refer to the i18n????
Yes
I'm so sorry for asking dumb questions..
Dont change anything you have for your config
You can add a new language and try it out to see
One final question. If I am reading the wiki correctly. my files should look like this?
And then put default.json in the i18n folder?
yes
Is there a translation thing for the manifest at all or no?
there is not
no one knows everything!
Well this is 100% gonna help me with making some of my mods translation friendly....Though I now have another question. I have a string that is edited for a different mod a farm mod...is there a way to make that i18nified?
"Action": "EditData",
"Target": "Strings/UI",
"Entries": {
"n3rdgirl_FarmExpanded": "Farm Expanded_An expanded farm for more room to do stuff!" // tip: use {{i18n}} to translate it
}```
just use an i18n token for it instead
OH WAIT
LOL I just noticed the comment there left over from the template
But, enlighten me...How would I go about doing the token?
Sorry I just feel so dumb
you add a line in your default.json with whatever key you want, lets say "FarmExpandedUI" for example, like this:
{
"FarmExpandedUI": "Farm Expanded_An expanded farm for more room to do stuff!"
}
then in your EditData stuff, do this:
"Entries": {
"n3rdgirl_FarmExpanded": "{{i18n: FarmExpandedUI}}"
}
Ok
Thank you for putting up with my dumbary

where do I get headders like this? Like is there a generator for them?
Ok ok!
You want https://www.kdau.com/scrollish/
(Although I don't think it'll do the chick for you, that's custom)
That's fine, I don't want the chick lol XD
Aloe, peeps.
It's been a bit since I did any map work, so I wanted to ask. Where is the 1.6 tiles located in Maps? (The waterfall and new grass/water tiles)
nvm, found it
Did the map size limit increase?
So, after much testing and messing around, I can confirm that if you can get the location with GUID of indoor buildings, you can set that location as a Minecart destination. I was able to find my interior GUID in a log file and tested with that, and it worked perfectly.
My issue is that I have tried many different ways to set a token to the guid and I am coming up short. If this can be figured out, it could be very useful for Minecart mods
The guid is generated at runtime so it would have to be implemented as a token
you can't really "set" a value in a token at runtime from the CP side of things either
Can you remind me what the "minecart in instanced buildings" is supposed to solve
Yeah I meant as a C# mod provided token, not a dynamic token
oh I know, that was more in response to them saying they were trying to set a token to the guid, and I wasn't sure if they meant in CP
no, in C#
i think the main problem with the token thing is still just the fact that you can't iterate over a token in CP, though
Just trying to figure out if it is possible to set interior locations as destinations
so even if the token returns a list of locations you can't use them all automatically
right
There's a few pif rooms that have minecart and they work by making it not instanced
But let's say you make a building that has a minecart inside
Then build 10 of those on ur farm
Are u going to display all 10 of those as destinations?
That would be the intended idea I suppose
That's a lot for the menu to handle 
do minecart menus not paginate automatically
Have you not used integrated minecarts 😆
They do
I don't use it for this precise reason
they are up to like 108 destinations
The dialogue box page system sucks, but it does work
that seems untenable
Ha, I ran into the instanced interiors thing with the old teleporter mod that never got released.
But anyways I think there is a better way than dealing with instanced interior maps
Cool, how were you pullig the instanced location name
You should see if you can get the building's exterior action to work for minecart
GameLocation.NameOrUniqueName
This was in 2022, so I have no current recollection!
Minecart from an instanced location has no problem
So that u can make a obelisk type thing that is a minecart
i still think the easiest way to do what you want is just store a list of interiors you want as destinations as they are constructed and make changes in the AssetRequested event in C# as necessary though
Not really a reason to make the exterior of the building the minecart unless you're just intending to put all the cart logic outside, so arriving outside as well
Yeah 1 less warp screen 
I thought that was the agreed upon solution yesterday, what happened?
(fixing the instance system, basically lol)
If u r set on doing minecart to interior then I agree with button, do the whole mod in C#
From a decompile, but it looks like thisis what I was doing:
foreach (GameLocation location in Game1.locations)
{
locations.Add(location);
}
foreach (Building building in ((BuildableGameLocation)Game1.getFarm()).buildings)
{
if (building.indoors.Value != null)
{
locations.Add(building.indoors.Value);
}
}
GameLocation foundLocation = Utility.fuzzyLocationSearch(Game1.currentLocation.NameOrUniqueName);
if (foundLocation != null)
{
currentLocation = locations.IndexOf(foundLocation);
}
ok, how would you set a Token like this onGameLaunched, when it requires the save to be loaded?
the token is not a viable way to do this