#making-mods-general
1 messages · Page 105 of 1
is parallax a feature desired by the general public 
i think it's been at least 3 different people wanting it, so, maybe?
what do people even want parallax for, im confused
but like... aesthetic where
When I was playing modding Baldur's Gate 3 I didn't have time to actually play the game, all time spent making mods. And then I quit BG3, and never even got to play Act 2+ at all even though I played EA for years.
i specifically want to make bastion button 
An airplane/bus map
ive never played bastion
i can't remember off the top of my head but i think it's something like, windows to have parallax, to not depend on the background being tied to that one strip?
although it won't be isometric for obvious reasons, i do think it's cool to see shit beneath u
the game itself has parallax in some places
like summit
and junimo kart lol
id rather chu make an arcade minigame framework
then lemme hack it up for karaoke
I'm tempted to jump into the SDV modding scene but a small part of me screams, "Don't do it!".
i cant beat lv1 of junimo kart or lv1 of prarie king
would u trust me to make mini game
i would like to be able to program a game and have chu's framework load it for me
like just let me import a unity project or smth
yeah, don't if you don't want your soul time to be eaten
but button thats just IMinigame
isn't that already -- yeah
unless its like
IMinigame is just that 
framework to execute arbitrary pygame executables in a window 
no i specifically want to give you my compiled .exe of a game i make
What's unity
u want game to start terraria when u interact with the crystal
and have you do the work of loading it and letting it run
im retired dont aim at me
An Assassin's Creed game that had multiplayer
wouldn't it be more work of making a unity minigame than it is building a ui
A minigame that's just an 8 bit version of SDV
With a minigame in it that lets you play an even smaller version
thats a good idea actually chu just let me program minigames like i can program my ti-86

