#making-mods-general
1 messages · Page 12 of 1
I'm planning to timegate the event anyway so you don't get home from the wedding and then it's immediately like HEY DO YOU WANT BABIES
Could be wrong, but that seems weird to have all CP mods with tokens not working first day for farmhands
i've been digging into the c# for the removal of the randomization from that question but my brain is smooth and i am tired
It's not all tokens, but i know some tokens like Season aren't ready in multiplayer for farmhands ever since 1.6
So it depends™️
item descriptions not fun
how so?
coming up with 50 for similar items
(the function actually already checks if there was a wedding on that same day and will not let the child adoption/pregnancy question happen)
Yes -- I mean my "family planning" event that I'm making where the NPC explains the config settings! So it's not "hello we are back from the wedding, let's talk about what types of children we would like to have RIGHT NOW"
ahhh, gotcha 
can you make them mostly similar/sort of formulaic? like for seeds they're all "Plant these in the SEASON. Takes NUMBER days to grow. [other relevant info]." and the crops are random fun facts about them
yea but mine are all artisan goods n such that i kinda made up like what do you write for 'dried chicken drumstick' like that doesn't even sound like an actual thing but it's one of my products
"Sunroasted to perfection, has a nice crunch."
stolen thanks
"The leg of a chicken, seasoned and dried to preserve it. It has a certain medieval flair."
Lol feel free to make a google doc of them or something I love coming up with stuff like this
i actually don't remember vanilla item descriptions, and since my items are only used for events, they have strange flowery descriptions
is there anyone here using the 1.6.9 beta who can check something in ilspy real quick?
there's a custom-tool-related bug in 1.6.8 and I want to know if it's been fixed in 1.6.9
sure what are you checking
in 1.6.8, calling GetOne() on a tool does not copy InstantUse, which means sometimes the game will create glitched tools
(specifically Tool.GetOneCopyFrom())
doesn't seem like it's fixed
thanks, I'll report it on the forum then
or maybe I should just ping pathos for this one, since it's a technical change that doesn't affect vanilla
@ivory plume There's a small bug in both 1.6.8 and 1.6.9 affecting custom tools- Tool.GetOneCopyFrom() does not copy InstantUse, which can lead to glitched tools under certain circumstances. (IE. animating when the tool data says they should be instant.)
It's not noticeable with vanilla tools because the Wand sets InstantUse in the constructor anyways, but it does affect tools from mods.
Hello, how are you?
Is there any documentation on how to create mods that fulfill the following function:
I want to create a machine that produces an artisan product by placing two ingredients (there should be three but I'll explain later) and then gives us a product based on them.
- Perhaps the easiest way is to create it as a recipe
The product is created with sugar and milk, it also has vanilla essence. But in the base game there is no vanilla plant, which would lead me to create the plant and integrate it into the mod, which should be easier than the other option, using the vanilla plant from another mod (I think cornucopia has one) and making my mod compatible with it so that it uses it.
If anyone can help me or guide me, I would really appreciate it. I was already helped previously with a visual issue by suggesting that I use a mod called nightshade and it helped me a lot, so I ask for your good will and solidarity again.
it's possible to do this with just content patcher, but you can use extra machine configs if you want your machine to take 1 main ingredient + 2 fuel
(depends on if they want their machine to have other ingredients that use other fuels)
as for the vanilla ingredient, you can have the machine check for vanilla_item context tag
following cornucopia's setup
you're welcome to duplicate cornucopia's vanilla code and art (as per our permissions). if you use the same item ids, then players with both mods will only have one vanilla item instead of two
definitely up to you
for documentation
you can do it either with a machine or with a recipe, it depends more on how you want it to feel for players.
To match the base game, it would be more appropriate to do a recipe, but there are many mods with complicated machine products like that, so its personal choice
I had an idea of adding a light source around the new item I made. Do I need C# for this?
random question but is there a vanilla event where the farmer laughs
Regular items? There's the torch_item and light_source context tags, you can give them a try (disclaimer I don't know if they work properly)
Big Craftables you can just set the light source field in their data
multiple; one I recall is the "Elliot drinks with the farmer in the bar and reveals that he's a lightweight"
is it a BigCraftable?
oh right! totally forgot about that one, thanks, ill take a look at that one
no it's an object!
For locational dialogue, do y'all include the coordinates or just do the generic map location? Idk if the "beach" is the proper location for the beach. (also thank you tiakall)
new event achieved 
could spice it up a bit more maybe, but that I can do later. now onto finding out how to change dispo stuff to have the change happen after this heart event 
do .modData sync in multiplayer? for example Chest.modData["key"]
Yes
Though keep in mind if editing modData on Farmer, that you can only edit it for the local player, not other ones
hm then you need to use harmony to patch in the light source bit 
i remember it being messy, but check how torches work?
(
halt is not working the way i expected it to work)
Fixed in the upcoming Stardew Valley 1.6.9 for the InstantUse, IsEfficient, and AnimationSpeedModifier properties. Thanks for reporting it!
pathos, i wondered
i tried having a small hasmod check on an include for an inmutable patch of another token (that was inside the include)
and apparently, it's either directly on the patched content or as a dependency, i wondered why include check wasn't enough, because it's checked at another level?
like, once its checked, you don't "retain" what was checked, for ex?
Hello there!
I'm working on a mod in CP, a machine to sort mixed seeds. I want to have several variants of the machine itself, that will use the same config and do the same thing, while the only think different would be the texture used for sprites (that I want to base on the recipe used to create the variant). Is there an easy way to achieve that without having to copy the config to each BigCraftable separately? (So far I got stuck on the fact that each machine variant has to use separate ID, which means that in theory I would have to insert config for each ID into "Machines" - and I really want to avoid it, it's complicated already 😅)
Any suggestions welcome, thank you in advance! 🥰
Does it allow to specify several textures based on materials used while crafting? Asking, because I didn't yet try to use AT, so no idea what it's capable of 😉
Probably not, but AT is still the best option for that kind of thing I think
you can make your one machine have multiple recipes if you want
AT let the user choose, usually
Anyone know why this is occuring?
you didnt define this method
oh is it cause I used OnChatMessagedRecieved and not OnButtonPressed? Sorry am new !
the thing you add to the ButtonPressed is just a function you create
it doesnt need to be called "OnButtonPressed" its just common
if you wrote a function called ThingsToDoWhenButtons() then you'd add it like helper.Events.Input.ButtonPressed += this.ThingsToDoWhenButtons;
(ofc make sure to include the right parameters in the signature)
Okay I got you! yeah cause I am using OnChatMessageRecieved lol! appreciate it
you wont be able to use your OnChatMessageReceived function as a button pressed event bc it doesnt take the right arguments
Yep noticing that, so do I even need to use it?
i dont think there's a ChatMessageRecieved event
i dont know what you want to do with it
but yes like chue said there is no chatmessagereceived in the API either
cant make up an API function that doesnt exist
you have to harmony patch ChatBox.textBoxEnter or similar
I mean, you don't have to harmony patch that
(Chatbox.chatbox.OnEnterPressed is a possibility as an event to listen to.)
it looks to me like chatboxen are created when saves are loaded and destroyed when you go back to title, so you have to do it as a SaveLoaded....and I guess you have to do some reflection bullshit to be ahead of the other event listener, huh
anyways.
harmony's probably easier 
Idk I been struggling all day and night with just trying to get it to read if input is "/spawn" lol
damn
tbh it's much easier to just make a console command
yeah im starting to realize that lol
how much do you want it to be chat box event?
it would actually be really simple to harmony postfix the runCommand function
i just wanted to make a simple mod that if I do in game "/spawn (item ID)" so that way when i make a different mod I can just load the item in lol
that function gets called whenever a chat message is sent that starts with a /
and the command is passed to it
its just a big switch statement
(that said i would also just really recommend cjb item spawner instead too)
Yeah I just wanted to try my own I didnt think it would be this difficult hahaha
yeah I might just get it
Okay if thats the case, do you guys know whats something easier to make for first time? Like a c# one, like something i dont need to publish but try out lol
(ngl, part of this is my "avoid harmony!" instincts)
like, yes, it's great! But also, like,
I've seen enough scary harmony bugs that when there is a nice event to listen to...
i mean i agree that no harmony is preferable to harmony i was just saying its not that much more work than making a console command when theres a nice function already there for you
esp when it can be done with a super safe postfix
i dont even know what harmony is so maybe i stay away for now lol
i think you may want to just run through standard learn C# things if you never programmed before
Yeah so I go back to college this term in 2 weeks for programming so been trying to get things learned before hand!
Hey Selph if you're lurking and willing I need help with the fuel part of EMC
modding is great but also kind of a non standard situation for programming 
that is true but i loveee stardew , I also worked on an pixel art game before as lead graphics so I am decent at that half lol
Oh wow that's pretty impressive
yeah it was called Archewood!
Problems at at line 138, 217 and 296. Basically the recipe for Raw Brisket works just fine using oil as the first ingredient, but then the next three that also use oil don't work and i'm not sure how to fix it
!json easier sharing
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
I feel like the required item should be the meat and the extra cost should be the oil
when I do it like that tho it just ignores the oil and only does the basic recipe
Follow Rokugin's advice, but also...
you have multiple trigger rules using Oil as the primary input. Only the first one will be used.
You need to use the same OutputRule, and add multiple OutputItem with different fuels
Okay wait you guys said spawning an item using chatbox event a little difficult to start off, do you guys think adding a new special powered book is a good place to start?
lemme wrap my head around what you said, so currently I have 4 separate recipes all using the same thing. But with your mod I need to do it so like this one item uses each plant to get a different outcome, so like instead of 4 separate recipes using oil it's 1 with 4 variants?
do you mean like the Speed book or Horse: The Book? bc if so, adding the book itself is easily done, making it do something special ranges from easy to super difficult depending on what exactly you want to do
depends what you want the book to do
Ill just make a new book with something easy to add, like a book that doubles experienced gain from mining or maxs your profession
if that is easy lol
It's not specific to my mod - if you have multiple entries in the output rules array, the first eligible one will be picked and the others are ignored
remember to account for per screen data for exp gain
will keep that in mind! ill try to add a book in lol
tbh i dont know enough about netarrays to know if you can listen to an event on the mining netint inside it specifically so my first thought is a simple harmony patch but then i can feel atra's spirit looming over me in disappointment
though is it a UI Info Suite th ing that shows the amount of experience you gain above your head when you mine a rock for example? or do you see that number in vanilla too
Lol, maybe ok how about it makes the profession go right to 10?
I dont usually see exp above my head
UI Info Suite thing I guess, so you'd need the harmony patch to make that accurate for the double exp anyway
just maxing your skill to level 10 should be easy enough though without harmony
just know that the book itself is not going to do that
all that happens when you read a book is that you get a stat added to your farmer
e.g. if you read Horse: The Book then your "Book_Horse" stat becomes 1
and then the game checks if you have that stat as necessary
Oh so maybe I make an easy stat?
the stat doesnt matter, you just need to watch for when the stat changes
and then act on that change
dayending would work, as long as you dont mind making the player wait til they sleep
i assume the smapi dayending event fires at the same time that the trigger would? which should be before all the skill stuff i think
if you wanted them to know they leveled up immediately though i was just thinking you'd just grant them a whole bunch of experience
so they wouldnt miss the lvl screens anyway
just figure out how much is needed to go from current level to level 10 and grant that much
Hm that would be a fun one to make
If this is spam i'm deeply sorry but should my rules look like this instead then?
"Triggers": [
{
"Trigger": "ItemPlacedInMachine",
"RequiredItemId": "{{ModId}}_CowP",
"RequiredCount": 1
}
],
"UseFirstValidOutput": false,
"OutputItem": [
{
"Id": "Raw Ground Beef",
"ItemId": "{{ModId}}_CowMB",
"CopyQuality": false,
"MinStack": 3,
"MaxStack": 3
},
{
"CustomData": {
"selph.ExtraMachineConfig.RequirementId.1": "247",
"selph.ExtraMachineConfig.RequirementCount.1": "1",
"selph.ExtraMachineConfig.RequirementInvalidMsg": "Needs oil, and 1 bovine melon"
},
"Id": "Raw Brisket",
"ItemId": "{{ModId}}_CowMA",
"CopyQuality": false,
"MinStack": 2,
"MaxStack": 2
},```
(@ Link you would also need to remember to... well, remember that you already granted experience in the first place, so that it doesnt keep happening every night)
(like a bool to keep track of whether the book effect already happened i mean)
Okay I will write this all down!
ill give it a go tonight, and then reach back tomorrow (unless im stumped during)
Yeah that looks better, but keep in mind that if multiple OutputItem entries is eligible, the game will pick one at random
If you want it to be more deterministic, set UseFirstValidOutput to true and then order the OutputItem list around so entries you want match first is the first one, second, and so on
However, it might be better from an end user perspective that you make multiple machines
sigh
machines are complicated lol
I'll keep that in mind but thanks for your help I got it to work how I wanted it
Hello again.
I am getting an error with drawing a custom projectile.
Here's my SMAPI log: https://smapi.io/log/10148430cd23489a9412ac41ddb6d136
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 11 C# mods and 0 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
It works fine with that commented out line replacing 'projectile', gives a placeholder texture instead, but I want it to be my custom one and I don't know why it doesn't load my texture.
What about all the books that just grant experience? I assume you could max a skill just by adding a whole lot of exp, no?
those have a context tag on them that says what skill to give e xperience to, but the amount is hardcoded
you have to set projectileSheet i think
lol, of course it is... why wouldn't that number be hardcoded?
oh but it's static darn
BetterMeowmere does not but that might be because it's attached to a weapon? If it is on projectilesheet, how do I get it to ignore the tilesheet and use mine?
replace GetTexture()?
I know earlier you were saying to use LoadAsset but I don't know the namewithoutlocale to reference.
well you need that too ofc
but now that your sheet is loaded you must make projectile use it
...though, that said, it's probably a way easier Harmony patch to just twiddle with the exp than to do any of the other stuff you two were talking about.
(i should clarify, if its a book specifically for a skill whose itemid starts with "SkillBook" then the skill in question to get EXP is determined by the number that the itemID ends with)
I'm just confused because the other mods I'm referencing that are creating projectiles don't use either of those, they just use the Texture2D and ModContent.Load stuff.
its not difficult to just add a OneSecondUpdateTicked event to check for the stat and then grant exp
the hardest part would just be figuring out the precise amount of EXP needed which you'd need to do either way
(bc you dont wanna just give a fuckton bc then you'll get mastery, too)
besides the default projectile sheet
Do you have to know the precise amount though? There's no real penalty if you go over.
it can also use texture from an item
i guess you can just do that if you like, make a fake item with ur texture
I thought points didn't count toward mastery until you max all skills. In fact I'm almost positive, since I just passed that stage on my run yesterday.
Oh, but I suppose you mean if it's also the last skill to get maxed, then those extra points start counting toward mastery.
looking at the gain experience function it looks like you're right, the mastery stuff happens after the level gain check, i assumed it would rollover
er
happens before* the level check
I don't think it matters? The problem seems to be that projectile is not being loaded for some reason
idk whether the meowmere mod is just cp or has C#, but if the former then take a look at StardewValley.GameData.Weapons/WeaponProjectile.cs
oh urite they r use the png path instead of the target
if your total combined level is not at or above 25 when you gain the experience then you will not get mastery if im readin the code right, so i guess you could just grant a fuckton of exp
that was the thing we said to replace with content load things 
Yeah I think you can just throw a ton of exp at it. It's not how I personally would do it but it's a good enough duct-tape solution.
they said they didnt know anythin about harmony and would rather wait on trying it
it also would not be my first chosen solution either
this may be a stupid question but when are you calling Initialise? and are you doing so long before any custom projectiles are spawned?
Right, I guess if there's a very strict "no harmony" rule then it's not viable, but as far as Harmony patching goes that one's dead simple, just a postfix to add a whack of exp when reading the book. (and you can also check to see whether the skill is already maxed, to avoid messing up mastery if a second book gets acquired). The whole thing is like, 5 lines.
i guess technically you should still check if theyre at mastery levels before doing it, though
well the frankenstein getting cobbled together is from a bunch of different ones and if I had to guess why the person I took from used Initialise it's because it's referencing config values.
bc if reading the book grants exp through other means (like maybe someone adds a context tag to it later) then it might push them over the mastery edge
'course it can be done without Harmony as well via some global variables and per-frame checks, it's messier though.
you dont need global variables or anything, just check every second if the player has the stat
the per-frame/per-second stuff though, yeah, no real way around that afaik
The global state is not "does player have stat" but "did we already see that the player has stat"
i said earlier you'd need to track whether theyve applied it before but i was wrong they can actually just decrement the stat again right after
That needs to actually be persisted to the savegame, so it's definitely adding some complexity.
if you only ever do it if the stat is 1 and then decrement itto 0 after, it will only fire if they read the book again
if you dont want that possibility then just increment it to 2 instead, and only ever check for 1
since reading a book will increment the stat, not specifically set it to 1
What's a little more hardcoding, right?
do you know where it's called then? and if possible can you add a check/break point there to verify that projectile isn't null when the function exits?
s'basically the same way you'd need to do it anyway to persist it to the savegame
I'm not a big fan of the magic numbers, but 'tain't my mod.
just might be a little wonky with farmhands since their stats arent synced til sleeping and they might leave early... or something. idk. i just have vague memories about farmhand stat syncing being discussed
its not really a magic number though, the stat being 1 is just the same as a bool saying "did we already see them have the stat"
That's... pretty much the definition of a magic number.
say are there any mods out there using machines InteractMethod
i dont know how else you would expect to track something without tracking it
i feel kinda dum for recommending button changed event for "open menu when interact with machine" kind of features bc i didnt know about this field
Checking >= 0 and marking separately as done is different from checking for exactly 1.
If you reset to 0 you're messing with stats. If you make > 1 non-functional then... well, maybe it'll work but you've made 1 a magic number.
whats the difference between checking "did we mark separately as done" versus "is this stat 1" in terms of magicness then
and where would you save the separate marking in the save file
Better Crafting adds the ability to trigger actions/map actions on interacting with a BC
Because the 1 is an integer that can be any value. A specific value having a specific semantic meaning is magic. It's normally just a number.
As for where, that would be in the save data, I'm not sure what you mean by where?
though it doesnt use InteractMethod nvm
Do you mean like, what API? It's the IDataHelper APIs, ReadSaveData and WriteSaveData.
Ok, progress. Removed the Initialise section and moved the texture load to the actual draw section.
New error message, it's adding an XNB to the end of .png?
"FileNotFoundException: Content\assets/spellcomponents/boltprojectile.png.xnb"
https://smapi.io/log/2a9e9ac0132149bfb1058ddc77a6aac7
are my slashes wrong
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 11 C# mods and 0 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
if you are in C# like that, and want to load from your own folder, use the Helper.ModContent.Load
ahhh
Game1.content / GameContent is for the wider asset pipeline, not an alias for your local folder
since it's custom, not base game, Game1 do not work
private static void OnAssetRequested(object? sender, AssetRequestedEventArgs e)
{
if (e.Name.IsEquivalentTo("Mod/MyProjectile"))
{
e.LoadFromModFile<Texture2D>("assets/myprojectile.png", AssetLoadPriority.Exclusive);
}
}
Game1.content.Load<Texture2D>("Mod/MyProjectile");
the benefit of doing this is that other ppl can resprite your projectiles if they want
i usually do Mods/{ModManifest.UniqueID}/... for the target, but u get the idea
so how does this work with 10 other spells that use different textures? Lots of lines with ifs?
so I would make a custom tilesheet and then reference the location on the tilesheet
oh I thought it was 24x24
i dont remember tbh 
you're already redoing the draw code, you can totally make 240x240 projectiles if you want
yea do whatever u want 
Embrace chaos
shooting ballistae out of a crossbow, sounds sick
i did check though
hey everyone, how would I go about using specific sprites for festivals? so far I only saw whole sheets getting added via "Appearance", do I really gotta make tine sheets for every festival cuz I got em all on my main sheet rn
base game projectiles are indeed 16x16
Finally done with the portraits and sprites. Does the Manifest.json look correct??
teoshen wanna make ur projectile classes available so i dont have to make my own?

smapi 2.9 is not right
!json you can use the validator for manifest as well
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.
unlikely it'll die bc content patcher, but we are at 4.0.8 (4.1.0 after 1.6.9)
Makes sharing a lot nicer than a phone picture of your monitor
rn im just sitting here like 
Oh! Ty!
dang
(i haven't tried sprite index but i think that'd only be plausible for overlays)
dont they still need all 4 facing directions
idk
cus the player can turn npc by talking
yeah the player forces a turn
ive never done anything with festivals and all i find is about adding them to it, not the art part
spriteeffect flip the left facing one
uno momento
depending on the festival you'd also have to do a walking animation
huh why...
(flower suffering)
so i need to do the walk around all sides sprites part?
does that also mean i need the 4 standard expressions for the portraits?
I think this looks fine, you can technically drop the minimum version from ContentPackFor but you can also leave it to force only compatibility with specific versions
you'd only need the 4 directions, and a back walking if you have a flower festival
you don't have to have portraits attached
Ah, Okay!
the portraits depend on whether the dialog you wrote use em
flower festival can be shoved into the base sheet because it has it's own position
im still a little confused on how to do schedules and pathing, however..
schedules are ...... 
hm
Hm, actually, do you need MinimumApiVersion at all? That's not something I include in mine lol
well i just do a flowerdance standing around sprite, she wont dance
that's fine then
appearances doesn't have a sprite index unfortunately
but you can probably just do an editimage -> when condition -> sprite index
https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Manifest
Yeah, that's not a field at all
i guess I can keep the festival portrait as a festivalportrait.png all in one and jsut use the right $ then, hmm
it's unlikely to break anything cus it's minimum
someone would have to try to run your mod on 1.5.6 install basically
currently, i was using Tia's tutorial on making npcs, but i guess im still just a bit lost
definitely a real field tho
it's real, i just don't use that field 
if u are use content patcher then content patcher would have set the min api version already
Oh, I didn't scroll down far enough lmfao
only C# mods with no dependencies are at any risk for not setting this
tia's guide is fine and perfect, you just have to understand when you're making an npc that you're actually having roughly 6-7 tabs up at once
so for setting schedules, sprites and portraits, would i be doing this in game using debug mode, or through the content.json?
all through content.json
Debug Mode just gives some map information doesn't it?
whereami is useful if you don't want to use Tiled for events
OH THE COMMAND ANE MADE FOR ME
!reload
-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload Your.ModUniqueID
-C# Visual Studio has a feature called "Hot Reload": https://learn.microsoft.com/en-us/visualstudio/debugger/hot-reload?view=vs-2022
-C# Rider has the same: https://www.jetbrains.com/help/rider/Hot_Reload.html"
-Generally working in C# it will be called "Hot Reload" (usage may vary)
Also if you're changing stuff with NPC's you might have to go back to the menu
Things like schedules are only done at the beginning or end of the day
oh right schedules needed to be added into the reload *does not work with reload
At least reloading the save is way faster than restarting the game though
i would offer to sort all of your stuff for you but that'd require some finagling 
wait i guess im asking the wrong questions??? i for starters need to figure how how to put the initial npc into the game. just anywhere in general atm
so the core you need for an npc to exist is : portrait, schedule, sprite, "disposition" (aka, the data/character edit) squints i don't remember if there's anything else
i don't think gift tastes matter
so i got this so far and rn I am wondering where my pngs come in
"Appearance": [
{
"ID": "Usual Outfit",
"Precedence": -10,
"Weight": 1,
"Portrait": "Portraits/TheFishmonger",
"Sprite": "Characters/TheFishmonger"
},
{
"ID": "Egg Festival Outfit",
"Condition": "ANY \"EVENT_ID festival_spring13\",
"Precedence": -20,
"Weight": 1,
"Portrait": "???",
"Sprite": "???"
},
]
load them
appearances then pulls from where you loaded it to and goes "okay that's this npc's information now yoink"
i did load em in my dispo, i was wondering bout if i need to take that somewhere else or change that hm
if you loaded them at all, it should be fine
just make sure it's the same path/filename
well i have the standard set loaded rn since i guess i gotta do more for the festival sprites and also load the second portrait sheet but yea
(one sec i'm gonna pull up the npc.cs or wherever the dispo is to see what's actually required for an npc to exist)
target for what, appearances?
(maybe looking at matteos intense data was the wrong move lol)
for "Portrait" and "Sprite" for the festivals
oh they're set to what i've loaded them/named them as
i forgot one, dialogue

:'DD why did i get timed out there..
bad word or markdown?
yeah but why...huh..
markdown url <3
we all get bonked by the markdown
scratches head
haha oooo
do you want me to take a look
I think i am getting confused about targets again
just to avoid that again. something like this? the dialogue part would look something like the sprite part??
dialogue requires you to create a base blank.json load, hold on
"LogName": "BlankLoads",
"Action": "Load",
"Priority": "Low",
"Target": "Characters/Dialogue/EdelweissSeung, Characters/Dialogue/MarriageDialogueEdelweissSeung, Characters/schedules/EdelweissSeung, Strings/Schedules/EdelweissSeung",
"FromFile": "data/Blank.json"
},```
and that blank.json is quite literally { }
so, i got this load for the standard sheets
{
"LogName": "Constance Portraits",
"Action": "Load",
"Target": "Portraits/TheFishmonger",
"FromFile": "assets/Images/Constance/Fishmonger_portrait.png"
},
{
"LogName": "Constance Sprites",
"Action": "Load",
"Target": "Characters/TheFishmonger",
"FromFile": "assets/Images/Constance/Fishmonger_spritesheet.png"
},
Where would I throw "Fishmonger_portrait2.png" then (etc the otehrs i dont have yet) I thought the Target always gotta be the internal name of the npc...
i think of target as, "i am throwing these files into this folder"
whatever name works for me to remember, that's what i use
Pretty sure only the base portrait and character sprites should be the name of the character, the game handles finding those I think
But anything in appearances is manually set by you
extras, with the exception of {{NPCNAME}}_Winter
gets ignored unless you ask the game to fetch it
huh
Appearances is like a built in override
wait so...
you can become chaos like me
"LogName": "Load EdelweissSeung's Long hair",
"Action": "Load",
"Target": "Portraits/EdelweissSeungL_Spring, Portraits/EdelweissSeungL_Summer, Portraits/EdelweissSeungL_Fall, Portraits/EdelweissSeungL_Winter_Outdoor, Portraits/EdelweissSeungL_Winter_Indoor, Portraits/EdelweissSeungL_Beach, Characters/EdelweissSeungL_Spring, Characters/EdelweissSeungL_Summer, Characters/EdelweissSeungL_Fall, Characters/EdelweissSeungL_Winter_Outdoor, Characters/EdelweissSeungL_Winter_Indoor, Characters/EdelweissSeungL_Beach, Characters/EdelweissSeungL_FBeach",
"FromFile": "assets/{{TargetPathOnly}}/{{TargetWithoutPath}}.png"
},```
"LogName": "Constance Festival Portraits",
"Action": "Load",
"Target": "Portraits/TheFishmongerFestivals",
"FromFile": "assets/Images/Constance/Fishmonger_portrait2.png"
},
(plus sprite i dont have yet)
and
{
"ID": "Egg Festival Outfit",
"Condition": "ANY \"EVENT_ID festival_spring13\",
"Precedence": -20,
"Weight": 1,
"Portrait": "Portraits/TheFishmongerFestivals",
"Sprite": "Characters/TheFishmongerEggFestival"
},
?
{{TargetPathOnly}}/{{TargetWithoutPath}} is redundant because you could do just {{Target}}
this is true, i used to have them in separate folders and i just haven't removed it

Might be best to name the Targets a little more specifically
Assuming you're intending to have a sheet of portraits specifically for the festival
i think void is doing dialogue all from one sheet, so it'd just be the correct $# for whatever festival
Unless all your festival portraits will be the same
yeah I just have one portrait for each festival so i figured that one can all go in one sheet :B
is there another tutorial a bit more detailed than Tia's? this is what i have, but im unsure if i have to have more than just these files?
Ah, well then yeah, looks good
was just gonna differ them with which $ i gonna choose
Tia's is pretty much it as far as I know
I was able to make a basic test NPC following it, so I know it's good
theres lemurs but that might be confusing to newbies since it was written pre 1.6?
Tia can't help me be an artist or writer though :P
yeah tia's has everything, so i think the only thing necessary is the blank loads to force the npc to "Exist"
Well, I think it's technically missing a couple things, but you can easily fill those gaps with the wiki
It's got everything you need to make an NPC work though
well other people have written events so that wasn't necessary 
ah okay. So, am i at the point where its okay to load in the game?
You can always try, also don't be afraid of it not working
That's part of the process
@past knot this one's for you
change out my npc's name for your internal npc's name
and create a blank.json and change the "FromFile" to wherever you put it
but yeah don't be afraid of the red screaming text it doesn't hurt that much
i'm actually really curious what word got me bonked when i was dissecting my event code
wait the format is not "1.5" is it? is that the game version i need to put or...?
Thanks!
oh hey not to butt in but are you dumbpuppyprince on nexus?
hey nice!
:DD
yeaaah..this whole npc thing if defo new and VERY confusing to me. ive only ever done mods that replace pngs like fashion sense's mirror or tool pngs
it only gets worse, because you see things like spacecore or BETAS and you go, "i want nuanced things for my npc that sounds nice"
this one message sent pure fear through my heart
it's really about seeing your npc in game that really fulfills the dopamine high
All my braincells are in one basket right now and this 🤏 close to hitting the panic button from just trying to get the npc into the darn game 
Remember to take breaks, especially with something this involved
i wasn't kidding when i said 6-7 tabs
it's very good to take multiple breaks, that's why i use this chat as a scapegoat brain relief 
A lack of red is nice, as long as the game is actually doing what you want still lol
yellow text makes me squint unless i know it's something that doesn't exist
Now my next hurdle is figuring out how to set him on a spawn point to actually see him????
should be home
Never mind the red struck me LAST SECOND lmao
How would this look in the content.json?
in your data/character edit
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs
i can't make it force tab down, but if you scroll down to Spawn rules:
you'll see "home"
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Unix 6.6.46.4018, with 4 C# mods and 1 content packs.
never been happier to see red oddly enough
our favorite red, missing a } or ,
mighta totally been the exta , at the end
then im not actually sure why its yelling at me lol
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
oh maybe it's ]
ngl these are my standard tabs open for my sdv modding master tab lol
since it says changes deserializing array
I had whittled my open tabs down because I'm not currently working on anything lmao
roku left me behind only to be free
But then I decided "maybe I'll finish my list of mail flags" and that opened 4 more tabs
did you add the mailflags that aba found last night?
Currently waiting for 1.6.9 to be released before finishing my crane game mod
something about FirstPurchase_crib_remove and FirstPurchase_crib_somethingsomething
Oh wait you might be right
Or more specifically for the Space Core API to get the virtual currency stuff again
Not sure, I dumped by whole list on the modding wiki and started working on converting it to tables
There's also a lot of info missing from where the flags are raised and used
its 3am i am wondering if i should go to bed
godspeed, i hate editing wikis
Definitely lmao
yes, void
format needs to be closed
Missing }
Not a comma, you have to close the whole json file
Close might be the wrong term when talking about the entire file lmao
clears throat for every whole sandwich, there requires { } two pieces of bread
fair
Ahhh
That's probably way easier to parse than the programming jargon I was about to spit out lmao
That also applies to [ ]
and " "
No half sandwiches allowed

but what if I like open-face sandwhiches
this is a sandwich shop not a pizza shop
P a i n
pizza shop next door
now i'm curious about where single pipes are used-- my adhd is going haywire dammit
if you are referring to | in C#, its for bitwise operators
Yeah I'm absolutely lost it yells at me no matter what format I close the [ with
what layer depth should i use to make something always draw behind the player, but draw in front of buildngs
im sure the 5 hours listening to disturbing mysteries in japan will do me very good in my sleep
i surely will dream of making my mod
After line 23 add a }
i put -1 and it is just behind everything 
i think depth uses floats?
yea i gotta figure out what float
What if you put -0.1f
euuuuuuuh probably something crazy like .01923
Farmer.getDrawLayer is a good place to start
You deleted the ] you only want to add }
so you want some value below that to draw behind the farmer
yea i guess i just gotta do that
very unfortunate that i cant just slacc and add a constant value 
I hope yalls crops grow healthy @velvet narwhal @rancid temple
world pixel y/1,000 is the base value for everything with depth, and usually 1/10,000 for differentiation of layers
!vsc if you're not using a program with validation I suggest one
When creating content mods, it's useful to have a program that will check the validity of your json for you. We tend to recommend either VSCode https://code.visualstudio.com/download or notepad++ https://notepad-plus-plus.org/downloads/
It'll catch things like this before you even get done
(notepad++ requires an addon, but at least it's nice to read unless you get the flashbang issue)
I usually suggest VSC because it has validation baked in, but I know you can download plugins for N++ to add it
I really wish N++ would remember my theme settings, I like to use it for other things but not if it's gonna blind me
i really don't know why it does that to you
Me either, it only started somewhat recently
Button are you still here?
Considering the volunteer nature of people helping here, it's best to just ask your question and hope that you get someone you won't have to re-explain the context to, but be prepared to do that anyways
thanks selph & wren
My gamer instincts are screaming at me to move out of the red
Yes I am, I am going to just work on the book "book of stars" and enhance it. but ill scroll up chu/e and take a look ! and yes rokugin ur right
hm actually
when im on hoed dirt it draws a shadow
but it doesnt when im not on hoed dirt

So for where the npc walks, does that all go in the content Json? Or the blank
its prismatic actually 
That would go in your content, Tia's guide I think covers using Include for this too
Since cramming everything into content will start to get to be a lot
nothing except a set of brackets goes into the blank.json
That makes sense yeah. I suppose I'm just not understanding tias guide haha
Your blanks should always remain blank, you will be editing the Target they create in order to add the stuff you need
portraits and sprites you can put into the content.json too
Essentially, everything goes into your content.json, Include is an Action you can use to break up your content.json into separate json's for organization
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide.md
In general when I'm working with CP I like to keep the author guide open so I can refresh on the various fields
When working on NPC's, I keep Tia's guide and the migration page open
https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_NPCs
Maybe one day someone will move this to the actual NPC page, I have considered it but am still not that confident in editing the official wiki
I have to stop putting off going to eat 
I attempted to look at Sam's schedule for reference
Needless to say it was the beginning of my break 
you'll definitely get a lot of information out of the unpack
I'm not even sure what I'm looking at 
tia breaks it down pretty well in the schedule portion i'd say
Time MapName Xcoord Ycoord Facing Animation StringDialogue : if more than one, separated by a /
Literally me 😂
Would custom npc fixes also be useful?
i am unsure of what that does
the most basics of basics, you can just require smapi and content patcher
Ah
that's all you need
yeah i think most or all of the "fix hardcoded thing about NPCs" mods are obsolete now
i'm freed from one more responsibility event written
even i made one during the 1.6 alpha... vanilla ate it five days before release (this is a good thing)
i don't know what CFD does exactly either (custom fixed dialogue)
that one let you define NPC-specific dialogue for hardcoded generic lines. there may still be a few that vanilla didn't add a key for but i can't think of one
ah, i think i just get around it with GMCM config telling the player "i'mma overwrite some things, just so you know you installed my mod and you're not romancing this npc it is no longer my problem"
i think i know which ones though, like if people wanted specifics for proposal/engagement maybe
yeah that sort of thing. they got new dialogue keys, so you can just define them. it's great
...that reminds me, did i nuke those from my code
oh wait no i have specialty ones because i wanted to do a funny with the fortune teller
(i'm waiting for the acceptpendant dialogue command)
I can only hope to make something good enough to be eaten by SMAPI or vanilla lol
((dehardcoded crane game prizes))
Did smapi eat any mods
a good chunk of npc mods got eaten
I thought vanilla ate those
Hm, not sure if SMAPI itself has done that
oh true
I started writing a machine framework during the alpha and it got eaten literally a week after I started it lol
i know content patcher ate a LOT of mods
It's not really about making something "good enough" i feel
More that you are fill in a pot hole
And then vanilla properly pave over it bc it just makes sense
laughs in brain problems
(screams in impostor syndrome)
turns out it's easy! ask for it much earlier and get denied, then ask again right before the release and pathos throws it in like a party favor
i will not pressure myself to think of something that needs to be dehardcoded, i will just enjoy my npc hole that i've dug far far into the earth
(#933572312203141191 message, for the curious)
Access denied
oh i have something actually
oh, sorry, i guess it was an invite-only thread (it's archived now)
Ah
Kind of wild that it doesn't provide any context to know why I don't have access lol (alas, discord)
@ivory plume can we pass Trinket.OnDamageMonster the new isBomb bool? Storing and passing isCrit would also be really useful for making effects similar to golden spur
(i forget, is there actually a rhyme or reason for when we're supposed to post on forum vs just pinging pathos?)
hm not sure but i been assuming that we can ping pathos about 1.6.9 rn bc it's beta period
ig pathos will just say "post this in full detail on forum for me pls"
yea he did say that for the trinket light sources thing, understandable cus it would need much refactor
👀 I was even reading the BETAS documentation because I was hoping to use your NPC location GSQs. But I didn't read anything else so I didn't know you had a TextAboveHead action. My takeaway from this is that I need to read ALL your documentation for it ASAP!
oh spacecore pinged me for a manual trigger failure i probably did that wrong in my code
(oh ignore the part in the TextAboveHead documentation that says dialogue commands are supported i accidentally copy-pasted that from setnewdialogue lmao. TextAboveHead absolutely does not use dialogue commands) i fixed this now
Sure, done in the upcoming Stardew Valley 1.6.9.
oh good, i haven't started my new responsibility always happy to help with npc questions
would you mind if i dm you so things dont get lost i am lazy ok
@past knot You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
you two want a thread?
probably best since some things slip my grasp
i shirk responsibility of thread creation by avoiding becoming a cheeto
Yes I will supervise the thread to bonk Avi if they go too fast
It looks like the wiki is incorrect about custom buildings concerning the 'Builder' field: "If omitted, it won't appear in any menu". But if I omit it the building still appears in Robin's build menu. (https://stardewvalleywiki.com/Modding:Migrate_to_Stardew_Valley_1.6#Custom_buildings)
it's poorly worded, probably should be like "if explicitly set to null" since it will default to Robin if not set
Ok, thanks for clarifying!
I don't want to ping chu/e and pester them but omg it's finally working (placeholder art, now that I know it works and can get the tail I can make it actually pretty and maybe an animation). The OnAssetRequested was it, so now I need to figure out how to get it to be dynamic to the spell being cast.
this has been the big roadblock, I didn't want to start exploring other areas until I got the art put into game figured out, ah this opens up so many more options for the next thing to do although now I think I want to play with custom sound effects.
I think this now puts me at 3% feature complete to my design document.
love watching your progress on it, my pipedream after this semester is a dnd-style expansion, so if you get it out by december or february i'll be happy to set a dependency
Sword and Sorcery will probably come out first and have more to it.
two cakes is so real
although I don't know how easy it will be to work around/with S&S since it seems more of its own mini-expansion, mine will be more plug and play into anything.
if i can throw content packs into it for my own flair, i'll take it
well further on down that line i don't mind setting dependency i assume, it's gonna be a rough semester for me 
between my current classes, childcare/housework, and work, I get maybe 3 hours a week to work on this so it'll be slow progress.
We’re planning on an early November release
(For what it’s worth, other mods can add new abilities to S&S too, though I’d probably want to add some proper APIs if anyone is actually interested)
me, on my knees: pleasepleasepleaseplease
finally, my wiki account is no longer considered new and I can make large scale edits
[Content Patcher] SMAPI blocked asset replacement for 'Maps/Greenhouse': the 'MODname' content pack incorrectly set asset to a null value.
Hi I'm a beginner and I'm currently creating map data.
First of all, I tried to create data for Greenhouse, which only needs to be replaced, but it was rejected with the above error.
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
the most likely cause is that you're accidentally blanking/replacing Maps/Greenhouse
I'm sorry. I am not good at English, so I use a translation tool. I am sorry if this is an odd question, as it is difficult to read the fine nuances.
Are you saying that the “content” code is likely incorrect?
yes. Post your code using the link above
go to the smapi.io/json link, paste in the contents of your content.json file and can more easily help you.
But the issue is related to how you interact with Maps/Greenhouse
ok and relative to your content.json file, there is a folder called assets that contains a file called Greenhouse.tmx?
The code itself is very simple, and once it detects an error, it deletes the mod data. And when I put in the Greenhouse mod distributed by someone else, I get the same error message.
I give up on trying to make these walls and floors decoratable for the bathroom renovation. Nothing has worked at all, even though I've gone through and completely changed the FloorIDs and WallIDs dozens of times, and added the new IDs to the map properties as well as the Back object layer.
There is something I am missing but I cannot figure out what.
Yes. The folder “assets” and the edited “Greenhouse” file are included.
Is it because I installed the mod data created by someone else first when I was adapting my own mod data?
If that is the cause, I would like to try that once if it can be solved by putting commands in the data started from scratch in Smapi and checking the operation.
Also my bathroom renovation mod apparently kills the spouse room decor (it turns into an empty room) when I patch reload despite not touching that area, so that's fun
at the moment im putting continuing to schedule coding on hold. Anyone know what dimensions need to be used for a building?
or, at least dimensions for the community centure sprite, as that is the size of the building im going for
Buildings don't have sprite size limits, tho u would want 16xN wide
do you have the full SMAPI log?
Comm center is huge though, are you sure u want that for a farm building 
oh! its not a farm building, its an npc home
on that topic, id like to ask for some resources and tools on how to edit maps both exterior and interior
we can throw that into the same thread
In that case take a look at spring_town
Maps/spring_town
Do you want to send it to me and I can poke around? Might help to have a different set of eyes on it.
https://smapi.io/log/b1305ca753664de89ee0784b385b8ffc
(The mod execution folder itself is in a strange location, so there are very many unrelated error logs...)
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 95 C# mods and 235 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Sorry for the newbie question, but is there a better way to switch between the data + mods I'm originally playing with and the minimal mod data for testing in order to do a test check?
Yes, you can use modgroups or Stardrop. Mod groups: https://stardewvalleywiki.com/Modding:Player_Guide/Getting_Started#Can_I_have_different_mod_groups.3F
!tilesheetclimbing
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
unfortunately I'm not that familiar with map modding (and I also have to go to bed soon), but someone else who is more familiar with this problem can help you
Oh, I see. I was thinking that I would need to replace the entire specified executable mod folder every time I switch between them. It would be convenient to be able to switch multiple execution folders by specifying shortcuts.
Thank you very much for your help. I will run it here as a test mode from now on.
Thank you for reading the error log. Thanks for the late hour.
I am even more of a novice, so I guess I am not aware of any errors in the underlying map data...
Are you using Vortex?
Yes, I am aware of this. I also install and run my own mod data through Vortex.
I would recommend that you stop using Vortex asap because it breaks mods - and can do so to yours which would cause you a lot of problems if it happens. If you want to use a mod manager, Stardrop is available.
Thanks for your input! Using software other than Vortex was not the first option that came up in the Japanese information sources. I had no idea that there was any other option until you commented on it.
I will look into the details of the software you mentioned.
Gonna give it one more try, as I think I found something I missed, but if it still fails, I'll pass it over to you to look at
Link to Stardrop is here: https://www.nexusmods.com/stardewvalley/mods/10455
To talk about your mod: like Selph mentioned, the error is a thing called directory climbing. I can teach you how to fix that. Can you right-click on your Greenhouse.tmx file and open it with Notepad++ or Visual Studio Code or whatever other text editor you use? Send me a screenshot once you are done so I can check you are in the right place before we move on.
This is the base of the Vanilla. I just changed it so that the ground (BUCK) is filled in and the trees are visible on top (Front).
Ok great work. Can you search for a line that contains the text <image source=" and also contains paths.png?
It will look something like this but will have a much longer name inside the quote marks than just "paths"
https://smapi.io/json/none/e783cfbad943413d8829569c56ff4fcf
The whole is here.
That's odd. Your SMAPI log error was about an incorrect file path for the paths.png file but you don't even have a paths tilesheet. Did you delete it from the map?
Hmmm. I have not made any changes to the original data, the image data in the MAP folder.... I checked just to be sure, but the image data was still there as per the path.
Oh, I meant when you edited the map itself. Can you open it in Tiled and look at the Tilesets? It should look like this.
Ahhhhh...it was you there, wasn't it?
I looked at the tileset in the map data, but the “paths” data you pointed out was not set to “tiles”. I am embarrassed.... I'll fix it right away and check the operation.
Before you do that, let's fix the directory climbing problem for the townInterior tilesheet.
Replace this line:
<image source="C:/Program Files (x86)/Steam/steamapps/common/Stardew Valley/Content (unpacked)(MOD用コンテンツパッチャー互換データ)/Maps/townInterior.png" width="512" height="1088"/>
with this instead:
<image source="townInterior" width="512" height="1088"/>
I was able to fix the error on the code you showed me. I was able to find other parts of the code that were not loading because of my modifications. Thank you very much!
But next I got “mod reordered the original tilesheets”.
(I am currently checking the wiki to see what it says and where the error is...)
Okay, that's fine! That error is because you deleted the "paths" tilesheet. If you can add that back to your map the error should go away.
hi! planning on making a map recolor, does the stardew modding wiki have a detailed guide on what part in the tilesheets goes where ingame?
I understand. I would like to move on to correcting the relevant part again.
Also, I am ashamed to admit that I thought it would be easy to make a few modifications to Vanilla's MAP. However, I have come to think that I still need to learn more about basic operation...
I would like to learn how to avoid more basic error causes and check the operation of the system through trial and error.
Maps are difficult at the beginning because you have to get everything correct and it's not always clear what "correct" should be. Editing a vanilla map is a good place to start, though - and the errors you are getting here are ones that most people get when they start making maps (including me).
A lot of tilesheets are used in many different locations, I don't think there are any specific guides on what is used where
Thank you very much for your very kind words.
I have been struggling to find the information sources I need while reading English pages via tools, so I really learned a lot from your pinpointed advice. Thank you again.
You are doing very well! It must be very hard trying to understand instructions in a language that is not easy for you.
hey guys i start college for programming in a few weeks and been trying to make mods in stardew in the mean time, does anyone know if this video would suffice and teaching me the basics till then? I know a bit of it, but someone recommended me it. Thank in advance https://www.youtube.com/watch?v=wxznTygnRfQ
C# tutorial beginners full course (C# for Unity)
#C# #tutorial #Unity
⭐️Time Stamps⭐️
#1 (00:00:00) C# tutorial for beginners 🚀
#2 (00:06:30) output 💬
#3 (00:10:48) variables ✖️
#4 (00:19:32) constants π
#5 (00:20:35) type casting 💱
#6 (00:27:49) user input ⌨️
#7 (00:31:24) arithmetic operators 🧮
#8 (00:35:54) Math class 📏
#9 (...
ohhh i see, i was just wondering if there is one since i think for example the dirt in the mountains is different from the one on the farm and everywhere else but i think that's just outdoorTilesheets2 yeah?
!yellowbook I've seen this suggested a few times
A good book for learning c# is https://www.robmiles.com/c-yellow-book
I used Codecademy to learn the basics of C#
A good way to find out is to recolour the tilesheets in different colours and then run around the game looking.
Have you unpacked the files yet? Easiest way is to just check the map
Wait so yellow book is what your suggesting or codecademy?
Or yeah, actually opening the individual maps
Each map has what tilesheets it's using in Tiled
I suggest Codecademy because it's what I used, but other people suggest yellow book
I think they're both technically free with means to pay for them
Can you do me a huge solid and link me the codecademy lesson?
Do you feel confident that you can add the "paths" tilesheet back into the map?
Thanks ! ill give it a go 🙂
@rancid temple Guess who just got an invalid tile GID error?
It's like one half "nice" and another "that sucks" lol
Would you be willing to send it to me so I can mess around with it?
I expected that I'd get one so I made a backup before making the changes that caused it
Ah well that's good at least
Let me check with fireredlily since it's their map I'm troubleshooting for them
Permission granted. You all good for me to DM you?
Yep
Hi guys, does anyone know why "OnTimeChange" doesn't work on editing map properties and if there's away around it? I have two different ambient lighting for day and night but if you are inside the room when the night comes, the lighting doesn't update. you need to go out and back again to see it.
That's likely the map property itself not auto updating and is no fault to CP or ontimechange
I would guess map properties are cached until you re-enter the map
Otherwise it would be wild to check something that the game doesn't expect to ever change more frequently
Although there should be a ambient light property for night specifically
Yeah there is
AmbientNightLight
Well, I can say for sure that you shouldn't change the GID's manually
Break more?
Oh yeah, absolutely nuked the map and even getting them to set back to the right numbers wasn't fixing it lol
thank you very much, i will look into it
btw for those who helped me earlier: I was able to get my night tiles working and solved the gid error 
what is the diff between these 2?
{
Game1.chatBox.addErrorMessage(shop.ShopData.Items.Count().ToString());
Game1.chatBox.addErrorMessage(shop.itemPriceAndStock.Count().ToString());```
nvm
If I ever would want to completely replace the trigger to unlock ginger island from the quest to custom bundles I would be stepping into c# territory, right?
haiii :3 I can't seem to find much space core documentation except the read me, so i couldn't really tell what do do and just guessed, so would this be a valid recipe? if not what would i have to change, any help is always welcome :3
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Thank uuu! <3
(Hope this is the right place) If someone with the Mod Author role can post my mod in #mod-showcase I will appreciate it 🙂 I can't do it myself 😅 https://www.nexusmods.com/stardewvalley/mods/27314
Would you like a message with it?
"Hey everyone. I just released my very first mod. 😊 It's some little changes to make special orders more appealing and less random. I simply modified the RequiredTags lines."
Thanks 🙂
Done 
it's happening again and doesn't show up on the cookout kit or normal kitchen menu :( here is the json: https://smapi.io/json/content-patcher/23649b7a8dfb47ae9f8e7f578b6f7c38
To use the CookingRecipesOverrides feature from SpaceCore you first need to add the recipe to Data/CookingRecipes, as the key used in the spacecore feature should match the key of a recipe present in Data/CookingRecipes
OOOOOOH
THANK UUU
ok
so it works but when i try and hover over the item in the crafting menu it exits the menu
ughhh i guess i fixed it?
but now when i try and press e
this gets put in the log
[14:26:04 ERROR game] An error occurred in the base update loop: IndexOutOfRangeException: Index was outside the bounds of the array. at SpaceCore.VanillaAssetExpansion.VAECustomCraftingRecipe.get_Description() in C:\Users\space\Programming\StardewValley\StardewValleyMods\SpaceCore\VanillaAssetExpansion\VAECraftingRecipe.cs:line 152 at SpaceCore.Framework.CustomCraftingRecipe..ctor(String name, Boolean isCooking, CustomCraftingRecipe recipeOverride) in C:\Users\space\Programming\StardewValley\StardewValleyMods\SpaceCore\Framework\CustomCraftingRecipe.cs:line 21 at SpaceCore.Patches.CraftingRecipePatcher.RedirectedCreateRecipe(String name, Boolean isCooking) in C:\Users\space\Programming\StardewValley\StardewValleyMods\SpaceCore\Patches\CraftingRecipePatcher.cs:line 162 at StardewValley.Menus.CraftingPage.layoutRecipes_PatchedBy<spacechase0.SpaceCore>(CraftingPage this, List1 playerRecipes)
at StardewValley.Menus.CraftingPage.RepositionElements()
at StardewValley.Menus.CraftingPage..ctor(Int32 x, Int32 y, Int32 width, Int32 height, Boolean cooking, Boolean standaloneMenu, List1 materialContainers) at StardewValley.Menus.GameMenu..ctor(Boolean playOpeningSound) at StardewValley.Game1.<>c__DisplayClass952_0.<UpdateControlInput>b__0() at StardewValley.Game1.UpdateControlInput(GameTime time) at StardewValley.Game1._update(GameTime gameTime) at StardewValley.Game1.Update(GameTime gameTime) at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate) [14:26:04 WARN game] WARNING: Mismatched UI Mode Push/Pop counts. Correcting.
can you post the edit you did to Data/CookingRecipes (not the spacecore recipe override)
@ivory plume Sorry to be a bother, I just found a thread you replied to where someone lost the farmhouse_marriage.xnb file. My save file is completely busted because I accidentally had a defunct mod installed, SMAPI says I'm missing that file. Could you offer any advice? I'd be eternally grateful ❤️
If it's actually missing, try verifying the game files, if it's corrupted, try reinstalling
I don't really know whats happening. I'm probably posting in the wrong channel actually sorry about that. Basically I upgraded to the 2nd house upgrade but still had Bathroom after 2nd Houseupgrade by DevilBro installed. It completely wrecked the house tilesheet or something. I removed the mod and tried to reload but then the loading screen would boot me back to main menu on a loop. So I put the mod back which works but the map is all messed up :/
Sorry I'm not a modder
make a thread in #1272025932932055121 so people can help
Thank you ❤️
This does seem to be a known issue as well https://discord.com/channels/137344473976799233/1272716749095043162
I had to leave the meeting because I had to respond to an urgent business call. I apologize.
I've been staring at the wiki since then, resetting to Vanilla's default Greenhouse many times and trying to edit it. And I finally figured out how to change the path when I add a new tile sheet (in this case a spring_outdoors tile sheet).... I was also able to confirm that it works!
I honestly didn't think it would be difficult to make a simple change this time, just repaint the tile sheet for the frame. Next time I would like to gradually increase what I can do while checking the areas where I can confirm the operation. Thanks again for your really helpful advice!
Hello! 🙋
I'm trying to make a translation mod that would translate SV into Latvian.
I'm aware that if I want to translate it I need to add my own font to the game because SV doesnt recognize these letters "'āčēģīķļņšūž".
- I made the ".ttf" file. (the font)
- I used the BMfont to generate ".png" and ".fnt" files of my font.
But where do I make a "xnb" file? To use the font in SV as much as I know I need to repack it in "xnb" format. How?
Hi, is this tutorial still valid? I want to make a recipe mod. If you know of a more updated tutorial I would really appreciate it.
https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_a_Recipe
It is very easy to add recipes to Stardew Valley using Json Assets. You can use Vanilla items or items you or another mod you have installed created with JA.
If you would like to make a video based on this tutorial, you are welcome to do so! Afterwards, please edit the page to add a link to your video for users who prefer to learn that way. :)
F...
That one is outdated (it uses JA which is kinda deprecated). Use this: https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Recipes_with_CP
Thanks
You can use this website to pack your files into an .xnb https://lybell-art.github.io/xnb-js/
Would you be able to load fonts with content patcher?
To circumvent need for xnb, unless you really want this to work on vanilla game
Im not sure. I tried to but smapi keeps looking for a "xnb"
Maybe i did smth wrong with the code
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!
I know he was also looking at the wiki page for it chue and from what I saw, his earlier code matched the example from the page so I don't know what was going wrong. https://stardewvalleywiki.com/Modding:Custom_languages
yea ig this json is just fnt but loaded into game
Remind me in 8 hours to mark that as depreciated
As you wish, tiakall (#6205127) (8h | <t:1724713596>)
errors about looking for xnb and not finding one in the context of content patcher usually means you loaded your files to wrong target
can you post your full error log?
!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.
i also have a dumb idea which is to do your translations on the french locale for now, since the french font has all the chars you wanted
Ugh, I really need to finish making the rest of this guide lol. So many projects, so easy to abandon one for a new one
I probably should have left myself some notes about what else I needed to add...
sure! one second.
Oh right, the entire cooking recipe section is nothing
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 25 C# mods and 23 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
Remind me in 6 hours to follow up on the custom renovation decoration issue and the cooking recipe guide
I'd rather boot myself on an unprotected windows XP install than deal with you but we can't all have what we want, can we? (#6205151) (6h | <t:1724707180>)

what's the name of your custom language mod?
Uber cuts deep
oh i found it
can you also send your content.json
(why is your game installed to one drive...)
(......gog?....)
looking at guide vs your error, i think you need to make sure this field is correct
it prob should be
"FontFile": "Fonts/{{ModId}}/LatvianBOLD1"
matching the load action, which should be something like
{
"Action": "Load",
"Target": "Fonts/{{ModId}}/LatvianBOLD1",
"FromFile": "assets/LatvianBOLD1.fnt"
},
once again please do not make xnb 
@worn yew pls just send it here instead of dm 
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
okay!
oh you shouldn't use When in the Load
For Content Patcher packs, they must be added without When conditions (or only using immutable conditions like config or HasMod).
it might be that you simply offer the base mod
and some number of optional files with fonts that ppl go replace manually
for now please remove the When conds, ConfigSchema, and DynamicTokens
@brittle ledge I hope it is ok that I ping you here because I didnt want to post this in #making-mods-art - this is my manifest and my texture json as well as a screenshot of my current folder - does everything look correct to you?
I am especially unsure if I need to put [] around the ItemId reference?
does this look right?
version under author is your mods version, not alternative textures. So you'd put 1.0.0 or something if [AT] is how it reads folders its unnecessary in the name because the folder needs to be named that
ahh, thank you!!
you should try it 
oh wait
ID should be Id
prob not huge problem
also it's recommended that you do a load for the button texture too
{
"Action": "Load",
"Target": "Fonts/{{ModId}}/Button",
"FromFile": "assets/Button.png",
},
then you would put
"ButtonTexture": "Fonts/{{ModId}}/Button",
doing this allows ui mods to resprite your button to match their looks
I have a question about the example in the link you sent me. I understand the example but there are fields that I don't know exactly how to fill out because I don't know if I should put something specific.
that link explains the meaning of the fileds in the crafting/cooking recipe
every field is saved to a single string, separated by slashes
I think i fixed it, i put the folder Textures into the folder Mini-Jukebox and not the other way round
Yes, but my doubt is that what I want to create is a new cooking recipe, the caramel sauce recipe. I don't quite understand how to let the game know that. The example is about an item that already exists but what I want to create doesn't.
ok it still doesnt work q.q
You can also remove the item ID because the item name seems sufficient from looking at the examples
I understand the structure, where the ingredients are located, how to obtain the recipe but I don't know how or where to put the name of the item to create.
I'm on mobile so my replies will be slow 
you need to use the item id, not the name
Yes, but the item does not exist, therefore I cannot use ID, that is my problem.
I know the ingredient ID
Is that the "target"?
ya
I got it to work :3
you can reference a new cooking recipes mod like https://www.nexusmods.com/stardewvalley/mods/26650
"LogName": "Caramel Sauce recipe",
"Action": "EditData",
"Target": "Data/CpokingRecipes",
"When": {
"HasCraftingRecipe": "Big Chest"
},
"Entries": {
"{{ModId}}_BigChest": "(BC)130 1 388 70 334 2/Home/BigChest/true/default/"
I don't know how to fill in the fields in the case of a cooking recipe, if I understood correctly... in "target" I put "cookingrecipes" but I don't know if it's correct.
ok
Thanks
(Cpoking)
hm you can't use big craftables in cooking
That'd just be crafting recipes, no?
Oh I misread this is for cooking. I'm unsure of the intention of having the big chest
i am second guessing myself actually, maybe you can 
entire big chest of caramel sauce...
I can't check because I left everything at home
I know, that's why I wanted to know how to replace the data in those fields in the case of a cooking recipe, according to the tutorial the structure is the same
the structure is the same yep
No, I want a cooking recipe but I put the example of the tutorial with the fields that I modified and the ones that I left as the tutorial but with the example of the mod that you sent me I think I already know how to complete them
Iirc it's just several moving parts, load the texture, create the object, create the recipe, create some way for the player to get it
Wait I didn't link anything for you 
"Moss Soup": "Moss 20/1 10/MossSoup/s Foraging 3/"
it goes ingredients/<unused>/cooked item/unlock method
MossSoup is the ID of the "moss soup" item
But I think I only managed to confuse you hahahahaha sorry, ignore the message where I put the example. I will complete the fields as I understood and I will provide you with the code as I think it should be.
corresponding to an entry in Data/Objects
so you need edit on Data/CookingRecipes as well as Data/Objects
i recommend doing the Data/Objects edit first, then you can go in game and try spawning your item with cjb item spawner
once the item looks right you can do the recipes
contemplates if I have my json item set up correctly
I probably don't, so it'll be chaos, if it's still a problem after my class I'll jump on a school computer and throw together a json example
I'm talking about this link https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Recipes_with_CP
The link was given to me by Selph
Hello! Rokugin here with another tutorial on how to make some simple stuff with Content Patcher. If you need any help with this or any of the stuff on my Git, feel free to try to reach me on the Discord server.
I'd follow chu's advice, get the object in game first and check with cjb cheats
I was thinking of creating the item image at the end, after having all the code already written hehe
Although I can always use any image for testing, for example a brown square and imagine that that is the item hahaha
oh right remember to load your texture as well
I did say it in order 
Ok, I'll try that.
Class beckons, I'll be suffering for the next 1 1/2 hours 
If I have to figure out how to do that, too.
idk if there's a step by step guide for making object
but im psure that mod earlier would have done so
I keep seeing "Format": "2.3.0", in the Content Patcher documentation. Not sure what this is for. Should I just use those numbers?
edit: oh it's the most recent version of the mod. Nevermind sorry.
Yes, I'm going to look at how she made the object.json, I was using Orangeblossom's Chocolate Valley mod as an example but she has created so many things that I ended up getting dizzy, she told me to ask her my questions but she is usually very busy and I don't want to bother her so much, I'm going to see if I can find a mod that only adds a cooking recipe, so I don't get so confused. Then it's time to replicate.
2.3.0 is the latest version of content patcher, putting there indicates that your file do not need any rewrite
and in the future, gives your mod needed rewrite should stuff change
mmmm I see I think I already understood
My load is a full spritesheet
yes, thanks
ill brek it down later unless chu can, I really disappear now 
im out of advice at this point it's sink or swim
He he don´t worry, ty
believe in you 
hahahaha
I believe I can fly hahahaha
Were the folks in here able to handle it or did you still have questions? I won't be able to look at any files until after work.
they got it i think #making-mods-general message
thanks! I got it to work perfectly fine! I even found out how to add semi-transparent pixels to add shadows underneath!!
the only thing I will have to test out is if I can animate it if the jukebox is activated but the alternative texture wiki says this only works for machines, and I have no idea if the mini-jukebox is considered a machine.. but I guess I will try it out sooner or later!
it is looking great!! in my humble opinion :D
if it's a big craftable (aka machine) then it should be possible (going off AT'a wiki)
Nice!! Congratulations! = )
Is this it? I´m going to downloand it!
right now there is no animation yet, but it has a different sprite when it is activated and one when it is not playing music
but I have uploaded it already on nexus^^
thanks!!
😁 👍
ah nice, English not being my first language makes it sometimes harder for me to grasp the guidelines and I start wondering... is a machine a specific term for an sdv object? or is a machine just like a basic term for objects that do stuff :D
machine just like a basic term for objects that do stuff
At least I always used it that way.
yes, in SDV a machine usually means big craftable that can process input and return output
AT wiki says it can animate machines that is not processing input so I think it means it can animate big craftables in general
Not all BigCraftables are machines, but all machines are BigCraftables iirc
ah yes but the in- and output was the thing that threw me off
because it doesn't apply to the mini-jukebox
thank you so much selph!!
and tiakall and hayato!

ahh
I mean even without a spinning vinyl it is pretty to look at
at least I have this :D
The values of these parameters... how do I know what to put? Or is it the same for any cooking recipe?
Type": "Basic",
"Category": -7,
"Price": 500,
"Texture": "Mods/{{ModId}}/objects",
"SpriteIndex": 0,
"Edibility": 75,
"IsDrink": false
In "texture" I suppose it is the path of the png
Well, "price" the sales value
the texture field will be an asset name, not a path to the png. its wherever you did a Load action for your texture
the price is how much money the player will get if they put it in the shipping bin, and is also by default 1/2 the sale price from a store
https://stardewvalleywiki.com/Modding:Items#Data_format
the wiki explains them all
Q: What happens to orphaned StardewValley.Object instances? E.g., if a mod postfixes a method that normally returns new Object(...) and overrides that return value, does the originally-created object just get GC'd or are there noticeable side effects?
oh god github lightmode is horrific
(Assume this method runs uncommonly and not like 1+ times per frame or something)
In general you can expect orphaned instances in c# to be eventually swept away
(I'm guessing since Utility.trashItem doesn't really do anything to clean up the item explicitly that orphaned Objects (and Items in particular) don't need any particular care)
(It's a there tiered mark and sweep gc.)
Yeah, didn't know if these particular objects required any manual management
You will know them because they implement Idisposable
Well, except farmer
(Grumbles)
Coolio, thx
Would rather just not create the object I'm tossing anyway but that way lies either a total replacement prefix patch or a transpile and I don't wanna do that
Just be careful about assets like Texture2D, don't dispose those unless you own them.
So I should just be able to ignore the original return value in this case and replace it with my own without much of a hiccup
i can't check the data/objects (because i'm not home), but if you pull up the (O) for any cooked dishes, you can effectively copy and paste minus the "buffs" bit, if you want different buffs: say "Fishing +2", you'd have to check through those
ok ty
Yes hahaha
Constructors return void though in net core
Does anyone know anything about Alternate Dispositions? I've only heard of it in relation to MissCoriel's NPC Creator, but I literally can't find anything that explains what it is and how it works
Have not heard of that one
If you're talking about the new dispositions, #1277457201077813280 were always listening for npc help in that thread
Maybe it's something that's exclusive to the creator's own mods? I have no idea 😅
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
haiii :3 I'm having issues registering a cooking recipe via space core recipe and i don't know what i am doing wrong here is the json: https://smapi.io/json/content-patcher/ba1a6b5391414430823e5fbb5906f4eb any help is appreciated!
your Data/CookingRecipes entry is malformed, though I don't know if it matters with SC override
what's the error?
It probably does need to be correct or I think it won't add it to the recipes properly
yeah good idea to make it an actual valid recipe regardless
https://stardewvalleywiki.com/Modding:Recipe_data
"EepyFemboys_BlahajFake": "<IngredientsHere>/0 0/EepyFemboys_BlahajFake 1/default"
Replace <IngredientsHere> with the ingredients needed to cook it
Is it possible to add a custom NPC with their own build menu? Or do I need to use Robin or Wizard?
Or rather is it possible with CP or a framework mod?
I'm fairly certain you can assign a custom NPC as a Builder
per the wiki: The vanilla values are Robin and Wizard, but you can specify a different name if a C# mod opens a construction menu for them. Defaults to Robin. If set to null, it won't appear in any menu.
So you'd need C# to call the construction menu, from the sounds of it
Well, there goes that idea...
a "shop dehardcoder" framework could be cool. I know there are people who wanted animal sellers other than Marnie
Well, i could just add the building to the wizard but you dont unlock the wizard build menu until later game which kinda defeats the purpose of what i want to do
can i make a mod that uses extra machine configs but automate compatible?
EMC is already automate compatible wdym
hm it's almost decoded really
oh im working on the successor of raffadax cheese mod and i know he uses producer framework mod but i know thats not automate compatible
it's all in GameLocations.ShowConstructOptions(buildername)
Producer framework mod does have a automate integration optional mod
oki i will look into it thanks
i dont know shit about C# coding so... that's not an option
was there a framework that adds new tile actions?
I'm trying to follow along with a SMAPI tutorial on the wiki. It says to do this to replace a game asset. But I'm getting an error that "Entry" has nothing to override.
internal sealed class ModEntry : Mod
{
/// <inheritdoc/>
public override void Entry(IModHelper helper)
{
helper.Events.Content.AssetRequested += this.OnAssetRequested;
}
/// <inheritdoc cref="IContentEvents.AssetRequested"/>
/// <param name="sender">The event sender.</param>
/// <param name="e">The event data.</param>
private void OnAssetRequested(object sender, AssetRequestedEventArgs e)
{
if (e.Name.IsEquivalentTo("Portraits/Abigail"))
{
e.LoadFromModFile<Texture2D>("assets/abigail-portraits.png", AssetLoadPriority.Medium);
}
}
}
oh interesting
raffadax cheese mod broke on march 19th
though it's still recommended you use CP machines if possible above PFM
I am planning on using cp and emc
oh
is it how it is now? maybe. sorry for the wrong chat
i'll text there then
but can the successor of raffadax mod be done on cp and emc?
yes
ok cuz it will need the milk and one or more cultures for example. I am putting advanced cheese and advanced goat cheese presses to make it easier
so ya
hmm... is it possible to warp via an option from a static npc?
like, talk to static npc, they ask if you want to go somewhere, and you press 'yes' to warp
This code looks fine to me. What's the exact error? My gut hunch is that your environment isn't set up properly and the SMAPI classes aren't being referenced
Nevermind. I thought I could rename my class but I was mistaken and it needs to be "ModEntry" apparently.
What are you trying to do exactly?
(I'm not sure that I, personally, can do it, but we were musing yesterday about how some of the artistic types seem reluctant to straight up ask for help with the code, like coding types are willing to ask for help with pixel art and such; if you're pretty far along in the execution and just need some code to glue it together, there's probably someone who will like the idea enough to be willing to chip in.)
(and yes there's a lot of maybes and probablys in there... since we don't know what the intended outcome is)
alr imma try that!
i want to have a custom buildable warp totem that can teleport the player to a custom map location. it makes sense for the wizard to build it, but i want it to be available to players earlier in the game. and for that i wanted to make a custom npc that would sell the building early game
the warp totem itself seems like something i can do with CP alone. but the build menu is another story entirely....
When you say totem, I take it you're referring to the permanent obelisk buildings and not tradable/craftable totems (consumables)?
right
also i could do a simple map edit, but then i'd run into compatibility issues with other mods and that's just one big headache
but now im wondering if this idea is an even bigger headache
Let me try to see what's going on with the wizard; I think constructibles might be different from regular shop data but I don't think they're all that insane unless you're doing a whole dialogue tree out of it (which is why Robin is so complex).
it certainly doesn't have to be called ModEntry
(not that the mod currently works, i haven't updated it for 1.6)