#making-mods-general
1 messages Β· Page 161 of 1
see, i was just looking here
brackets in places like that just means whatever is inside the brackets is optional
ah
thats documentation syntax
whereas in JSON syntax, [] means you're making a list/array
it's a little misleading in spots
Well, in that case those brackets actually mean that's one group
As putting nothing in Doors would cause issues lmao
yeah xD
When you see []+ that usually means it's a grouping of fields that can be repeated to create multiple entries to the one key
<>+ is valid too
Basically, everything is made up by whoever wrote it at the time 
(what is sheetID? is that what the "1" is in shrimply's property? what does it refer to)
Technically it refers to nothing
This is linux command convention
correct <>+ is not optional i just meant you can also see a + on it
And I never remember
Because the sheetID and the tileID there are never actually used
The name of the tilesheet
Yes.
so the 1 120 can be literally whatever?
Yep
CA named them "1" and "untitled tile sheet"
fun
I have taken to just putting 0 0 lmao
Doors really weren't that far off from being un-hardcoded
I dunno if there was an effort made at some point and just given up on or what, but they really don't need a lot of effort to be able to use anything
Wide doors are probably not gonna be that hard, I just don't have a lot of time to deal with it at the moment
Wiidddeee
(It shouldn't be; the [optional field], <required field>, etc is based on the fairly standard GNU/POSIX command-line help text conventions. See also docopt.)
i think sometimes wiki editors dont know that though and when they go to edit or add things they just go based off of either what was there before or what something else they saw used
not often tho
but i do recall havin to correct some occasionally
I guess it could be worth documenting the format explicitly in a Modding:Style guide or something at some point.
by the way pathos, i know you're still on vacation, but would now be a good time to let you know about some bugs
(one SMAPI, one vanilla SDV)
Possibly, though ideally vanilla bugs should be reported in the official forums (and then you can link me to the thread if needed).
tbh im not sure if it is actually a bug or intended but it seemed weird to me that Item.CopyFieldsFrom always resets stack size to 1
the new one added in 1.6.9
but the wiki does say its equivalent to Item.getOne() so i wasnt sure
Hmmm.
(it also doesnt copy the itemid but that one i assumed was intentional?)
It should copy the ID:
this.ItemId = source.ItemId;
I can add a line to copy the stack size. That one is just because it calls GetOneCopyFrom under the hood (i.e. 'get one').
would that change the QualifiedItemId though? that getter only re-qualifies it if its null, but it wouldnt be null if you c opied the fields
Yep. The ItemId setter sets _qualifiedItemId to null.
hm. i mighta misread earlier then when i did a brief test so ignore me on that one. stack size for sure tho
I'll put the change in 1.6.16, though there's no timeline for when it'll be released.
the SMAPI thing was bc we realized that if you have an en.json in your i18n folder, it will never be used, because when SMAPI checks for the relevant locales, it asks for the codes from the game (like fr-FR) but the game returns an empty string for english, which from the smapi internal documentation seems intentional, but the problem is SMAPI's GetRelevantLocales doesnt account for that, so it uses default.json only
WHAT THE...
in my testing i just made BaseContentManager.GetLocale return en-EN if it received an empty string and that worked, but i imagine anywhere in that chain of function calls accounting for that would work just as well, and i dont know the consequences of changing the empty string assumption at any given point anyway
Can you add a bug report to the SMAPI repo on GitHub? I can look into that for the next update.
I added 3 fish, it has a strange icon for some reason, and when I ate it, the game froze :0

And not completely
For example, I cannot open the inventory, but I can switch icons
Opened and closed the cheat menu and that's it, it was delayed
@ivory plume while you're here, i thought idly the other day about this potential feature for content patcher. is it something you'd consider allowing?
joy!
Uh oh, this means it's being released next week. Get ready for another round of mod updates!
What to do with it and why it behaves like this π¨
(the idea would be to only allow such a thing in place of writing them directly in content.json, just to allow people with huge dynamic tokens sections to hide them away, but not allowing arbitrary placement)
Sure, I'd be open to discussing how it'd work.
Speaking of which:
New feature in the upcoming Content Patcher 2.5.0: local tokens!
This is a major new feature which lets you define tokens at the patch level. This is most useful with Include patches, which let you apply patches for each set of values.
For example:
// add each hat to the item data, shops, and Fashion Sense
{
"Action": "Include",
"FromFile": "assets/add-hat.json",
"LocalTokens": {
"Id": "PufferHat",
"DisplayName": "Puffer Hat",
"Description": "A hat that puffs up when you're threatened.",
"Price": 500
}
},
{
"Action": "Include",
"FromFile": "assets/add-hat.json",
"LocalTokens": {
"Id": "ClownHat",
"DisplayName": "Clown Hat",
"Description": "A hat that jingles as you move.",
"Price": 250
}
}
And then you can just use the tokens in assets/add-hat.json (e.g. {{Id}}, {{DisplayName}}, etc). This can be used to reduce repetition, do very simple non-dynamic loop logic, etc.
Thanks to @next plaza for the pull request!
I'll put the change in 1.6.16, though there's no timeline for when it'll be released.
i have lost the bet
i saw the commits for those local tokens earlier and im very excited for them π
oh this looks very nice indeed
(Technically the only thing preventing you from using this to perform actual programmatic looping and control flow is the circular load detection.)
What is it? It looks very lightening
iirc this was the template things that casey was suggesting which is: 
yeah, major cool
The most likely scenario is that you've written one or more of the item IDs wrong
kind of like how i18n works, but for json instead of strings 
I already fixed it, just accidentally specified the wrong fish sprite
I specified the aquarium version
π alright, new problem! the blacksmith map still has all the default warps, and my new ones won't apply...
what i had in mind was a new key much like DynamicTokens (say, DynamicTokensFromFile), also only usable directly in content.json, but it just takes a string pointing to a file like FromFile.
that file would be an object containing only a "DynamicTokens": [...] array, just the way you'd write it currently.
up to you, i suppose, whether to allow it to exist in addition to DynamicTokens (in which case perhaps it would be appended?) or to make them mutually exclusive
I'd want them to be mutually exclusive with that approach, so it works in a clear predictable way.
ok, that makes sense to me. thanks!
So what is π₯Ί
DynamicTokens.json 
make sure you're editing the Warp map property and NOT using AddWarp to change those, since you need to replace the old values.
i just realized i think i put them in the wrong place
AddWarps should override any older warp(s) from the same tile, unless something isn't working correctly.
Well they changed the size of the location, so they probably just need to overwrite the Warp property entirely
Shrimply did a map edit to the left and top, so the old tile coordinates are not applicable anymore
(Sounds fun for mod compatibility.)
(i have learned my lesson...)
β€οΈ it's fine, you're just learning map editing on hard mode right now.
Clint's place is definitely a challenge without rearranging his vanilla furniture
Hi there! Can someone help me with this error? For context, I'm connecting some of my fave farm maps (solely for personal use ofc) and I took the relevant bits of each content json and put them in one doc. It keeps throwing up this error and I have no idea what it means (super new to this)
!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.
oh my gosh i didnt realize that was a tool that existed ty!
thank you ive been using a non smapi json validator!!
connecting farm maps... i don't even know if it'd be viable since all instances redirect to the same farm warp
unless you mean just forcibly merging them all into a singular tmx then be free, commit crimes
I think there was a mod that let you have a bunch of farms side by side
making them custom locations with magic warps to my og farm map haha its my baby practice for messing with locations
I can barely use the space of one farm, no idea what I'd do with multiple lmao
i need a gigantic frankenstein farm idk why im built like this
it is possible, and it was poorly done. you need to download the maps made to this
what is not many and made to work as a solo map by themselves
Could also do the adding a bunch of locations and stitching them together with warps
I think you'll have to do a lot of work to make them function as expected though
does anyone happen to know where this wall is located in the tilesheets? (the lighter one)
"i fixed it"
farmhousetiles?
there is the meadows farm map though, and I was considering to make SDR patches for the other vanilla game map, so be able to create a giant frankenstein farm map that makes sense somehow, but you can just look and buy the two first farms the mod detects each time and they are put at the order you buy them...
Why are my fish caught instantly without a mini-game and only normal quality π
cmctfear.png
using skipfishingminigame mod?
(well, i still like the kitchen on the left side π)
No, and the second fish are caught normally
oh, you are adding new fishes. sorry, I just looked up now
did you registered a valid fish behaviour on Data/Fish for the minigame?
Yes, and my first fish was caught normally, but the second was not
Union types would be so nice huh
very strange. can't help. sorry
π« sorry! but who knows if i'll even write up the PR for it. i just know pathos tends to like a little discussion beforehand so people don't waste their time on things he won't consider
i thought about suggesting that but i assumed it would be either impossible or gross
It's neither!
dont be sorry! im always in support of more content patcher features like that. besides, depending on how its done CMCT might just still work fine anyway after its added
A custom json convert could probably do it!!!!
how possible is it to edit a mod to make so it doesn't change a certain part of a map? example: make the rustic interior mod not edit the farmhouse. does that just require editing parts of the content.json?
Are you changing a few tiles?
you would need to edit the map itself to use a vanilla copy of the tilesheets
Hold on, you mean that you want the code to exclude the farmhouse?
Fuck it.
it would probably work to make a personal mod only that just re-loads the same .tmx with the tilesheets present in your mod folder to force them to be used (though idk if the game forces certain loading with the farmhouse)
Ichor, if you don't do it in the next two months I might try to prototype the jsonconverter
you probably could also make the patch for the content.json not apply in the FarmHouse only, if you're okay with the idea of it reloading your textures every time you change locations
I'm missing context. What's the jsonconverter supposed to do?
(It's the other conversation happening at the same time.)
how would i go about changing an npc's default spawn location?
A vanilla character or a custom npc?
vanilla character
if you want to do it, you can have it. i'm unlikely to have done it by then, tbh
would that not just conflict with the mod already loading the modded tilesheets? or am i misunderstanding
I think it'd be easier to edit the code itself, but I'm not sure if that violates the mod's TOS
you can make the mod only load those tilesheets when you are not in the farmhouse
I mean....
I might not get around to it eitherrrrrrr
once you have a file you can do whatever you want with it as long as you dont redistribute it
So that's what the rule means when it says to not alter the code
like sure, maybe the strictest of people might say that by downloading it i agree not to edit it etc etc but. if its on my computer, im gonna do what i want with it, if its for personal use
what happens in vegas on your computer stays on your computer
ahhh i see. i'll work on editing the code then. thanks :)
you're not allowed to alter it and then upload it or give those edits to someone else
as that would be redistributing their assets that you modified without being licensed to do so
technically there are things you aren't allowed to do even on your own computer in the privacy of your own home, but if a tree falls in the forest and no one hears it etc etc.
technically we're all redistributing stardew assets with our mods
mostly
(pure C# mods that dont actually do that do not interact)
Adding a clause like that to my mod page
your mods are MIT ill just reupload it without that clause /j
(||NOTE that the MIT license takes priority||γ
TFW you mess up string syntax and type _fish.TryGetValue($"(O)+{id}", out var value); instead of _fish.TryGetValue($"(O){id}", out var value);
ferris...
wheel
the worst kind of bug, where it just silently fails to work. cruel
Extremely painful
Definitely didn't spend 20 minutes trying to figure out why it wasn't working since there were no errors
That'd be crazy ahaha
(ItemRegistry.ManuallyQualifyItemId)
Hey, I'm very new to coding in C# but I have quickly found out I suck at it. I am just trying to give Lewis different portraits when he is on the beach and my code is apparently too busted to run. Anyone know a simple way to do this?
You should probably be using ContentPatcher for that
even in C# the easiest way is probably to add an entry to his Appearance array with the conditions you want
Lewisssss
Lewis uses his base portrait for his beach look, it surely isn't a simple replacement
Is his beach outfit still hardcoded
Is it?
Hmm I don't see a Lewis beach portrait in the unpacked files
right i know for a fact im not doing this right.. π
i'm trying to make him not spawn in the middle of the floor... { "Action": "EditData", "Target": "Data/Characters", "TargetField": { "Clint": { "Home": [ { "Id": "Default", "Condition": null, "Location": "Blacksmith", "Tile": { "X": 13, "Y": 13 }, "Direction": "down" } ], } } }
Either way, you could probably set a conditional for 'currently on the island/beach map'
Fields, not TargetField
(there's still this bit in IslandSouth.HasIslandAttire, at least?)
if (character?.Name == "Lewis")
{
foreach (Farmer farmer in Game1.getAllFarmers())
{
if (farmer?.activeDialogueEvents != null && farmer.activeDialogueEvents.ContainsKey("lucky_pants_lewis"))
{
return true;
}
}
return false;```
ack i knew it looked funny
I'll try, again very bad a coding. If this fails I am just gonna say fuck it and let him keep the suit on for his portraits.
I would suggest just using CP for this honestly
You don't need any c# or coding knowledge to use content patcher, highly recommend starting with that
he's where he needs to be now :D
I am currently stuck at my computer editing pure .json files. trust me when I say Content Patcher is saving my bacon and I am still somehow burning it.
My coding adventures almost always lead to disasters.
Congratulations. I'll have to fix him soon too but for completely different reasons.
im gonna take a break lool i dont wanna look at the blacksmith anymore
Fair.
I will gladly say when I am being dumb and am grateful for everyone's guidance. Content Patcher is so much easier.
ok trying to make sure I have this i18nification right... for this section of my config schema;
"AllowValues": "true, false",
"Default": "true",
"Description": "Changes the worm artifact spot with the digspot from Animal Crossing.",
"Section": "Artifact Dig Spots"```
I need to put the token of these for the name, description and section? `{{i18n: config.Animal Crossing Dig Spot.name}}`, `{{i18n:config.Animal Crossing Dig Spot.description}}`, `{{i18n:config.section.Artifact Dig Spots.name}}`
I mean I think I might shorten the tokens XD but that's generally what I need to do?
Oh you actually don't manually add the i18n tokens for configScheme into the content.json
You leave the i18n tokens in your default.json and they'll still be used by the code
I think the ConfigSchema is able to peek into i18n's and uses the naming convention for it to show
ok
yep, that's just as awkward as I thought it would be, LOL
Might be able to get them both to move during an event though, if I can do simultaneous doActions
Not sure what I did wrong to get the cross-section highlight on the middle set of doors though.
From left to right, I'm using:
- SlidingDoorLeft, SlidingDoorLeftFlip
- SlidingDoorRightFlip, SlidingDoorRight
- SlidingDoorLeft, Sliding DoorRight
The left door in the middle pair has the highlight from the top section of the door in both the normal and flipped position overlapping, yeah
Did you make sure to use the correctly flipped transparent texture?
I'm guessing it's because I placed the relevant door tile on the front layer instead of leaving it blank?
I checked it at least three times, so I'd hope so?
But I could still have messed it up
All the front tiles get replaced with whatever you used as the bottom tile and the two tiles above it
So whatever your Buildings tile is, the game sources from that tilesheet and selects that one for the Buildings and then automatically places the two tiles above it on the Front layer
I didn't modify that behavior but I might because I think it's bad 
the ghosting is only there on the first frame (before it's interacted with) so I probably still have the wrong tile in that spot in my TMX somehow
Yeah it's literally the transparent tiles just facing the wrong way
Because they're only removed when you open the door
I'll look at it again once I've eaten, maybe the brain fog is getting me
So further badness really because it means however you design your doors they're going to be slightly wrong since they'll literally be your doors with a transparent overlay on them
I kind of want to try these doors with the broken 2-wide version just to see
Not a huge difference but it can push some colors just to the other side of wrong
Well they'll open right
But if you put a Buildings tile in the way of one side it just won't go away
You could leave it open but then you can just walk through
ah, so you're not able to get the TemporaryBarrier thing working for both sides
I just didn't even try, I spent a few more days on it than I intended as is
that's fair
So one of my descriptions of my config options looks like this: "Description": "Choose to enable crafting one large mayonnaise into 2 \"normal\" mayonnaises" mainly because I didn't want to have errors? But the i18nifier spits out this: "config.Mayonnaise Splitting.description": "Choose to enable crafting one large mayonnaise into 2 \" Is there no way to have "" in a string for i18nification?
I finished the original code for the doors in a few hours, figured I'd spend a day fixing my documentation
Then I lost a second day to redoing most of my documentation and fixing a bug I caused in my fireplace code
aww
well, I appreciate your door code sacrifice, it means if I ever want to actually use normal double doors, I can.
Rather than weird sliding ones that only make sense with a synced animation. π
I will definitely be tackling wider doors when I get some free time, I really want to make some more double doors lol
I can pass you my door PNG for the sliding ones if you want to play with those, LOL
one less sprite to make

Yeah that would help, Avi made me all the doors I used for testing, I would have lost another day recoloring like a buffoon 
took like, 10 mins
^?
here you go, roku xD
do I just have to use ''?
the i18nifier probably just cant handle escaped quotes
what you had originally with the backslashes is fine
but putting a string with "" are ok for the i18n?
as long as they are escapedwith the backslash
"config.Mayonnaise Splitting.description": "Choose to enable crafting one large mayonnaise into 2 \"normal\" mayonnaises",
yes?
yeah
I don't know why lowercase mayonnaises looks like a fake word to me, LOL. But the syntax looks correct.
is it time for roku to have a thread for ~doors~
Maybe, I'm waiting to see if anyone has trouble with my docs/examples
I struggled a bit before I realized I messed up on the Tile Property
considdering during the ENTIRETY of writing this out I kept mispelling mayonnaise
i gaslit you into making it but i haven't been able to get around to it
I started thinking the mayonnaise was a fake word
I'm hoping the examples are good enough to get most people past any roughness with my docs lol
I love word fatigue
It's such a wild phenomenon
my brainfog REALLY thought it was Action EMA_CustomDoor <key> at first.
Is mayonnaise not just the plural though too?
Before I was like "wait, no, you only get one Action per tile and that has to be Door"
I would have loved to be able to simplify it down that much though
i would never say "how many mayonaisse do we have"
how much is a quantity of one single Object of mayonaisse
Mayo is too liquid to quantify it outside of using the container for me. xD
but thats different from asking how many mayonaisses you have in the fridge
All y'all should make mayo mods for no good reason
Prismatic mayo
it's like moose
a collection of mayonnaises
Bonus points if you consume it and get the Magic Hair Gel effect
I think the problem is the way that the word is being used in SDV is not the way we would use it in real life lol
Clearly the game needs a mortar and pestle
the game uses it the same way i do
Mayonnaise is an object in and of itself, whereas in real life you would quantify it by the vessel it's in
i contemplated it but i don't ever want to look at tool
maybe a machine but that seems strange
I have a jar of mayonnaise, I need 4 jars of mayonnaise to cure my dark desire
making-mayonnaise-general
"how many mayonaisses do we have" is something i have said before and will say again
button confirmed drinks out of the jar
And to think this is all because I am making large mayonnaise
You have brought back the goopy curse
I can't say I've ever said that about mayo, but I've definitely said that about mustard.
jail for all of you
I'm not making the large mayo edible
i don't wanna hear that from snail honey
"How many mustards do we have?" sweats in bottles of mustard stockpiled in the pantry
Coward /j
imo its the same situation with mustard
"Description": "An almost absurd amount of mayonnaise, I wouldn't drink it...",
horseradishii
we're in jail rn, cheeto jail
hi-chew
wasabi, wasabis? 
btn 
ok another (maybe dumb) question. Should I indent the default.json?
Wasabeeses
whitespace is a personal preference
you are probably the 20th person to call me hi-chew
What about chu chu train?
this mayonnaise discourse is a fish-fishes situation, isn't it
i'll just judge you disrespectfully if it looks like nonsense if i have to debug your json
Like it looks wrong tho...
and I'd rather let an automated tool to the indenting for me
strangely i dont get that one as often
hey ichor so about brassica /lh
now if we're in the alternative universe where everyone is using YAML that would be a different answer
I can see now. Flower mayo
linkoid tried to bring our realities together
don't say yaml you'll summon linkoid
yaml
one fear
thing is...if I indent this one...I then have to do it for ALL of mine...and then upload an X.X.7 version or something
but u can use it if u want, yacp
Cornucopia my beloved
i dont think its particularly danger unlike many of button's mods
my favorite quote
(I suggest indenting all JSON files, and using .editorconfig and a text editor which supports it to enforce consistent indentation.)
none of my mods are any more dangerous than any random person making a C# mod imo
the danger is that power corrupts
Flavored mayo mod, mayo machine lets you add other ingredients to it
you cant delete all lightsources with BETAS
.editorconfig?
what is that?
has modding gone too far
Or is this a new chapter in mod making history
Mod where doing anything costs stamina
i should've really quoted that thing that chue said
Making mayo is half the bar
Climbing out of bed instantly costs 50% of your daily stamina
It's a standard file which describes the formatting rules in a repo. For example, here's the .editorconfig for Stardew Aquarium.
If your code editor supports it, it can auto-format the code as you type based on the rules in that file.
New quote added by aviroen as #6283 (https://discordapp.com/channels/137344473976799233/156109690059751424/1298337050180976653)
(i know part of the cornucopia mods lets you make flavored mayo, but will this new and unheard of mayo mod let you make fruit mayo... eel mayo...)
Pufferfish mayo
y'know i'm glad atra is retired
New quote added by atravita as #6284 (https://discordapp.com/channels/137344473976799233/156109690059751424/1325662874034638919)

waiting for that one, huh
hey friends, (C# GMCM) what is the incantation to get the current value of a config widget (during edit, before the user hits Save)? simple rtfm answers like "reflection" are acceptable
that is very cursed knowledge
i thiiiink GMCM lets you ge those normally?
There is a method in the api for that
I mean... I kinda no longer post my stuff to github? Like it's a bit troublesome to have to have to manage the git repos? But I can start doing it again...But I might just auto indent because it's easier.
Near the bottom
OnFieldChanged
bueno, thanks friends!
okay nevermind not as cursed as what i was thinking
if the api has it, i'll use the api. i'm not a monster /lh
(I suggest making content packs open-source, but that's not needed for .editorconfig. It can just be a folder on your local computer, it doesn't need to be a Git repo.)
I never used editorconfig cus the default settings for jsonc plus the content patcher schema is good enough for me
!vscjsonc
In Visual Studio Code, go to File -> Preferences -> Settings, then search for "associations", and in the "Associations" setting, click the Add Item button to add an item with key *.json and value jsonc (see image).
If you are making a content pack for Content Patcher, you should consider using its json schema so that VSCode can tell you if your patches are valid, you simply have to add
"$schema": "https://smapi.io/schemas/content-patcher.json"
at the start of your content.json file.
my stuff is open source. I just don't upload them to github. But I will start doing it again because I think it might be needed so others can more easily see what I have done.
The schema thing should be supported by other editors too
Well, open permissions isn't quite the same as open source, but for CP mods it's probably close enough
i mean not necessarily for others, but incase you lose your own files, though ig if you're only doing content packs you don't have to worry much about recompiling
(Tip: besides content.json and manifest.json, Content Patcher doesn't actually need the file extensions to be .json. So all your included files can be .jsonc if you want.)
hides my folders of json5
Using git also give u nice version control stuff
Got it. Using .Dat and .bin
And if u hate GitHub specifically there's other git providers
(if your mods are meant to actually be open source then yeah you would need to fix your nexus permissions and add a license saying so)
Since I still haven't released any CP mods, I mostly like git for CP stuff because it makes it really easy to share
and yet .json just...works better for me XD
direct link, points at it right there
saves me the hassle of typing it out if i know i've already done something similar when i'm helping people too 
If it's a snippet, I copy paste and then spend the same amount of time fixing all the indents because Discord ate them
ggVG= my beloved
noyes
gg - go to beginning of file
V - enable line select mode
g - go to end of file
= - indent
oh a linux thing
-# you and you damn vim users
(it's vim)
It's a tool ofc
i heard flavored mayo
We're brainstorming an aloli mod that requires a custom tool, goes bad in two days, and requires half your stamina bar to make some
Sounds amazing, where do I sign up
Irl
Nevermind
Meanwhile I'm making mayo with sichuan chili oil
what type of license should I use for my stardew mods???
What's the difference thoooo
big, big difference between those two specifically
Non-judgmental guidance on choosing a license for your open source project
MIT = anyone can do whatever they want with your stuff at any time
GPL = they can do that but they also have to put the results out as GPL
along those lines. ish. im not a lawyer
MIT places almost no restrictions and can fit on a business card. the GPL has a bunch of (good, for certain applications) restrictions and is so long i've never read it in its entirety
also you may not necessarily want to license your assets (art, writing, etc.) under those licenses
Realism mod that makes myao machines also require oil
myao machines 
I mean I want people to know my mods are open source, but also don't want people to take my mods and turn around and sell them if that makes sense.
Wait really?
being able to see the source code =/= open source
your mod (and I'd say art/writing in mods overall) would be better served with https://chooser-beta.creativecommons.org/
open source means your stuff is open to other people taking, modying, altering, redistributing, etc. your stuff
placing restrictions on what they can do with the software means it isnt open anymore
What mod are you making again?
I just....I don't want people to take credit for my work. Like I want people to credit me for ideas and such.
content patcher, for example, is open source (MIT I believe?) which means if i wanted to, i could copy content patcher, make some edits, and sell it somewhere else if i wanted to and had a buyer
they would need to include your license in it, still, with your name as the license holder
a lot XD but rn I'm working on Large Cheese and Mayo, I'm adding credits to you and the creator of Dairy and egg product overhaul mod. You because I'm using some of your code, and the other person because I'm basically turning their mod from JA and PFM to soley CP
MIT/GNU does require attribution
I see
the only commonly used license i know of that doesnt require attribution is the Unlicense
and even that isnt very common
so the first thing would be that typically, if you used code from other people, you no longer have the right to license that code (in this case it doesnt really matter since it's a few blocks of CP "code")--because you're not the original creator
But that immediately makes the licensing thing not relevant
wtfpl is basically the same. no idea if it's as common
i dunno what that even stands for
_<
I mention this because if you end up with a mod that has art, etc from other people, you'll want to be considering what the permissions are for those images before assigning an open source license to the project
you can license your portions of code under your own license but 6480 is also correct that you cant change the terms of a license for stuff you didnt make, unless you have permission to relicense it
but aside from explicitly "i don't care" licenses like that, and public domain dedication (which is only questionably possible depending on your territory), every license requires attribution, so your name will still be in the thing (as long as people follow the rules, which they don't always do)
(and that "you can license your portions of the code" also has caveats depending on the license of the things you used)
I mean I'm not 100% copying your code, nor am I copying the art from either mod. I'm using your code to guide me mostly... >_<
Gods above I feel like I'm being dumb >_<
And like what about art I get commissioned for a mod? Then does that not let me license it?
also, if you accept translations for your mod and dont have a license, then the people who made those translations have ownership over them, and you cannot redistribute those translations under a new license without asking them for permission
I'm so confused...
Generally the convention for content pack mods is to not provide a license other than nexusmods page permissions and other permissions stated by the author/artist. I don't mind whether or not you do choose to license your work. But I want to let you know that 99% of content pack modders generally don't think about this question
if you commission art, you need to ask the person you commissioned about licensing
This isn't really something that you have to worry about if it's confusing for you
but the wiki says....
you dont have to make your mod open source
basically: you don't need to put a license on your git, you don't even have to make your git public
but the wikiiiiii
the other side of the licensing coin is that the stardew community is, broadly, very good about this stuff, and for the most part you don't have to worry about your work being stolen
The wiki was written by people, it's not a legal document
(also the open source thing is mostly relevant for C# code mods)
(also, licensing stuff IS confusing, so its not something you should feel dumb about!)
I'm just trying to give you some context on this
nothing in that wiki page says its required of you to do
I know...I'm just like...getting confused
i feel like we go over this licensing thing at least once a month 
It's a fairly common issue to face lol
like could I just put in my ReadME to ask permission for the art?
open source is just recommended for a modding community like stardew because it lets the community collaborate and work together in the event that a mod author is no longer around or too busy or what have you
Or like ask that people contact me for adding translations?
Like I just wanna make sure I'm doing things right...
you can do that in your nexus profile
you might not have permission to give the art to other people
buying art does not always equate to buying the rights to that art
Well I mean for the art I made
and as for translations, even if they ask you first and you accept their translations, they are still the owners of the translations
The subpar bad art I made XD
if its art you made you decide the rules withi t
Even bad art can be licensed, and stolen, just look at NFT's
you can also license different parts of your mod differently
my books mod, for example, is not open source, but the translations specifically are all under MIT and each of my translators agreed to that
(which did result in me losing two languages at one point, bc i did not think about licensing either when i started and could not get in contact with two translators to relicense. oopsie)
But then...like. how do I do the different licensing for different mods?
I'm sorry I'm asking so many questions...I just want to do right
you can decide which licenses you want to use for each mod, if any license at all
if it makes you feel better i haven't added a license to any of my mods at all, content pack or otherwise
really, the important thing to consider is that all a license is, is you defining what your rules are for people to follow if they want to use your stuff
you can make up literally any rule you want. its your stuff. you own it.
MIT, GPL, Creative Commons, etc, its all just preset rules written by lawyers
Licenses lose a lot of power if you're not around to try to enforce them also
you can write "You're only allowed to redistribute my mods on a full moon in November." and that is a license
The community can try to push back against theft, but it's hard to get some places to listen to a bunch of randos on the internet
people use the presetr licenses like MIT and GPL and whatnot because they didnt have to come up with all the legalese to close all the loopholes and requirements they wanted
So would I be allowed to just say for each mod what you can and can't do? Like would that work?
Or like...Idk
I'm getting hella confused
Since most of my modding activity is art-focused, I have a blanket permissions clause available on my nexus page and github that applies to my artwork in general, and individual agreements with people who commission me to give them further rights over controlling usage of the artwork, or individual statements on specific mods containing modified work from other people. I dont use a preset license because I dont feel like they fit my purposes (even though I know Pathos would say otherwise π)
Yes
that would work. it just wouldnt be called "open source"
Pretty much everyone does that
So I figured out my issue: I forgot to flip the actual door in my PNG for that one sprite.
oops
oopsie...
Just call it your permissions..
NerdPL
you wouldnt really call it anything
who knows, we could be moving from NameCore era into a whole new NamePL era
I'm still really confused...really scared, and really worried about screwing EVERYTHING up...
I think this is a sign to maybe put the question off for another day
as long as you dont give permissions you dont have for art/assets you didnt make, theres nothing you can really screw up
but i also agree with 6480 here
i've been putting it off for 4 years now. you're good
_<
If you mess up your license, you can always start a new repo and try again
I'll just specify things in my ReadME(s) for each mod...
i put it off for a while and then at one point in here i just said "If I go AWOL and you can't get in touch with me, mod authors in making-mods-general have permission to do whatever they want with my mods" and bam. thats my license. s'all i need or want right now
That's a good policy
i have forgotten the quote number for that one dammit
jam quoted it for legal proof or whatever /lh
ah, the classic join-my-discord license
"Mod authors I like can do whatever they want with my mod. How do you figure out who I like or not if I'm gone? Fight amongst yourselves."
"If you can't get in contact with me, please don't try. Just take my stuff and go"
"if you have to ask you cant afford it" energy
"Make sure you set the recording to pay-per-view so I can get royalties"
ok...I need to just not freak out I guess..
Modding is a great way to get introduced to this
The stakes are insanely low, basically non existent
yeah to be perfectly clear, the odds of it mattering are practically 0, unless you make a mod that gets a ton of unique DLs that breaks in 1.7
and the odds of it mattering right now are even more practically 0
content patcher will never break, 1.6.9 release was a hoax
There are still public decompiles of SDV out there, so we're doing just fine
Well I got what I need for the art I commissioned at least. so there's that.
Any console command to invalidate assets?
patch invalidate <asset>
Aren't the patch commands only for assets added via CP?
everything CP does is routed through SMAPIs content pipeline, which is whats invalidated
anyway tl;dr the game doesn know the difference
you are perhaps thinking of patch reload
yeah, the command should work on any SMAPI-edited asset, despite being added by CP
or patch update
I think I must've tried patch reload last time and it complained about CP not having loaded it
patch reload just makes CP reload the actual files in your mods folder
Ok neat, less restarting to game to see texture diffs
like re-read the .json itself or the .tmx or whatever
yeah, reload is for a specific content pack, invalidate does whatever
patch invalidate
Usage: patch invalidate "<asset name>"
Invalidates an asset from the game/SMAPI content cache. If it's an asset handled by SMAPI, the asset will be reloaded immediately and Content Patcher will reapply its changes to it. Otherwise the next code which loads the same asset will get a new instance.
Nice, thanks
Curious if anyone has ever tried to convert the stable to a true building, or if there is just too much hard coded horse stuff
wdym "true" building
apologies I still don't quite follow
So the Stable is just a png file, unlike the barn and coop that have the png building, but you warp to a building map interior
Like you want it to have an inside?
Basically, has anyone ever turned the Stable into a building with an interior
Hm, would require de-hardcoding the horse a bit
horse is a disaster
yes, making it have an interior is the easy part
not recommended
the hard part is actually making the horse spawn inside
Yeah, I figured it was a hardcode thing, but I have a full day of professional development tomorrow and need something to dual focus on.
New quote added by ichortower as #6285 (https://discordapp.com/channels/137344473976799233/156109690059751424/1325682025335754814)
i tried to make a mini framework for horses with custom sprites and sounds. the goddamn hat code, man
never again (probably)
not a fan of every single hat in the game having to be manually fitted with your own two hands?
I have all the spriting stuff down. This is just a scope creap idea I was thinking about.
you really want dual focus?
though to be fair horses don't have opposable thumbs
do you really want the crazier idea i have?
modernize the crafting/cookingrecipes to have the object data, and make sure it's backwards compatible 
isn't the hat code for every non-farmer just like a horrendous switch on what the current animation frame is?
I cannot listen to 8 hours of pd and stay focused without a secondary focus
please do not touch cooking recipes. this is all i have left
SpaceCore tried that. Better Crafting tried that. Most mods still aren't 100% compatible with both
become another drop in the bucket, slave to clickCraftingRecipe
Heck I tried that
Put it on the 1.7 wishlist
I have no desire to mess with recipes at the moment
But yeah, horses are such a mess there's really only a couple of mods that have messed with them
I'm guess the hardest part would be the returning to it's spot at night
Honestly could just warp the idiot in the morning
Who cares if they wake up intersected with a building if they'll just teleport right away
so in machines...what does min/max stack do? and if I just keep it to defaults is that ok?
I already have the ability to have different horse skins for all horses in a save by configuring the body, pattern, hair, saddle and accessories, and they have the NPCMapLocations for each horse
i think my other dumb idea is /yet another/ interception on maps, where the night/day tiles can have custom tilesheets instead of the dedicated uhhh untitled tile sheet
cuz it's not in the modding machines page
Just thinking of other things I can add to flesh it out a bit
so those are just the regular item query fields
New quote added by aviroen as #6286 (https://discordapp.com/channels/137344473976799233/156109690059751424/1325684211033575477)
I wonder if horses are "found" correctly in farm buildings 
several years ago I did an unofficial fix for the horse whistle mod, and teleporting them to certain maps would just kinda lose them overnight* and generate a new hatless horse
but yeah, 1.3 era logic so maybe it looks harder now
Hm, I leave my horse in all kinds of places you shouldn't, so I think it's fine now
1.6.9: When you leave a horse/mount in a temporary location, it now returns home when that location is removed.
One of the mods I made forever ago makes it so you can take horses into indoors maps and I frequently leave it in them lol
Yep, deep dive into horses it is.
it might've only been an issue on temp maps (the mines) anyway, I just never tried instanced buildings back then
the rest I assume is just part of NPC day update and/or location update
That mod is only half working now, when I try to leave indoor locations on the horse I'm dismounted, not sure what's up with that
oh right, the main nonsense I added to the unofficial was farmhands pinging the host to find their horse, because my coop friend's horse kept getting lost indoors 
Kinda like leaving a cut scene after being on a horse?
non-active locations being the issue
But I can't get back on the horse since it's still inside
I just horse whistle
I made it for someone who was doing a walk to the desert mod, but I dunno if they're still making mods
that one's still around but as a "redux", so I think someone else took over at some point
it spawns cornucopia forage with FTM without listing the mods as a requirement, so people keep reminding me 
But the π« said it was your mods item
i wish to have the amount of "i don't care" that esca has
so. potentially dumb question bc for some reason my mind is just blanking super hard right now. if im Harmony postfixing a Property Setter and i want to alter or read the thing that is being set, how would i do that in the patch? in this case im postfixing the setter on Game1.currentSong and i want to mess with the ICue that the property is being set to.
(in this case it never gets that far, FTM just has info-level logs saying "hey i don't know what adzuki beans are, skipping this spawn")
That's good at least
it's agnostic about where the item came from, so usually there's no obvious source mod name
(or at least for older IDs like that)
it almost sounds simpler to transpile and use the arg
I have had a few WAG forage items show up today as π«, but it was in the bug lair and ginger island, first time load, so I wonder if they were from the old WAG packs and those maps were created back at the beginning of the save
None since, so Im not worried about it, just a curiosity
so I think under the hood, that's a method with ICue value as the one argument, so using that or ref ICue value might work
(never tried myself)
could try with object[] __args if that isn't viable? args[1] would probably be value
https://harmony.pardeike.net/articles/patching-injections.html#__args
could be, yeah
unless specifically given an expiration date, FTM forage at least is just spawned and ignored, so if the ID vanishes (e.g. the object data mod is removed) it'll turn into those
ill be honest i always completely forget Harmony has other ways to get the args that arent __name
it won't spawn new error items, but existing items that lose their data will usually stay
oh nice i can even do ref CueWrapper value too since i know thats what it actually is
perfect, thank you both 
___fields behaviour is the one i forget most often. so useful
but also whenever i remember about it and go 'a-ha' i'm using a transpiler and it's pointless
i used to like fields but now __instance + publicizer my beloved
I kept meaning to try the fields one, but I think all the use cases ended up as transpilers anyway, yeah
i am reminded of yet another violently gendered thing
I explained the gender code to a terrified non-modder once, 10/10 recommend
Them: what gender is the dwarf
Me: great question! You will regret asking
Is there deep lore behind the dorf 
gender is a spectrum, ranging anywhere from true, false, 0, null, and undefined

The fair calls the dwarf she because of how the code handles undefined characters, or at least it used to
maybe even empty string. imagine
just canon nonbinary
as we all know, gender is determined by whether GreenSlime.cute is true or false
(something I accidentally made CA comment on in like, 1.5 beta)
petition to move bool cute upwards into NPC.cs
Ah yes I remember now, the three genders: cute, cool, and prismatic
and now I've found yet another slime setting I didn't know about 
specialNumber = new NetInt();```
(it's just an offset for prismatic slimes so they don't all have the same color at once)
fascinating
What's up with "???" in characters.json? I just noticed it since I have that file open
I think that's Krobus?
No krobus has a proper entry
Might be the "shadow guy"
Oh, is that the uh, shadow guy who runs away in Winter?
...huh
it's involved in making shadow enemies not hit you anymore, apparently
TextureName: ShadowBrute
Shadow: null
interesting
it checks friendship level on that
Huh!
Shadows don't cast their own shadows, obviously.
But the shadow guy doesn't use the standard brute texture
Shadow Guy just uses Krobus' sprite, yeah
I always figured that was just plain krobus honestly
The interaction is weird and I don't think there's any indication that it is
I was assuming it was just dummy info in case an NPC or monster loads "???" somewhere, e.g. due to a default or weird legacy stuff, but I'm not seeing it come up much
I assumed it was Krobus and it's just a really early cutscene Ape never revisited
Like maybe it originally took much longer to unlock the sewers
Birthday 0 seems like it would cause problems on a fallback entry
oh sorry i immediately ignored the channel after finding the relevant code
do i give ya'll whiplash
null 0 birthdates are fine, the game doesn't care
On my first play I didn't unlock the sewers until after that cutscene, and with that order of events it worked well, so that's probably it
That's what this chanel is FOR
if i am to patch the girlfriend/boyfriend/husband/wife thing, i need to backtrack through sheku's stuff to make sure i'm not stepping on RSV's toes
oh sure, here
Is that not because every other term is gendered?
Or for localizations with gendered terms
yeah, doors were finally set free, i'm now slowly making my way through the rest of the game now ig
anyway this is cursed
)))))));
I like the unnecessary one wrapping the whole thing
i assume i need to target both the profilemenu and the socialpage, huh?
Not sure where profilemenu appears
same tbh
Oh, is it when you click on them in the social page?
the little mugshot thing maybe?
π are there mentions of any sports in the game, outside of gridball?
I can't think of any 
doesnt alex have a football
They call it gridball though
oh
Technically there's animal racing in the desert festival I guess lol
it is
just checked for a list of random sports like SDV has for "other town" names, but I didn't see any
and there's this, but it's vague enough to apply to a lot of things 
"SportsShirt_Name": "Sports Shirt",
"SportsShirt_Description": "Knock it out of the park with this classic look.",```
how many other sports do you knock things out of the park besides baseball
maybe it means being really bad at football
gonna call it Batball XD
Diamondball
oh is it because it's using tiles, so therefore it's "gridball"
maybe to avoid confusion between american football and everywhere else football
I just assumed it was because the field is gridlike
gridball is a real life sport lol
oh it is?
(so clearly i know nothing about sports)
...oh, grid[iron foot]ball
first google search is reddit asking what the hell gridball is
I've never heard that, but I guess 
first search result LOL
The name sounds as ridiculous as pickleball lol
when was stardew released
80 years ago
February 26, 2016
Gridball is a new sport created by Steve Porter from Lisburn in March 2018.
....
gridball canonically fake sport
They stole it from CA
How do you fuck up table tennis?
the ball is big
paddles as small as the-
(oh, there's exactly one direct mention of baseball in the hungarian hat i18n
)
"DarkBallcap": "Dark Ballcap/TΓΆkΓ©letesen rΓ‘illeszkedik a fejedre./false/true//SΓΆtΓ©t baseball sapka/111",```
(it's real! baseball is real.)
translations don't count /lh
aww
I mean, the base item is called a Ballcap though right?

the only protection you get to wear in gridball is a cap 
Really captures the essence of football
Ove never made a mod for Stardew and I was curious as to if someone could point in the direction on where to start
but a ball instead, just to piss you off /lh
In a world with magic, you would have to wear less protection to get better concussions
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually itβs easier to start with making content packs, since you don't need to learn programming.
Oh thanks
we can also help further if you know what kind of mod you wanna make
π this event im scripting is already looking long.. whew..
The docs and wikis are chock full of good info
I don't quite know yet, I'm just now learning c# and coding in general
Ok thank you
...oh, Alex says volleyball is real in 1.5
"Resort_Wander_2": "I wonder if anyone would be up for a volleyball tournament.#$e#Don't worry, I'll go easy!$h",```
I should have looked over here first before DMing you roku, didn't think you'd still be around xD
1.5+, sorry, it's still in his resort stuff
Oh, I didn't even notice the DM, the notif icon is so damn small
just no other mentions until that point
LOL, it's all good. Just more door stuff
well, so far i have
(Gridball)
"Seems popular in the valley, yeah? The Mullner boy's usually outside tossin' one around."
(Track)
(Swimming)
``` for my options...
idk anyone would want me to list out every possible sport XD
(his other wander line is about frisbee, which is both a specific trademark and a sport
)
Ultimate Discus
(for some reason i was going to ask if steak was a sport, thinking about his event with dusty)
Only for the dog
playing disc golfβ’οΈ with steaks so dusty joins in
I guess those are the notable ones I can easily search, though stuff like track/foot races/etc could be assumed to exist ig
(oh right, that's on the list already
)
another question related to earlier: does anyone know off the top of their head the very first place a Cue is told to play audio or send audio to a buffer or whatever? the issue im having is im trying to update some variables on the Cue object itself for playback, and the methods ive tried prefixing/postfixing so far (including Cue.Play()) are too late.. the effects i want take place, but only after the first little chunk of audio, which is like half a second. so the music plays normally and then suddenly changes when my changes take effect (presumably from some Update function somewhere?) in a very jarring way
XNA's audio stuff is a little too convoluted for me to help much, but I think modifications to cues involve some OnModified events that get invoked by Stardew's AudioCueModificationManager
not sure if that's what causes the delay before it updates
not seeing any obvious precursors to Play() itself, so far
(that might also be limited to Data/AudioChanges modifications and not direct C#)

that sounds like i'm being haunted by a ghost
i guess this mod will just have to go on the backburner for a longer while cuz i cant figure it out
i cant just edit the audio before it plays, either, because I actually need to edit stuff on Cue._soundEffect, but _soundEffect does not exist until the Cue plays :u
you'd think editing the SoundEffectInstance before it gets assigned to that would work, but you would also be wrong
i figured it out and can now smoothly transition between the two modes too 
Can some one help me to find where the documentation is dealing with character locations at a festival? I am trying to move a couple of NPCs around because they are on top of each other during the egg festival. I messed with the numbers and had some really unexpected results.
this is the one with setup and mainevent positioning, afaik: https://stardewvalleywiki.com/Modding:Festival_data
Thanks!
is there a "When" call for "player has full health" ?
i searched a bit and found nothing on that ΓvΓ
oh β€οΈ thanks
now ..do i want to unclude this just for 1 thing to be cooler to use Γ-Γ
\
keep in mind this can only update at most once every 10 in-game minutes
hmm ok thats then not working with my idea >.>..damnit
(and you need to tell it to update that often)
would it update when you leave a map?
it can, yes
"Update": "OnLocationChange"
You gotta put the code in the same chunk as "Action" and whatnot
uhh then i could still use it ..since its combat related and mines are not that big ΓvΓ thx<3
dump for vulcano but well for the funs its fine
you guys know how I might be able to unlist a config option in GMCM? like, lets say I have option 1 and option 2. i only want option 2 to even show up if option 1 is enabled. I can think of a way to do it, but I was hoping there might be an easier way. i was thinking something like OnFieldChanged => case id: (refresh thing here or smth lol). is this possible or am i being weirdly difficult about this lol
not possible without great black magic hackery
damn
GMCM just isn't dynamic like that
then for my second question, and this is a little embarassing to ask as its prob obvious, but would unregistering and reregistering the config have any sevre consequences to include resetting all of a users settings to default π
GMCM doesn't care at all about the actual settings model
it's you who provides the model
GMCM doesn't even know it's working with one
so unless you do something stupid, it couldn't possibly reset the settings
but you can't unregister and register a menu you're currently on
last time i tried to do that, it just kept the previous contents
you could hack around and close the menu, unregister, register, and open the menu again, all in code, but i think it may need to be across multiple frames; and you also lose any pending changes that way, and you also lose the scroll position
and it slowly becomes great black magic hackery
yeah im seeing now. i had a whimsical idea i think would work but im really lazy and the laziness is starting to win out lmao i guess ill investigate some more sane alternatives first
my current GMCM question is "how can i set up an AddComplexOption so that it actually consumes zero height in the widget list?"
i have a couple with height: () => 0 but there still seems to be some padding or something and the extra pixels are driving me mad
(negative height does not work, i tried that)
i'm doing live preview shenanigans and there's enough free space (next to checkboxes) for me to draw the previews in the widget column without inserting vertical space, but when i put in the complex options with height 0 i get uneven gaps due to said padding and i am Botheredβ’οΈ
is there a guide somewhere on how to look up how something works in the games c# code? I would need to look up how the TV works
i think there comes a point when GMCM just isn't meant to be used for what you need
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Thank you!!
in case anyone else needs to know this, the padding appears to be hardcoded in SpaceShared.UI and there's no obvious way to circumvent it, so it looks like i have to either live with it or move the complex options somewhere else so the padding isn't noticeable
i think im missing something i have no error but it doesnΒ΄t work
is the spiderbutton thingy correct?
yes
it is
i think i would work when i write is in a diffrent way ..at least its mostly why my things fail Γ_Γ
i guess i'm just not understanding the end product, i assume you want the projectile to do a different amount of damage based on the player's max health?
like current, or did you mean to count stardrops
beyond that, you wouldn't be able to use the BETAS query like that, it's meant for trigger actions
oh sry no i want it not to fire when i dant have max health ..im not sure i under stand teh condition write in the patch thingy
sounds like maybe legend of zelda master sword full-health-sword-beam
there is not a way to do that currently, no
and I don't think there's a way to do that
correct
yeah that sounds like fully custom c#
i doubt you can do this via content patcher, yeah
thats why i use the Spiederbutton conditions i thought it would do it >.>..
but might be my lenguage barrier at that part
yeah that's my fault for suggesting it because i thought you were using trigger action queries, not cp conditions
wordsT-T
a couple issues with the approach, i would think, including that i think a spawned weapon wouldn't see updates to the weapon data after the fact, and you'd have to spawn a new one
no worries
BETAS contains game state queries (GSQs) that can only be used where other GSQs can be used. Content Patcher "when" fields is not one of them.
(even if content patcher when fields could handle gsqs, this is updated at most once every ten in game minutes)
yeah im fine with the update thing was curries if at least its kinda possible
they must be a way to turn projectiles off XD
not necessarily π
i just want to much Q-Q again
anything is possible in the land of C#
Q-Q ...im an artist mostly im happy that i can basic shit
crazy enough, it can be probably made into a trinket via trinket trinker, but uh, that is Pretty Advancedβ’οΈ
well i write it down for future me Γ-Γ
...becouse i need to do my last tilesets for the update
but thanykyou everyone for the help β€οΈ
Sounds like I need to get a move on with the NPCs again
Is there a tutorial to make a custom tool?
Is there anything you're having a hard time with?
Motivation probably lol
That's valid lol
i don't know of one. tools are C# territory and i believe there are some cursed parts of the code for them, so the approach will probably be unique to what you want the tool to do
People have fought the tool code and won, but it's rare
I keep getting stuck on the art because there's just so much of it, LOL
Right now Shane's drunk portrait is my nemesis, because I'm having trouble redrawing it with Ingo, and then I still have a few more portraits to go before I can jump back to sprite work (which I find way easier, usually)
I have maybe 5 portraits left, they're just frustrating me at the moment.
Should the pinned message here be updated to direct to the new modded suport area?
Good catch, yeah, that should probably be updated to #1272025932932055121
I know quill, I know, someone is reading the pins. It's a miracle 
this particular message, for ease of finding it later for editing: #making-mods-general message
There's so many pins though
Pathos will occasionally re-pin the directory message so it's at the top
π« π π would be cool β€οΈ
but take your time
Some of them need still code tweaks for events and scheduling/home repositions, but otherwise, most of the code should already be done for them, it's just the art holding me up. >_>
I did all the pre 1.6 dialogue ages ago, so only need to update the new lines.
@ivory plume Pathosssss assistance needed 
I read them myself every time I do a cheetoing, so I can grab the wiki link for them modder's list!
I tried searching but didn't find quite what I was searching for, so thought I would ask: Is there anything like a checklist anyone uses for making an NPC? I am going through general info and things, but get distracted or overwhelmed. Like "Make Sprite" (check), "Make Portrait" (check), "Make home map", "Make Data/Characters", etc. etc.
Honestly idk, i just move as i go...
I made the sprites/portraits first to get them out of the way, then started dialogue, as it's the bulk of the work i need to do
Just curious if you are ding a live preview, how are you changing the image dynamically?
I have a roadmap of sorts that I'm using for the Legend of Zelda NPC mod I've been working on for a while now. There's so many of them that I needed it to keep me on track.
And it's basically just:
- Sprite
- Portrait
- Home / Schedules
- Dialogue
- Events
- Festivals
- Map strings
which is kind of overkill, but then, I'm doing a complete replacement of the vanilla NPCs, so I have to be thorough.
That helps a lot, @latent mauve (hello again, btw). I just need something to help me stay organized. I started some of the data things, but got a little frustrated with "Home" because I didn't have a proper map. So now I do that then come back and... just wanted some idea to make it flow a little better.
Feel free to use my Pelican Valley Loft NPC Apartments mod for a temporary home while you get the rest filled in (hi again!). π
Or you could use the non-mod option of setting Home to the town square (I think that's the default still) and changing it later once your map is implemented.
AddComplexOption puts in a widget where you specify the draw function, so you get to control how it renders. i use OnFieldChanged to change some static fields in response to the user changing the other widgets, then draw the complex widgets based on those values.
see here for detail: https://github.com/ichortower/HatMouseLacey/blob/develop/SMAPI/Config.cs (look for Register() and follow from there)
@gaunt heath Done! Thanks for pointing it out.
Awesome, I will look into that. I was using the addImage, but I am pretty positive that is non updatable and static
!npc You can also use the tutorials and templates for NPC creation to get an idea of a checklist too.
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
Hello, i need to find somewhere a list of WHERE i can trigger cutscenes... like if i can trigger them AFTER day ends , etc ....
https://stardewvalleywiki.com/Modding:Event_data#Event_preconditions may be what you are after
Sounds like there is not a context where DAY ENDS .... so i would have to make it at the start of the day i guess
Keep in mind that you will have a hell of a time with a cutscene in the farmhouse
it sounds like you want a night event
If so, check out this framework https://www.nexusmods.com/stardewvalley/mods/22612
Hello! Could you please help me with something? I'm trying to translate a mod into Spanish. I have extensive experience doing this, but it's the first time I've encountered something like this.
I'm attaching a screenshot. Normally, when what's shown in the screenshot happens, it's either because the i18n folder is misplaced or the quotation marks were omitted. However, the first shouldn't be the reason, and the second definitely isn't.
Do you happen to know if Produce Framework Mod is compatible with i18n?
{{i18n}} is a content patcher token, so PFM would need to support it explicitly i think
...which breaks when GMCM updates (speaking from experience).
{{i18n}} is a Content Patcher token, so it'll only work in Content Patcher packs. You'll need to use Producer Framework Mod's translation system instead; you can search that mod's readme for 'translation' to find the relevant fields.
Then I guess I have to do a direct translation, replacing the English text with Spanish.
check out the link pathos gave you first. looks like PFM has a different way of handling it
ooooh Now it makes sense.
Yes I will check it, thanks guys
(optional) The translation key. This is the key in the i18n file where the mod will look for the format of the OutputName in other languages. The value of this key follows the same rules of the OutputName property above. Default is null. "PFM only supports one translation name per output index."
Now I understand, thank you.
Please help π I have no mini-game and no quality when fishing. Everything is fine with vanilla fish, there is also a mini-game and quality
It seems that there is no problem in the files, textures, description and everything else loads, but there is simply no mini game and quality
Do you have a mod like EasyFishing installed?
No, I'm fine with others, but not with mine
There are no mods that do anything with fish
That's so weird
did you set a fishing difficulty..?
That's why I wrote here, because I don't understand what the problem is at all
yep
I can take a video now and send it here if needed
Hi there, hello. If I am seeking some help writing a content patcher mod, where do I go?
Here
right here!
hm unfortunately im not a fish expert...i know there is a guide somewhere on making fish, maybe you missed something?
Oh cool LMAO I'm trying to have something trigger when the player has read the Treasure Appraisal Guide. Using "WalletItem" did not work. Is it a different code or just not possible?
(Code on github: https://github.com/BucketListMod/SimplePepperRex/tree/wip )
But no, as if he didn't miss anything
I checked all the files and everything should work fine
But for some reason it still doesn't work π
(are you using a mod someone else made, or making one and having problems while testing?)
I do it
Everything was fine with the first fish, but after sorting through Include, the mini-game stopped working
trigger immediately or trigger after a location change/time update at the earliest?
also what are you trying to trigger? a patch?
also, you dont want to use Entries when changing single fields on existing things (like the dino egg and mayo prices)
you want to use Fields instead
using Entries here means you are setting every other field, the ones you didnt write, to their default values
Essentially I want the Dinosaur Mayo to get the x3 price Multiplier the eggs get without changing it to an artifact
Oh I didn't know this, thanks!
if you want it to change immediately, you can't do that with just Content Patcher, and existing mayo will not have it's price changed, only newly spawned mayo
π
iirc for the new stuff the HasWalletItem token will check for the stats that they apply to the player, so I think you might need to check for the unqualified item id of the treasure appraisal guide (since books name the stat after the book)
im not 100% on that though
Thats honestly fine because it's for giving a sense of progression so that big dinos feel worth the time and energy, and this means you can still have small dinos for a while at the vanilla price
Where would I find the unqualified item id? Objects?
Data/Objects yeah
all the books have a name like "Book_Name" like Book_Horse
but IDK off the top of my head what it is for the treasure appraisal guide
Thats fine, thank you friend! I will go digging
!mh
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
agh my bad! Thank you!
Yayyy I just made another mod https://www.nexusmods.com/stardewvalley/mods/30579
Alright sooo "HasWalletItem": "Book_Artifact" does not work, SMAPI says "Book_Artifact" is an invalid condition. But I also see in Data/Powers something about "UnlockedCondition": "PLAYER_STAT Current Book_Artifact 1", could that be useful?
!json please show your json. the UnlockedCondition is not helpful. content patcher when conditions cannot use GSQs
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.
CP When conditions doesn't seem to have one for player stats
which is how book reads are saved
if what you're trying to edit supports GSQs use that instead
Discord is on my phone so pls hold
(there is a workaround for CP not having stats, but show us what you're trying to do first)
i thought i read in the code at one point that since that stuff all goes in the special items & powers tab (Which was once the Wallet) that the HasWalletItem token accounted for the vanilla stuff, but that was the part i was not 100% sure about
Relevant snippet:
"LogName": "Multiply Dinosaur Mayo Price",
"Action": "EditData",
"Target": "Data/Objects",
"When": {
"HasWalletItem": "Book_Artifact",
"MayoBook": "true"
},
"Entries": {
"807": {
"Price": "{{Query: {{PriceMayo}} * 3}}"
}
}
}```
but i wouldnt think "Book_Artifact is an invalid condition" would be the error thatd show if it wasnt unless the json was formatted wrong?
could be wrong though
HasWalletItem uses a hardcoded list of wallet items (which back in 1.5 was themselves hardcoded, no mail flags associated with them IIRC)
this is fine for now but for future reference though please send the entire json through the uploader
Fair LMAO I just am trying to do several things with the same code so I didn't want you wading through other things
hmm yeah that is tricky, and GSQ doesn't help there
if HasWalletItem wont do it then your best bet without other mods as dependencies is to send a mail flag on location changed
using Data/TriggerActions
then check for that mail flag as your When condition instead
TriggerActions use GSQs so you can use the same condition as the thing in Data/Powers
So send a letter about the increased price and then that will trigger the price increase?
a mail flag doesnt need to have any actual mail with it
if you send a mail ID that doesnt actually exist in Data/Mail, then it still gets put in the mailbox and you can check for it with GSQs or When conditions
Oh cool! Didn't know that (my first mod lol) thank you for your patience with me and I will try that!
just remember to send it straight to their "received" box and not their normal mailbox
so they dont get the lil letter icon over their mailbox
the game and many mods use mail flags all over the place that the player will never know or care about
In the end, it couldn't be solved. I followed the steps from the README, but it didn't work, so I opted to do a direct translation by replacing the text in English with Spanish text. This way, the desired result was achieved. I'm not fully satisfied because it's like a hybrid translation between i18n and text replacement, but it works, so I'll leave it as is.
The positive takeaway from all of this is that I learned about the dynamic variable {farmName}, although it seems it doesn't work outside of PFM.
How to fix that π
MES & MPS Beta Test Group | Check Pin!
i have lost the bet