through the power of reading, I command crops to grow! xD
64bit, 32bit, 16bit, 8bit, 4bit, 2bit, 1bit, THE WRIST GAME!
educated potatoes
tbh the "turn everything 8bit" just sounds like pulling an AT crime and replacing all of the draws
turn everything 8bit is also absolutely something i could do with nightshade. i was playing with it at one point but put it down along with nightshade's vaporware update and i have been busy with other stuff
okay the pufferbook emote is super cute
OMG. TY for spotting that lol. You'd think I'd have done it correctly when I have working CP mail in another mod but I'm very rusty on my modding skills. Gonna try again with the fixes you ID'd.
great code stardew
Conditional compilation, most likely.
Without conditional compilation it's just sort of pointless, but it makes a lot more sense when you figure there are probably several different implementations of the method for different targets.
it could easily be an interface method, yeah
is there a way to add a language option to the base game, like a conlang?
yea
(it's static, so can't be an interface method in .NET 6)
custom languages
good luck translating everything, though
ah, well. nevertheless,
isn't there translations of RSV? close enough
whats rsv got to do with it
this one is traditional chinese for example
rsv has like, 22k lines of dialogue innit
(And even if we updated to newer .net, things have to compile on .net framework too for the compat branch)
isn't thai a custom language in stardew?
yep
wow
is that one updated? I thought it was out of date as of like....1.5
that was just for example to show it was possible wasnt it
{
Utility.addRainbowStarExplosion(this, new Vector2(monsterBox.Center.X - 32, monsterBox.Center.Y - 32), Game1.random.Next(6, 9));
}```
Testing again. Wish me luck.
most of it is not translating, but making the words to be able to translate stuff, it took me years to finally get to a grammar system I like for Rhaciya, it just needs more words, there's only like ~300-400 words so far
oh you're doing an actual fantasy language? i finally looked up conlang
i mean i wasnt saying anything about making the conlang itself. just saying that translating every single bit of text in the game is difficult, bc it is
You know maybe you could do the other interpretation of "bilingual mod"
continuing with my ongoing multiplayer map shenanigans, i am adding some locations on the fly which (may) require small map overrides to be applied based on world state. this state may differ every time the map is accessed. i've got the locations syncing correctly, but it seems to be the case that the "real" (host) location's map overrides and tile properties are not part of the synced data. farmhands are running the map overrides locally, but that affects only the shadow location, so the overrides aren't showing up when the farmhand warps to the real location.
given a shadow location reference, is there a reliable way to pull the "real" location out of Game1.locations from the farmhand's side, in order to apply the local overrides to that one?
Add additional dwarfish style languages
XD I mean, conlangs can be for fantasy stuff, not all conlangs aim to be like Esperanto
Yeah, applied map overrides and tile changes are not synced
im not sure about grabbing the real location if you even can, but can you just broadcast the parameters used to determine the overrides and have the farmhands grab and use those
You could probably check the location list for the real location and apply them when a farmhand calls resetLocalState on the map
that part is already working. the farmhand's edits are applying to the shadow location and not the real one
i guess the part i'm not clear on is "check the location list for the real location". what should i be looking for?
i dont mean apply it right away, i mean apply it when they finally enter the real one
Is it a dynamic location or static location?
(i.e like Mineshaft or VolcanoDungeon, or like the rest)
uh... i'm not sure which, actually? it's one of two static layouts but it is only generated when needed. once it's made it sticks around
Hmm
Is it in Game1.locations?
And/or do you patch getLocationFromNameInLocationsList to return it from elsewhere?
Or do you need it to work for anything?
yeah, the real (host) one and the shadow (farmhand) one should both be listed in Game1.locations
Interesting. Well, Game1.getLocationFromNameInLocationsList should work for getting the farmhand's copy that isn't the current location
(Unless it's like the farm, since of course there's no shadow copy for that for example)
hmm, i'll check it out. thanks!
Although, I wonder if _locationLookup will get in the way
Looks like it probably is fine though
(my backup plan if i can't fix this overrides setup is to have multiple copies of the affected map and load the one that applies. but i hate that, so i'm trying this first
)
I wonder if CP/SMAPI are just disliking the hyphen in the recipe name? I removed the condition from the crafting recipe so it doesn't get learned on level-up automatically but the letter still won't trigger. Either that or it doesn't like the i18n. Gonna remove that rq to test.
if you could send your json again i can check as well
Oh right, I forgot that just gives you the recipe at that level not sends the mail
Well, without that you have to send the mail yourself with trigger actions
The friendship unlock is the one that sends automatically
don't quote me on it but hyphens shouldn't matter in the context of the name, considering i append everything with {{ModId}}_
thats an underscore
The vanilla files use hyphens
in the context of it i meant it takes symbols 
Only issue is if CP has any issues with hyphens, but it shouldn't in that location
well it probably does break with some symbols
the schema probably says which ones 
Probably not
The problem isn't syntax related, it's how the code is using the entry there
if CA really wanted he could parse recipe names by splitting it into multiple strings after every "a" instead of something like every "/"
thus you would not be allowed to use "a"
i misconstrued the "pattern": "^2\\.4\\.[0-9]+$", 
https://smapi.io/json/content-patcher/f7a4c3cb08814b2eadd99a45c3749004 This is the most current one. Haven't tried removing the i18n. Still have the when condition on the mail but removed the when condition on the blueprint itself in the data/CraftingRecipes patch.
ah yeah if you want the mail to be sent you'd have to add an editdata on triggeractions
or make/edit a shop to sell the recipe, entirely up to you
Sorry had to step away to fold laundry lol. Ugh okay. I was afraid of that. I thought it would be enough to have the when condition in the mail itself. Maybe I'll just add it to Marnie's. She's the one I have sending the letter with the recipe anyway.
the When condition just tells content patcher when to add your stuff to the game
the game does not look at the When condition at all
Yeah I was suggesting to remove the When because I think that might cause it to delay knowing th mail exists for an extra day
In the manifest.json of a mod can you have more than one update key?
I'm so rusty on modding I should have known that lol. K. Gonna look at the trigger actions thing and try again. TY both.
also it looks like it only does the trygets after the name in regards to craftingrecipe
thx
K. Added a trigger action. Here's hoping.
https://smapi.io/json/none/56d762964d854d47b3beac1b3df5275e for some reason the hammer texture is showing for the dagger, and i cant see the hammer in my game at all
have you double checked your spriteindex
i just have it 16x32 was that an oops?
that would mean you'd have index 0 and index 1
ohhh not 1 and 2, thank you
im also curious, why load the spritesheet but then use internalassetkey
(also yea indices start at 0)
not sure, im learning from another weapon mod tbh 
(for like all things)
oh thank you
what should I have there instead? just the name of the .png file?
Well at least now I'm getting an error to tell me why the mail won't load. Back to the documentation to figure out where I went wrong.
if you're loading the texture into Mods/MeowmereWeapons then you can just write Mods/MeowmereWeapons in the Texture lines
instead of the internalassetkey token
or you can keep the internalassetkeytoken and remove the Load action
using the internalassetkey would mean no one else can edit your textures with content patcher
i.e. cannot editimage on them
or load over them
oh okay, which would be better for what im trying to do with c# too?
(wanted to add ||meowmere|| effects to them too)
i have no idea what you're trying to do with C# but probably the Load
How to receive the same email repeatedly
if you load it you can then get it with Game1.content.Load or the smapi load helper or w/e
email?
with this
Does {{ModID}} not pull the mod ID from the manifest's UniqueID?
it does
sorry, mail
thank you so much
Was this at me or Whale?
at you, {{ModId}} takes the UniqueID from the manifest.json
TY. Log threw an error at me that there's no ID but I used {{ModID}} so it should have.
where are you trying to use it?
I still can't see the hammer in my game
https://smapi.io/json/content-patcher/69ec639aee2b4e05a004f23ff2906781 In a trigger action. Copy-pasted the example on the wiki and just replaced the parts that weren't in curly braces with what I needed for the ID field. My log: https://smapi.io/log/072782311ff74c0dbbfe7b89c602ed8e
you havent written the same mail key
your mail key in Data/mail does not have the {{ModId}} at the start
assuming your uniqueid is cosplaywrite.CAP, what you have in your action is AddMail Current cosplaywrite.CAP_cosplaywrite.CAP.MarnieLetter
have you spawned in a completely new weapon? im not sure if spriteindex is something thatd change or be cached
yeah I did but it only worked for the dagger
I was really good at modding before 1.6 came along. Now I'm super rusty and everything is different lol
looks right to me. that said, if you already saved your game with this (which im assuming you did, since this is a DayEnding trigger, so you wouldve had to save to sleep), this trigger action is already marked as "done" and will not run again with the same ID
That's not a problem. I can create a new junk save and use CJB cheats to set my skill level to see.
you can use another action to mark it unapplied temporarily or add the MarkActionApplied field to the trigger actioln itself for debugging
that also works
did you change the texture fields or internal asset keys or anything? send your updated json
Gonna test it and see but if it doesn’t work I think I’ll walk away for the evening.
I give up.
ah yeha, you did. did you not get an error in your console?
(does the caseSensitivity work in regards of it doing {{ModId}} vs {{ModID}} ?
few tokens are
I believe some GSQ's are though
i honestly don't remember which ones are, so i'm on the basis of "everything is caseSensitive until nothing is"
Generally, it's better to just assume it's case sensitive
It also helps avoid issues with Linux
Tokens aren't case sensitive
File paths are
The gsq resolver isn't case sensitive but the arguments may be
My future cat or dog is case insensitive
cAt
My mod's unique ID is "cosplaywrite.CraftableAutoPetter" does that matter in terms of what I put after the {{ModId}} token?
Code is typically case sensitive. Unless you're programming in a bonkers language
I can add a link to an updated validated json.
If you aren't using ModId everywhere, then you will have mismatch issues
ye if you could, you doubled up on the actions in your triggeraction
Because I saw you were using a condensed version of that in places before
I haven't tested it after fixing ModId but here's the current version. https://smapi.io/json/content-patcher/1030c727e2654b9a8f16a16bb94f4b9b
https://github.com/rokugin/CP-Examples/blob/main/[CP]exmail/content.json
I dunno if it will help at this point, but I do have this example
this is probably where it's failing
Oh, yeah that's not good lol
Trigger Actions and tokenizable strings are all new to me since I was last super active on the mod scene so thank you for your patience here. I used MFM for this mod before and am moving it all over to CP now.
Oh geez. That's what I get for copy-pasting.
how to know that the player has completed a quest or a special order at a tick
special orders have completions in https://stardewvalleywiki.com/Modding:Game_state_queries#Player_info_.26_progress but i don't remember if quests do 
i am going insane.
When a farmhand warps to a location, the game fetches the real location from the host player before the warp completes.
how does this work. where does this happen and why doesn't it include map overrides. how do map overrides work in multiplayer at all if they don't sync and farmhands (seemingly) can't apply them to their own locations
Have you looked at the cached map system
I don't recall where it happens precisely (I can look), but map overrides aren't net synced. That's why it's normally redone in resetLocalState (or is it resetSharedState?)
It's actually done twice
thanks, that would be helpful
MakeMapModifications is called twice in MP for some reason
It's supposed to be reentrant but somehow it's not
Really? I'm only seeing it called in overriden versions, or the weird one in FarmerTeam
Or in resetForPlayerEntry lambda
Well that's a step in the right direction. The letter triggered successfully but got "no translation available" so now I know it doesn't like my i18n.
This may have been two weeks ago
Oh, it's resetForPlayerEntry that's called in both places
Yup
oh ho, a resetForPlayerEntry lambda? can i just... add one of those
It's....supposed to be reentrant and somehow isnt
What do you mean by reentrant
If you call it twice it's irrelevant
hmm i would call that idempotent
Ah. Well, yeah, it should, since _madeMapModifications bool guards it
That's not a normie-friendly definition at all, lol
Yeah, reentrant means it can be called (directly or indirectly) by itself safely.
(After some calls to resetLocalState where it might be called otherwise)
Is it supposed to be reentrant or idempotent?
Idempotent
Idempotent I can't recall the meaning of but doesn't sound right
Idempotent means the outcome is the same no matter how many times you call it with the same arguments.
Looking up the definition though it's just my memory 😛
Well, actually, times aren't really that important, it means the outcome is the same when called with the same arguments period.
I think I mean something more along the lines thar calling jt twice won't apply the map modification twice
That's the same as what I said...
https://smapi.io/json/none/93ad1e7b94d945f98d140e090ef87730 I don't see my items in adventurers guild shop... is the condition not right? ~_~
The outcome only depends on the call/arguments, not prior state.
Actually both calls to resetForPlayerEntry are in onFadeToBlackComplete - Client.setUpGame is irrelevant here
Not sure what you mean by this?
Yeah my arrows are bad lol
ItemId needs to specify (W)
derp
ReadActiveLocation was intended to be the other one?
thx 
@tiny zealot I guess you could override Game1.hooks with a DelegatingModHooks subclass (SMAPI class that automatically calls the existing hooks for you), and then override OnGameLocation_ResetForPlayerEntry to make your modification at the end.
Or just patch GameLocation.MakeMapModifications if you're already using harmony
https://smapi.io/json/none/91473be5f4ce4923b57c2290a0b1877b I changed the condition to ||meowmere||'s item ID but didnt work sadly
Easy fix lol. I hope. I didn’t have the right i18n key in my content json. It didn’t match my default json. 🤦♀️
(All existing vanilla overrides call the base method too)
i think your data/weapon "Name" needs to be MeowmereWeapons.Dagger etc cause that's the internal name of it 
Success!!!
Atra was talking about the ItemId field in the ShopEntry, which in that json still doesn't have (W)
Though your condition is probably wrong too
Since (W)65 isn't going to be the right mail flag I think
oh ~_~!
i have been using a plain GameLocation, since i assume it is dangerous to subclass it. i might just patch MMM since i am in fact already using harmony
Oh I missed that entirely
Yeah, if it gets saved you'd need to do the whole remove/readd dance or use SpaceCore (assuming it's not one of the few classes that is xml serialized across the network sometimes, which I don't think it is)
so it would be (W)MeowmereWeapons.Dagger?
Now to decide if I want to version this 2.0 since it won't work with older game versions and I changed up the contents of Marnie's letter or if I want to just version it 1.0.2 since it's not a huge change.
You can technically subclass if you're not on the locations list (or buildings of) at saving
Now if you want to do that dance?
@fathom hound For the mail flag condition, the proper mail flag I think you want is "hasActivatedForestPylon"
no, the snorlax technique is off the table for this one. the contents have to persist/be saved
you should follow semvar, from sounds of things u changed enough for a minor version (1.1.0) at least
thank you!
Snorlax technique? That's a new one
I enjoy the naming
Is the snorlax technique sleepinf
that's what i call the add/remove dance to avoid serializing a subclass
Oh that's better. It's not a significant enough change for 2.0 but I forgot about changing the middle number. TY!
since i did it for my snorlax log mod
So yeah, harmony is your best approach without SpaceCore
(If I remember correctly you're one of the people who don't play with SpaceCore installed?)
(ichor destroys snorlax before save
then brings it back on load)
[game] Failed parsing condition 'hasActivatedForestPylon': 'hasActivatedForestPylon' isn't a known query or alias. oops, did i put it in wrong
(yep, you caught me)
To be fair the game does this a lot lol
You still need the PLAYER_HAS_MAIL Current part too
(my current modded playthrough also does not have spacecore but it is relatively light)
🤔 whats the method of converting hair pngs to FS manually?
OH i see okay makes sense, thanks
Have you seen the fate of poor trash bear
did trash bear explode
What did I do this time?
I would say I'm primarily playing on mobile but it's closer to "occasionally open mobile to check a bug"
Just saying you don't use SpaceCore
woohoo it worked tysm Casey
now for the hardest and last part which is adding the ||meowmere sparkle|| effects 
Oh. Yes, correct.
you can still say it if you want. im not a cop
Oh no! Get away! The wall of leaves!
spenny is too powerful
For what it's worth I don't think you can do that with CP (unless there's a framework I don't know of)
if you ask button if she's a cop, she has to tell you
oh no is it not possible to use both cp and c# in the same mod? LOL
no, but you can zip both of them up in the same file
if it isnt then i am very sad
Oh thank you. It seems the issue is in my coolLava method. I took it from the VolcanoDungeon.cs code but it seems to only work for the first player screen.
they will need ot be technically differnt mods to smapi's eyes
ModBuildConfig supports that natively too
Yeah, and the C# tool (ModBuildConfig)- ^
Look I'm too busy chaining words together
they can live in the same parent folder but must have different unique ids
(We were all so dumb when we were 14. I really believed that.)
Look at this perfection #programmers-off-topic message
i wonder if u could like
make a fake "sparkle" item
and set it as the weapon projectile
animated object?
no 1.6 weapons have this projectile field
Name your dumbest belief as a child: Mine is believing I'd be happy one day Wait what
the sparkle is specifically when a monster is slain
not a projectile by itself I think
darn foiled by canon
oh i meant the projectile being the object-
I mean, I was joining the "sleep is for the weak" crowd
watermelons growing out my belly button if i swallowed the seeds 
yeh
I found this part, just not sure what to do with it
Hey
One day
my stupid childhood belief was that I am an automaton with steel interiors
no I don't remember how/why/from whom I got that
are you not? i've been lied to 
have you looked into making C# mods and Harmony patching?
<insert cynical statement about [REDACTED FOR RULEBREAKING IN TWO DIFFERENT WAYS]>
we just gotta crowdfund casey out of FL, happiness guaranteed
im reading wiki now on it!
I'm not in FL
oh, wait that was button
I moved to IL with a new job at the end of last year
https://stardewmodding.wiki.gg/wiki/Tutorial:_Harmony_Patching is also a great guide
I used to be in FL
thank you!
you moved into intermediate language??
Yeah, I finally reached above elementary level english skills. Only took me 27 years
We are considering crowdfunding Casey one of those Stardew controllers right?
I was thinking about getting one
Though I purchased something much more expensive today
im surprised you dont just get one
(The Fire & Steel Terraria Meowmeres came back in stock)
as company benefit or whatever
Well the thing is I just purchased a new controller within the past few weeks
What's a meowmere
It's a cat strapped to a hammer
does it actually meow when you swing it
I don't think so 😔
Like the Franklinator.
Oh I forgot to buy soil
Honestly, Meowmere being a sword instead of a hammer is ridiculous
dang 600 cad
thats why i want this mod released tonight 
And that's the only thing ridiculous about that Terraria weapon 
Thr heck is meowmere
maybe it means that sdv humans are 2x as large as terraria humans
Lol
Hmm, I could preorder the stardew controller, but I'm unsure if I'll move before the date listed on the website
I'll go back to dealing with the stupid word game
the (1) good thing mankind created, force-activated noisemakers, and it isn't put in a 600cad weapon, i'm disappointed yet again, yoba
Arggh
Yeah, it meowing and shooting nyan cats on swing is totally normal
What do you mean interesting and interest aren't related you ML....
What's the difference between interesting and interest? Well, I certainly don't find it very interesting to be paying more interest
It's telling me depress and gray aren't related smh
i immediately thought of 'button' when i saw depress
Try "grey", maybe it doesn't like the American spelling.
Button seems cheerful enough
Well, as long as you don't have it, it's fine
Well one mod tested and updated in a night is enough. But at least it got me back in a mod headspace and hopefully future mod updates go smoother. I started with what I thought would be a simple enough one. It was good though because some of what I did tonight will translate to other updates I need to make.
I have some tongue depressors in the medicine cabinet.
Fade
Well, actually, they're more like toothpicks.
Fade is what the stupid program wanted
Fade to grey?
It's part of my soul, my very core being. An unescapable madness, taunting me forever
casey's gonna make the next psychological horror story mod 
Right right... this is abnormal, of course
Gonna studiously ignore the mods that need more art or conversion off JA for a while.
glances at the halloween mod I've toyed around with for a couple years
🫂
So my CustomLavaLogic code is requiring me to add XML IGNORE before some attributes and it doesn't work if I remove them. Idk why
i definitely vote you should see if anyone'll volunteer to be your secretary when you take your time away from maincord, i definitely don't want you to experience the wave from this morning 
I wouldn't trust just anyone for something like that 😛
Assuming edit access to mod pages and such
There are a few I would
obv
i meant your trusted group and even then, cause those numbers probably caused a 6d4 amount of psyche damage
Hey all. I've just been wondering how to include some (if not almost all) cornucopia crops to be salable to one of my custom shops.
I tried doing this but it's not really showing in the list of shop items. Oh, and made sure to made cornucopia a dependency in the manifest (because i always forget manifest.json). I couldnt focus as much so I just decided to ask for help im sowwy. 
In my data/shops block.
{
"Id": "{{ModId}}_Cornucopia_Crops_Spring",
"ItemId": "ALL_ITEMS (O)",
"Condition": "SEASON Spring",
"PerItemCondition":"ITEM_CONTEXT_TAG Target Cornucopia.MoreCrops.cornucopia_season_spring, ITEM_CONTEXT_TAG Target Cornucopia.MoreCrops.modid_cornucopia.morecrops",
"AvailableStockLimit": "Player",
},```
those context tags don't look correct
context tags dont have mod id prefixes
what you see in object data is what you get
and you dont need the dependency either btw
You can copy whatever we did for data/shop_pierre.json
or whatever
I believe I only set the season tags for pierre's items though so you'd get most but not all seeds from that
Sorry -- will delete after response

