#making-mods-general
1 messages · Page 359 of 1
the user does not have the know-how required to know the game state of a shirt, I don't think
Is it shirt equipped or wat
I can't tell you
I don't really care if it's sexytimes or something but i do care if it's a user controlled state or a mod controlled state
It's something the user can control
Then as the framework mod I'd try to give it descriptive name that isn't just 140 
So that the uniqueness is implied
Enums is common way to do this
If there r indeed a finite number of states here
It's an integer that the user can control across a very large range of values, and My mod selects the nearest value to load the texture for
No there are infinite states
i would absolutely use a string key and just add an int field like chu suggested
if it being an int is really that important
Yeah just sort the list or smth by the field
or iterate the dictionary and stuff all the ones with int: 140 to another int->whatever dict
This is a very frustrating conversation because you guys are assuming certain aspects of the design I cannot correct you on
I have a mod that does this kinda 
The actual asset for editing is unique per mod key -> my model
But when I actually use the data i merge by monster name field first
Smth along these lines perhaps
Assuming that:
- The user wants the game state to be 140
- The user knows what 140 means
- The user intentionally downloaded a content pack which was advertised as providing textures for 140
- Multiple mods may want to provide a shirt for 140
It's fine to have them both modify the same array element and a semi-random one just won't load?
It doesn't need to be random
yes
Cool
it doesnt need to be random, but i would say yes regardless
This mod does do the choosing but it could have been setup as configs
Let ppl choose which 140
it doesnt need to be exclusively one or the other either, but regardless, what you describe is what id call "just fine, actually"
*You
Or which Skeleton in my case
But goal of my mod wasn't user config, it was content modder config
So the content pack could say "this texture is for use when season is spring"
But yeah making this work does require some consideration in asset designing
Content Patcher itself will merrily overwrite the target as commanded
Elaborate and I might make it 👀
I have a custom map (Lost Woods) for my Zelda mod, and the Great Deku Tree is a map tile NPC, which means it can take TileData objects for messages. Just would need a way to pull said messages for hints.
Great. If a user downloads two different 140 shirts, that's their business. I have no way of choosing between them and guaranteeing I load the one they want. They can just delete the mod they don't want.
I have described how it could be done
that sounds like the mod itself is too big to be inherently compatible and would need an entire integration before such easter eggs could be added
i have a few easter eggs with mods that are just "if it's there", without a real integration, but it needs to be on a small mod that works™ already
Potentially? I'm happy to drop the in-progress version for what I have so far if you wanted to get an idea of what would be involved, but I haven't added much other than the new map off the Lost Woods, the rest is just string, portrait, or sprite replacements.
for example, if Ayeisha is installed, using the gifting feature goes through her, instead of "Joja Prime", and it's cheaper
The release schedule in Archipelago is extremely slow (like, one every 6 months), and we're not even garanteed to catch it (it depends if someone reviews our code in time), so I generally stay away from mods that are not fully released and stable. If I expect frequent updates, it's asking for trouble
Fair enough! This isn't released yet, was just thinking that it might be a cool thing in the future if the tree or a similar object could be used like the gossip stones in Zelda randomizers
Is this instruction set good for creating a JSON that Content Patcher can append to?
If I'm reading this right, Content Patcher will request the JSON so it can add to it, and My OnAssetRequested will provide the blank file for Content Patcher to fill in, which I can then read from at OnAssetReady and OnGameLaunched?
So when you do Game1.content.Load<MyType>("MyAsset"), that would cause the AssetRequested event to trigger that both you and Content patcher will respond to.
you should respond with a Load operation when its your asset, while CP will be doing Edits based on the asset
and when that load finishes, (but before the method actually returns the value to the caller) AssetReady will trigger
#making-mods-general message is a diagram that shows how the load flow works
StardewModdingAPI.Framework.Exceptions.SContentLoadException: Failed loading asset 'assets/[redacted].png' from SMAPI/virtue.[redacted]: can't read file with extension '.png' as type 'System.Object'; must be type 'Microsoft.Xna.Framework.Graphics.Texture2D' or 'StardewModdingAPI.IRawTextureData'.
So I loaded a png with Content Patcher and it complained that it can't read pngs as Objects, it needs them to be Texture2Ds
How do I make it load the png as a Texture2D?
when using the asset pipeline you need to use the correct type in the generic
if you want a texture2d to come out, you need to load it as a Texture2D
What's the content patcher json syntax to specify a file to be loaded is a Texture2D?
Content Patcher is only reacting to the AssetRequested event, the original loader needs to specify the correct type (ie Game1.content.Load<Texture2D>("AssetThatIsAnImage") )
I thought Content Patcher Load could create files
do you know where is "地雷是一个危险的地方" store in the game file? this is a translation error,im making a mod to fix it,but i dont know where it is
Do you know where that appears in-game? The closest text I can find is in Characters/Dialogue/Dwarf
"Sat_8": "矿井可是个危险的地方。小心啊,朋友。",
地雷 was also used in the Japanese translation, but removed in Stardew v1.6, so it might have been fixed
that appears when you play with phone,and first time enter the mine
its this
Could someone point me to an up to date new crops guide? I’ve been struggling with the old one on the wiki for a few hours and comparing the code to others hasn’t helped me figure out whatever the issue with it is
Oh, sorry. That text is only in the newest Android version, which I don't have access to. It seems to be this:
Content/Strings/UI
"question_auto_attack": "The mines are a dangerous place and you may need to engage in combat. Would you like to enable the auto-attack feature to help you fight off any enemies?",
(I only have an older Stardew v1.5 version, and it has no Chinese translation for that text, apparently.)
Are you using this one? https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_New_Crop
do you want to make a C# mod, a Content pack, and which tutorial do you speak of?
My guess is that they're looking at the JA one on the modding wiki
Yes
Well that's extremely current so what's making you think it's out of date?
(chu wrote it literally last month)
This thread plus failure to function
That's a different tutorial
I realise it's confusing because they're similarly named
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.
Ohhh it’s been updated with the linked GitHub thingy
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
this will be a good base to start sharing what issues you have
So yeah you've been looking at the one with Json Assets
So it's completely wrong
Follow the tutorial that I linked instead
No the one you linked was the one I followed, I just assumed it was the same cause it was named the same, my bad
Then please do as Lumina asked and share your json and log, because the tutorial is up to date and correct :)
Alrighty I’ll do that
What does invalidated x asset names mean?
a mod told the content pipeline to clear them from the cache, so they're actually reloaded next time something uses them; generally it means a CP pack's edits caused the final data to change
(incidentally, that's when SMAPI runs AssetsInvalidated event methods)
on line 23, } needs a comma after it },
Oh, that's great. Yes, Content Patcher has edited the asset that got invalidated. How do I reload it once it's been edited? I tried using OnAssetReady like the wiki suggests, but it would seem the asset is currently just sitting there being invalid, not reloading, so My mod isn't reloading it yet.
(and it's a pretty common issue to lack commas in proper place so remember the json validator is a very important check if you got an error. The log will mention it too)
You didn't need to replace the {{ModId}} token with your mod ID. That's what the token is there to do.
Ohhhhhhh
Looks ok otherwise. Looks like chu is the one who missed the comma in their template so I'll fix that
Testing time 
nvm, found the answer, sorry for wasting your time
Been struggling to dig up the example people use, but tldr I'm not sure if Data works as expected in that example, and I use AssetsInvalidated + lazy loading
ITS THERE!!!!

Downside: funny sprite
Looks like your sprite is not in the right place on the .png lol
Is ur sprite 4x big
maybe not the right size yeah
Gotta be 16x16
I was wondering why the pixel sixes were different from what the wiki said they should be
Should be a quick fix I think-

Y'all are a blessing
Time to plant some Phils. Maybe even a Charles or two
LMAO
Yeah, I've switched to AssetsInvalidated, but I'm having trouble with e.Names.Contains(). It doesn't seem to recognise Helper.ModContent.GetInternalAssetName()
Oh, It's because I'm using the asset name instead of the file name, I bet
I don't know how to fix that
I thought he'd haunt my nightmares, but hes just a little buddy!
Helper.GameContent.ParseAssetName may help, but I generally just use something like foreach (IAssetName name in e.Names) if (name.BaseName.Equals("My/Asset/Name") //then it matches
GetInternalAssetName is more a niche thing for map assets or loading directly from a mod folder, afaik
Thanks very much!
i got an error trying to make a Nature In the Valley pack :
https://smapi.io/log/05bba9b35e8a4bd6a91066594b0da461
13:41:23 ERROR NatureIntheValley This mod failed in the Content.AssetsInvalidated event. Technical details:
ArgumentNullException: Value cannot be null. (Parameter 'source')
at System.Linq.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
at System.Linq.Enumerable.Aggregate[TSource,TAccumulate](IEnumerable`1 source, TAccumulate seed, Func`3 func)
at NatureInTheValley.NatureInTheValleyEntry.OnAssetsInvalidated(Object sender, AssetsInvalidatedEventArgs e) in main.cs:line 2312
at StardewModdingAPI.Framework.Events.ManagedEvent`1.Raise(TEventArgs args) in SMAPI\Framework\Events\ManagedEvent.cs:line 101```
Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Famille, with 84 C# mods and 118 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
the content json
does someone spots an obvious issue or should i rather ping the author?
Yeah that didn't work, I'm using your preferred solution
Wait, why not IsEquivalentTo?
That'll probably work, I just use a generic asset helper that needs to check for multiple names
and without access to IAssetName stuff due to the method layout
Hell yeah, the data file got reloaded and My mod now knows which files are provided to it by content packs
My best guess is that it needs the seasons field because that field has no default and I think if it doesn't have a default it's mandatory
i'll test that but the example doesn't have it listed
I know the example doesn't have it, my guess includes thinking that the example is wrong xD If you have already tested the example exactly as-is and that worked, my guess is wrong haha
The strategy is mainly reacting to invalidation.
and then either immediately reloading or lazy loading. (SMAPI does the former for most assets, and parts of vanilla without a cache effectively do the later)
oh i meant more in a childish "it's not my fault!!" 😄
Quick question, is mods including fan work of other media a problem? I’ve seen a few mods adding characters from other media as npc’s and want to do something similar, that wouldn’t be a violation of the rules would it?
thanks, @vernal crest ! it seems to be working
Woo! 
(i suspected a field missing but there's a lot of them and didn't notice the doc listed mandatory ones)
I think this situation probably necessitates pinging the mod maker to note the example pack doesn't work. Which I would do except I cannot remember the order of their letters for their username lol
is the author here?
Yeah or at least they used to be
i think they were but my attempt to find based on nexus username failed
@acoustic summit hello i would like to report nitv example pack issue, season need a default
Taking actual artwork from other games is forbidden in this discord, not sure about Nexus
Ah ha, thanks chu
ah thanks 🙂
So if it’s your own fanart for sprites it’s fine?
and thanks 8AwA8 for the content pack in CP format, it's way easier to make a creature with just the mandatory fields and no slash
as far as I know, fan art is fine, it's just official sprites/artwork (or other people's stuff without permission) that are a problem
Judging by fireredlily's project, yes https://discord.com/channels/137344473976799233/1272745624311300178
Also there's Lucikiel and the little girl whose name I have forgotten from King's Raid, Gojo and those other people from that...manga? Anime? Peeta from The Hunger Games...Jean and Jorts from real life (they don't count I just like mentioning them lol)
Lavril!
Yissssssssss
the thing with fanart is that it also depends of how much attentions the mod attracts and the willingness of the company to prevent you to use thei content
basically a very popular mod with fanart of pokemon may result in your content being removed by nexus
I think most mods r fiiinnne
while some fan content of an indie IP may be seen by them as a nice publicity
In the worst case scenario you still have the mod to use yourself
Very good points
That's what modding is about anyways put thing in ur own game that u want
yeah, i do believe that, for SDV and the normal popularity of a mod, it should be fine
i just prefer people to be aware of that possibility just in case
You are a very important part of the modding eco system
luciola lumina is a species that feed on json log
Ngl... I'd be scared as hell of touching any of the Nintendo IPs 😅
Mood
Which is hilarious considering my project idea is centered around a Nintendo character
Howdy folks, having a bit of trouble with my fishponds, the quests are just showing up as 1 bait, but I'm not sure why
For all of your fish or just one of them?
yeah, seems to be all of em!
I'm getting no errors in my smapi log, so I'm not sure what is happening 🥲
I had a look and couldn't see anything wrong but I'm not very familiar with fish ponds. You could try doing a patch export and see if it's looking the same as a vanilla entry when it's actually in the game data?
Hey, I just wanted to ask if anyone knows how to get mods to use vanilla mail flags
I've been trying to send mail with the secret woods flag(beenToWoods) but while I can get it to recognize the flag, I can't get it to do anything with it. I'm currently away from my computer so I can't send my code, but any sort of push in the right direction like a mod I can look through or a tutorial would be nice ^^'
if you send mail with the same flag, and you've confirmed that the player has received the flag, then there is nothing else you can do. the game uses more than just mail flags for a lot of things too
what do you expect the beenToWoods flag to do?
a mail flag is just a string added to a set, its the same whether vanilla adds it or a mod adds it
that flag, while existing in vanilla, doesn't do anything?
the only thing i can see that its done is mark when you've... been to the secret woods. i dont see anything else that uses it, yeah
ah, thatd make sense too, i was only searching the decomp
yeah realized it probably does something in a content file so I searched those rq too
Yeah
It sets up the map name since before it's '???'
I mean like the trigger action command %action AddMail All beenToWoods Received%% should just work (or something similar; this is how I'd format it for a glitch speedrun)
all that matters is the string name
thats mail specific syntax, not a trigger action, but yeah thatd work
itd be no different from gettin the flag in vanilla
it's the mail syntax to activate a trigger action command but yeah [it calls triggeractionmanager.tryrunaction]
Oh! I meant that I want to use the flag
(i just didnt want them to confuse it with a Trigger Action, which is a specific thing, in Data/TriggerActions)
what do you mean use the flag
what do you want to achieve
are you succesfully using your own custom flags and failing to use a vanilla one? using a vanilla one should be just the same right?
is it just that you're unsure how to use mail flags in general?
I want to send mail with it and set up a conversation topic
I'm trying to use a vanilla one, but I'm unsure how to use it, yeah
I thought they meant they want to use a trigger action with the Player has mail condition with that mail flag.
you'd use it the same way you use a custom flag
And doing so is exactly the same whether it's a vanilla or mod-added mail flag.
in a CP when condition, its the HasFlag token
in a GSQ, its PLAYER_HAS_MAIL
but also, the player will already get a conversation topic generated at the same time they get that mail flag
Ohhhhhh okay
every time the player enters a location for the first time, the firstVisit_<LocationName> conversation topic is generated
lasts 4 days
(Although there's nothing stopping you from adding your own CT if you want it to be a different length or you want to avoid incompatibility with another mod.)
and the beenToWoods mail flag is given when they enter the secret woods for the first time
Right
Alright, that should help when I get back to my laptop
Time to try making my first heart event 
have fun!! events are pretty complicated but they're also super fun to work on 
Tyy! Super excited to work on it!
There is a distinct possibility with any fan work that it gets a C&D if the mod gets any traction (which would be tragic after a year of work, but would be respected), but there is a reason I have done all the art myself and am using SDV's coloring style to further distingush it
I know an actual paid gacha game that used to sell a Link outfit that’s been reported to nintendo’s lawyers and they chose not to do anything if that gives you some hope haha
I'm reducing the possibility of issues where I can with my mod, but I would not have risked it if there weren't already other mods in the space that reference the franchise and are more directly using the original assets
But, even should the worst happen and the mod need to get taken down because of any concerns, I learned enough in the process to pivot to a new expansion that isn't based on another game 🙂
Oh, oops, sorry for the novel
Is there any way to get the gender of an NPC with CP? Was looking at conditions and tokens and not seeing anything to extract it for modded NPCs
Guessing not. Never mind, I'll think of another way to do what I was thinking
“get” in what way? to use as a token?
do NPCs even have a gender attribute? (genuine question, I never messed with them, and I can't find any reason for why they'd need one)
sprite sheets differ between genders, as well as changing rooms, and flower dancing
I meant
determines whether pregnancy is possible etc
probably many other things I'm forgetting
Nintendo actually let something go...? What kind of miracle was that... 
I mean they're based in china so it might have been that? it's harder to do copyright enforcement on chinese companies afaik
Ah, that makes more sense
I feel like all the biggest gatcha games are CN based... besides Fate (JP)
i have a question about the format for NITV packs :
Should be same length as other lists in group. Represents the possible items to give player.
itemDropItemChances (List<float>, default empty)
Chance for each item in itemDropItemIds to be picked, as a float from 0 - 1.```
https://nature-in-the-valley.gitbook.io/nature-in-the-valley-documentation/adding-a-creature/markdown
I think i get the format of the first one because there are other stuff that are a list<string>
but i'm unsure of the format of the second and can't find an example
Is it just
"itemDropItemChances": [
0.3,
0.5,
],
?
thanks 🙂 i will test that then, and see if it works since i don't really see an example anywhere
i suppose i need one value per item listed in the previous one
"Hey, I’m looking for a skilled modder to help with a [type of mod] for [game]. I can pay. Do you have a portfolio or past work I can check out?"
are you looking for someone to commission
I think you forgot to replace the placeholders with actual answers
at the moment my attempt isn't working, but it may be because of some incorrect format
"{{ModID}}_CopperBeetle": {
"rarity ": 0,
"grounded": false,
"speed": 0.004,
"scale": 1.6,
"range": 0,
"seasons": [
"spring",
"summer",
"fall",
"winter",
],
"locations": [
"0",
"3",
],
"minTime": 800,
"maxTime": 2000,
"spritePath": "Mods\\Lumisteria.InsectsOfFerngill.CP\\08CopperBeetleAnim",
"xDef": 30,//Museum to change
"yDef": 11,//Museum to change
"localSpawnCode": "1",
"Price": 4200,
"displayName": "{{i18n: InsectsOfFerngillCopperBeetle_Translated}}",
"displayDescription": "{{i18n: InsectsOfFerngillCopperBeetle_Description_Translated}}",
"spriteIndex": 8,
"itemTexture": "Mods\\Lumisteria.InsectsOfFerngill.CP\\InsectsInventory",
"GSQ": "ANY \"LOCATION_CONTEXT Here Lumisteria_MtVapius_Forest\" \"PLAYER_FORAGING_LEVEL Current 8\"",
"itemDropItemIds": [
"378",
],
"itemDropItemChances": [
1,
],
},```
the creature itself is working
the drops are not but i'm not sure if i need the other parameters to also exist
I think itemdropitemids needs all the itemdrop fields (chances, bools, exclusiveitem) to have entries as well so their lists are the same length
it would make sense to have stuff paired but i'm unsure of the format it would have then
or you mean the format is correct but i just need the four different lists
all same size?
(aka 1 item per list, or 3 or whatever, but not one with 3 and one with 1)
I think so
Like adding something like this:
"itemDropOnlyBools": [
"true", // or whichever you need
// more entries if you have more drops so the amount of entries in each list is the same
],
Ditto for exclusive items
ok i will test that
current list of the specific part :
"itemDropItemIds": [
"378",
],
"itemDropItemChances": [
1,
],
"itemDropOnlyBools": [
false,
],
"itemDropExclusiveItem": [
false,
],```
Still nothing
mod idea: an animal that duplicates every night. 1 becomes 2. 2 becomes 4. 4 becomes 8. if your coop or barn fills up then you gain upgraded variants of that animal BUT it resets how many animals you have. so 8 normal animals turns into one mega animal then those mega animals duplicate using the same maths.
it's ok, thanks for the help Si and Button
i will see if someone has ideas otherwise the author will be able to help in the future 🙂
I wonder if you can patch export Nature.NITV/Creatures to see what it's picking up in game. I've never tried doing that for a data thingy added by a mod rather than vanilla, not sure if it would work or not
Exponential Growth: The Mod
oh good idea, usually it does export the full stuff, yes
so the result of the exported version is :
"itemDropItemIds": [
"378"
],
"itemDropItemChances": [
1.0
],
"itemDropOnlyItemBools": [],
"itemDropExclusiveItem": [
false
],```
Which leads me to believe the format on the third argument may not be written properly but i do follow the ```itemDropOnlyBools (List<bool>, default empty)``` indication (and it's the same than the fourth, which is working)
ah yes
field name is different on documentation
let's retry
same result (altought this time at least all fields are having proper data)
Does anyone know where I can find the Data/SecretNotes documentation, I couldn't find it on the wiki about it?
The mail data page has some info about them
If you want to make custom ones I highly recommend Secret Note Framework
do note that since they are int-ID'd they are hard compat wise, and yeah, there is a framework to make workin with em better
also provides a lot more options of things you can do with them
So it's better not to use the content patcher to do it.
SNF is a content patcher extension type framework
You use content patcher to add in the data it desires
when editing several fields via content patcher with editData and giving them all indivial new values, can I use a condition for all of them at once or do I have to put the condition on every single one of them? example here: https://smapi.io/json/content-patcher/fcd04777b12a43b588746432e0f351d5
that is fine
I'm looking at the SecretNotesFramework documentation, but it doesn't say which fields are required or optional: https://github.com/ichortower/SecretNoteFramework/blob/prod/docs/author-guide.md
Most of these fields are optional: you can create a fully-working text note by specifying only Contents (although including a Title is nice to do), or an image note with only NoteImageTextureIndex (although you ought to also specify NoteImageTexture and use your own asset).
is there a command to clear the map from debris?
https://stardewvalleywiki.com/Modding:Console_commands possibly, see if searching for debris gives a result
there's clearfarm and there's world_clear current debris (or farm though idk if there's one name for all farm maps or not)
ty, the other one worked
Progress again! I managed to get it displayed correctly and move it around the map, but now i need to align the actual borders/collision and front/back stuff and also find the door XD
also idk where the mailbox should be and is
are there mods out there that are open source and looking for contributors? I didn't have an idea for a mod yet, thought I might be able to help out somewhere else
im having trouble validating some .json files and im not sure where to ask for help
im new to making CP mods and i dont know what im missing
i think this is a place you can ask
is the SMAPI error log more helpful? Or the links to the .json validators for the files? (two i think I have fixed but 7 im for sure lost on)
the mod page on the wiki recommends a json validator site, so i imagine that's the way to go
i'm new to mods but not new to json, i always use a plain validator
here's one of them lol
https://smapi.io/json/content-patcher/29b5ac6bc9c74de4a757dd6af690c9e1
you miss several closing brackets
thats what i thought and thats how i fixed other ones but i cant find the ones im missing 
!modideas
If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas
However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.
there's a github with tons of them
squints at the code - https://smapi.io/json/content-patcher/c0c14051c84a4593a2d263a5b78dd9d7
i found two of the brackets
now i think possibly it doesn't like the format "LMTD_rose_quartz": "LMTD_rose_quartz"
😮
i'm not sure why you are reacting like that
i think theyre reacting to the forum with the mod ideas
^ yes that's what i'm reacting to
oh
appleschloss and I appeared here at the same time
thanks 🙂
question: My dialogue works with the exception of my gift dialogue in the jojamart. For some reason, when in the jojamart Shane still says thanks how did you remember these are my favorite?" for the pepper poppers, but when I patch export his dialogue it shows my dialogue, and everywhere else he says the line I have. Do I need to do something with load priority?
@quartz arrow https://jsonformatter.curiousconcept.com/ this one gives you a few more tips
I personally go through and try to pair up each {/[ and make sure there are commas everywhere
i may remove the garbage can .json for now LOL but lemmeee look at my other ones i needed help with
(if im posting too many lmk. i just need someone who's down to help me a bit i swear my eyes are just missing things. im still learning a lot lol)
where did you get the base you're using?
that one i got from like a combo of editing geodes in a dif code and looking at SVE's garbage can bin tho THEIRS adds garbage cans and i cant find a section about altering pre-existing garbage cans-
hello! is there anyway to make time pass in an event? like to start it in afternoon and end it in the evening so light changes troughout?
oooh thank you
"GarbageCans", "Blacksmit", "Items", "Default", "RandomItemId"
GarbageCans sounds ok, Blacksmit has a typo, Items sounds ok, but the two other things would be a very specific modification
if you wanted to add an item to a list of random items, i believe the format would be a bit different
i suggest targetting items and adds your item there, while following the wiki format
This is very helpful thank you!
ill likely be back after i eat supper if i encounter more things lol
sure! what i think is not valid in the json is that you have "stuff":"stuff" in a part when you need "stuff:"{"stuff"}, basically
(and some extra details but the wiki has them)
now, while SVE does a lot of things it can do sometimes outdated things or advanced things, i suggest to try to cross reference and
!unpack
Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!
vanilla files are usually more straightforward
another tips, if you want a documentation about thing, searching for modding:thing on the wiki will let you search in the modding pages
(however a lot of the documentation is easier to find once you know where to search it so ... 😄 )
looks like ambientLight handles lighting changes during an event
Hi Lumina! There was a bug in the logic for the item lists, and I had a typo on the framework website (its "itemDropOnlyItemBools" not "itemDropOnlyBools" oops). I'll make sure the fix is added soon 🙂 (Soon as in next couple days)
thanks! feel free to ping me if you can by then, no rush on my end as i may not have anything ready soon anyway
Does anyone know where I can find the Data/Tailoring Recipes documentation?
Okay its asking me to specify "AfterID", "BeforeID", or "ToPosition" but I did that
https://smapi.io/json/content-patcher/3517719397f245fa9954c541477f420e
3/9 of my files now say "no errors" when i run them so woo!
The other 6 xD im uncertain about. Im SURE its a comma or bracket im missing somewhere but I'm not finding where/I may be missing some nuance about how brackets function
(minus the garbage can one which has the "ID" error that idk what it needs from me)
i don't think this is your actual issue but it looks like you missed the h in blacksmith
HEK
Lumina even pointed that out earlier 😭 i went and ate some chips and dip and fully forgot lol
Yeah the error still pops up after the spelling fix sadly )):
Sorry if this is a lot, but these are the other ones I'm having troubles finding the errors on. I'm gonna take a break on them (for my eyes) atm and come back later to see if i can Spot the Difference but if anyone else notices something feel free to ping me. It's all super appreciated honestly.
(CustomOre - ItemExtensions) https://smapi.io/json/content-patcher/54dcce92255248deae30390de5b71bb4
(ItemExtensions) https://smapi.io/json/content-patcher/d1a9e81bdc274da6be157c4517068fca
(Location) https://smapi.io/json/content-patcher/4693305d7788422f92901735bf7315e0
(Machines) https://smapi.io/json/content-patcher/63814c71bfaf4a3896cb9ebe029a7435
(Objects) https://smapi.io/json/content-patcher/2be1a05c96d54d37864501e815001a65
{
"Action": "EditData",
"Target": "Data/Objects",
"TargetField": ["749", "GeodeDrops", "Default", "RandomItemId"]
"Entries": {
"LMTD_blue_goldstone": "LMTD_blue_goldstone", // add a value
"LMTD_peridot": "LMTD_peridot", // add a value
"LMTD_rose_quartz": "LMTD_rose_quartz" // add a value
},
},
``` you are missing a comma at the end of your target field on this block, and the one right below it in your objects json
same issue with machines
custom ore: line 10, needs a comma after "2"
item extensions, line 21, needs a comma after "LMTD_sapphire"
location, line 14, needs a comma after "Here winter"
machines, line 224, needs a comma after ["749", "GeodeDrops", "Default", "RandomItemId"]
basically whatever the validator said, the line before is missing a comma

Im learning many things about commas, tyty
WOO Machines and Objects come back with "No Errors" now
Now to continue through with the other ones
🙏 tysm
is there anyone who knows or have a guide about how to apply AT for giant crops
🤔 idk if anyone can answer this but is it possible to add a fish tank with fish in it to a map, like the same as the funiture type
mine is like this but it keeps saying theres no texture in this season
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_Custom_Furniture_With_CP this has something I believe specifically about how to add fish tanks 🙂
This tutorial explains how to add custom furniture using the new 1.6 game update features and Content Patcher. The tutorial assumes you already have the game unpacked and that you have some basic familiarity with the Content Patcher format. The mods referenced as examples in this tutorial are Bonsai…
hmm i dont think this is quite it, what i want to do is add one of the existing fish tank furnitures to a map, and have it already filled with fish, as decoration
i feel like that might not even be possible with cp
okay im down to only two ONE with errors 😤
I fixed things on CustomOres but now I have a new error on line 21 and I don't know what it means - https://smapi.io/json/content-patcher/db2550deaffc4822aca84d5de313ee81
WAIT i think i know the garbage one
YEAH okay i got that one (it feels so cool to figure this out and learn things)
StardewUI is not a content pack framework, you need C# for that
Sounds a bit like Custom Reminders
as in, a mod by that name. Not sure it's updated
Oh i was thinking about that one too
Also does anyone know how to add another type of pick-up-able item in the mines? Akin to a frozen tear or quartz
i believe FTM can do this
I kept trying to find tutorials and such and didn't have much luck ://
you want to look at the Item Extensions framework
there is no tutorial bc it is not possible without IE
See thats what I was looking at but i kept not finding one that didn't make the item into a "breakable" one
Im using IE to spawn in a node, so I assumed itd have those properties but I can't find a comparable mod that puts pick-up-able things in the mines
ooh ok
i know it can spawn forageable things, i just dont know its limitations
Oh that's nice, I'll take a look
i think i fixed it now i get to try to run the game 
Okay so it launched this time but also i got this-
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/CustomOre.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/FishData.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/FishPondData.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/GarbageCans.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/ItemExtension.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/Location.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/Machines.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/NPCGiftTastes.json': file contains fields which aren't allowed for a secondary file (Format)..
[Content Patcher] Error loading patch 'Just a Little More to Do > Include Data/Objects.json': file contains fields which aren't allowed for a secondary file (Format)..
i may have done my content.json wrong 🤔
The content.json file is the only one that needs the Format line at the top, you don't need to have it in other jsons you use the Include action for
yeh
okok
🤞 here we go again
Alright, so the game loaded with no pre-errors this time. (Woo!) But now its not finding my assets...
It also does not appear to like my Machines.json file lol
(sorry im rambling lol, i just forgot i was in this discord and am excited to learn/figure things out xD)
Hey. If I may interrupt for a second.
{
"Action": "EditData",
"Target": "Data/ObjectInformation",
"Entries": {
"428": "Cloth/470/-300/Basic -26/Wool Cloth/A bolt of fine wool cloth, well suited for winter wear."
}
},
{
"Action": "EditData",
"Target": "Data/ContextTags",
"Entries": {
"428": "fabric_item"
}
},
Is there anything wrong or missing here, I cannot get my game to accept the changes I want it to make to the cloth.
where did you see how to write this?
Data/ObjectInformation is not a real thing
(As of 1.6)
I just checked the wiki to be sure and it was how objects were done prior to 1.6. See this wiki page for how to use the new Data/Objects asset :) https://stardewvalleywiki.com/Modding:Objects
Ah. That'd explain it.
It's a rather old mod that was never updated, so I was giving it some tinkering.
it probably needs to be rewritten entirely then, if it's so old
Well heck. I got most of it up and running again, so I guess I can manage to rewrite this part, too.
Thank you~
Do y'all know what i need to edit to make the sillouette of my new items to show up in the collections tab?
hmmm they're lil 🚫 signs right now...
hmmmmmmm
i am attempting to figure out if theyre in game lol
possibly your item IDs dont match
hm okok
the item IDs confuse me a bit LOL i shall see if their asset even loads if i were to find an item/fish/etc
hmm no ok it did fail to load the textures
.... hmmmm
A common mistake that people make is putting the path to their actual mod folder in the Texture field.
Instead of the asset name they Loaded the texture to.
What would the path look like?
Mine currently is - "Texture": "Mods\[CP] Just a Little More to Do\assets\minerals_artifacts",
What is it in your Load patch?
which is my load patch
(Sorry im still learning the terminology 😭 i fly blind half the time when learning a new skill i stg lol)
The one that is "Action": "Load" with a Target of "Mods\[CP] Just a Little More to Do\assets\minerals_artifacts"
wait which .json thing does the load one go in?
By the way, I recommend replacing that with "Mods\{{ModId}}\assets\minerals_artifacts" because then it will use your mod's unique id
i may not have it.....
At the beginning of modmaking I always recommend that people put everything in their content.json
okok i thought the {{ModId}} part was giving me errors earlier
Because trying to grasp the idea of Includes on top of understanding patches is unnecessary complexity
cause i also wasnt sure what my ModID was
It's the unique ID listed in your manifest.json
i always do go 110% into the deep end 😭
i kinda came bsck to modding after years and just started using includes
i just slap words in that other people use and do my best to understand why its happening lol
So the answer to this is "any one that you want because the only determiner of which .json file any of your patches go into is your own desire"
coding is wild man
The only thing you need for a CP mod is a content.json and a manifest.json
REALLY??
Yeah
Literally all you need
You dont even need assets
If your mod doesn't edit any images

Which reminded me, someone suggested me to change the poppy seed muffin to use actual poppy seeds instead of the flower
If you have any player-visible text in your mod I would strongly recommend also having an i18n folder with at least a default.json file but that is still technically optional
ok so the "Action:Load" thing- do i need one for each asset im adding?
(Lemme try to find a tutorial unless y'all have a good rec-)
Yes you need one for each asset but you can use tokens to combine them if they're named the right way (an example of which is on the page I just linked too).
(Technically you can use InternalAssetKey instead of Loading your assets but I hiss at that and do not like to recommend it because it means other mods can't Target your assets.)
good to know 
me jumping from an Alternative Textures mod to full ass CP - thinking it would be an easy step 🤣
would people consider it evil or strange to ship a content pack as a single autogenerated minified content.json and a single assets folder with a flat structure? im finding writing content packs somewhat repetitive and im not a huge fan of json in general or how content patcher requires you to structure your code (not cp's fault, im just picky) and im considering using my own format
I dont under what any of that means ngl
like instead of writing content patcher json files i write my own format and use a program at build time to generate a content.json
have you looked into the yaml adaptor
its not just json that im picky about, its also like the structure of how includes and asset loading works
plus i wanna make some things more concise
like Include + LocalTokens templating
I don't think the average user looks inside content.json
(I think it's fine.)
And i definitely made py scripts to generate cp packs b4 
(I’ve never looked at content.json as a normal user if anyone wants my 3 cents)
Minifying it seems like whatever cus i can just format it if i need to read ur stuff
the smart part of my brain resisting the urge to write a content patcher dsl vs the dumb part of my brain getting the itch to write a lexer
Tbh i always reformat content packs if I need to read them for whatever reason
Tbh esper maybe u can look at spacecore contents
It's not very well documented but it is less " " hell and i think it supports real foreach
(im not a normal user so i look in many content.jsons)
how evil is it to use guid strings as item ids 💀
and just ids in general
Death
very, since as you know every time you generate a guid one less becomes available for the universe to use
i would not bat an eye if you autogenerate your stuff but i would lose respect for you if you minify your files. just keep them sanely formatted for the benefit of people who might learn from you; the cost of whitespace is minimal at the level stardew is operating
i mean its more that i would have to deliberately enable pretty-printed json output but yea i can see your point
what if i use like {{ModId}}.guid
no like writing an include + localtokens in a dsl as basically a function
you're still wasting it
check https://wasteaguid.info for more info (and waste another guid in the process)
(if it's not exceedingly clear by now I'm joking)
A lot of guid every save
Oh but use {{ModId}}_guid if u gotta
For lookup anything reasons
I dunno send in a PR i guess
if everyone in the world generated a hundred guids a second wed be fine 💔
@vernal crest uhhh.. i think Target
good idea
My guess is that . is already conventional for mod id so _ is next pick
that convention is chosen since mod IDs usually contain dots, and using underscores ensure mod lookup is O(1)
It's not a particularly smart mechanism for determining source mod
persinally item ids being AuthorName.ModName.ItemName makes so much sense if you ask me
Maybe just make it take both
whereas AuthorName.ModName_ItemName is weird because the word boundaries are messed up
Cus i have seen this form in the wild too
The Target will be "Mods\{{ModId}}\WhateverNameYouWantHere". The Mods\{{ModId}} part isn't required, it's just convention. The {{ModId}} ensures that your Target is unique, which is required.
I lowkey agree tbh, I only switch because LA
If a content pack folder is placed inside another content pack's folder, will it still run?
I want to adapt some content packs by other creators to be compatible with My framework, but I'm concerned about plagiarism. I want to create a compatibility pack with instructions "To make this thing work, go download the original content pack from the very skilled creators at this link, and put their mod in My compatibility pack's folder". Will users need to put a . in front of the original pack's file name in order for it not to run?
I dont mind this cus _ reads as space to me
in early 1.6 you couldn't use an underscore in your pet's breed id or the pet license wouldn't work because of cursed underscore parsing
So it's "chu.FruityMod Apples"
I started using underscore so i could use lookup anything but it makes me mad when i have 20 items that all follow the same format and i have to manually highlight the item name to copy paste each of the names of the items
good idea but then i would have to write string manipulation in c# and that makes me want to die
it was fixed (1.6.4 i think?) but my cat still has all dots because of the bug
ReadOnlySpan manipulation does succ
are we not using regex or
the problem is that semantically (and in unicode) _ joins words together
At this point im considering using . Again and just letting people trying to use lookup anything suffer.
im gonna keep using . its lookup anythings fault if that causes problems
imo algorithm lookup anything SHOULD use to match ids wouldnt involve a delimiter at all
- if an id has a mod id as a prefix then assume its from that mod
- if it has multiple mod ids as a prefix use the longest one
ez pz
how do you know which part is the mod id prefix to check without using a delimiter
ill pr that when c# strings stop making me wish i didnt know how to code
unless you want LA to check every single mod ID in the loaded mod registry against every single item ID to check if the item ID contains any unique id
yes
😔 all this talk about mod ids makes me want to do the thing i told myself i wouldn't do (aka keep working on my mod)
i guarantee you this is genuinely not a big deal
neither is having a standard convention
even if theres 100000 mods loaded thats not very many string comparisons
nothing we're discussing is a big deal in any grand scheme of things
i mean for performance 🙄
the problem is the current convention sucks and . is already used within mod ids
"the current convention sucks" is subjective and, again, not a big deal. just dont follow the convention then
This is just a trie right
Hmm, I'd have used a regex
then again might be chainsaw vs fly situation just for underscore
Seems reasonable to populate one based on mod registry
personally i think lookup anything should try its best to be maximally compatible when possible
as mentioned the issue of using prefix is that you have to lookup every mod ids whereas underscore is o(1)
if i remember what that is correctly then yea lol
but maybe "before second dot" is fine
a unique id can have two dots in it
yes, hence before second dot
you would need to check before the third dot
You will never stop randos from putting in non prefixed things alas
oh I though unique id you meant "item id" lol
Spiderbuttons.MyMod.Subtitle is a perfectly valid uniqueid
But yeah just do a prefix search with trie it should be fine 
O(1) v O(num mods loaded) is not a big deal for performance though
but yeah that too
have you seen the potatos the good ppl at modded-farmers parade around with their 800 mods
Do i need to load each asset individually? I have the fish on one .png and the fossils/minerals on another
Ok but LA already slow as balls for them no?
also wouldnt a trie be O(max characters in a mod id) instead of O(number of mods loaded)?
Very cautiously putting my two cents in: I played on a potato laptop for a long time and had tons of mods. My game stuttered and lagged a lot. I know this isn't just a me thing, either. So performance should be something to look out for...
This is a silly argument unless you want to @ Pathos lol
technically the hashmap version is also O(characters in the mod id)
Anyways
As I said before, you need to load each one but you can do them in the same patch if you use {{TargetWithoutPath}} and name them correctly. And there's an example of that on the CP documentation page that I linked before.
cool cool i'll look for that. i thought you mentioned doing it on the same patch but i got lost lol
ok but checking an item id against every loaded mod id omce every time you use lookup anything is not gonna take very long even with a bazillion mods loaded
@ivory plume hi pathos good timezone can we put leetcode in lookup anything make LA try to search "added by mod" based on prefix instead of the _ convention
with a trie as chu suggested
😁
actually i think any kind of btreeset would work here so long as the string comparison is lexical
(tbh if we're going this far I'd just split by dots and add parts incrementally)
Lookup anything's lag spike is specifically the first time you open the menu after loading a save, when it's caches r cold
you could just make a sorted list of mod ids and binary search it to find the closest mod id to any given item id
I don't think our thing would affect it that much but obviously the goal is make it reasonable to use when u got 2.5k mods
Ahh okay nod nod! Sorry, I thought we were discussing a more overall mod
I'll go back to the dark
Thank u boncher
thinking about the vanilla pause menu and its noticeable, disheartening delay when opening it for the first time after launching the game
this is so much easier than i thought i should pr this
would it handle Author.MyCoolMod and Author.MyCoolModCode and an item named Author.MyCoolMod.Codex
ok it probably doesnt matter but bikeshedding is fun damnit
How does cornucopia items behave if u just do binary search
Do you mean to support non-standard unique IDs which use a different delimiter like .? It's worth noting that the format isn't just a convention, it's in the official base-game code docs as the expected format.
technically its O(log mods) which (bc of how strings work) is equivalent to O(length of a mod id) which is the time complexity of the current implementation!! so no actual increase in time complexity
I dont expect any implementation to detect that and it's probably fine
ofc but underscore is unfortunate for ids bc its not a word boundary
Yeah that's the intention, to relax the modid_ prefix convention to merely modid prefix
unless this impl is straightup going to give it to the wrong mod
Well i guess it's possible if someone adds a mushy tomato item to the game and called it mushymato
Then it'd point to me lol
SMAPI won't load mods nested within another mod (or folders that have files in them, generally), but the mod containing it would have access to the files, equivalent to loading files from asset folders.
That said, if this is meant to replace a broken framework or some such, that doesn't dodge permissions or licensing issues with the framework itself. And authors don't necessarily permit anything if it affects how their assets are used, e.g. if a mod uses their pack in ways their original framework/mods didn't, etc. It's pretty contextual.
(also sorry if I missed someone replying already)
But ig that's why we still need entire mod id
You said yes to this but Pathos was asking if this is about changing the mod id convention itself, not the modid_item convention.
And if I have understood correctly you're not asking about changing the mod id convention.
Rather than changing convention it's more accurate to say change how this one specific lookup anything helper method works
I'm not a big fan of the idea, since...
- using a loose heuristic like that can select the wrong mod ID (particularly given that some mod IDs use non-recommended formats like a single word, and newer vanilla items use string item IDs which could mistakenly have the same prefix as one of those mod IDs);
- it requires performing potentially dozens of mod lookups per ID, which is particularly an issue for code that might need to check many IDs;
- and it encourages authors to continue using non-standard ID formats, which is a vicious cycle (e.g. some authors use an invalid format because it works, then other authors copy their code, then more authors copy their code, etc).
regarding #2, it would technically have the same time complexity as the current implementation
I think 2 can be dealt with bc the list of mods loaded is static
O(log mods)
But hm what about merely allowing . as delim in addition to _?
We have a specific format that's thoroughly documented everywhere in the game code, wiki docs, guides, most mod code, etc; why not just use the standard format and avoid every mod (not just Lookup Anything) needing to try to heuristically parse them?
because AuthorName.ModName_ItemName has the wrong semantics, it implies AuthorName (ModName ItemName) instead of (AuthorName ModName) ItemName
and it makes word boundary stuff a pain
ModName_ItemName is a single word that gets fully highlighted when you double-click it
those seem like smaller issues than attempting to convince everyone to switch formats
I'm not sure how? For example, a mod ID like SomeModId_ItemId with the current implementation would perform a single get-mod call for SomeModId, compared to 15ish get-mod calls with the proposed implementation. So ignoring the mod registry API implementation (which could always be optimized), wouldn't that be up to 15x slower since it's repeating the lookup 14 more times?
(Wrong semantics according to whom? /curious)
im not trying to convince people to switch formats, im explaining some reasons why some people are already using . instead of _ and suggesting that lookup anything could be changed to accommodate these uses
the unicode consortium
Allowing . as an extra delimiter is certainly more feasible; even if it's still non-standard, at least there's far less chance of false positives and far fewer lookups per ID required.
(Sorry, ik this isnt on topic but idk where else to ask-)
I think i added in the "Action": "Load" but now my content.json is invalid and I'm uncertain where I went wrong
https://smapi.io/json/content-patcher/d9c1fab49c4648db8674794f219461eb
Since the set of mod id -> mod name is constant we'd do this work one time in entry to build a structure nice for searching prefixes
You're missing a comma on line 41. (And your question is on-topic for the channel!)
im suggesting making a sorted list of mod ids (or a trie) beforehand and using that to determine which prefix to use. time complexity is O(log mods) which is equal to O(length of a mod id) -- because mod ids are unique -- which is the time complexity of a hashmap
But yeah i think the leetcode to put in and make it not slow is less important than whether this is good to allow or no
Ohhhh you only need to Load once per file, not one per image inside the file!
Should we really require every mod that parses unique string IDs to create a heuristic prefix map beforehand, instead of encouraging mod authors to actually apply the expected and documented format?
the false positives w vanilla items is a good point though
(i dont think we should personally)
Thank you very much. My intention is for the compatibility packs to load assets from the original content pack, which the user downloads themself and puts in the compatibility pack folder. My framework adds a totally new system for deciding when farmer textures are used, so it wouldn't be very compatible with anything that edits the farmer's body, shirt, or pants. Is this ethically acceptable?
oh ok! in that case, can i just "name" it whatever since it pertains to multiple assets?
mod authors are already not applying the expected and documented format and that's probably not going to change, if only to keep existing save files working fine
and, again, its semantically wrong according to the unicode consortium
CP has a migrate id traction
(Content Patcher has built-in support for migrating item IDs in saves.)
Yes you can just name them "Mods/{{ModId}}/fish" and "Mods/{{ModId}}/mineral_artifacts"
I think ppl just dont have institutional knowledge cus they r not lurking in #making-mods-general
Which is not a solvable problem
tysm 🙏 imma pray it works now
I wouldn't say NOT solveable, just requires a lot of work and resources
(The bane of any community project)
Not a solvable problem for me who is 1 person despite efforts in this area
not using the expected format is semantically wrong according to stardew valley (the domain in question), so i think appealing to unicode here is a losing argument
i dont think its solveable to make every person ever who wants to mod for SDV lurk in here to learn everything we teach people
I don't think the Unicode consortium really applies when discussing ID formats documented in the base game and modding community. That could have been a good point during the 1.6 alpha when we were discussing which format we should apply, but I don't think it'd be beneficial to change the recommended format more than a year after it was standardized (particularly given that we'd need a game update to change all the official docs).
nooo the fish are still 🚫 icons 
I was referring more to extensive documentation and lessons, active outreach and so on and so forth. Essentially people would have to make it their job to be THE people communicating that institutional knowledge, outside of this channel.
Aaaat least, that's the most direct solution I can think of.
Unlikely to happen though since you have to be a special kind of deranged to dedicate yourself to that.
I knew we should have added format validation to the base game code while we had the chance. 
Well i do feel tempted to tell random ppl about doing things certain ways and sometimes i act on it
Personally I'd guess that's fine, though I'd expect one or two authors to ask not to be directly linked/suggested. Some care a lot about control over how their work is used (within reason, since players can do whatever on their side). That said, I'm not really an expert when it comes to licensing or Nexus/etc's rules.
can't agree more on this one. i like to hang out on here but it (discord in general) is a terrible place to find aggregated knowledge. great place to get people with that knowledge to answer your questions in real time, though
But it would be quite deranged to to push any harder than "hey here is a single friendly suggestion that you may consider or not"
i feel like its more of a social no no than a licensing one. if you're not using their work and just acting upon it i dont think its legally impermissable? like creating a romhack patcher but requiring a user to "dump their own roms" from their pokemans cartridges to work
im not saying the format should be changed, just saying why it makes sense that people are using the wrong format. you make a good point about vanilla items being misidentified, matching on prefix only is probably a bad idea, but adding support for . seems necessary
*not that nintendo won't send their gangstalkers after you for doing this
I feel like the "I dumped it myself" thing has failed to save a bunch of emulators at this point 
but yeah, it's generally a social/ethical issue with the artists, with Nexus/licensing stuff as an afterthought
Of the two content packs I'm planning on making compatibility packs for, one is designed for exactly the kind of situation I'm planning on using it for, and was previously just limited by technical considerataions. I expect I'll either get permission very easily, or the artist will want to update their original content pack to use My framework. The other one is an abandoned project that a second mod author revived, so I imagine there wouldn't be any problems.
(also that caveat that "failed to save" usually means they stopped making an emu because Nintendo threatened them, not a real court precedent)
Does this /G !SEASON_DAY summer 20 summer 21 event condition parse correctly as "event can't happen in summer 20 or 21"? I've never inverted GSQs in events so I'm not sure.
Well isn’t this an interesting conversation to walk in on with little to no modding know how
(to be fair, i dont think nintendo does a lot of things with actual legal authority behind them, i think they rely on people not fighting them)
and on intimidating people with threats of physical violence
Hello there i hope you use {{ModId}}_ 
(if anything i think there would be precedent against them from a Sony case if it did actually go to court a lot of the time, but thats expensive. also i dont wanna get more off topic)
XDDD noted
okay so if im doing "Load" on the content.json - but i have the sprite specific information in the objects.json - does that matter? like i have all the fish on one .png and now none of them are showing up in the collections log, even as 🚫 symbols
vanilla ids should be ConcernedApe.StardewValley.
Anyway since I'm here and profoundly dumb, is there any good way to have an event precondition based upon completion of a quest using content patcher stuff?
I'm trying to set up an NPC to unlock an event in a different location after you've completed an item (which will itself do some other map changes but that's its own problem), but there doesn't appear to be anything I can find on the stardew valley wiki (in the modding:events OR modding:quests pages) or content patcher documentation.
I know I can set up a quest to coincide with an event by using mail IDs, for the record, but that would alter the quest's structure pretty significantly.
This is fine but if u get error texture you may have a typo somewhere
but theyre not appearing in the collections tab at all now... at least before they were errors
once you complete a quest, it vanishes into the ether and there's no record of its existence anymore, so you will have to set up something else to check as a proxy for it
(The base game predates string IDs, so it has dibs on non-namespaced IDs.)
Actually I think that was a problem in a few lines of the “make a new crop” tutorial
It was with the translation parts I think? I only noticed cause I compared with vanilla code/a mod so I had an idea what I was doing
That seems like the right formatting for that goal, yeah
(also debug gq !SEASON_DAY summer 20 summer 21 in the console should be able to test it)
Is it one of your quests
why can't you use a mail flag to trigger the event? i'm not sure how that would alter the quest's structure
Yeah i backread that i missed a } oops
If yes, it's easier - embed the $1 dialogue token in the final dialogue
Perfect, thanks.
Or use an $action
I'm not in a position to fix it rn but maybe aba did it?
Any best practice for a proxy that isn't a letter?
Yes.
Format is
Get Letter > Deliver Items to NPC > NPC says to go to location > Trigger cutscene at location. Using a letter inbetween kills the pacing quite significantly.
The best practice is a invisible letter aka mailflag
a mail flag is a fine standard. see atra's (7th grade physics) response for one way
That's just how it works
yeah this would be possible with a mail flag
it doesn't actually require you to check the mailbox
Your Data/Objects entries need to have "Mods/{{ModId}}/fish" as the Texture and then for each fish you need to figure out its sprite index and then put that number in the SpriteIndex field.
oooh ok ok
Could you elaborate a little on that? I'm not quite getting what you mean, sorry.
Quests also generate a CT upon completion
Hm if it's a dialogue anyway
which can be used as a mail flag proxy if its not a quest you control
just for future reference
You could use the spacecore traction to immediately go into an event if you want
or if its, yknow, not a quest that uses dialogue
I meant that it says “{{i18n:Phil.name}}”, where in cornacopias more crops mod (what I compared it to) it goes “{{i18n:Basil_name}}”
I figured the underscore was right since cornacopia is such a big mod
I fixed a comma and a missing </nowiki> tag (though I'm not sure the latter did anything) but did not notice any missing closing curly brackets. If any get pointed out to me now though I can go fix!
Actually, you can make your i18n key anything you want. Either works.
(Are there forbidden characters in i18n keys? There might be.)
how doable/hard is it to make a custom door? that's not replacing a vanilla door? im scared because doors use cursors 
Yeah the i18n just has to match
$1 is a dialogue command that lets you set first-time dialogue as well as replacement dialogue that is shown on later occurrences. the game sets a mail flag (which you get to specify) to accomplish this.
so, if your quest involves an NPC giving you dialogue, you can use that command to set the mail flag (or you can set it via $action, or use the CT like button said, or or or. there are many ways to skin a cat in stardew modding)
EMA
Same hat lmao
https://stardewmodding.wiki.gg/wiki/Kailey's_Interior_Door_Guide#Custom_Interior_Doors there's a tutorial about it!
This is a mildly advanced guide for modders that assumes familiarity with Tiled, Content Patcher, and map modding fundamentals such as the difference between Map Properties and Tile Properties.
Interior doors, such as the one in Figure 1, are interactive map elements with hardcoded behaviour (see InteriorDoor.cs). There are three types in the b...
I see. I'll have to poke around and figure out exactly how that works then.
although it looks like this method would patch all interior doors...
Thank you.
This is replacing a vanilla door
The EMA chu mentioned: https://www.nexusmods.com/stardewvalley/mods/26849
i got too excited by "custom door" :(
Yeah the missing nowiki probably meant that some {{ }} got eaten in the render, ty for fixing these things 
if you have NPC dialogue at quest completion, i do personally recommend using $action instead of $1 to set the flag, since you will have no need for the fallback text and the intent is (imo) clearer
What is nowiki?
It still works as an option though, it just needs a conditional patch so it only patches when in the desired location.
I saw it and was curious since it wasn’t explained in the text
{{ }} means things in wikitext which is the thing used for formatting on wikis
It's a tag used to tell the wiki that the stuff inside it is not wiki formatting and should be displayed as plain text
It unfortunately overlaps with cp token syntax
smart 
Oh interesting
So it's a mistake that it appeared in the actual page
would this work? like for only specific locations
Problems specific to wiki guides basically, no impact on actual mod
It would but it is slightly sinful
if I want to listen to objects being removed from the world, do I use netObjects or overlayObjects?
public readonly NetVector2Dictionary<Object, NetRef<Object>> netObjects = new NetVector2Dictionary<Object, NetRef<Object>>();
[XmlIgnore]
public readonly OverlayDictionary<Vector2, Object> overlayObjects = new OverlayDictionary<Vector2, Object>((IEqualityComparer<Vector2>) GameLocation.tilePositionComparer);
[XmlElement("objects")]
public readonly OverlaidDictionary objects;
You can use the smapi event
oh.
Objectlistchanged or something?
If i spel wrong sorry
There's a fair few things that exist as smapi event and as net collections that could be hooked
I just don't use the docs enough ig 
I think the smapi events r more convenient usually, dont need to manage hooking just for current location as much
Caveat is that it comes later in the cycles so sometimes info has already changed, e.g. can't always get the right position of a removed furniture
would it be better to use ema since it's cleaner? (it's not necessary but the conditional fireplace option seems pretty cool, don't need it but would be a plus if i could)
hmmm okay so im using ItemExtensions to add a new node into the mines, which drops sapphire.
I have sapphire in the "Object.json" file, which adds it to the collections tab
However, I also have it in the "CustomOres.json" to trigger it to drop from the node.
This is causing two sapphires to be in the collections tab- one which you can't recieve (in theory) which would leave the tab unfinished
I tried to remove the sapphire from "Objects.json" but that just lead to the rock not breaking because it had nothing to "drop" despite the file within CustomOres still having the relevant information
I'm not sure what to do here?
Share both files via the json validator so we can see :)
ok!
Objects file - https://smapi.io/json/content-patcher/1b768101058048058e7877f88d41d9a9
CustomOres file - https://smapi.io/json/content-patcher/5175324eeefe4a03861eb1db2ef765eb
Also, if helpful, the template from CustomOres (ItemExtensions) - https://smapi.io/json/content-patcher/73d3bbc6c25e4268b3d9c877d9408541
Yeah so the one in the CustomOres file is wrong but also unnecessary, so yeet that one
will it still drop the correct item?
It's wrong because you've made the id Sapphire instead of LMTD_sapphire.
Specifically only yeet the Data/Objects patch
Because it's just a copy of the one in your objects file
CP doesn't care that they're in different files. It's all the same to CP. So as far as CP is concerned you have two Data/Objects patches in your content.json for the same thing, only one has the wrong ID.
oh ok ok i see, cause the Stone already drops "LMTD_sapphire" ohhh
tysm!!
not as concerned about this one- but the game files arent happy with my addition to the furnace recipes xD Im trying to get my rose quartz item to be able to be smelted down into refined quartz, but i get a yellow error message in SMAPI specifically regarding my Machines.json file
this is what pops regarding the Machines.json
Log found, uploaded to: https://smapi.io/log/38aaaa1666224baf9612709ba702ab48
That means you've got your syntax wrong
nearly 2 hours of troubleshooting later and i finally have a working mod 😭
This one EditData Data/Machines > entry #1" to Data/Machines: failed converting String value to the expected type 'StardewValley.GameData.Machines.MachineOutputRule': Error converting value "LMTD_rose_quartz" to type 'StardewValley.GameData.Machines.MachineOutputRule'. means that you've written a string where you need...possibly an object, I'd need to see your json to be sure.
This one EditData Data/Machines > entry #2" to Data/Machines: failed converting Array value to the expected type 'StardewValley.GameData.Machines.MachineOutputRule': Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'StardewValley.GameData.Machines.MachineOutputRule' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. means you've got an array (which looks like this: [ 1, 2, 3]) instead of an object.
If you share your json I can point out what is wrong.
Okay what Selph says here is applicable to you: #making-mods-general message
the one about wrapping my fields around a key? (sorry discord isnt being Wonk and not quite going to a specific message)
Yes that's the one, sorry.
You need to take everything that's on lines 11 to 59 and put them inside another set of curly brackets with "LMTD_rose_quartz": in front of the opening curly bracket
(And may I suggest switching to {{ModId}} as your prefix instead?)
Is there something in this little patch above the blacksmith? I can't remember and I wanted to patch some of this over for a mod but i need to make sure i'm not messing with something
oh thats so crunchy
it's where one of the secret statues are right?
that sounds right
??hmtgf??
if that's the only thing then i can find the location in Tiled and work around it 
only thing there would be hmtgf don't think there could be anything else
Putting this here before I move onto other things for the night, please carry on and answer at your leisure;
How would one approach creating an item that is very similar to the Return Scepter (non-consumable warp item) that takes you to a custom location? Trying to circumvent how crowded the vanilla maps are for access to custom maps and also it thematically works with what I’ve got planned (high fantasy esq). I haven’t been able to find any guides on how to accomplish it.
It's also massively edited by SVE if you care about compat with that
Totally i just missed swapping that one earlier
sve is my greatest enemy
tbh the sve map works too
this is early days but if i want to edit over that map, how would the patch priority work
you'd have to get yours to load after the mod you want to edit
With SVE, doesn't matter because a Load will always come before an EditMap
I think you can do it with SpaceCore's SpaceCore_OnItemUsed trigger action (I would personally do it in C# myself but idk how familiar you are with C# and specifically postfixes)
well that will be a problem for later right now im excited to make a new interior in tiled even though i'll probably get furstrated within 5 minutes
so far:
my artifact spots work!
my gem node is spawning correctly!
I found one of my minerals in an omni geode!
all the items i added are in the collections tab and are summonable with CJB ItemSummoner!
but... im either having bad luck or my Fishing Spawn Locations arent working as they should xD
I installed Visual Fish to help, but also they dont have an Aquarium form yet, which may mean they simply dont show up with Visual Fish since im assuming thats what it grabs from. But I also havent caught any yet... could genuinely just be bad luck hmmm
if im doing map compat with SVE, am I allowed to use their maps? Idk if that's a silly question
yeah, not having an aquarium sprite = no swim
I am not familiar at all with C#, so if I can avoid it, that would be ideal XD I’ll see what I can do with SpaceCore! Thanks for the tip
SVE's perms are completely open but you shouldn't need to use their maps for compat stuff anyway.
oh true environment assets are base game assets
[game] Skipped fish 'LMTD_clownfish' due to invalid requirements in Data/Fish: required index 12 (int minFishingLevel) has value 'false', which can't be parsed as an integer
🤔 ok what does this mean
i think you need a number, not true/false
lemmmeeee test
Yup it means you've put a bool (true/false) into an integer (whole numbers) field
Which might mean your fields are off by one or just that you put the wrong value in that one
you guys are very patient and helpful it means a lot(
SVE does have a bunch of extra tilesheets with their own assets but you shouldn't need those to make a compat patch. You can use them if you want to though.
comparing it to SVE's fish log- it does look like i was missing one more number, which ive added, now lets cross our fingers lol
THE CLOWNFISH IS IN THE WATER
ITS JUST BOBBIN THERE BUT HE'S THERE
The fish I was most worried about was one i wanted to add on ONLY Green Rain days
but look!! He's there during the green rain and when I went back the next day he wasn't there!!! It worked!!
also of COURSE in my cheaty mcCheaterson test world id get a fishing tresture chest with an insane sword, one of the dolls, and a TREASURE CHEST all in one- like WHOMST
well done! double check he isn't there when it's regular rain and you're good to go
oooh yes good idea ty
we're in the clear!!
nice!
These poor town folks. I show up one day. I run around town at super human speed. I disappear for a month. I keep fishing and tilling up all the soil at random. The weather man said it was gonna be sunny and then it rained. Who is this cryptid??
okay xD now to test fish ponds
Found it in SpaceCore’s functionalities! Will experiment with it tomorrow. Again, very much appreciate the direction 
hmmm okay any ideas why the quests for my fish's population gates aren't picking the IDs im assigning?
so like my clownfish asked for 2 clams to go from 5 -> 6 but i have the options as "5 blueberries" or "1 gold bar"
"(O)258 5",
"(O)336 1"
my sword fish also asked for one bait to go from 3 ->4 but i have these as the options listed
"4": [
"(O)830 10",
"(O)335 3",
"(O)380 10"
],
none of which are one bait xD
Alx was having that second issue last night, let me see if they figured it out
Nope, no response from them since I suggested checking the patch export.
hmmm good to know its not just me tho LOL. im glad theyre working in the fish ponds, and the roe is producing. Haven't gotten things besides roe but that could just be from me skipping around t rying to get to their level caps/quests
You can use Lookup Anything to see if the other possible outputs are listed
oh?
i'll have to do that
tomorrow tho 😂 cause its 1am and my brain is tired
im just glad the mod is working at least like 80% rn
Is your clownfish an ocean fish by any chance?
yeah!
oh you think that has somethin to do with it??
thatd make sense why my Surgeonfish was also giving the literal exact same quests
Okay so I have figured out that your swordfish is using the population gate info from the default fish entry. And your clownfish is using it for the ocean fish entry.
oooh okok i wonder why 🤔
yeah my Swordfish is from Ginger Island (and another fish, my Gem Fish, is from the Secret Woods and also did the 1 Bait Quest)
What is your precedence set to?
What does precedence mean in this context?
There's a field called Precedence. What's the number in it?
Sorry my coding lingo is no bueno yet 😭
Oh umm... I don't have that field...?
Actually, can you just share your fishpond json? Then I don't need to ask stuff haha
yeah!
(And don't let me stop you from going to bed! I'll still be here tomorrow lol)
LOL fair fair
(But when you come back to it, add {{ModID}} to all of these too please!)
Every ID in your mod should have it.
where do i put it in this one? or do you mean like at the beginning of a thing so like itd be "fish_pale_catfish" --> "{{ModId}}fish_pale_catfish"
Yes, though make it {{ModId}}_fish_pale_catfish (although it could just be {{ModId}}_PaleCatfish or {{ModId}}_pale_catfish if you like)
Ooh actually before you go, can I also see your Data/Objects patch adding the swordfish?
yeah!
... that may have been my issue
in FishPond they were "fish_swordfish" and in objects they were "LMTD_swordfish" 😭
(which im also fixing to be {{ModId}})
It's actually the context tags I am interested in
oh ok!
Your Data/FishPondData and Data/Objects entry keys don't need to be the same
good to know xD
Otherwise there couldn't be a default fish FishPondData entry or an ocean fish entry etc
oh! ok
RIght so your swordfish object doesn't have the context tag fish_swordfish. But in your FishPondData entry for the swordfish, you've said that it only applies to fish with that context tag.
do i remove the tag entirely then or do i add the tag into Objects
You need to add the tag to the fish object
Because what happens to determine the fish pond data is that the game looks at the context tags the fish object has and compares it against the RequiredTags field in the fish pond data. If they match, it then uses that fish pond data when that fish is put in a fish pond.*
Because your swordfish didn't have any context tags matching any RequiredTags field in the fish pond data (because fish_island is not a tag the game uses and you didn't add it into the fish pond data), the game went "well, I guess this is just a default fish" and used the fallback fish pond entry...which has 1 bait as its quest item for the population gate!
Does that make sense?
* It uses the precendence field as a tie-break if the context tag matches more than one fish pond data entry or if the fish has more than one context tag that matches a fish pond data entry.
Hooray! Whew, I am glad for that because I didn't actually know any of this for certain I was just trying to figure it out as I went along lol
Thank you so so much <3 and hopefully that helps Alx too!!!
You're welcome! I'm going to ping Alx about it now so hopefully it will help.
Sleep well!
woo! and yes thank you i will LOL
How accessible is it for a coding newbie to make a mod replacing a vanilla NPC?
Visually? Or like dialogue, location, spouse bedroom, events, etc too?
Mainly dialogue, location, events are what I'm not sure about
(Also im on my phone now so im technically in bed LOL)
(Aba will have much better insight but i know I am intimidated by it currently and wanting to attempt it eventually LOL)
Okay in helping appleschloss I figured out your issue too. The context tags in your Data/Objects entries for your fish don't match the RequiredTags field in your Data/FishPondData entry.
I think perhaps you might be trying to use the auto-generated context tag item_<name> but since your fish are named "Smokey Gillcarp" and the RequiredTag is "item_SmokeyGillcarp", they don't match (also, I recommend changing your Data/Objects names to "{{ModId}}.SmokeyGillcarp" because the name field is its ID and it should be unique and ideally not have spaces).
I explained the reasoning for it here: #making-mods-general message
Okay I will definitely answer your question but I do want to check if there's a particular reason you want to replace a vanilla NPC rather than making a new one?
I just assume that would technically be easier than starting from scratch
I made one from scratch for the first time a couple of days ago (also new to modding) and it wasn’t that bad tbh!
It's not actually easier than starting from scratch because the process is almost identical
Oh. Well, lol 😄
Thats so reassuring honestly
Yes, it is
I think the answer mainly depends on two things: how determined you are and also how well you're able to pick up the concepts of JSON and game data/content.
I figure after ironing out my current mod i'll at least have a decent basis for adding an NPC. It just requires a lot more art work (which is chill just dif kinda time commitment LOL)
Fair enough. I'm interested in finding out the answer to both of those myself 
As a computer-brained person, I found it all quite easy. Some people really, really struggle with concepts like what the brackets do and why commas are needed etc.
I can very generally read computer language, but I've never actually tried to code before. Most of my experience is back in like the forum days where you typed out htlm for emotes and pics and all that
Dangit Button, put a link to your tutorial on your website!!!
If you understand the concepts of having to close tags, you'll probably be fine with the json
I had to let my brain be mush for a bit and employ the
a few times and just power through but some concepts did click for me! I understand bb.code and have done some hella basic HTML before (like mainly website customization on an already formed background) but coding has always both intrigued and overwhelmed me so its been nice to actually grasp some of the ideas
I found the tutorial on the modding wiki immensely helpful. It’s a lot of information at a glance but slowing down and working through it step-by-step was pretty simple
Snazzy
plus, templates. very nice to have in front of you
Luckily the close bracket part does make sense to me LOL its a lot of the wording within the brackets im still grasping
Templates are SO helpful
Looking at other mods that accomplish what you want to accomplish too
Okay, here we go. Button wrote a really excellent and interactive tutorial explaining the basics of JSON. I strongly recommend having a look at it to orient yourself with JSON as that is the foundation of all content modding (which is mods made without writing C#). Here is the tutorial: https://stardew.button.gay/tutorials/json
I found the caterpillar within the SVE code so like, i win
Thank you! :3
Love a gay tutorial
Interactive is really helpful for my learning style
!npc For specific-to-NPC instruction, Tia wrote a step-by-step tutorial for how to make a whole NPC (marriage not included because it's based on Jorts and Jean who are cats lol)
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!
Thank you :3 Very much appreciated
We love people who make templates and tutorials. True heroes
Honestly
Also, you're never on your own. You're always welcome to ask more questions in here, including ones to do with understanding general concepts. Lots of us are happy to explain things at a higher level as well as pointing out a missing comma etc.
(i didn't want to until I actually have other tutorials to actually make a "Tutorials" section 😔)
The missing commas help was so appreciated 😭
Part of my being here is pushing myself to interact in community spaces again
Well I am just going to have to memorise your JSON tutorial URL then lol
Much appreciated, I find big severs very daunting but I was getting so fed up not finding answers online and coming in here today has been very nice!!
Because it is becoming my first line of info to give to the newbies
I feel that! I rarely stick around (as in chat often) in big discords and while i dont see that changing its always so nice to find people who are into the same stuff and want to help fr
Yes, and also nice to have a space to feel comfortable sharing hobby stuff
Exact same reason i came here (have been here for a while for the emotes LOL)
(if it helps, stardew.button.gay/tutorials does exist, it's just not linked, but maybe easier to remember)
Holy cannoli ive been in this server for over 2 years O_o time is wild
(it has two other newbie tutorials on it, even)
That's actually why I joined as well! I'd never joined a public discord server before but I was struggling trying to navigate the wiki (didn't help that I kept accidentally using the old one lol) so I gave up and joined so I could ask how to do one thing...before you know it I'm a member of 11 Stardew discords including being a moderator of one of them xD
I don't have a problem with big servers, except that they often have rules against talking about politics, and I have a political gender identity, so I don't feel safe in such places
Love that for ya. Its fun when a new path in life gets unlocked
What!!!! You're telling me that you DO have multiple tutorials yet your tutorials menu button does not work?? Jail for Button! Jail for 1,000 years!
i never mentally signed off on those other two because I was never 100% confident in them yet
but they probably are good enough
Editing cursors on location changed is a bit expensive yes
also if I go to jail I can't finish more tutorials
I feel pretty confident in your documentation and tutorial writing ability
oh my documentation I feel confident in to the point of egotism there's no worries with documentation 
tutorials are harder though
New quote added by chu2.718281828459045235360287471 as #6477 (https://discordapp.com/channels/137344473976799233/156109690059751424/1391291819609821235)
They are, but what I mean is that you write very clearly and explain concepts well so even something you're not 100% confident in is going to be useful for people with less knowledge than you
i did actually think about working on the tutorials again the other day, just wanted to finish BETAS catch up first
We'll make sure the 1000 yr jail has free wifi
didn't realize you moonlighted as a prison warden too, chu
is that why you keep giving me ideas instead of adding them to mmap
i just know ppl in here as a fellow inmate
glad to be known at least
Button where do i put the pet item query stuff livestock bazaar or pelcan
LB
well
can the user disable all custom menus in livestock bazaar
a framework with side effects is like a cardinal sin or something
non-authored side effects
very close now to the magic number
Should “Tutorial: Sending a Letter (Content Patcher)” be talking about editing “Events/Farm” instead of “Events/TriggerActions” to send a letter?
I was trying to find example code for each instruction, but couldn’t find the letter events, and when I went digging it seemed more like they were in triggeractions? But the tutorial was only updated in April so it shouldn’t be out of date??
Sending mail via farm event was a common method back in 1.5; it does still work, but doing it via trigger actions works much better nowadays. There should be an example in the trigger actions wiki page
why is it asking for an Icon.xnb instead of a png? I used the same content.json from my other farm map as an outline, and it never needed an Icon.xnb.
none of the other files in my other farm map's assets folder are an .xnb, either
Thx!
The load path targets emeraldacrefarm but the error message is looking for emeraldacre, so probably a typo wherever you're trying to use the icon
ahhhh. I'm my own worst enemy when it comes to making sure every last little thing matches. thank you!
Yeah there's config
I never patch vanilla menu so it's discrete
is it possible to lock a characters introduction behind an event with content patcher like if i want a certain character to start appearing after a specific event for another character?
i had another character idea but idk if its possible with cp or if it would require further shenanigans
character - at friendship level x triggers an event that then introduced a new character that will then appear around the valley like any normal character
Yeah that's doable with content patcher. You can set the npc as invisible until met and lock their schedule and other stuff behind the other npc's heart levels/an event/etc
Ignore the .xnb thing. The game stores all its content in .xnb files so that's what it mentions but it doesn't mean you actually need .xnb files because you have Content Patcher to give the game the content.
I have such a silly little mod idea but itll probably be in the works for awhile while i make it look and act the way i want it to X3
especially cause it has a couple of componants :3c
You don't even have to make the character invisible. There's an UnlockCondition field in the Data/Characters asset and you can use it so the game doesn't add the character until that condition is met.
planned:
shop componant
food componant
recipe componant
character componant
Map componant
possible ideas but idk if ill do them
- pet componant
- collecting componant
- plant componant(?) this one idk if ill do at all
yeah, Si helped me see that I had a naming mis-match, and that's why the game wasn't happy.
now to figure out why my farm cave warp point isn't warping...
omg :0 awesome!!!
Yeah I know, I wasn't answering that bit I was just giving you information so you don't get confused by the reference to .xnb in errors in the future, because that's never the part that actually matters lol
fair enough, lol. thank you :D
I decided to take a break from my Shane mod to make an NPC - that little template share couldn't have been posted at a better time lmao bookmarked
I used my previous farm map.tmx to make this new one, and the farm cave works on the older map. but when I walk on the proper tile to enter the farm cave, nothing happens. the game doesn't crash and doesn't throw an error, the game treats it like it's just another path to walk on. it's like the warp point into the cave is broken, but I never needed to specify a warp point into the farm cave on my previous map
Try using data layers to check where warp tile's at
wait, I might have missed one, hang on
yep helps when I don't have those two sets of numbers reversed like a numbskull and only remember that that field exists after I ask for help and waste people's time...
Data layers is a mod that you can use to check collision and warps among other things
The edit in April was to move it to the "Obsoleted Tutorials" category xD It probably should've had a note added to the top of it to make that clear which I will add now because we just developed a template for that last night!
Ohhhhh
Is there a new tutorial specifically for sending letters? I know there’s an example given in the triggers article, but a letter still seems like a good introductory project
No, sorry, not yet. I can give you a very quick rundown though. The mail entry itself is the same as in that old tutorial (although the entries should have {{ModID}}_ so they'd be "{{ModID}}_junk_mail_1" instead) so you can still use the "Creating A Letter" section of the tutorial for that.
And then sending the letter can happen one of several ways:
- via an event BUT it's different because you do it as an event command inside the actual event instead of as a precondition and you should only do this if you actually want a real event that just happens to send mail rather than making an event whose only purpose is sending a letter
- via dialogue using the
$actiondialogue command, but again this should be for if you actually want the dialogue and then tack the letter sending onto that rather than adding dialogue whose only purpose is sending a letter. And that is because... - via trigger action is the main way to send mail now
(Sorry if I explained any of that poorly, please feel free to ask me to elaborate if I did!)
@pine elbow Should've pinged, I took longer to reply than I thought
No worries! I think I understand
I think it’s just not going to totally connect till I get my hands in the code and give it a whirl
I’ll let’cha know if I have any questions when I do
Sounds good! Just be aware that the example on the trigger actions page is actually showing you how to do two actions (send mail and add a conversation topic) and they do not both have to be in your mod. You can do multiple things in one trigger action but you never have to.
Thanks for the heads up!!
Yeah haha. Just little blocks that you put together to build a thing!
The wiki tutorials are like box sets, and poking around vanilla or other mods codes is like examining someone’s life size, Lego pterodactyl
complete with the cursed illegal building techniques you find that you’re kind of scared to ask about
Oooh no it has both unconventional but legal techniques (some of the DT and LT shenanigans) and terrible illegal ones (giving your NPC the internal name "Rachel" or Loading an events file in an already-used vanilla location).
(My wife is an uber Lego nerd so she has drilled into me that there's a very important distinction lol)
illegal lego techniques are fascinating
you guys like to add new quotes when i'm sleeping. there's like a 50% chance this wont work lol
.quote count
5654 quotes in this server and 374 quotes in this channel.
oh thats a different number than what the last quote said, guess removed quotes don't decrement the id but lower the count
.quote 6479
No quote found. Wow, chat more, losers.
.quote 6477
also if I go to jail I can't finish more tutorials
- @uncut viper (Jump)
Hello Guys! Huhu This is the problem I encountered
[game] An error occurred in the base update loop: System.Collections.Generic.KeyNotFoundException: The given key 'NextlevelRejected_Elliott' was not present in the dictionary. at System.Collections.Generic.Dictionary2.get_Item(TKey key)
at StardewValley.Dialogue.chooseResponse(Response response) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Dialogue.cs:line 1623
at StardewValley.Menus.DialogueBox.receiveLeftClick(Int32 x, Int32 y, Boolean playSound) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Menus\DialogueBox.cs:line 353
at StardewValley.Game1.updateActiveMenu(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 5082
at StardewValley.Game1._update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 4269
at StardewValley.Game1.Update(GameTime gameTime) in D:\GitlabRunner\builds\Gq5qA5P4\0\ConcernedApe\stardewvalley\Farmer\Farmer\Game1.cs:line 3454
at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) in SMAPI\Framework\SCore.cs:line 1095
[game] WARNING: Mismatched UI Mode Push/Pop counts. Correcting.`
i need help please!
This happens when I selected the other answer or forked answer I choose, It keeps on looping (though I have the skip option)
Is this you making a mod or using someone else's?
This is me making the mod and I've been resolving it since the update. I just recently came back
It's just weird that I
made the same content (different dialogues) but the same way as the others. I tried the first ones I made and It was okay... XD
can you provide the json?

