#making-mods-general
1 messages Β· Page 567 of 1
Ok! I'll look into that approach, since I have no idea how I'd make him not giftable for a day
thank you guys
I think I finally got these yellow flowers to stop stacking π€ 
my mod page is going to be lacking with all that I have left on my plate lol. At least I'll have a nice thumbnail since I worked on that a few weeks ago
I am still scared of the mod page part- but at least I have some rough words down
Yeah, the mod page always takes me a while, LOL
my prismatic tools content patcher remake is coming along.... but clint is asking for copper bars instead of my prismatic bars
Did you copy the tools data from one of the pre-existing copper tools?
no... this is what i have
"ClassName": "WateringCan",
"Name": "Prismatic Watering Can",
"DisplayName": "Prismatic Watering Can",
"Description": "Waters everything. Probably too much.",
"Texture": "assets/water",
"SpriteIndex": 42,
"MenuSpriteIndex": 47,
"UpgradeLevel": 5,
"ConventionalUpgradeFrom": "(T)IridiumWateringCan",
"UpgradeFrom": [
{
"Condition": "PLAYER_HAS_ITEM Target (T)IridiumWateringCan",
"Price": 25000,
"TradeItemId": "(O)BluPenDragon.PrismaticBar",
"TradeItemCount": 5
}
],
"CanBeLostOnDeath": false
}```
Ah! ConventionalUpgradeFrom only has UpgradeLevel values 1-4, so it's likely looping back to 1
What happens if you don't include ConventionalUpgradeFrom?
yeah remove the field
I think you can also use RequireToolId in Your UpgradeFrom model, if you want it to consume the previous watering can (instead of the Condition)
just realized the total amount of pixels my portrait sheets should be are off after doing some math, ahhhh!
so much left to do
ok thanks @brittle pasture @latent mauve it works
Im new to this and i don't know what im doing.Im trying to make a npc with misscoriel npc creator mos and im running through the issue that my portraits look very pixelated with the usual 64x64 canvas for each expression.So i been trying to use cp or portraiture to make higher resolution portraits and i dont understand how some of the most popular portraits like the dc and the one for sve look so good and doesn't overflow the frame.I need help,please 
I'm pretty sure that that NPC creator is very out of date. I'd suggest using this tutorial: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC
As far as higher resolution portraits, you need a mod like Portraiture to do that (I'm definitely out of the loop on HD portraits, though, so I'm not certain what current HD portrait mods use)
Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 189 C# mods and 455 content packs.
I'll try your suggestion from the other channel radium. Thanks for the log
!npc for more info
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.
-
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!
I tried to use misscoriel npc creator since it seems pretty easy to use.I tried doing high resolution portraits through both portraiture and cp but it seems anything thats goes above 96px/62px becomes too big for the frame so i need to know how people do such high resolution portraits but without it overflowing the frame
if its out of date its no use to u
"easy to use" does not mean it'll actually help you put something into the current version of the game
check out that last link in Governor's post for another NPC builder to try
Nope
[Content Patcher] Ignored Mona Revived > Schedule Dialogue load: can't use the Target field with an Include patch.
Is there a quick way to do a scan for missing i18n tokens, assuming they aren't using dynamic tokens themselves?
According to that log, you aren't even touching Strings/schedules/Mona
Is it perhaps meant to be Strings/schedules/silver.Mona_Mona?
Got it thanks!I'll try to start from scratch.Although im a bit slow so I'll probably mess up something,especially if its with codes n stuff
haha
I just hope someone with portraits experience can resolve my original question 
{
"LogName": "Schedule Dialogue load",
"Action": "Load",
"Target": "Strings/schedules/{{ModId}}_Mona",
"FromFile": "assets/data/ScheduleDialogue.json"
},
im not sure what issue you're running into with portraiture.
π€ it should just work
That's not Strings/schedules/Mona
Which is what is written in whatever is trying to use the dialogue
Ah
One of your schedules (I assume, based on the dialogue key) is missing the ModId prefix when calling the schedule dialogue
The library_read.000 one
are your portraits named correctly in portraiture? (perhaps they are named incorrectly, and thus portraiture is not replacing the portraits like they should and instead you are simply seeing your incorrectly sized npc's portraits the way they are in your mod?)
My mind is kinda hazy rn and i cant remember exactly what i did but i when put the spritesheet in the portrait folder for portraiture the smapi log said smth about compatibility with the portraits of the npc and the portraiture.Or smth like that,its kinda hard to remember 
if you could get that log that would be great
!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.
Is it okay if i send it later?I turned the computer off a while ago and im too lazy to get up to my desk rn srry 
yeah, don't worry about it
just lmk when you can
Okay!I'll ping you once i get it
I'm just now getting around to creating my mod page (finished this mod weeks ago but procrastinated final touches to start another mod instead) and why is putting together images for the mod page so tedious?? I just want to be done already rip
Hi, how are you? Do you know which file contains the rules for the machines of the base game?
Data/Machines.json
Thanks!
making the mod page is the worst
Is there a wooden sign generator to go with the scroll generator for making images for a mod page?
Making mod pages is the best 
-# jk i have a love hate relationship with it
Conceptualizing? Fun.
Living in mod page purgatory because the preview doesnβt sit right? Hell.
claire more like c-liar-e
oddly enough I think my favourite part is making the images for the mod page
heretic
/j
I get to decorate:3
I wish I could relate
hell yeah
After the frog moves in
Hiii everyone!
If anyone is bored and want to do some pixel design of fishies, then let me know!
Im working on making a few sprites for my first ever llegendary fish for my mod, and am super open to any contributions if your willing!! You can ping or DM! 
Hey so I'm really new to modding so I could be missing something really obvious but I'm trying to use CP's edit image on an AT fish pond texture and it's not working. The smapi log isn't giving me any errors so I'm not sure if it's something in the fish pond drawing process that's the issue or maybe my targeting? I'm using AT's CP integration but I've also just tried the direct file path. I'm so confused 
Is anyone able to showcase a mod for me? I swear I will apply for mod author asap..
https://www.nexusmods.com/stardewvalley/mods/33879
We have finally released our very first beta version of vanilla seasonal outfits! Our vision is outfits that keep as close to vanilla style as possible.
We are also looking for artists to collaborate, you can DM me or GalaxyRobot on here or Nexus if interested.
got it for you
Thank you kindly π
woo didn't get scope creeped before I released a thing
now to make my own event script format that compiles into JSON
I'm having a hard time convincing SMAPI to display verbose/debug output for just my mods. I can go through the UI and change "Developer Mode" to true and I get everything. But if I turn it off and check my mods in the list, I don't get any verbose output from any mods.
you are trying to use this right https://github.com/Pathoschild/SMAPI/blob/f7bc2d96f54ae3e952ed49eed44a13700e2ecab4/src/SMAPI/Framework/Models/SConfig.cs#L82
Yes
Note that those are two different things; what you probably want is to (a) enable verbose logs for your mods, and (b) enable developer mode. The former enables verbose logging, while the latter lets you see it in the console window.
What I'm hoping for is the ability to see my mods' debug/trace data without having to see other mods' trace data. Is that not a thing?
its what this is for
u need to put "Nerm3.ModId" in there i think
i never use this bc its annoying to change config all the time
Here's the config.user.json (not hand-edited, the result of working in the UI, so no typos):
{
"ConsoleColorScheme": "DarkBackground",
"VerboseLogging": [
"SMAPI",
"NermNermNerm.JojaFinancial",
"NermNermNerm.Junimatic",
"NermNermNerm.QuestableTractor",
"NermNermNerm.WarpNetworkReimagined"
],
"DeveloperMode": false
}
It's possible for TRACE messages, but not for DEBUG messages. Generally mods shouldn't be logging much DEBUG info; if a mod is spamming debug messages, I suggest asking the mod author not to do that.
i usually have a thing like this instead in my ModEntry
#if DEBUG
private const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Debug;
#else
private const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Trace;
#endif
/// <summary>SMAPI static monitor Log wrapper</summary>
/// <param name="msg"></param>
/// <param name="level"></param>
internal static void Log(string msg, LogLevel level = DEFAULT_LOG_LEVEL)
{
mon!.Log(msg, level);
}
then i can see my own Trace logs as Debug when i build debug config
Junimatic, for example, is definitely spewing as LogLevel.Trace, and yet with the above settings, I'm not seeing any output. I think we're agreed that I should be seeing it? I can dig deeper if this isn't everybody's experience.
i think in order to see Trace level in your console you need to set "DeveloperMode": true
Pathos said you need to enable developer mode to see it in the console
K, reparsing, I think the idea is that if "DeveloperMode" is false, you see no Debug or Trace in the console. If you set it True, then you see only Trace from selected mods and Debug from every mod?
Yep.
Dev mode only affects trace not debug, no?
(Verbose logging changes what gets output to the logs; developer mode affects which logs are also visible on the console window.)
Debug is definitely still in the console with dev mode false
Oh, yeah sorry I misread. Debug is always visible, Trace is only visible in developer mode (but always written to the log files either way). Verbose logs have trace level.
Okay, so here's what I'm seeing in the console with debug mode on:
[19:17:06 TRACE Junimatic] Junimo reached target { projectType=IndoorPots location=Honest A Farm hut={X:22 Y:17} origin={X:23 Y:17} source=Junimatic.IndoorWell at {X:24 Y:15} target=Garden Pot at {X:18 Y:17} items=Steel Watering Can[0]x1 }
[19:17:06 TRACE Visible Fish] Spawning fish in Farm.
[19:17:06 TRACE Visible Fish] found 255 water tiles
[19:17:06 TRACE SMAPI] Visible Fish loaded asset 'Mods/shekurika.VisibleFish/LocationData'.
[19:17:06 TRACE Visible Fish] Attempted Spawns 44 Failed Spawns: 30
[19:17:07 TRACE SMAPI] Junimatic edited Characters/Dialogue/Kent.
[19:17:07 TRACE SMAPI] Junimatic edited Characters/Dialogue/Kent.
Note Trace data from Visible Fish.
Yep, that's normal. So to summarize:
- The log file always shows
TRACEandDEBUG. - The console window shows
TRACE(if developer mode is enabled) andDEBUG(always). - You can optionally enable verbose logging. This affects messages logged using
this.Monitor.VerboseLogorthis.Monitor.IsVerbose, which are written asTRACElevel (following the rules above).
So:
- Enabling 'developer mode' will show
TRACEmessages from all mods. - Enabling verbose logs for specific mods will then add those extra logs to the log + console.
I see. It's a case of I was projecting what I wanted the feature to do without checking hard to see if that's what the feature actually did. @lucid iron 's conditional compilation definitely does the needful, but it feels like a workaround.
so uh. how do i fix this..
maybe u should PR in per mod log level settings 
I just use Info during dev always so I can see it more easily and then get rid of those lines when I don't need them (and keep stuff at Trace that should be there anyway)
i use Debug liberally and the method i call for it is conditional so the calls get compiled away when i switch to release
(That's what verbose logging is supposed to be, but a lot of mods misuse always-on TRACE logs.)
(and I appreciate the SMAPI update fixing visibility of Info recently)
Maybe. It's kindof a nice to have, and there are workarounds. I wonder if we ever get to a world where we check signatures, we'd then have a way to know whether a mod is under development locally or not (because we'd want to turn signature checking off for locally compiled mod).
i feel like thats what compile configuration r meant for
I just do a Ctrl-F when I'm finished with my mod to remove all my Log.Debug calls right before publishing (don't be like me)
I am also very basic in my compiling practices and only use the released build and not debug
button...
ymmv. I like to minimize conditional compilation. Been burned by having debug code that gets compiled out in release mode because there was a hidden side-effect.
(All of my mods are also built and released in Debug bc I never remember to even pay attention to that whatsoever. Don't be like me)
u can [Conditional("DEBUG")] u know
I actually did put that on my logging but, see above
If I had stronger reason to pay attention to it or I was being paid to do it right or something I would pay more attention to it
im not rly sure how this can happen if u r doing #if DEBUG and such manually 
but idk shit about roslyn and her whims so
Your good friend Roslyn
Well, consider this:
#ifdef DEBUG
foo.Log("This is the {n++}th time I've been called, what could go wrong?");
#endif
(Granted, you usually have to get a little subtler than that to have a bug, but it's a thing.)
well, in addition to the bug, that's a pain to have to do every time i want to call log
hm i wonder what happens with the [Conditional("DEBUG")] ones then 
the calls just get excised, afaict
Calls to Conditional("DEBUG") methods don't get put in the IL
but yea the pattern of changing the LogLevel only would avoid that kinda thing i feel
(unless you are in debug obv)
you'd have the same bug, but this is why postfix increment used "cleverly" is a bug factory IME
yea but what about the stack leading up to the message
does n++ eval in that case i mean
The n++ in that example is not the same case
as its not in a Conditional method
whatever is in between the #ifdef DEBUG and #endif just does not exist in your compiled .dll whatsoever, any IL between those lines is yeeted
presumably if it were a method it'd also remove all the parameters sent to that method, or else the stack would explode
Side-effects (in general) are bug factories. But I gotta say, the bit of conditional code that spurred this is pretty hard to imagine causing mayhem:
#if DEBUG
private const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Debug;
#else
private const LogLevel DEFAULT_LOG_LEVEL = LogLevel.Trace;
#endif
yea that appears to be what happens
i did this
int n = 0;
// LogDebug has [Conditional("DEBUG")]
LogDebug($"Do you become one? {n++}", LogLevel.Info);
Log($"n={n}", LogLevel.Info);
and you get n=1 in debug and n=0 in Release
Sounds expected to me
^ The last time I debugged something like this, it was actually Linq-related -- the debug code simply expanded the enumerable, which had the effect of making the second traversal behave differently and, bizarrely, it worked fine with two traversals and broke when only traversed once. Kinda backwards.
One of those "Let's see ChatGPT figure that one out" moments.
I'm getting this error for all my jack spring DTsFailed parsing condition 'parcy.jack/SpringJack1': 'parcy.jack/SpringJack1' isn't a known query or alias.https://smapi.io/json/content-patcher/5699f1eb8d524610b414e3fb266f1f7b This is the json.
Anyone willing to take a look?
you don't need to prepend your mod id for dynamic tokens
Oh? I was copying how I set up my portrait mod. It works, but this doesn't 
I'll take it out then
If you named your DT with the modid prefix then you'd need to write it every time, but you shouldn't name it with it, and having it not in the name but when you try to use it will always break it
so, I did this wrong too then? my other mod was my reference for this https://smapi.io/json/content-patcher/d42dd7c166724107ad2414aeb833cae4
Those have the modID in the values, not the names
I'll be real, I didn't even know the context before I committed
You are (correctly) not using your ModId in the names i.e. when you write {{Santa Red}}
Ohh
I will admit though I just went off what chu said and didnt look at your original json
So that's my bad
thanks for the help guys, I'll fix that
You don't need them in your values either though, but if you're using them in Targets, you may need to use the ModID token in the tagrte instead to make sure a fromfile matches up or something
The error you asked about in particular originally is because when you write {{SpringJack1}} that gets turned into parcy.jack/SpringJack1 which is not a GSQ
But you are attempting to use it as a GSQ in your appearance Conditions
has anyone written a customized wedding to work in multiplayer?
I am wondering how to add the other farmers/players!
(and looking for a reference)
Hello folks, just popping in to ask a question:
Is there any content patcher commands, actions, or that sort of thing that would allow me to modify quarry spawn rates on my custom farm?
I have the dirt placed down, and it seemingly just generates the geodes? (its been a long time, so I honestly forget how i got it working), but id like to adjust the odds if thats possible.
Thanks 
spawn rates are hardcoded. you would need to either make a FTM content pack or use c#
(in addition to your existing cp pack)
Welp.
no errors anymore... but my npc will not show in any of my test saves except one that has already had him (and the conditions he needs triggered) for a while
he seems so finicky with actually showing up which has me worried
any errors?
none in my smapi console. He's in my old testing save alive and well, but literally would not show up when i staarted a new one and timeskipped to fall 28 and then slept the night to see his event in the morning. (I did briefly enter winter though skipping before that, so maybe that's the issue?) my mod is apparently easily broken by time skipping wrong 
I'll start another test save and see if I can get him to show.
yeah, it's drivng me crazy. I was more careful with how I time skipped this time, watched the event twice, once using debug, and even went to sleep when he didn't appear only for him to not show up the next day either!
but he's there in my old save just fine??
modfest ends on the 25th for me since I'm not in Europe, and my npc won't even bother to show up for me lol
Good news is that he at least is using his spring sprites now, (thanks button and chu)
but I can not get him to work on new test saves!
General i18n question: looking at examples I'm noticing that they aren't including {{ModId}} or any unique identifier as part of the token, is that the standard and are i18n strings isolated to each mod to avoid conflicts if so?
anyone have any ideas why that might be happening?
i18n is already unique to every mod
No need to namespace them
Got it, thanks, that's what it looked like but I didn't notice it explicitly spelled out unless I missed something
Hard to say without seeing all the jsons but if your precondition for him existing is an event, I'd double check everywhere you are using an event ID, if you might have changed it or typo'd it at any point
I will check that, thanks 
I've got this in the event"Entries": { "parcy.jack_intro/Time 600 1700/Season Winter/DayOfMonth 1 2 3 4 5 6 7/": " and "Conditon":"!PLAYER_HAS_SEEN_EVENT Host parcy.jack_intro", as his trigger. He has shown up before in other test saves before, so idk
oh wait
Well the trigger action won't un-invisible him
yeah, no I explained that wrong
He should have a trigger in his event
Or command anyway
that makes him visible again
I'll check to see it's still there
Ohh
I maaay have found something of note!
I have action SetNpcVisible {{ModID}}_Jack/ but have been skipping through the event.... I do not have a setSkipActions [actions] though, so that might be it?
That sounds like it's probably it
I'll see if it fixes!
You can also just put that before the skippable command
if you don't need it to happen in a certain spot in the event
yaay! That's what I did, and he shows!!!
Thanks (again) for all the help everyone has offered today
I'm still not nearly done though π
So much left to do!
Debating if I need to make Urbosa short for Flower Dance, there are a distinct lack of tall flower dance sprites.
Even the taller NPCs shrink down for it, LOL
I was struggling making a quick question work for dialogue that technically has no question, but makes the player remark something, so I tried a question null instead, kind of like this question null "#You are!?"/ but now my event won't load?π
the # shows as red, even when I had 2 like the example...
you need to escape your quotes
np
that makes sense because that's how it works for other dialogue in the event. I just didn't see those in the example so didn't add them π
what example?
let me find it
this on the wikiquestion null "<question>#<answer1>#<answer2>"
not technically a formatted example I guess
but it wasn't immediately obvious to me that I needed to add \
it's JSON convention that unless you're indicating the beginning or end of a key/value, the quotes need to be escaped so that you don't end the key/value early
Ok, thanks!
It is technically formatted in that you can use normal quotes without escaping them if your outermost quotes are single quotes instead (and then you need to escape single quotes)
This may make it easier on you if you're not using single quotes elsewhere in the string
honestly if you have any dialogue in the string i wouldn't bother since then you're just having to escape all your apostrophes
may as well just be consistent and escape your contained doublequotes
Thanks for all the feedback! I've added clarification to the tutorial about the edibility steps and looking at the game files. I'll probably swap the patch export and patch reload section locations; I don't want to group them all together since that can be overwhelming and I find that a later repetition of a concept helps with understanding and retaining it
where do I read about additional dialogue commands, like adding an item to a player's inventory? I didn't see anything about that when briefly checking the wiki page on dialogue
like trigger actions? https://stardewvalleywiki.com/Modding:Trigger_actions
(AddItem would be the one you're referencing)
and in dialogue it'd be $action <action> https://stardewvalleywiki.com/Modding:Dialogue#Dialogue_commands
Thanks!
might be a dumb question but is there a way to make so multiple cooking recipes fall under the same 'item' for the master chef achievment? Like if i wanted to add customizable pizza toppings for cooking, could i make it so they all register as the pizza while still holding the different toppings.
No. But you could use SpaceCore to make one recipe that can take any item with (for example) a "pizza_topping" context tag
It would have to be the same pizza, though
(This also assumes you're using Content Patcher only. Naturally if you use C# you can do anything.)
Hello. I'm sorry if I keep asking stuffing like this here, but where is RobinDem from? I see it in the mail string?
Couldn't find it in the modding data from the official wiki.
demolish maybe?
Hi, it's a letter Id which doesn't correspond to anything in particular (no actual letter you received) it can be referenced by events or other dialogue. It's from Robin's Sunday 2 Heart dialogue which uses the $1 dialogue command, this shows a line of dialogue once and then shows another repeatedly (I believe) because you now have the mail flag.
Is it from SVE? I don't think I'm familiar with the 2-heart dialogue for Robin on a Sunday.
Maybe I have forgotten. What's the dialogue or quote again?
It's Vanilla. "Sun2": "#$1 RobinDem#My husband almost set the house on fire last night with his science experiment. One of his beakers exploded and sent a fireball into the rafters! Thank Yoba I used fire-resistant lacquer when I built the place.$u#$e#Sorry if it smells weird in here, @. It's my husband's bizarre science project...",
Ohh, that. Yeah. I remember that. And you say it's repeatable?
So the first part is a one-time thing, but with the marker, it will only repeat the second part from then on?
Yes
Got it, thanks very much.
Happy to help π
I'm having an issue where the pathway is still impassable despite nothing being there on the buildings layer (The Tiled screenshot is only showing the buildings layer), no impassible tile property in the map when using patch export, and the PatchMode being Replace.
Are there other layers that prevent movement? or something else odd that I haven't thought of?
stupid question just to rule out: you dont have any clear/transparent tiles on the building layer, they are truly empty? magic wand select can help find them i believe
im not super familiar with selectively patching only parts of a map yet, but do you also know if your patch replaces all layers?
There was invisible tiles! ty very much, I certainly didn't think of that
those bois have got me a few times previously 
is this for a new mod?
it is, more specifically a mod for another mod XD
which mod?
One that's yet to be released and I'm not sure if I can say what the mod is
oh ok, i just have a mod in that exact spot and ive made like 5 different compatibility patches lol
Oof it's a popular place XD
i also have a thing there!
-# i doubt the mod has worked in years though so that one's not an issue
this is is the path i made
Where is that? I don't recognise it
Lower left of the backwoods
yeah
Ah yes I see
This location in the mod I'm making certainly isn't final, I'm just tossing things in locations so the other person working on it can give their input in, so there's a very high chance it will change
yeah its just a very cramped area
chat should i bother setting up proprietary vscode for c# debugging or do i go beast mode and just rawdog it with nvim and commandline
How can i get a quest to require an island warp totem? I udnerstand the normal logic and have it working for items like iron bars, my guess is theres some formatting thing getting in the way due to the odd naming of totems?
I've tried:
"AcceptedContextTags": "id_(o)886",
and
"AcceptedContextTags": "item_warp_totem_island",
What am i doing wrong?
i never got the id_(o)886 stuff to work either...for some reason it only worked for me when i did it like id_886. either way without the rest people might not want to take a look or be able to say much
according to https://stardewvalleywiki.com/Modding:Context_tags, you'd format it as id_o_886(id_type_id) or item_item_warp_totem:_island (item_name)
sorry had to correct myself there, assumed items used the id as the name. the reason yours wasn't working is that it didn't match the reformatted name, per the wiki rules:
The name is trimmed, lowercase, with spaces replaced with underscores, and with single quotes removed
so the colon stays
context tags as above ‴οΈ
Just hold it above your head and debug listtags
would people consider you a "coder" if you learnt json coding instead of python and whatnot
not related to stardew just like in general
from what i understand we're not really coding
especially bc what makes it possible is content patcher
It's the same kind of coding as writing html/css kinda
it's kinda like
basic knowledge
i guess
You aren't implementing any logic, but filling in appropriate data in a structured document
ive done python and javascript and java and it's a totally different experience imo 
(i dont code anymore and i was very bad at it)
Yar to my understanding, it's not really "coding", but to decribe it the accurate way seems to actually confuse most people.
i think of coding more as logic
Generally speaking I agree with Chu, but specifically to modding with content patcher, you're also learning how to debug, read documentation, and learning to think more like a programmer which can (and does) help massively with learning coding languages
yeah, you get to learn values and strings
There's also some minor logical things you can do in content patcher with the token system
true
tiled makes me wanna rip my hair follicles off sometimes
same goes for json editing
if you even mess up just ONE thing in content everything gets ruined
But I can't lie
it's extremely fun to learn
Maybe I'm having fun because it's like a new hobby, I'm used to being an artist
Like say your ID was wrong for all jsons
you'd have to go in and edit them all again
huh
That's when you use {{ModId}} so you don't have to change them
i suppose but find and replace works in a pinch
i have them all separated in assets
thats what i did when i switched to {{modid}}
....true
I think he was just talking in generalities
Like if you accidentally set something as an array instead of an object, or miss a comma
Lots of possible examples
I'd be truly stuffed without the ModID token, especially currently with a 33 character modID
true
Or invalidating your json
lol right
I don't see the difference between ] and } in jsons
I enjoy the need for accuracy in programming and data
I keep it held by ducktape and then polish it later
I suggest you never look at any none json I write in that case XD
Kinda like sketching and then tracing your sketch
Do they have different purposes?
[ ] are used for lists of things (also called arrays) e.g. [Item1, Item2, Item3]
{ } are used for dictionaries which are key value pairs e.g.
{
"Key1": "Value1",
"Key2": "Value2",
"Key2": "Value2",
}
Oh basically patches
lists are good for say a gracery list, while dictionaries are good for, well dictionaries with the word and it's definition
Logname action etc etc
yep!
Interesting...
Could you say arrays are used for adding more info to, for example, an object you wanna add into the game?
Like uhhh
name, edible or not, buffs, etc
it may help you to read about json itself in this case. array/list [] and object/dictionary {} are two of the three fundamental types of thing you can have in json
three?
(the third is value, which comprises strings, numbers, booleans, etc.)
third is data types I think? like yep what Ichor said
ooh
knowing what you need to put in your content patcher json to, for example, change or add data to an object is an exercise in 1. understanding how the data is structured now and how you want it to be structured instead and 2. understanding how content patcher expects to receive data about those changes from you in its own json schema
Heyo! I'm trying to figure out how some stuff works for machines so I can maybe patch a bugged thing myself. See https://discord.com/channels/137344473976799233/1485794553612206180 for a little more detail. Long story short, when re-smoking a fish with a smoker using a talent from VPP that lets you re-smoke fish to increase quality, doing so with MPS machines causes all re-smoked fish of the same quality to stack with each other, merging into a single big stack and losing the original fish
Here's the relevant compat data for this talent.
Do any of you have any idea why those fish might be stacking weirdly? I'm not sure how to read this stuff, but it looks like it should just take something in, increase the quality by 1, and then spit it back out.
The only mod I think might be affecting this other than those two would be Vegas' Better Item Categories, if that might be relevant.
ignore what I said earlier the issue is that they're using DROP_IN_ID in their ItemId instead of DROP_IN_PRESERVE
So "ItemId": "FLAVORED_ITEM SmokedFish DROP_IN_ID DROP_IN_QUALITY", should be ``"ItemId": "FLAVORED_ITEM SmokedFish DROP_IN_PRESERVE DROP_IN_QUALITY",`?
yes
feel free to also report this bug with MPS (though note that the author is busy currently)
'ight, let me make that modification and then go test it. Thanks!
If you wouldn't mind, what's actually the technical difference between those? I'm pretty coding savvy, but I've got no knowledge of how Stardew works behind the scenes.
Is there somewhere better to do so than a post on Nexus? I already posted it there. If this works, then I'll go reply to that post with some updated info.
DROP_IN_ID = the output's flavor is the item id of the input; in this case the input is smoked fish so the output'd become "Smoked Fish-flavored Smoked Fish"
DROP_IN_PRESERVE = the output's flavor inherits the flavor of the input, so Smoked Tuna becomes another Smoked Tuna properly
the first is intended for the regular fish to smoked fish rule
Ah, so the first turns a Tuna into a Smoked Tuna, or in this case a Smoked Tuna into a Smoked Smoked, and the second would turn a Tuna into a Tuna or a Smoked Tuna into a Smoked Tuna. Got it.
the lack of ideas bro this is gonna KILL ME π
MPS also has a thread here: https://discord.com/channels/137344473976799233/1325929260246106202
but as mentioned Nach is busy with IRL stuff for at least a few more months
ohhh wait i just realized...
the $ makes it so that instead of breaking the line, it skips to it immediately so you dont have to interact with the character again
no wonder why it was skipping only the Mon dialogue
The fix worked great, so I'll go document the fix in all the relevant places. Thank you!
where do you find the setting in NotePad++ so that everytime you press a json it always opens up NotePad++?
I would assume that would just be the default app in Windows, not a setting in Notepad++. I haven't done this, but it should just be right click > open with > choose a different app > find Notepad++ and set it to always.
(Assuming Windows 10/11, I think it works the same in both. If you have another operating system I will be of no use)
oh, hey, it worked! thanks
mwehehehehe
ummm
i was trying to put him into the interior of my bakery
hes still in town
cant it just be Manny-Bakery-Interior?
thats not what i mean
you need to create a location and define it
you simply loaded a map there
the map doesnt exist as a location
You can know you did that right if you can debug warp there
Without creating the location entry first, map will not be accessible nor for you or npcs
wait how do i know its _SpeedyShop?
right below ur entry
Your entry
π
ur first entry is {{ModId}}_SpeedyShop
Nooo you're not
im SORRY
dapwihdwapofhan
my content is already done for the most part i simply forgot about it
the one big thing im terrified for is events
im guessing its picking a map, then animations, then dialogue
errr i mean the animations and dialogue are intertwined
like u could have dialogue, then animation, then dialogue again
oo
but the map you pick when u write the patch since you'll be targeting a specifica location
that did not work theyre still stuck up the cliff
am i supposed to add modid as well
or just _SpeedyShop
oh yeah add modid
fuck
oki oki
the fuck? SMAPI had a fatal error and then fixed itself after i relaunched it
huh
hes STILL there
He just wanna sit on the cliff n chill a bit
events are intimidating until you start doing them. then they're merely frustrating (the event loop is cursed) /lh
@brittle pasture I have a question regarding EMC. Is it possible to inherit the flavor of an input item if one of the input item is a flavored one already? (I want the name to be displayed like "Flavor of Input 1" + "Flavor of Input 2(not a flavored item per se)" + "Potion"
Because in my case, I always get the generic display name for the first input
Here's my attempt lol: https://smapi.io/json/none/4ec1946cf0b44fbcb2ecaedd10e5a63d
your ECC makes it so much more bearable though
i'll return to it one of these days! (too busy with modfest project atm)
What's that? 
unpublished framework that adds a bunch of event commands
(i haven't finished cooking it yet)
of course, take your time! it wasn't my intention to sound like "ichor update ECC NOW", just know that I appreciate its existence a lot 
oh, nice
technically you can download the beta here https://github.com/ichortower/EventCommandCodex but i'm not really advertising it yet
i published an update to my mod directly linking to the ecc download and people were in shambles over the fact it's not directly on nexus
Tell an actor to go to a specific tile without having to write up the path instructions yourself, or even know what tile they are standing on HALLELUJAH
THIS IS THE BEST THING EVER LET ME TELL YOU
honestly i don't blame them. github is not friendly to non-programmers
also the viewports <3
just fell to my knees
I'm teaching teammates git and gos
Explaining the difference between a rebase and a merge
if you click on the link it downloads ecc directly
I must sound crazy
i dont even know git and gos. all i know is how to click link
...i dont like how everyone stopped typing after that
oh maybe you can explain that to me! i've never rebased in my life
Rebase is like cherry picking every different commit off a different branch
rebase is a merge strat just like the regular kind except u pretend you were making the branch changes on main this whole time and do revisionist history accordingly
interdasting
oof, been ages since I've wrote a regex so I've gotten rusty
wonder how many other people have made parsers to extract i18n tokens because I'm joining that club
hey! anyone know where the grandpa bed image is? been looking for 10 mins and ik it'll be somewhere obvious but I just can't find it
not cursors
I checked
talk to nom0ri about it i guess (i18n converter)
what does the string MM_Potion look like
Try minigames
i've checked
but I'kk try again
Minigames/jojacorps
I'll*
omg tysm ichor- it didn't show up in the preview so I didn't think to check it 
and why would you? it's called jojacorps! /lh
maybe grandpa worked at joja
their site's useful but broke on some of the events I passed to it, also I want to run through a bunch of events at once so figured I might as well write my own version
secret villan arc
probably worth reporting those bugs! nom0ri updates it regularly afaik
which one
yeah, will do once I figure out what's going on to write up a report
want to make sure it's not user error first 
did u add any schedules at all
"Appearance": [
{
"Id": "Default",
"Portrait": "Portraits/{{ModId}}.Tilly",
"Sprite": "Characters/{{ModId}}.Tilly",
},
you don't have one
thats in content though
its already there
you loaded the portraits
oh wait hmm
yeah nvm
i have multiple appearances so i have that
...curse you, quickQuestion 
maybe kailey can help
if u start a new save does anything change
@gaunt heath oh holy kailey please spawn infront of me and guide me through this torturous quest of spawning my npc in the interiors bed
(trust me the ritual will work)
uhhhhhhh not sure
i dont really use new saves
start a new test save
im gonna have to go through the beginning cutscene again π
unless i forgot i can skip
welcome to testing
I learned so many debug console commands in the past couple of weeks
but yeah there's a skip intro checkbox when creating a character that jumps right to the farmhouse, unless you mean a different cutscene
i think they have a cutscene to add their npc in
ah, yeah, then that's its own thing
EW I HAVE TO WAIT TILL 9 AM TO GET IN
world_settime 900
though that makes schedules and behavior wonky at times
Oh lawd idk how NPCs work
so did it work
uhhh i need to see what tile exactly did he spaawn in
above or below the bed
also did u sleep a day after making changes?
but yes hes in the bakery
nope
always remember to sleep
NOOO HE SPAWNED ABOVE THE BED LMAO
change the tile
made it one lower
give it a sec
yay :3
seems about right
thats always the most common Home for any NPC, right?
basically yeah
gus might be the only one though
every NPC ive seen spawns in their bed
ANYWAY its time forrrrrrrr
schedules 
either gonna be fun or nightmare
okay so, every NPC stays at their exact coords at 9 AM every day, right?
oh wait nvm its a diff activity
right
when the day starts theyll be at the home coordinate
then afterwards you can specify where they go to and whatnot
oh uhhh
how do you apply schedules
Changes?
where is this
it says it doesnt have anything in the changes field
did u just add it to content
ignore the rest im trying to test atm
u need the changes part
so its not an include?
uh no
hold on
let me explain
- u already loaded a blank for ur schedule json. good.
- u included your schedule json in ur content json. good.
- in ur schedule json, you need an EditData patch. Which requires the Changes formatting thing
editdata and target data/schedules?
What I did for an example:
Characters/schedules/{{ModId}}_SpeedyManny
Characters/schedules/urnpcname
oh ok got it
ok so basically this
"Action": "EditData",
"Target": "Strings/Objects",
"Entries": {
"MM_Potion": "{{i18n: potion}}"
}
}
"Potion": "{0} {1} Potion",```
I just changed it to the string above but i dont even know if thats correct and i havent tested it yet
oh wait is mushroom_extract a flavored item by itself
ah then the issue is that you need to use PreserveId: DROP_IN_PRESERVE
I changed the preserveId but I must still be doing something wrong
post your code again?
oh yeah wth was this?
your PreserveId is still DROP_IN
When I use content patcher edit data, are all fields that were not included in the edit data unaffected?
Even if for example, they are contained inside another field?
"239": {
"Buffs": [
{
"CustomAttributes": {
"Attribute1": 250,
"Attribute3": 570
},
},
],
},
In this example, I skipped "Attribute2" in the edit data, does that mean that it will not be changed at all and retain it's original value even if I changed some parts of the "Buffs" field?
also if your fuel is a base item instead of a flavored item you want to use DROP_IN_ID_1
to recap: use DROP_IN/DROP_IN_ID_1 if you want to copy the item's ID into the flavor field
use DROP_IN_PRESERVE/DROP_IN_PRESERVE_1 if you want to copy the item's flavor into the flavor field
I think that just means that SMAPI cannot connect to the internet? Not sure though.
ie. keep track whether you are acting on Tuna the item or Tuna the flavor of Smoked Tuna
It's using the second item's ID now but doesn't copy the flavor of the main input item

did you swap around Preserve values to the correct ones as I suggested
it looks like you still did not change the main PreserveId field
how do i know if an NPC has already occupied a specific XY coord so that my schedule is doesnt overlap with them
this will wipe Attribute2
huh! I thought I did. must have hit ctrl z one too many times
Either read their schedules or follow them around and either way, hope a mod doesn't change it
Thanks! That means I just gotta copy the original value too, right?
alrighty
it works now! thank you so much for guiding me through this 
if you want to not need to do that you can TargetField even deeper
oh im gonna need to add a sleeping animation
Thanks!
will add a selph shroom in your honor or something
shit
Hello everyone.
I'm an absolute, complete beginner. I'm looking to create a simple mod, and I just completed the 'Getting Started' tutorial on the Stardew Wiki.
No idea if this is the right place to ask, but I'm wondering if someone could push me in the right direction to move towards.
what mod are you looking for exactly
The change I want to implement is very simple:
You know the 'Review Screen' at the end of the day that summerizes the items placed in the shipping bin and the money you've earned?
I want this to appear EVERY day, and not be automatically skipped when the shipping bin is empty.
That's it.
have you decompiled the game?
I haven't. I assume that's done using the 'ILSpy' mentioned in the Getting Started tutorial on the Wiki?
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Where would I type in '!decompile'?
Ah, okay.
you'd need to patch the game's end of night handling to change the part of the code that says "if item shipped > 0 show item shipped menu"
And I could do that directly once the game is decompiled?
!harmony you'd use this
Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.
If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.
For more information, refer to the following:
- Harmony Modder Guide - Intro, Use Cases, Initial Setup
- Tutorial: Harmony Patching - Types of patches and code examples
- Decompiling Stardew Valley - For finding methods to patch
Find the IF statement, remove it, and recompile?
no recompiling involved
decompiling is just so we can read the game code to know what to do
Game1.showEndOfNightStuff is where the relevant logic happens
now I think this can also be done without Harmony and just inserting the menu in the DayEnding event, maybe
not sure about the order of the sequence though, I guess that can be an exercise left to the reader
definitely set up a working C# mod first via the tutorial and then you can continue from there
I did complete the mod in the Wiki tutorial. Basically just logs the player's keystrokes in the command window.
That menu might be special
Some menus (that might be one of them) kick off tasks
Like the save task, etc
so there's a queue of menus on day end and the shipping menu seems to be separate from the save menu
um
my NPC got stuck when he re-entered the bakery
like from the entrance
he was out of bounds
inserting the shipping menu might work, but one issue I see is that DayEnding runs before the game's day ending handler which collects all the items to be shipped
oh nvm the xy coord is wrong
honestly the most worry free solution is probably straight up transpile the part that says "if item > 0 show shipping menu"
Transpile?
Alright....so start by decompiling the game, download and read up a bit on this Harmony thing, and then learn how to use Transpilers?
yeah
it does suck that your simple mod idea is actually very difficult to implement in practice
er
how do i add a sleep sprite
Data/animationDescriptions
Yes
are you looking at the schedules page? i think thatβs where animation information is
then yeah follow the wiki
so {{ModI}}_speedymanny_sleep
but like how does it know where my sleep sprite is on the spritesheet
Part of the animation description is which sprite indexes/frames are used.
there's specific numbers for each frame?
this sets the sleep frame to 50
the beginning is the intro part of your animation, the middle is the part which loops and the end is the exit
So, depending on the size of your character (as defined in Data/Characters), each part of your sprite sheet has a different sprite index, starting with 0. It works exactly the same way with every other asset spritesheet in the game. π
do i add this to content or schedules
you can add it into schedules and then include it into content
oh alr
or just add it to content
yeah adding it to content
no reason to add it to schedules since schedules will just load it up once i do the sleep command
i think?
you decide where you put patches for your own internal organization. Include just means βcopy paste all patches from this file here into content.jsonβ
you arenβt loading any patches
you can also have a seperate .json just for animationDescriptions
just include it in content.json
are animation descriptions also used for events?
interesting
Events use different methods to pull specific frames
Is it a faux pas to repeatedly make mods that add only 1 machine? Currently I have the following mods, each of which only adds one machine:
- Floral Tea Brewer (makes floral tea from flowers)
- Seed Sifter (turns mixed seeds to seasonal seeds)
However, I have ideas for various other miscellaneous machines that I want to work on (a new furnace, a sapling aging machine, and bug lamp just to name a few), and they don't really feel like they'd make sense to be in one mod.
My Expanded Slime Ranching and Alchemy mod adds multiple machines, but they all feed into one another and/or work to bring the additional depth I was hoping to provide to slime ranching.
You can release a mod that changes a single pixel in a texture if you want
That shouldn't stop anyone
not that iβm accusing you of this at all, but sometimes users who upload a bunch of small mods (for example, each mod adds one fruit) could be accused of DP farming, if it seems like those low effort mods are simply aimed at getting the maximum number of downloads. however chu is right thereβs no βgood enoughβ for a mod
What's DP?
i thought i read somewhere that you only get DPs based on each unique download for your entire catalogue of mods... is that true?
itβs a secret since they changed it
Oh?
but yeah i believe they did weight repeat visitors lower
They try to keep people from gaming the system, because people gaming the system leads to that guy who posted like 200 mods that were all niche Skyrim shouts that made a NPC do a specific animation
Ok, well weighting them lower sounds more fair than removing them all!
yeah thatβs the DP farming i was talking about
Well, a repeat download is possibly just people downloading an update
Or just playing a second time. Basically you could game THAT system by doing a ton of useless updates that just cause people to redownload
yeah i think UDLs are more βvaluableβ but the same user uniquely downloading 200 mods from the same author is less valuable afaik
or just having your friends download the mod a lot of times
Oh, I thought you meant repeat downloads, as in a person gets people interested in their other mod
this is what i meant yeah
I did not know this was counted
at all
it isn't
oh ok
I just misunderstood what was meant by "repeat visitors", that sounded like it meant for the same mod
i could have been clearer sorry
Nah, my thing is just that it doesn't make sense to me to group together those unrelated mods. For example, the furnace mod I mentioned will add a new furnace that uses solar essence as fuel instead of coal. I'm currently debating whether to add other versions of machines that do this (which, if I do end up doing, I'll add to this mod). To me it makes sense to group those machines together sense they'd all work towards my goal of the mod ("Add more uses for solar essence").
However, it doesn't make sense to me add mods with different mission statements to said furnace mod (I tend to set out with set goals for my mods, usually revolving around adding uses for unused items).
No, that makes sense. That's fine
The rules are to discourage stuff like, as mentioned, the guy clearly spamming mods
bool flag = false;
if (Game1.player.displayedShippedItems.Count > 0)
{
Game1.endOfNightMenus.Push(new ShippingMenu(Game1.player.displayedShippedItems));
Game1.player.displayedShippedItems.Clear();
flag = true;
}
Alright. So I can identify the decompiled code that I want to "fix".
But how does this help create a mod?
It's not like I can just make the change I want, recompile, and then play the game, right?
your mod uses Harmony to patch that code into something else
What is the context here
they want to make the shipping menu always show even with 0 items shipped
As a complete beginner to modding.
see the tutorials linked previously to see how you'd set up Harmony
Ah so you need to target the if (count > 0) bit
Exactly.
And use a transpiler to turn that into unconditional jump
If that's the easiest way to accomplish this, yes.
(Idk what the IL looks like around here, might be unconditional no jump)
around here?
i would also double check that the shipping menu constructor doesn't explode in some way if given an empty enumerable
It's unfortunate that you picked a terrible thing buried deep in the new day method as your first mod 
This guide describes how2 transpiler
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually itβs easier to start with making content packs, since you don't need to learn programming.
Follow the normal C# modding guide for how to setup a project
After u get it to work u can then check this
Maybe need to patch more things around ShippingMenu
I'm still waiting to attempt harmony patching for my slime mod, considering the fact that I only just got the (rather simple) C aspect of it working. I did have the recent realization that Happy Home Decorator may have what I need though (i.e., logic for what to do when using fairy dust on an object).
I'm not in any rush though. I view that mod as a long term project that I can gradually build on as my skill progresses. I already know for a fact that there are going to be way more difficult things I'll need to do in C (e.g., slime balls that change color and item drops based on the slimes in the slime hutch, logic for handling big slimes, and probably the logic for quality boosting towers in the hutch, just to name a few).
Ig another approach could be to "ship" some kinda dummy item and ignore it in a patch in ShippingMenu
I don't know which one is better
If you're using it for machines, I think those have a separate dedicated method for applying fairy dust which you could prefix. I did it this way because I needed to specifically apply it to furniture, which obviously doesn't have machine logic
hi guys does anyone have any knowledge on how to make custom schedules/warps/paths? i'm honestly not really sure how to ask since i am making a custom npc but am having trouble with schedule
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC#Schedule
That should cover schedules. NPCs use both regular warps that the player uses and NPCWarps (which the player cannot use). The game decides the path they take based on schedules and warps.
oh, I did not know that npcs could also use regular warps. Interesting
I haven't looked into map stuff at all but I thought that would be how they enter/exit buildings
my issue is my npc spawns in the custom house, but when it comes time for them to leave the house, they walk through walls instead of using the warp. when i was able to get them to leave the house, they just stood outside the door and didnt move all day
Hopefully someone with actual NPC creation experience can offer more specific advice, but I would double check that your custom map doesn't have any stray warps that they may be trying to path to instead
i checked that too and there are none ;-; thanks anyway
!json if you share your code using this, someone should be able to take a quicker look
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
can you send your map
i suspect what cam said
you mean the code of my map? in tiled?
the .tmx file, i can open it in tiled and view the map properties
or you could just screenshot those
here is the tmx
hmm okay you do only have the one warp in there
do you add any warps via EditMap patches?
yes the other warp is on the forest map
i mean to this map specifically
in the forest map, there is a edit data thing where if you touch the door from the outside it leads to the inside. it works perfectly fine for my character but my npc doesnt even recognize the warp that leads to the outside of the house
there is some kind of issue with pathfinding where the npc doesnt recognize the warp unless i specifically tell them to step on the tile that warps in the schedule. after that, they dont know what else to do. otherwise, they walk through walls without finding the path to the exit of the house
are they able to exit their room? i think your Doors might be malformed
ah yeah you need 4 args https://stardewmodding.wiki.gg/wiki/Kailey's_Interior_Door_Guide#Map_Property:_Door
Last edited by KaileyStardew on 2026-03-18 02:05:56
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 (...
yes if you look in the tmx, they spawn on tile 6,6 which is right around the center
i havent tried looking at interior doors yet, i wanted them to leave the house first
just to try and get a schedule, then focus on doors and details
can you send their schedule?
and can you also patch export Maps/Forest and send that
i'll brb i have to put laundry in
what on earth is with tilesheetinator thinking your tilesheets are prefixed with Maps_...
that's probably not your problem but i'm having to manually find all these tilesheets now
so bear with me
oh im so sorry ;-; i dont know what happened there
would you mind screenshotting your map patch so i can compare it to the raw data i have? it's faster than me asking for your custom tilesheets and manually finding the vanilla ones
Post 900 and 1200 in your schedule you use , instead of / which may be causing the schedule to break.
is this what you mean? i apologize if it's not
i do have a patch with only the house and its surrounding area
this is correct, and adding onto this, you can't start a schedule with 0600. it should be 0 or 0610, but you actually don't even need that if you just want them to be at their spawn point until 0900
i see. i only made them start at their spawnpoint at 6 for debugging purposes because i wanted them to be able to exit and enter the house before getting a good schedule
yeah if you just change it to 0610 or remove it entirely you can test to see if it works
i will test that right now one second
should i write each step as a singular line instead of using / ?
no, you must follow the format as explained on the wiki
each entry must be formatted like
"Mon": "0610 Location x y z/0900 Location x y z/1700 Location x y z",
with x y z being coordinates and facing direction
alrght! i changed the 600 to 0610 i will test it right now
so unfortunately it's still the same. it's like at 9 am the npc tries to look for a way to go to forest like my schedule says and ends up walking through the wall because it cant find a pathway or something
there are no smapi errors because the code is technically correct
did you start a new save or sleep?
no i just loaded the game and went to look
you need to do one of those. schedules are calculated at the end of the day
what does your schedule look like now?
i removed the 0610 altogether because i remembered i had set a spawn point in the npc data json
what is your character's internal name?
Eugene
also just for future reference, you should use smapi.io/json to upload jsons
!json here's the site
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.
how would you see it then?
this is not related to your issue you're having, but you should prefix your character's internal name with {{ModId}}_ to prevent conflicts with any other eugenes out there
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.
just for future reference, that's how you should share jsons
alright
so right now, he stays in place until 0900, then walks through walls?
yes exactly
idk where he would be trying to go, it looks like you only have the one warp in your map
can you patch export your custom map, just to make sure?
yes let me see
and while we're at it, just to get the full picture, can you share your patch to Data/Locations you did
AHA you DO have more warps in there
8 20 Forest 70 67 7 20 Forest 69 67 7 10 Forest 46 46
he's trying to go to one of these
i opened the map and went to map properties
Map>Map Properties>Warps
you must have a patch(es) that add warps to your custom map
that is so strange i don't remember making any patches
should i copy the warp from my original map and paste into the patch export?
well it's either you or some other mod doing it haha
no, patch export simply grabs the asset as exists in the game
after all patches have been applied
oh man ;_; idk where to even find that then
like idk where id find what is making the extra warp
well you can run a patch summary asset on your map but like... do you not know what patches you added? /gen
thing is the only patches i have added is the 7 10 forest 46 46 warp. im not sure where the rest could be coming from. myabe another mod? i dont remember there being a mod that could do that but i also have like a whole bunch of mods so idk haha
how could i run the summary?
is this not your mod you're making from scratch?
it's okay if not i just want to be clear what's happening
patch summary asset Maps/YourMapNameHere
it's a mod i downloaded and wanted to edit for fun. not to upload or anything! i just wanted to make an npc. i did thoroughly look at all the code tho maybe i missed the patch?
do we have any public Pterodactyl eggs for Stardew Valley server setup ?
ahhh okay yeah that makes more sense to me now
you see, i have a 256GB RAM Pterodactyl server tower rack and need to put it to good use
if it's a mod already uploaded on nexus, it could be a different mod editing it, yeah
the patch summary asset will list each mod that edits it
ah found it!! but it's so weird because the condition for those warps is having sve which i dont have
here is the json
well this certainly explains the tilesheet prefixes! that's so irritating
probably not, because SDV is not really designed for headless server hosting (multiplayer requires a main player to be online at all times)
there are always active mods out there but they're all rather experimental I heard
whyyyyy did this mod load vanilla tilesheets
magic
Are they loading copies of them or like... the actual files
i think not, there's a mod that keep the server always on and hide the host
that may have been me ... because custom tiles werent working not sure why
some kind of dark magic
because the answer to the first one is maybe "old mod didn't have the tools to use vanilla tilesheets"
no, this applies when you DON'T hve SVE
"LogName": "Eugene's House Warps",
"Action": "EditMap",
"Target": "Maps/Custom_NPCEugene_House",
"AddWarps": [
"7 20 Forest 69 67",
"8 20 Forest 70 67"
],
"When": {
"HasMod |contains=FlashShifter.StardewValleyExpandedCP": "false"
}
},```
but it's loading town interior and paths
Oh that's weird
those are in the Maps folder
that's confusing
yeah lol
Bafflement shared
oh i see thats what false means then. if i remove that whole chunk will it break anything since i already have a warp?
probably not? you can test on a save you don't care about
i'm actually not sure when map edits apply. i thiiiiink it may be on asset requested?
i asked button a while ago but forgot the answer
anyone know why if i have question null #<my fake question> it only shows the first word...
question null needs quotation marks
lol i only know because i use them so frequently
i just saw this. you should not load vanilla tilesheets; even SMAPI can now access tilesheets outside of the Maps folder, fortunately!
Hello I am having trouble with enhancing my custom location. I am trying to make the map a decoratable location
I added the type into data locations but Iβm not sure what else I have to do
Is it a tile property?
thing is- i was having issues with tiled loading the tilesheets so i just switched to vanilla tilesheets so i didnt have to add the custom tilesheets EVERY time i made an edit
!tilesheetinator you will need to either use this extension or else create a separate maps workspace folder and copy your maps back and forth each time. i HIGHLY recommend the former
You can use the Tilesheetinator tiled extension to create Stardew Valley maps that work in-game without having to copy vanilla and modded tilesheets back-and-forth, rename files with a . in front of their name, edit maps only in the unpacked content folder or make symlink workarounds.
See the mod page for full installation and use instructions.
oh my goodness illl have to do that after i debug this schedule!! seems so practical
it's the best improvement to modding i've ever seen hands down
OMG THE NPC ACTUALLY FOLLOWED THE SCHEDULE
AHHH
also sorry about that i ran into a bug trying to fix another bug and so on
π₯²
@urban patrol thank you so much for your help!
yay!
Sprites for my next mod!
need ideas.... π€
I think I like coding events in more than writing the first draft.
I think actually testing in game really helps to improve what might be an initially wooden script
Is it possible to wedge a CP "when" condition into a line of dialogue?
I basically want to have one line show up if the farmer is married (at all, to anyone) and another if they aren't, and the only thing that seems to do that is "When": "HasValue:{{spouse}}"
I know the vanilla game has a lot of dialogue lines which still trigger when they're no longer applicable, but I don't wanna...
could you clarify more about how you wanna use it? GSQs might work for one particular dialog line
you can use query
Exactly like a game state query (I used GSQs on other lines... except I would have sworn I saw no option for PLAYER_NPC_RELATIONSHIP that allowed for anything but a specific name. And now there's an "any" option sitting right there in plain sight.
This is what I get for trying to write info into this content patch for 4 days straight...
[[Modding:Dialogue]]
Is there a way to determine whether a target exists, and use that as a condition in CP? Similar to HasFile or HasMod?
I dont think so, why do you need that
Well, if I want to target a seasonal variant when someone is using seasonal cute, but if they don't have that NPC turned on on the mod, then the assets I'm editing won't exist
That's fine ur edits will just be inert too
Ok cool. I wansn't sure if it would throw errors
If nothing tries to Load it, then nothing will attempt to Edit it
CP edits kind of inherently account for assets not existing
they're a set of edits to apply if and when those assets are loaded
Chu is correct if it is loading new assets
You could do an EditData to Characters/dfkjtghdfkg/365983476 and it'd be fine
Yes I mean in a situation when I want to target assets loaded by another mod that don't exist in vanilla
(Same for EditImage, or EditMap)
I wish CP could haggle for me
New quote added by head_in_the_cl0uds as #7783 (https://discordapp.com/channels/137344473976799233/156109690059751424/1486138723589554298)
The content pipeline works the reverse of the way that you're thinking it does. CP does not "push" things to the game, the game "pulls" things from it
(and any other c# mod)
So that's why it's sad when the FromFile is missing I guess
What are you haggling
Another nexusmods page
Basically what it looks like is this
- game needs something, asks smapi for it
- smapi asks c# mods including cp if anyone can provide it
- if you have cp a load patch, it will say "yes I have it"
- cp will then read the local file and give it to smapi
- smapi will repeat this with edits
- smapi will then give the fully modified asset to the game
what is the correct format for the content json rn
and also is it supposed to be the version number of content patcher
Yes it is, unless you want to support Android, in which case it's 2.8.0
thanks!
(Technically the version number of CP without the last number because CP ignores that one)
oh fuck i forgot the beach version of nyapu portraits
guh
cant update yet
what is the easiest way to config appearance?
With a condition on the appearance?
i know there's conditions on appearances but how do i do it with a config token
π€
configs are content patcher tokens
if it resolves to true you can put it in a condition
or false
what does it look like written out