Uh, you definitely don't want to prefix return false there
I have a CP with custom tokens which values can be changed by GMCM in-game (or at least that's what I think).
How can I force CP to re-check the and re-edit the assets after something changes in GMCM/Config?
chu said something about forcing invalidation previously but didn't got into more details
Oh yes that
so many questions
Gotcha thanks
Also, I have no idea where you got that method name - "attackWithTool" doesn't exist anywhere in SDV
The Traditional TM way to do it is to call patch reload on your content packs
Ask ichor 
any reference for how one do this?
Yeah, there's no direct way to force a mod's patches to reload
Programmatically anyways
Hat mouse lacey!
Yeah, you kinda have to abuse the console command
And I don't think Pathos plans on adding a way to do it otherwise
!reload
-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload YourMod.UniqueID
-C# Visual Studio has a feature called Hot Reload
-C# Rider also has Hot Reload
-Generally working in C# it will be called "Hot Reload" (usage may vary)
Mods that inject commands into the commands queue ++
whats wrong with just invalidating the assets
The patches don't update
<-- barely been paying attention
<-- is playing a stupid word game
Yeah, and from C# you can't see what patches use your token either (to get what assets would be affected)
Hey, I'm actually playing a game for once
and there is a way to a c# mod to call a console command?
Yeah. That's why atra mentioned hat mouse lacey earlier - that mod does it
There's not a public API for doing it though
(There used to be but Pathos removed it 😔 )
oh! ok. I thought it was an internal slang or something like that
Hat mouse lacey is the best example
thanks a lot! I will take a look
do you want to be the best example of doing things the developers tried to stop you doing though lol
(I do it too for chat commands but like....unreadable much)
someone trying to stop me to do something is a motivation for me to look for a workaround
https://github.com/ichortower/HatMouseLacey/blob/main/SMAPI/Compatibility.cs#L228 for the method, and
https://github.com/ichortower/HatMouseLacey/blob/main/SMAPI/ModEntry.cs#L475 for how it's called
Reflection crimes time
(For the curious, it was deprecated in SMAPI 3.8.1 on December 26, 2020, and then was removed in SMAPI 4.0)
well, its less like "stopping you" and more just "no longer giving youy an easy way to"
Everyone loves reflection crimes
Shhh usually I'm a good example in life
looks at my mods directly loading assets from other mods / content packs
reflection is named because it wants you to just look into a mirror for a while and decide if you really need to access those private methods
(you definitely do)
Hey, how would one get item name to item ID? Do I have to manually make a function that does it?
in C#?
Yea
this is a lot to digest. but thanks a lot
Basically
If you look at 1.5 era mods they do this a lot
Ah, okay
But names do not perfectly map to ids
as in display name to item ID? You'll need to iterate over every entry in item data and find the one that matches
(which could be several, as the tale of the 4 butters can attest)
In that you can have two items with thr same internal name
(also wouldnt it be easier to just reflect into CP to call its UpdateCommand handler)
or that, huh
Actually, contrary to the beliefs of game modders, reflection is 95% not about violating encapsulation.
Okay, thanks, that's actually super helpful
(Hey, I want to have a way to call any arbitrary console command)
I see it described here sometimes as "a way to access internal stuff" and it does do that, but that's really not what it's for.
It's for looking at yourself in the mirror and admiring yourself of course
Well, you could argue it's for your code to look at itself in the mirror and admire itself.
i suppose thats fair. on the other hand, calling the handler directly makes it easier to turn it into a BETAS action (what could go wrong)
Which... literally is how it's named. Minus the admire thing.
I want to implement a function. After completing my custom special order, I will send item rewards via mail. The special order can be completed repeatedly, and the same mail will be sent each time to give item rewards. But no matter how I write, I can only receive that mail once. Does anyone have any better methods?
Add a trigger action that removes the mail at night
My code can try to admire itself while I insult it
It's the only way it will have any self respect
Can you help me see what's wrong with writing like this?{ "Changes": [ { "LogName": "Mail Triggers", "Action": "EditData", "Target": "Data/TriggerActions", "Entries": { "RPB_T_Parsnip": { "Id": "RPB_T_Parsnip", "Trigger": "DayEnding", "Condition": "PLAYER_SPECIAL_ORDER_COMPLETE Current RPB_Parsnip", "HostOnly": false, "Action": "AddMail Current PrizeTicketFromChenXiaoMing now" }, "RPB_T_RewardMailRemove": { "Id": "RPB_T_RewardMailRemove", "Trigger": "DayEnding", "Condition": "!PLAYER_SPECIAL_ORDER_COMPLETE Current RPB_Parsnip", "HostOnly": false, "Action": "RemoveMail Current PrizeTicketFromChenXiaoMing received" } } } ] }
Hm. It's weird seeing modded added items that once collected don't show up in the collection tab.. 🤔
I decline to join the invitation to self-deprecation competition. My standards for modding may be somewhat more lax than professional standards but I still consider most of it to be above-decent.
for what I read, reflection is about a code being able to look at itself and update itself
would it be better to transform the CP part of the mod into an Edit Assets c# one?
can i ban artifact spots from an Outdoor location
i already have ArtifactSpots ArtifactSpots: []
the second one will never happen after they complete it because once they complete the special order, it will always be considered "complete" forever. so the condition will never be true again
Sounds like I'm using my reflection wrong then - I get the precise opposite done
Awww, but it's fun! Doesn't everyone love insulting themselves just a little bit, every once in a while, as it grows and spirals into full blown self loathing and self hatred?
Me reading myself to reproduce what Ichor did on his code:
Can you change it to TreatAsOutdoors instead?
i want it to rain there
Artifact spots are built from the individual locations entries and the default location entry isn't it?
Thanks, that should be the problem
I guess you could patch the default location empty while in that location lol
that's not even my worst crime! and i got it from shockah, a more competent modder
Or actually, I guess that happens likely at day start or day before
i think ill just live with the spots 
Laughing at oneself is healthy if it comes from self-confidence, not self-hatred.
Yeah, I think you'd have to jump pretty far down the rabbit hole to stop them lol
Might be easier to create fake rain at the location
we are not judging seriousness of the crime here
i suppose i could just revert making all this sand diggable
then spots will only spawn in planters which is fine
also I am glad you credited the mastermind behind that one in the comments
If I ever come across as self confident in a not joking way, you can be sure my discord account is compromised
Hey, I'm an engineer
Someone needs to take the mickey out of me before I grow an ego
Engineers are usually a confident bunch. You kind of have to be when literal lives are at stake.
(chu were you trying to avoid c# entirely? if not, what about the public bool IsRainingHere()
)
nou
Does that make it rain though?
im not avoiding C# entirely
but i am avoiding anything that's too niche for my map framework lol
stopping artifact spots is really not it's job 
embrace the trout slingshot
I can no longer read the phrase "make it rain" without visualizing the cash cannon.
My map framework is specifically for whatever niche bullshit I even kind of want lmao
does locationcontext weatherconditions work even on indoor maps
well i made it Outdoors T already
so it rains and stuff
i like how it looks
in theory it should get slapped weather mods too

Does anyone here have experience with the quickquestion command during eventing? The text beforehand works fine, but it keeps breaking once it gets to the quickquestion section
Is there any tile data that blocks artifacts?
https://stardewmodding.wiki.gg/wiki/Tutorial:_Final_Boss_of_Events feel free to let me know if you want anything extra added in
but also
!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.
Thank you so much oh my god 😭 🙏 I have been struggling for the past hour and have not been able to find any examples online
One day, we will have Yarn Events, and the confusing era of quickQuestion & co. will be over
(For those who don't mind an extra dependency anyways)
Do I use the change function for changing dialogue with ContentPatcher?
do you mean the "Changes": [ at the top of every content.json/subsequent included jsons?
anything that you are chaning with CP you need to put in Changes, yeap
(you only need 1 per json fyi)
First time making a C# mod so I'm sorry if I'm slow atm... but I came up with this and so far the custom weapons aren't showing in the game, and I tried a few things and none of them has been working so far, any help is so greatly appreciated (first is .csproj second is modentry.cs)
Sorry, I meant Load
Like mentioned earlier, you can't have the same mod as both CP and C#
oh, sorry, i thought the mod loader thing was automatic
You can embed a CP mod inside your C# mod with mod build config
Well, not truly embed
still kinda confused here, but most likely you'll want to use editdata: https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md
In your IDE it will be
But in the mods folder it'll be a separate mod
https://github.com/Pathoschild/SMAPI/blob/develop/docs/technical/mod-package.md#bundle-content-packs
thank you casey!
Also, it doesn't look like you built that C# mod, which I'm guessing is why you haven't seen SMAPI explode in red
im gonna get flamed but ive been using AI to help 
May as well not make the mod lmao
I mean... using AI to learn isnt' a bad way to go
Seeing how the AI builds and going from there.
yes it is
(I uh kinda wondered that based on the Farmer.attackWithWeapon thing earlier)
it's like referencing other mod authers.
it is a bad way
stardew is highly specialized, ai will not help you
I would look at other mod author's work first though.
this is much easier than what I was doing so far
Yeah, AI for learning is pretty bad since you don't know how to spot when it's wrong
it will tell you 2+2 = window
AI doesn't have enough targeted source SDV modding to accurately create mods for it
its also likely that eventually you will not be able to discuss or share your mod in here should it use AI to create it
and we will obviously not feed it sdv modding unless it's against our own permissions
Literally, LLMs like what most people call AI today are statistical models that come up with the next word based on what's most probable based on the previous words, using training data as a reference
I think discuss was fine, you just can't promote it right?
"reference" used very loosely here
If it's got any AI generated content though it's like fully out
you can discuss the concept of mods using AI, but you cannot link to, share, or promote mods that use it
does this count lol
there is a draft rule about it in the pins in this channel
thanks ill look into it
lmao
Nah, that's just getting information, not using the LLM to generate code.
thats also all completely wrong in the context of harmony
Non-generative and also non-helpful lmfao
(and yeah, I didn't say it was correct or useful information but it's not breaking any rule)
Perhaps non-generative, there's a possibility it's got some straight up lies in there
That would require fact checking it though and that sounds like free work
I talked nasty about ai and they shut off my internet ig /lh 
AI is good to generate code and text IF you know before hand what you expect and are able to instantaneously validate their answer
Soon ™️
to be clear, asking AI about how to do things, from a (proposed) server rule standpoint, is fine, so long as you write your own code after. using it to generate code is not. also posting screenshots of your conversations with AI would not be allowed either
Relevant meme
hah
24 seems low lmao
I disagree, I got pretty good at regex just because AI is so terrible at it and I had to fix 90% of it 
using it to generate substantially ai-generated code* (excluding things like having the AI finish the syntax of a for loop for you by autocompleting "i < 6; i++" or whatever)
I don't think autocomplete/intellisense is considered ai but that requires understanding if the auto is correct
I want to replace a dialogue ,json thats not in the Data folder. So in that case, I would use the "Load" action.
I mean, I think plain intellisense might can do that without AI?
that is just learning on your own after being told incorrect stuff first. the AI didnt teach you anything
probably. i just didnt feel like just re-typing what was in the pin
Personally, rules aside, I'd say if you can use GPT to generate code that actually works and does something useful, all the power to ya, but 9 times out of 10 it's going to be a pile of trash.
"Load" action entirely substitutes the target file by your file
it says to CP to open yours instead of the target one when requested
True, but it can always point in a direction on what you should learn, as long as you know anything that is the result of AI can and probably will be BS
at last! finally feeling like my danged locations are working (until i find the other stuff i overlooked, lmao). thanks to casey and everyone else for your help!
and I thank you Ichor for the help! my c# mod works now!
it should also be reiterated that these AI rules are still, afaik, not actually in effect and are just drafted. so whatever you're doing right now is, yknow, whatever. just be aware of it in case you plan on talking about your mod in a future where the rule is enacted
i just copied and pasted from the decompiled code and asked chatgpt what each thing i didnt understand meant but it explained it all wrong apparently lol
Yep, that's the usual result.
As in the wise words of Wario, "Excellent!"
there are like a million other places that arent AI that will point you in much more correct directions. if you're going to talk to an AI under the assumption that everything it says is wrong, then... dont talk to the AI
GPT is automated bullshit, excellent at producing words that sound very much like information to those who don't already understand it, and are completely wrong to those who do.
Me using a thirdhand solution
Anyways
[HarmonyPatch(typeof(GameLocation), "onMonsterKilled")]
private static void Postfix(Farmer who, Monster monster, bool killedByBomb)
{
if (killedByBomb)
return;
if (who?.CurrentTool is not MeleeWeapon weapon)
return;
if (weapon.QualifiedItemId is "YourFirstId" or "YourSecondId" || weapon.appearance.Value is "YourFirstId" or "YourSecondId")
// draw sparkles, lol
}
also if anyone is interested, hot reload does work on two instances of the game at once, but i occasionally get weird results
(am i back? have the ai overlords turned my internet back on?)
Like, with two separate VS instances, or did you get it done with one somehow?
~_~ thanks atra, will cred you 
goes back to playing stupid word game
two terminals running dotnet watch run
are we not avoiding this old implementation of harmony currently?
it's a fun word game!
what kind of weird results
Ah, right linux. Interesting - I can sorta see how things might get confused there depending on how the command line stuff was implemented
You mean using attributes? Some people never stopped (ie me.). There are dozens of us!
(aside: in the vanilla game, if you kill a monster with a bomb, and you're holding meowmere, the sparkles go off.)
hey, casey, you think that's bug or feature?
the weirdest result was debug commands. because of... infelicities i don't quite grok, i have to open a separate terminal to pipe in terminal input or else dotnet eats half or more of my keystrokes
Question about dialog. I tried to add some dialog with questions into festivals and they seem to break? Questions work fine in regular dialog. Google has failed me.
under the rule of ai not being able to directly lie and on behalf of our ai overlords, they may or may not have anything to do with your internet failure
where are you putting the responses
Prooooobably a bug
not a serious one though!
a magic at the distance sparkkles
moar sparkles!
Tried in the festivals and under the character, neither seemed to work?
Oh yeah, I remember you mentioning something like that.
attributes are to be avoided says the wise. The atra is lazy and attributes make for tidy examples
it is becoming clear to me now that both instances opened the same command pipe, so commands would get sent to a random instance instead of the one the terminal was for
I wonder if my autocomplete PR would be better/worse/same considering I reimplemented the terminal handling in SMAPI
under the character is correct
maybe try $y, that's how CA does questions in events
however, this only happened if they were started at the same time (so, reloading after a rude edit or after manually killing)
For some reason I thought attributes was the new way lmao
1:30 AM here, I should be connecting myself to recharge heading to bed as the fellow human that I am
attributes are newer
tomorrow I come back to my new mod
The Harmony site has a really big emphasis on using them with only like a sad side on manual patching so I just assumed
and also if they start at the same time, i often get warnings due to collisions from simultaneous attempts to access the startuppreferences file (and once an error from a similar collision after cancelling out of the LAN menu)
they, however, are problematic, assuming android smapi returns, so your guess is as good as mine about the chances of that
Are they? I thought they both existed for ages. I think I started with attributes back when we first got harmony
Maybe I'm misremembering
cause of the rewriter?
I thought atributes asked for the Patch.All() method to be called to be implemented, what is not recommended
Also SMAPI can't rewrite them I thought
That too, though it's questionable if that's a good idea for harmony patches anyways
the real issue is that they can't rewrite the type references for ANDROID
which is amusing
assuming android smapi makes it back
writes everything in annotations to deter android smapi
I guess it depends on how much rewriting it's doing. I would hate for my patch to stop working because of something tiny
It can't do it on desktop either (or used to) - there used to be problems with it back in the days of Windows vs MacLinux, because of the different assembly names and XNA vs MG
speaking of my crimes from earlier, implementing a reflection monstrosity for applying my patches to avoid using harmony annotations has to count
I like the harmony.patch(original:<method>,postfix/prefix) thing
on the other hand, if you never know it was rewritten, you wont know if its actually tiny or completely mucking up your patch
If you're just using reflection why not use annotations? Then again, I guess you could prevent the "one patch failing means all the following ones don't apply" thing...
where's the quote, did i quote it
arent annotations already reflection?
That's true. focustense had it rewrite something really poorly the other day right?
/*
* Apply Harmony patches by getting all the methods in Patcher
* and going feral with reflection on them.
* Was this a good idea, since the annotations feature exists? No.
* But did it save me a lot of work? Also no.
*/```
I don't get the weird obsession with reflection, positive or negative. I do this in AFS - scan existing methods to see if there's anything it needs to patch.
Ah, yes, the "writing systems because it's fun" route
That was just SMAPI's rewriter, no Harmony involved.
Ah
partly this, partly the warning on the wiki that annotations are not recommended, partly not wanting to restructure my classes for annotations to work
Reflection's just a tool; use it, don't use it, whatever. Using it to pry into another module's internals isn't always the best idea, but that's not a Reflection issue, there are other ways to do that too (like Publicizer/IgnoreAccessChecks).
It's definitely not "crimes".
man, I'm glad I didn't predate 1.5
calling this a crime is not about reflection per se, just about using it to do a bunch of unnecessary work
writes a source generator so I can use my annotations but still have the no overhead of no annotations
...That could be really good for avoiding the "one patch fails and the rest don't apply" problem
Harmony annotations? Or any attributes?
Not themselves, but you usuaully need it to use them
harmony annotations yea
Yeah, GetCustomAttributes is reflection.
Yeah Harmony collects all the uses of the annotation with reflection
Just putting the attribute there... no.
hm i didnt think to put the harmony.Patch part on the source gen i did for transpilers
partly cus the attribute was getting really long
But what Harmony actually does is way more expensive and risky than any of the reflection involved in reading its attributes.
So to the extent that its attributes involve reflection, it's... meh.
Made a property change here and I think it might be drawing day/night tiles from the wrong tilesheet? Is there a way to specify the tilesheet name?
Looks correct in tiled but just shows up black in game
can't like change the tilesheet
I think you have to use the index in relation to every tile for all the sheets right?
I thought there was an easier way to get this but it has been absolutely forever since I messed with it
I just had the unfortunate displeasure of finding out that Tiled, if it has a map open, will instead of giving a "this file is in use by a program" error, gives a "you need permission from yourself to delete this" error in windows.
looks like it just updates the tileindex
I apparently had a map from SVE open, to ensure compatability, and couldn't delete the SVE folder to update the mod.
Oh, yeah it should just be the index of the sheet for the tile you indicate hm
yeah, but no change tilesheet XD
Right so you can't change between tilesheets
you can conditionally patch the og tilesheet
OK I must be doing something wrong then because I am using the same sheet that I want the day/night tiles from
if you wanted custom light fixtures/windows
You can get the tilesheet index from Tiled if you have the correct layer selected and hover over the tile you want, at the bottom where it shows coordinates you'll have the index in []
....TIL....i've literally just been clicking on the tilesheet itself and using the 'ID' from there 
Yeah, you can get the info in many places lol
My current issue at least it doesn't crash anymore tho.
Are you using the net event thing? And making sure to add it in initNetFields? And calling netEventVar.Poll() regularly (like in update)?
does this mean that they are gonna have 2 separate manifest.jsons?
will it be StardewValley.dll for the EntryDLL for the C# one?
Not at all. It would be the name of your VS project usually.
Basically whatever the dll output of the project is
Like, for SpaceCore, it's SpaceCore.dll
Okay thank you!
Hooray, full test of Satoru Gojo NPC is COMPLETE
everything works, just gotta write up the changelog and post it later.
Changelog: "everything"
yeah the author gave lily permission to fix
^
watches the numbers on that mod skyrocket even further
oh yea earlier today i thought of how to steal the manorhouse tile actions
i thought roku did that
did he i forgor
I think I have them all now
I've been using EMA to do that since he dropped the 1.6.9 update, yeah.
cool 
I am interested in hearing your method, because I just redid all the behavior lmao
I need to upload the update of Useable Community center too... >_>
i was inspired but the game's weird getfarm().shipitem business for the island shipping bin lol
so we obtain the instance of ManorHouse and redirect action to it
I tried that, but the question answers redirect to your current location
im glad you did
And since your current location doesn't have those if you're not on that map, it fails lol
I was so hopeful for that, because the dialogue will open, but as soon as you answer it just goes away lol
like do tile action for the performAction and prefix answerDialogueAction?
https://smapi.io/log/22e71ca1f16a4382b3960d97afdfeaeb oop it finally happened (red lines
)
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 10 Pro, with 0 C# mods and 0 content packs.
why was it pulling from data big craftables
I'm actually really uncertain how it goes from you giving an answer to sending that answer to your current location looking for a match
The way I ended up doing it was with very direct question dialogues that specifically call my desired methods, rather than just answering to the location in general
hm is there a GSQ on the lost and found
I think I just realized my DayTiles / NightTiles problem... #1 it looks like tiles with animations are not supported for swapping in, and #2... it was raining so they were showing the night tiles during the day in my test
Now I try something janky and have the animated tiles always on in the background, and a layer above them that is clear when it's time for NightTiles
I don't think so?
i was thinking i would have a box (tile on building layer) that appear only if there's stuff in lost and found
though hm idk how to condition a map patch on a GSQ either 
besides some round about trigger action mailflag business
.choose go to bed, be irresponsible
Choose result: be irresponsible
sighs
How is go to bed not the responsible choice?
Oh I misread lmao
Oh and I just remembered
I thought the choices were go to bed or be responsible lmao
Remind me in 20 hours to fix the GMCM menu open API stuff for focustense (and other people who might be using it)
for a moment there I was gonna say no, absolutely not. but kittycatcasey? yeah, yeah i will. (#6359006) (20h | <t:1731547238>)
ayoooo it worked my jankiness is strong
Lost and found is considered to have items in it when Farmer.team.returnedDonations.Count > 0, which the game apparently does draw something different just hardcoded if there are things in the lost and found lol
spacecore anim seem to work correct in other locale hm
the code never looked wrong so i wonder if that person resolved their problem
Only problem with this is it seems to only allow a simple response and breaks with $b I think
Wait, are spacecore animations broken?
I got a PR that fixed them in other languages
I forgot to test it though, maybe it's not working in english now or something?
it is working fine
around 1 month ago someone mentioned it wasnt working for them, so it was in back of my mind to check
Oh it's a question mark lmao
I did not copy this question mark functionality and now I'm wondering if I should lmao
I have never actually used the lost and found before testing it for my changes lol
so anyone else dealing with nexus not loading?
jeez okay yee its not really loading for me currently
It's been on and off for me a lot lately
i needed to update a mod fix to fix this crash
🤔
Question
Is there any way to add a new "name-able" thing, seamlessly, without just having it be a GMCM config option like some mods tend to do?
Example: Someone asks you to name something, the naming screen comes up, then that's the name NPCs will refer to it as? I know you can use the GMCM and certain content patcher tokens for customizable names/terms and such
Not with CP
With C# you'd probably need to trigger NamingMenu and use the value from that
Ahhh, I figured
how many files am i supposed to have with a C# mod besides the manifest? i have this as ModEntry.cs but I don't have a .dll folder like i'm supposed to ~_~'
Welp, I really shouldn't be too responsible, going to bed after all
It's already later than I normally go to bed at on work nights
Ah thanks!
Go to bed
Your actual project (the .csproject and all your .cs files) should be in a separate location than your Mods folder, when you build the project in VS ModBuildConfig will place the compiled project into Mods in its own folder
Or else your dreams will be upset with you
Which will usually consist of your .dll, manifest.json and config.json if you have a config
And you know, anything else depending on what you're actually doing
ty ^^
When you're closer to being ready to release, assuming you're gonna distribute, when you build there's also a zipped up version of your mod made for you, so no need to go through the trouble of doing all that
Though you'll need to make sure your mod is set up properly to include your CP stuff if you're still doing that separate
still trying to figure out how to reference this modbuildconfig package in VS code
I have that too, for sure
If you're on Linux, Rider is free for non-commercial use
For vscode you want the C# dev kit extension
After getting that there should be a panel called solution Explorer
Right click on any project in there, then u can add nuget
ty!
I love VSC for json but I wouldn't want to try to do C# in it lol
I see
Rider having a free option does eliminate one of my biggest blocks for switching to Linux... ugh
Anyways, I've put off bed long enough looking at my own bad code. Good luck, have fun
Goodnight
this is so frustrating argh, feel like i just cant learn this ~_~
oh yeah programming is a bit like that for a while
is there any explanation for the sourcePhrase param in ItemQueryContext added in 1.6.14?
You can learn it, but you tend to need a knowledge base before you can do anything really useful.
If you just tried to dive right into a mod without knowing any C#, it might be a good idea to back off a bit and read some of the tutorials.
ive been reading tutorials for a bit but i dont think im fully absorbing them
programming tutorials are a bit like that
Reading tutorials on C#, or on C# Stardew mods?
helps to cross-reference with different mods' source code if you can find simple git repositories to use as examples, and search keywords and patterns as you go
Harmony patching in particular
Yeah, that is really not the place to start.
It's explained a bit in the code docs:
/// <summary>If set, a human-readable phrase which describes what's loading the item query.</summary>
/// <remarks>This identifies what's loading the item query in a hierarchical human-readable way, like <c>"building 'Mill' > item conversion rule 'Default'"</c>. This should be formatted for use within a log message like <c>"Item spawn fields for {0} produced a null item"</c>.</remarks>
public string SourcePhrase { get; set; }
Or more info from the commit message:
add item query 'source phrase' to allow troubleshooting item query log messages
For example, this changes vague messages like this:
> Item spawn fields with ID 'Default' produced a null or empty item ID.
With something much more troubleshootable like this:
> Item spawn fields for machine '(BC)163' > output rule 'Cheese' > trigger 'ItemPlacedInMachine' > entry 'Default' produced a null or empty item ID.
To minimize extra allocations, the base game only sets the context at the point where the context was previously constructed (e.g. "machine '(BC)163' > output rules" in the example above).
oh, so a sort of CP LogName equivalent for queries
thanks for sharing the commit, helps explain it a lot 
Yep, exactly like that (and uses the same approach for nested item query contexts).
suppose it's good practice to include our mod id in the phrase?
Usually it would be the path to that field in the asset, so it would include the mod ID if applicable (e.g. via the ID of the entry).
in this case it's not exactly in an asset, rather a query on a location instance from a tile action, which is used to set an item:
ItemQueryContext context = new(
location: this,
player: Game1.MasterPlayer,
random: null,
sourcePhrase: $"{this.Name} > {ModEntry.ModData.TileActionCrowTrade} > {nameof(this.CrowTradeItem)}");
which would resolve to "Custom_blueberry_Hikawa_Shrine > Custom_blueberry_Hikawa_CrowTrade > CrowTradeItem"
(yep it still uses Custom_ for ids since this project hasnt changed in forever)
In that case I'd do something like "location '{this.Name}' > tile action '{ModEntry.ModData.TileActionCrowTrade}' > {nameof(this.CrowTradeItem)}" for clarity, but otherwise that looks fine.
Essentially the goal of sourcePhrase is just so that when an error is logged, it's possible to find what's actually causing it.
perfect, thanks
hope that's knocked out a few FAQs for the channel hahah
Was testing the festival locations for vanilla for my hat mouse mod and noticed that my custom hats added via JA (was planning to convert to CP for 1.6 but figured I'd test locations in Y2 first) are not showing up for sale in the stalls. The other hats I used STF to assign to the shop are there just fine. No errors in log. https://smapi.io/log/425af02ee2a64b158655d675c89f7b68
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on macOS Unix 12.7.6, with 17 C# mods and 7 content packs.
Oof. Finally implemented what I think is a compatibility patch for my mod to work with another, and this happens
This is on Stardew 1.6.13 with SMAPI 4.1.6 on GOG, by the way
update to .14 and .7 maybe? idk what's been going on but those are now out
Does spacecore work with those versions? I downgraded on GoG because SMAPI got angry
My steam install is up to date
yes, spacecore issue is fixed along with the SMAPI update to 4.1.7
The latest Spacecore (1.26.2) works just fine on SMAPI 4.1.7
Baller, ty ty
Does it rain on tempmaps?
Ok somehow I forgot the updatewhencurrntlocation from the Volcanodungeoncode. Im not sure if I got it right still tho? Anyone can help? https://gist.github.com/aronyoddity/95f5a55e16f47f759efe5e0c41dee8a1
Question: Do custom NPC spouses not do chores by default, or have I just been stupidly unlucky with the rolls while testing?
else if (!Game1.isRaining && r.NextDouble() < 0.4 && !NPC.checkTileOccupancyForSpouse(farm, Utility.PointToVector2(farmHouse.getPorchStandingSpot())) && !base.Name.Equals("Krobus"))
{
bool filledBowl = false;```
under npc.cs looks like it's a bunch of randoms set for petbowl, watering crops, fed animals, repaired fences
all of the others except for this one is set to <0.6
so, can't be raining, seeded random above 0.4, porch spot not blocked, and not krobus 
So... Just very unlucky then? I have tested three different save files with Satoru as the spouse for two years and not ONCE has this man done anything around the farm to help. XD
Sleep eludes me. Lore accurate Satoru
If only I could figure out how to schedule him to return home without immediately sleeping
i have only heard bad things about this "satoru"
He's a character from a supernatural action anime/manga, it's inevitable that he'd be kinda just meh
He has a pretty rabid fanbase (just look at the download numbers for the mod lmao)
Yeahhh, a little worried about that with this update, not gonna lie
Send to author, cut ties immediately
I will cope, they added me to the mod page, so I am already doomed LOL
So many notifications

Just did, and got the same message
oh I see the problem
unfortunately dalionheart isn't compatible with new stardew versions at all (likely 1.6.9 and up)
I checked the mod page and there isn't a new update available
the other mod won't be useable until dalionheart is updated
Which is a bit of a shame, after 70% of the work I just did (I don't necessarily succeed at programming, I muddle through it lol)
can someone help me with a content patcher mod I'm making? it feels like no matter what I do it just will not work
What's the issue?
Are you testing with other mods or just content patcher and yours?
I have other mods, I've tried both with them and without them
If it's not an isolated test, you might need to do a patch summary of whatever area isn't updating to check the order of what's being applied
Did you make sure your Dependencies are set properly for your mod?
do also share your content file(s) at https://json.smapi.io and send a link to the parsed page here for us to look-over
But if you can put your code in the JSON parser and show your mod folders's structure as far as where the assets are, that should be enough to troubleshoot.
As well as anything popping up in your smapi log, just in case there's an error loading the assets
ideally share the full log via https://log.smapi.io, not just a patch summary or a popup
does anyone have an example csproj using IgnoreModFilePaths btw?
I had to step away for a sec, I disabled all my mods in vortex so only content patcher and my mod where there
here's the link: https://smapi.io/log/7bd4a7f5e16a4bd1bc1264bfe8fd09b4
Log Info: SMAPI 4.1.6 with SDV 1.6.14 build 24317 on Microsoft Windows 10 Home, with 3 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
haven't downloaded the latest smapi update, I only just got the notice in that test
let me update and try again
this part is also important since we need to actually see your changes ⤴️
that log does show your mod's loaded at least, but since it doesn't include a patch summary from the smapi console after loading into the Mountain map (or Tent interior if the recolour affects it) it's hard to say where it went wrong
"Target": "Maps/spring_outdoorTilesheet" should be:
"Target": "Maps/spring_outdoorsTileSheet"

otherwise looks fine at a glance!
...so the entire issue was that I forgot to capitalize the s in sheet?
Plurals will get you
I feel so dumb
You can rename them, copy the name and don't actually change it
(F2 > Ctrl + C > Esc if on Windows, dunno about others)
I dunno if they actually are, but typos really do feel like the most common mistake
Oh lol, I had a feature in Profiler that I never got around to testing (or ship) that was going to do that automatically for errors
I tried testing it again with the typos fixed and this happened https://smapi.io/log/04e5b8f28a0f4024b42d97ff0bd00121
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 10 Home, with 3 C# mods and 1 content packs.
what does it mean it doesn't exist?
is your custom sprite in an assets folder? if so, use "FromFile": "assets/LinusTentRecolor.png"
oh
as it stands now, it's looking for "Stardew Valley/Mods/[CP] My Cool Mod/LinusTentRecolor.png"
is LinusTentRecolor.png in the same folder as content.json?
yeah it's in assets, just fixed the typo... again...
I can create pixel art but I can't code for crap -_-
no different to dropping a pixel on the wrong spot, just fix it up and carry on 
thanks <3
All things considered, these are very small mistakes lol
luckily the game only shows the end product, not the mess we make along the way lol
It finally works!
important: shears are the only tool whose description doesn't end in a period
literally unplayable
1.6.15 when
Think I could get the content smith badge if I submitted that as a mod
Do you guys know a mod to see luck a day in advance ?
How do I make the glow-inside-the-lamp effect at night like this?
Do I just make a "lamp turned on" texture and patch it OnTimeChange?
In the Paths layer of the map, there are illuminated lights, and the image is in the shape of a light bulb.
I did not falter on the lava code. Finally showing for players in split screen. But now 2nd player watering can hardening logic mileage is negated upon switching locations. 1st player works fine. Tho.
Aa, I meant the actual white texture inside the lamps, not the glow effect surrounding them.
Like Clint's house has two versions of the a lamp. One that's turned on and one that's turned off:
So I wonder if just patch the right tile over the left tile with OnTimeChange.
Night tiles?


