#making-mods-general
1 messages · Page 62 of 1
(I looked up the year that happened and that was one of my busy years, so no wonder I had no idea)
also the wiki page 😦
that's amazing
one second
hey @ivory plume https://github.com/Pathoschild/StardewMods/blob/3366e0d4b86711d8eba3a79394cf51e26a48c3da/ContentPatcher/Framework/InvariantSets.cs#L25
hmm your file looks fine to me. what's not working specifically?
any errors in the console?
oh this is hell ! cool!
Yeah, strings containing i18n should probably be excluded from the singleton optimizations.
would be as simple as changing here, maybe? https://github.com/Pathoschild/StardewMods/blob/3366e0d4b86711d8eba3a79394cf51e26a48c3da/ContentPatcher/Framework/Tokens/ValueProviders/TranslationValueProvider.cs#L76?
Well, we should still apply the optimization when it doesn't change the text. So we could add a bool caseSensitive = false argument to that method.
Unfortunately no errors on the console either.. i am using DSV but i checked “off” option on the sprites i want to change. Otherwise idk what’s going wrong
I feel like it would be so uncommon though, for the value to be a known token of "true"/"false" whatever
I honestly think hacking InvariantSet to support a discriminated union of (single value) vs (hashset of multiple values) might better
is there a way to have year 1 only schedules? saw smth like that for dialogues on the wiki but not for schedules
It's essentially a free optimization since we already have the logic for other value providers. I guess either way isn't a big deal though.
thinking about it, a lot of tokens are one item only
this is...pretty doable
it's already an interface
there's only one schedule i know offhand that only affects year 1 (green rain), but you can do it pretty easily with content patcher conditions/tokens
i wanna have a arrival day specific schedule, ill look into that later then
have you tested with only your mod?
have you double checked that the files exist in the assets folder, and with show file extension enabled?
Ok i checked the 1st 2 and still nothing
This is my 1st mod.. so I’ll brb. I have to go figure out what’s a file extension 😅
!fileextensions
Windows and Mac hide most file extensions by default. If you are creating or updating mods, it's helpful to show file extensions so that you can be sure all mod files are named correctly.
To show file extensions on your computer:
On Windows 10, open File Explorer, click on the View tab, then check the File Name Extensions box.
On Windows 11, open File Explorer and click on View > Show > File Name Extensions.
On Mac, open Finder, and in the menu bar, click on Finder > Settings (or Preferences) > Advanced, then check the Show all filename extensions box.
Oh ok thanks I’ll double check to make sure it’s enabled
Also post your log if you're able. It might be the case your mod isn't detected
Hello! Everything is going well with the mod I'm making--I'm looking at the portraits section now! Though, how can I have the code recognize the ($1, $2.. etc) when it comes to portraits
the log shows all enabled mods, along other info
as long as you put them in the same grid layout as the normal portraits those commands will choose the same ones
Where can i find the grid layout?
traditionally, portrait sheets are two columns, so:
!unpack have you unpacked your files?
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 have!
$2 $3
$4 $5```
etc.
(not me hitting enter instead of shift-enter by mistake, couldn't be me)
you can double check the portraits in your unpacked folder if you ever forget too
there's no requirement to use two columns though. the number is just the order they come in, left to right and top to bottom
you're also not limited to just those 6 portraits, theyre just the ones with shortcuts
(cf. avi's lance mod with 104 portraits)
which im realizing now arent in that wiki screenshot so that might make no sense to you
they're on the main wiki https://stardewvalleywiki.com/Modding:Dialogue#Portrait_commands
but not in tia's tutorial (tia always uses the numbers, so that tracks)
also re: two columns, its still probably better to follow that convention to not break any potential EditImages though since those use coordinates
if it's a new asset for a new NPC it's probably safe to do whatever you want. anyone who wants to edit it will have to look at it anyway, i would think
unless someone wants to do somethin dynamically in C# for all portraits
don't you have access to the image dimensions in that case?
you do, but its a lot easier to just say like "apply an overlay to these coordinates on all portraits" than do math to figure things out per portrait just to catch the one mod that doesnt follow the convention
Does reducing a buildings exterior footprint involve a lot of indepth coding/work? I wanted to make tinier sheds but still have the same amount of room inside
not at all, just a patch to the building data exterior size
the interior space has no bearing on the exterior
except fish ponds which have draw logic, most buildings r just a sprite
Is there monster data or are they all hard-coded?
Finding testing material for my savefile parser is genuinely hard! I need a 1.6.8 maxxed out save, but apparently that's impossible
there's monster data
its just drops and hp i think? very little info about their behaviors
no uniform sprites either
Easier than you think
Upload.farm
theres some misc other stuff in the monster data but their behaviour is mostly hardcoded yeah
Load it once in 1.6.8 so migrations run
Yeah, I just thought I'd supersize the tab demo with something useful, so drops and HP are about right. Where are they, though? What data?
Data/Monsters
yes, but it wouldn't have 100 percented in 1.6.8
so stuff will be missing
Oh, so there is no class for monster data, you can only get the string? Lame.
theres a perfection debug command if that helps
DataLoader.Monsters(Game1.content)
Yeah I know... it's a Dictionary<string, string>
Potentially stupid Farm Map making question: Can I put something on the Paths layer that is also occupied by a tile on the Buildings layer? If I put something partially obscuring it on the Front Layer, will that tile draw correctly over the bush or whatever?
Part of me wants to say yes to all of those, part of me wonders if bushes and such will fial to spawn if something is on the buildings layer...
same as how vanilla does it for monster help wanted quests
Paths isnt rendered
terrain feature (like bush) is drawn based on their position iirc, nothing to do with map layers
paths just tell game to "put bush here for me"
some indoor lights, too
Ok, so the game will merrily place a bush or tree onto terrain that can't otherwise be walked on?
Or naturally spawn tree seeds
not too sure about that one i think not?
but you can use Passable F on back if u just dont want ppl walking over it
but u know, bush itself also makes it not walkable
listen, i regret making the damn thing
i don't even have 104 different emotions in my life, how can you possibly reach that many
tbf it's only really 20 some odd actual emotes, i was an egg and wanted some coloration but didn't want to set overlays because i didn't know the update rate of overlays
I'll probably just put a fake bush here instead. My concern was people being able to shake the bush from what is technically the bottom of a cliff.
By taking Thalasin Plus of course
you may have problems with bush bloom mod yes
SVE secret woods has some unreachable bushes
extremely saddening
I'll have real bushes around, too. Not all the bushes need to participate in a bloom.
but if u dont actualy desire interactivity
u can just put them in as tiles
its not a issue 
don't give Cthulhu a stat block use an actual bush unless you expect your players to kill shake it
Another concern is people using the destroyable bushes mod to jump up cliffs.
So fake bushes it is.
...jump up cliffs?
Thank you this works, its fine for personal play through. but now there's a issue that it spawns fruit when you pick just mushrooms :/
if u want it to spawn different stuff depending on pick then u just gotta have 2 entries
Not sure if this is related to your EditImage changes not working, but your Format is really low. It should be 2.3.0.
Cats are monsters, apparently. Dogs are cool though.
With content patcher, how do I add to the "modData" dictionary? It used to be something like:
"ModData": {
"MyCustomData": 1
}
But that doesn't seem to work for me any more
why do u need to add mod data
Cool! Guess I'll have to dig around tomorrow for the file... and adjust the sprites. Or maybe Wednesday when child is at daycare and I have time to focus
(not saying u cant, but best if we know what mod this is for)
Does anyone know if I was to make a quick fix for UIInfoSuite2 not recognizing the new SVE trees, would that be something I could share with others? I can't find any info about it on the github page.
Updating my Automator mod. It patches a method in Automate to make it return null unless a key in the mod data for that chest exists.
UIInfoSuite probably would accept PRs however i imagine probably not at the moment since iirc the person working on it is still working on overhauling it to use GMCM instead?
do you want to use CustomFields instead?
definitely sounds like a thing you should send a PR for, since it's in active development
I sent a PR, but I know a lot of people want the mod to work, and don't want to wait, but at the same time I don't want to accidently do something the mod author would not want.
is UIIS2 in active development though?
Maybe. Not sure what the difference is. Here is the method I'm patching:
private static void Automate_AutomationFactory_GetFor_SObject__Postfix(ref IAutomatable __result)
{
if (__result is IContainer container)
{
Chest chest = container.Location.getObjectAtTile(__result.TileArea.X, __result.TileArea.Y) as Chest;
if (chest != null && !chest.modData.ContainsKey(ModDataId)) __result = null;
}
}
ah it's gotta be specific to instance of chest
last i heard (cf. button's comment), but i also don't pay attention
it would depend on UIIS2's license situation then, i guess, which im unfamiliar with
can you add this with CP 
I assumed so, but as I said I can't find anything on it.
i dont know how you would add mod data to a specifc chest with CP
That's what I'm trying to do. It used to work, but doesn't seem to any more:
{
"Format": "2.3.0",
"Changes": [
// Load Texture
{
"LogName": "Load Automator Texture",
"Action": "Load",
"Target": "KristianSkistad.Automators.Content/Automator",
"FromFile": "assets/automator.png"
},
// Load Storage Data
{
"LogName": "Load Automator Object",
"Action": "EditData",
"Target": "Data/BigCraftables",
"Entries": {
"Automator": {
"Name": "Automator",
"DisplayName": "{{i18n: automator.name}}",
"Description": "{{i18n: automator.description}}",
"Texture": "KristianSkistad.Automators.Content/Automator",
"ModData": {
"KristianSkistad.Automator": 1
},
"CustomFields": {
"furyx639.ExpandedStorage/Enabled": "true"
}
}
}
}
]
}
oh there was a framework after all 
yea i think u can just use customfields instead
Data/BigCraftable must have lost ModData at some point
well, absent a clearly laid out license, the answer legally defaults to "no you cannot do that"
someone else might be more informed about whether or not theres free permissions/license to do stuff with UIIS2 though, but that aint me
so the goal is to mark certain custom chests (made with ExpandedStorage) as "automators" right
Okay. Thank you for the info.
Correct. It disables all chests from automation, and only allows a new chest called an "Automator" to be automated.
Am I at least going about this the right way so far? I've basically shared my entire mod at this point lol it's not very big, just the one patched method and that content patcher file.
yea it seems fine
well, insomuchas i been describe mod and u seem to agree that i interpreted the mod correctly
big craftables are a bit weird cus they dont have their own type
get data like this
Game1.bigCraftableData.TryGetValue(itemId, out var bigCraftableData)
and then the whole ?.CustomFields?.TryGet etc
looked into it a little bit more, seems the repo for UIIS2 removed its MIT license back in March bc it wasnt allowed to have one in begin with bc the original repo its forked from didnt have a license in the first place. so. i still wouldnt do it (especially since im sure most people would rather just use the official UIIS2 version) but itd technically be in the same kind of gray area as UIIS2 itself is, i guess
id still just wait for the PR to be accepted
Yeah, makes sense. Thank you for looking into that.
("gray area")
its tempting if for no other reason than to put it under a completely open license
Yeah
i didnt realize UI info suite 1 was also a rewrite of another mod with no license/permissions listed lol
permissions mess all the way down
How could I even begin making a mod for PIF(Personal Rooms) https://www.nexusmods.com/stardewvalley/mods/20537 I want to make a tiny kitchen map but I wouldn't know where to start
PIF is a framework for new rooms in your farmhouse.It's especially useful on tiny farms and in multiplayer, as time stops in that room on days when the player didn't play.Access to your pe
that said im not tempted enough bc i dont know enough about what UI info suite actually does ive never looked at all the features it adds
Download someone else's PIF room and copy them.
Someone really should do a clean room rewrite tbh
i have never looked at the source code for it..
Alright I'll try to do that, thanks.
I use UIS2 and I don't know what it does lol
ditto. i've barely looked at it in any sense
(there is documentation at the bottom for pif)
sounds like we all make good candidates to draw straws to see who does the rewrite /s
I can see what my crops are when they are in the ground
Great!
nou
That's one thing it does that I can remember off the top of my head
Chue, i nominated you
make uber decide fate
whats the command for it again, just .choose?
It shows NPCs on the world map
i have to remake lookup anything in stardewui first
.choose chu, button, ichor, atra
Choose result: atra
lmao
AH HA HA HA
F

I'M RETIRED
tell that to uber
UBER WHAT ARE YOU DOINg
stardewui is only for pulling up new menus, right?
Have I not been nice enough?
right now yes
definitely not, the splitscreen fiasco probably got uber to hate you
can't argue with uber i guess....
u can check talk in the thread about challanges for changing piece of existing ui with starml rn
though the problems mentioned arent problems with shared lib version
I'm going to sleep
So like this?
private static void Automate_AutomationFactory_GetFor_SObject__Postfix(ref IAutomatable __result)
{
if (__result is IContainer container)
{
Chest chest = container.Location.getObjectAtTile(__result.TileArea.X, __result.TileArea.Y) as Chest;
if (chest != null)
{
Game1.bigCraftableData.TryGetValue(chest.itemId.Value, out var bigCraftableData);
if (bigCraftableData != null && bigCraftableData.CustomFields.ContainsKey(ModDataId)) __result = null;
}
}
}
i still have yet to touch it because i honestly have nothing to make a menu with
Uber we will renegotiate in the morning
atra needs to be well rested to start on the ui info suite rewrite tomorrow
yea seems fine, give it a shot
"nothing to it but to do it" s'what i say
Wait, for real? That's awesome
(tbh looking at this list of UIIS2 features im realizing theres actually quite a few that i just thought were vanilla lmao)
maybe, i would have to look at hooking things to specific spots on the hud
Hmmmm now every chest is automated again
{
"Format": "2.3.0",
"Changes": [
// Load Texture
{
"LogName": "Load Automator Texture",
"Action": "Load",
"Target": "KristianSkistad.Automators.Content/Automator",
"FromFile": "assets/automator.png"
},
// Load Storage Data
{
"LogName": "Load Automator Object",
"Action": "EditData",
"Target": "Data/BigCraftables",
"Entries": {
"Automator": {
"Name": "Automator",
"DisplayName": "{{i18n: automator.name}}",
"Description": "{{i18n: automator.description}}",
"Texture": "KristianSkistad.Automators.Content/Automator",
"CustomFields": {
"furyx639.ExpandedStorage/Enabled": "true",
"KristianSkistad.Automator": 1
}
}
}
}
]
}
are you sure your ModDataId is right?
the target for the texture has Automators, plural, but your customfields key has Automator, singular, so maybe double check which one your code is looking for
Yep, it's correct. So this would mean it's saying every big craftable contains the key now, right?
every Automator bigcraftable will have that key yeah
although i'd expect this to still prevent automation on everything 
Hmmm well it seems to think every chest now has the custom field
For PIF(Personal Rooms) it says to create your own room you can just edit the cozy sunroom farm but how and where would you go to edit it once you have the cozy sunroom farm installed?
you need to make your own PIF pack still
!mapmaking
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
it's not an in-game room builder if that's what you were thinking 
lol I was checking if it had the field, not if it didn't to disable automation.
Missing that all important !
but u fixed it and now it work yes
Yes! 😄 Now just to make it craftable and require farming level 10.
Remind me in three days I guess
Sorry. That was meant to be for botto
Remind me to take a look in three days
Remind me in three days to take a look
this is part of uber's renegotiation process
remind @calm nebula in 3 days to "take a look"
grass grows, birds fly, sun shines, and bblueberry... i remind people. I'M A FORCE A NATURE (#6299858) (3d | <t:1729134606>)
do u think people want to make royal serpent like companions 
gotta use actual numbers i guess and not spell them out?
i feel like i have to make bootleg spine for that
int(three) clearly doesn't fly with uber
So, uhhhh...got any tutorials handy on how to make this craftable and unlock at farming level 10? Cause my old content patcher file doesn't work any more and I can NOT remember how this part "Automator": "122 1 337 5 787 5/Home/232/true/null/{{i18n: automator.name}}" works lol
// Add Crafting Recipe
{
"Action": "EditData",
"Target": "Data/CraftingRecipes",
"Entries": {
"Automator": "122 1 337 5 787 5/Home/232/true/null/{{i18n: automator.name}}"
}
},
// Add Unlockable
{
"Action": "EditData",
"Target": "furyx639.ExpandedStorage/Unlock",
"Entries": {
"Automator": "true"
},
"When": {
"query: {{SkillLevel:Farming}} >= 10": true
}
}
My formatting was just out of date on the recipe, almost got it working just how I want now, thanks @lucid iron ❤️
Heya again! I just have a concern with the formatting of codes--I'm still going through Tia's wiki, though I need verification to whether the way it's all... copy+pasted (to be edited into my npc ofc) is correct
I feel confused to the many spaces in the front, so have to make sure!
What are you using for a text editor? You don't appear to have any syntax highlighting or indent indicators, both of which would make things much easier for you.
What couldn't you understand about N++?
It didn't indicate any different colors or so--I'm not sure
I'd recommend you try again, or try using Visual Studio Code instead
You probably didn't have your N++ set to display JSON5
What do I do with it?
if you just opened notepad++ and pasted it in, rather than making a .json and opening it with notepad++, you probably just needed to select the right language (json in this case)
in the top toolbar in N++ look for "Language", go to J, then JSON
What should I do following that?
are there any vsc extensions for stardew syntax?
it should highlight things different colours at that point, and it will help notice things if suddenly something you expect to be one colour is a different colour entirely (or commonly if you miss a comma or quote or something, the entire file will suddenly become one colour after the typo)
it also handles indenting and stuff better
Since you're using comments, I recommend JSON5 instead of JSON
Thank you!
my N++ doesnt have JSON5 so i assumed that was a plugin and didnt say it
Because JSON dislike comments and won't be able to tell if a multi-line comment is closed or not
if yours does though definitely go for it
Hmm. My N++ has JSON5 and I don't remember adding it as a plugin, but I might've done
admittedly it might be because i havent updated N++ since early 2021 lmao
No but you can use schemas https://github.com/Pathoschild/SMAPI/blob/develop/docs/technical/web.md#using-a-schema-file-directly
Ah that might be it haha. My N++ is up to date.
Thank you guys!
What colors are there, and what do each indicate?
it depends on your theme, it just helps that the different pieces are different colours. just for easier scanning/glancing
no specific colours
linkoid made Stardew Syntax for VSC
I haven't used it, but it offers more color stuff
what is a "temporary dialogue key"?
Trying to test my huge farm map and I think I did something extremely stupid, can someone spot what I'm doing wrong??
The description of that is that it's specifically for events and dialogue. I find the colouring from it confusing but I keep it for the excellent conversion from single-line to multi-line events.
your .tmx has tilesheet climbing in it
!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"/>.
in this case its for the .tsx
Aw heck, ok.
Also please provide links to the smapi.io log parser and json validator next time. It's much, much easier to read than just uploading your docs into discord.
Context?
Ah, well that's good to know. I probably won't ever have need of it then lol
if i knew how the yaml worked i'd be attempting to push it more, but since i don't actively understand things like the whitespace bits, i haven't bothered
That's YACP, not their VSC extension
yeah, but recent resurgence of new modders getting lost in the bracket sandwiches have made me contemplate it
I use the VSC extension but not YACP because I don't find YACP easier than using json
"failed setting temporary dialogue key "strings/schedules/maxine:coffee.000" schedule dialogue for the npc with coffee anim
I'm not sure how someone with no spaget background feel about either format
Json vs yaml
i downloaded that one but idk how to get it to work lol
If you click on it in your extensions list it will open the instructions for it.
You might have written your schedule string incorrectly. Can you share your json and log?
The HUD and general drawable support went in today, so you can host UI pretty much anywhere.
On a semi-unrelated note, is there a handy function to get the "error item" sprite?
(without having to actually create an error item, that is)
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 19 C# mods and 5 content packs.
Can you share your json where you load your strings file please?
the whole content json? or just the load part
The whole json is fine
Is this how it's supposed to look or is this still wrong?
i think ItemRegistry.GetTypeDefinition("O").GetErrorTexture(); is as good as you can get
or just pull it from the first item in ItemRegistry.ItemTypes
Those sources look okay - although I don't know why you have so many tsx files? If you're not reusing them across lots of maps, you probably don't need any. But you need to check inside the tsx files to make sure your sources inside those are not tilesheet climbing.
Sad. Is that texture actually in the vanilla sprite sheets?
i mean 210
(if you click the line number, it'll change the link to take people direclty there and you can share that instead)
ive got no clue where it is tbh
is it the one in cursors? i'll go look
I actually don't see one in cursors, which is always the first place I look.
But I could be suffering from Cursor Blindness.
I would check the latest cursors
Error items are new
The game just used to crash
Your log is saying that the game is trying to find a file called "Strings\schedules\Maxine" but your file is called "Strings/schedules/{{modID}}_Maxine"
What do you mean "latest"? I always look at unpacked data from the actual game.
i think they mean like Cursors_1_6
Like Cursors_1_6
Oh yeah. I've got that open too but didn't see it. I'll check again.
not this thing, right?
I always have Cursors, Cursors1_6 and Cursors2 open.
what
Hmm, that looks at least similar, not sure if it's the same one.
I guess that is in Cursors, ha.
(also i realize now GetErrorTexture just returns cursors and i couldve known the answer in like a second lol. you'll want GetERrorSourceRect too i suppose)
Thanks, I'll just stick the rectangle in cursors json, it's easier for this case.
{
return "LooseSprites\\Cursors";
}``` ?  no idea
...I don't know how to make that clearer. Can you share your Schedule.json file so I can show you?
does that mean i just remove the id or smth? i don ge it
Okay see how you've written \"Strings\\schedules\\Maxine:Coffee.000\"? But if you look at your code where you loaded the file into the game, the target is "Strings/schedules/{{modID}}_Maxine" instead. So you need to write \"Strings\\schedules\\{{modID}}_Maxine:Coffee.000\" in your schedule file (and do the same for the other strings too).
{
"LogName": "Maxine Schedule Dialogues",
"Action": "Load",
"Target": "Strings/schedules/{{modID}}_Maxine",
"FromFile": "assets/CharacterFiles/Dialogue/Maxine/ScheduleDialogue.json"
}
You're welcome
thanks !! ! ! ! ! !
I've decided that I hate monster data. A quarter of the display names are wrong, sprites are missing, dimensions are all over the place, animations sometimes have blank spaces between frames... what an absolute shitshow.
OH I'M A DUMMY AND DIDN'T EMBED THE TILESETS LOL.
Ok, so this is why i wanted to test my map even though it is very not done - I want to get ahead of this before I get very far because it drives me nuts: Does anyone know a reasonable way of avoiding this shadow showing? Do I need more Front Layers??
i don't know the difference between Front and AlwaysFront, but i also don't make my cliffs close to that point
you could make that | piece of the cliff on the front layer?
I would put the same cliff you have on Buildings there also on Front
Because Buildings renders below the player, but when the player is above a tile, they render behind Front
For locations (X, and Y) since I'm making an custom NPC; how do we determine/or get the information of X and Y?
ah yeah, vanilla maps you'll see a lot of duplicate looking tiles from buildings placed onto front
Hmm, I'll have to look into this a bit more.
Also, I think embedding the tilesets broke something? My waves are not animated anymore and the docks flash between looking right and looking totally off.
you can look in the .tmx of the map itself, you can use Lookup Anything, you can also use Debug Mode (the latter 2 are mods)
(FTM also has whereami)
theres also a debug command you can type in the console to get the tile you're standing on but i forgor it
TMX? Is this through the unpacked files?
yes
you can look at the .tmx map files for every location in the game in your unpacked content folder
Got you! Let me check it out
That's definitely something wrong, yeah. Did you embed your tilesets just by clicking the button down the bottom of the tileset box?
(debug ppp/debug printplayerpos is the debug command i was thinking of, you can type that into your console too F1F4)
And LookUp Anything, how does it work? I only ask since I'm lookin' at the map folders but still pretty confused aha
Does that give the exact coordinates?
lookup Anything is a mod you install that lets you hit a h otkey in game to see information about what your mouse cursor is over
the debug command will give you the tile coordinates that you are currently standing on yes
Thank you!
tmx is what the map files actually are, which are readable through tiled
!mapmaking
If you want to make mods that add or edit maps:
-
Use Tiled to edit .tmx or .tbin files.
-
Refer to the Maps wiki page for details on how maps work in Stardew Valley.
-
Content Patcher allows you to create custom locations through editing Data/Locations
-
Vanilla Maps can be edited via Content Patcher as well: EditMap
an npc requires roughly 2 programs open, and about 5+ different web pages 
Hmm I don't know why that would've broken anything. You can use the Bulk Animations extension for Tiled to add the wave animations back though. https://github.com/lukas-shawford/tiled-bulk-animations?tab=readme-ov-file As for the docks - are they somehow animated now?
i'm legally required to mention that you don't need to embed tilesets, and .tsx files load perfectly well
Haha I was waiting for you blueberry
It still looks fine in Tiled, is the thing, so I don't know what's wrong specifically.
Let alone how to fix it
Additionally, are there any mods that allow me to freely roam, skip to events and such to test out the mods and get coordinates?
Thank you!
i would also look for the Debug Mode mod
Is it because I have 2 tile sheets named "untitled tile sheet 2"?? I wonder...
How about the cheats mod as well?
i mean its all up to you in the end
Fair enough
CJB cheats can be helpful - I use it when it's faster than looking up a console command
cjb cheats is helpful sometimes but detrimental others if you forget that sometimes setting things specifically with cjb cheats wont set flags or trigger updates correctly sometimes
I just need the easiest tools to skip to festivals, and test out the game
Ohhh like when my negative friendship points from dialogue wasn't working
then yeah, the above mentioned mods will be helpful
though tbh you can do a lot of things just through the console commands
world_setdate etc
Thank you
when was that midnight beta? if you're doing this mod in the 1.6.9 beta, some of these mods might not work
its..... stillll..... giving me the same error......
OH THAT WAS IT, IT'S BECAUSE I HAD 2 TILESHEETS WITH THE SAME NAME
My waves work right again!
If you want continued help for stuff, I recommend you try to be proactive about providing error logs and jsons instead of just saying stuff that nobody can do anything with.
Ok, next order of business: Why can I walk on the Ocean???
theres no difference between ocean tiles and ground tiles from the games perspective. its just a texture
you need to add invisible walls
thought it'd be inconvenient to make ppl read the same thing again but sure https://smapi.io/log/0f85f773e3e24fd290c10df4b30170de
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home, with 19 C# mods and 5 content packs.
Aw heck, i need invisible walls...
Did you ensure you put tiles on the Buildings layer around the edges of the water to stop you from walking out onto the ocean?
I thought water=T would make them impassible.
im getting the json holup
water T makes them wet
As is usual when people say "it's the same error", this is not actually exactly the same error. The error message is the same but the content is different and the cause is different. You can't use tokens when loading files with Content Patcher, so you need to switch to loading both "Strings/schedules/{{modID}}_Maxine" and "Characters/schedules/{{modID}}_Maxine" as blank JSONs and then use EditData to add the actual content to them.
It is the "Passable" property that affects whether you can walk on them, but you can't rely solely on that because the NPC pathfinder ignores it and tries to make NPCs walk into the water - but they can't actually walk on the water so they get stuck.
I realized some NPC mods have two dialogues when it comes to JSON files, for instance.. the festival folder. My ID, for e.g, could be TESTtest. Some do..
"TESTtest": "Dialogue here"
"TESTtest_spouse: "Dialogue here, but for spouses in-game"
How is this done? I want my NPC to also have spouse responses, if that makes sense.
you mean like this?
https://stardewvalleywiki.com/Modding:Dialogue
the game will check for spouse versions for some specific dialogue keys where appropriate
Close, but your FromFile needs to be a blank json, not your ScheduleDialogue.json. And by "blank" I mean people usually have a json called "blank.json" and it's empty except for a set of curly braces {}.
So if I were to put _spouse, would that automatically detect it for me?
depends on context, i would check data/festivals
(actually it might not be on that page yet i thought i remembered seeing it somewhere but i dont see where i thought it was explained before oops)
but yeah it depends on if the game ever actually plans on checking for spouse dialogue in the first place
you cant just put spouse after everything and have it detect it
(as confusing as it is, some things are in dialogue some other things are in marriagedialogue)
Should I just leave that for last then, and focus on the basics first?
yes, get your npc into the game without red errors
if you're following an example or a guide that uses the _spouse thing somewhere then you can be reasonably confident that it will be detected if you add it too, but its not required
I'm using Gojo's NPC mod as a reference, aside from Tia's wiki tutorial, and they do use _spouse
For instance;
yeah that one's specifically targeting Data/Festivals if you were to try to throw the _spouse in say, Characters/Dialogue, it'll do nothing
i think all the festivals check for spouse dialogue?
yeah, what Avi said. just cause _spouse is checked in one context doesnt mean it'll be checked elsewhere, is all
I'm doing the official dialogues once I'm done with schedule, so that comes a little later
if the Gojo NPC mod is updated for 1.6 its probably a decent reference, depending on whether it was using any dependencies or anything
Well, if ConcernedApe uses this tile for his invisible walls, I guess I shall, as well.
Hey, these don't interfere with fishing, do they? Do i want only a single layer of these, or can i flood fill the ocean?
It seems to have the same process of Tia's!
Yes it is updated as well
Yeah that's what I have as well
For instance;
This is mine^
You can test it pretty easily. I don't know if it would affect fishing. I don't use invisible tiles at all because I dislike them.
if that's what your internal npc's name is, that's fine
Internal being display, or the Unique ID?
uniqueid, so from tia's guide it'd be replacing WrenSong
Unique ID. Display is what it says on the tin: for display
If the layer is Buildings, then you won't be able to fish there.
Is there a way to make Tiled show invisible tiles? Or temporarily remove alpha channel from spritesheets?
you can view invisible tiles from a few methods on the Big Problems board
Not that I am aware of, hence my dislike of them. If you know where one is you can use the magic wand (I think?) to find the others on a layer though. Maybe across layers if you have all the layers selected?
Oh the same tile tool, not magic wand
Confusing
why does it need to be blank? I've never made an NPC before, so I have zero idea, I'm just curious about why the game needs a blank .json for NPCs
Because Content Patcher tokens need to be parsed by Content Patcher. When CP Loads a file into the game it doesn't edit it in any way, it just hands it straight over - so any CP tokens inside it don't get parsed by CP and so the game gets them as the token in plain text.
Putting things into the blank json makes them impossible to use tokens or i8n
you CAN put things in, it just makes life harder later
whereas sticking them in with EditData lets you bring the full power of CP fancy stuff in
i have 0 idea where the straight load tutorial is coming from, but it definitely makes your life harder
so the blank.json is something that the game loads for NPCs, and then you used an EditData action later to have Content Patcher actually populate it with schedules and stuff to make the NPC work?
sorry if I'm asking stupid questions, just trying to make sure I'm understanding the explanations right
You're using CP to load the blank json
okay so imagine a box—
some of them don't need blankloads, it's specifically files like these that don't have your npc's .json that you'd need a blankload
What is up with Game1.tinyFont. How do you even do this. Why.
You can have a single blank.json to use for all NPCs as long as you are loading to unique targets, too, IIRC
As far as I'm aware, it should be any json that you need to use tokens for, isn't specific to NPC's
yaya, like events too, in locations without any
Since you will be using EditData to fill them in by target
for NPCs specifically, you can get away with just this:
"LogName": "BlankLoads",
"Action": "Load",
"Priority": "Low",
"Target": "Characters/Dialogue/{{ModId}}_<NPCNAME>, Characters/Dialogue/MarriageDialogue{{ModId}}_<NPCNAME>, Characters/schedules/{{ModId}}_<NPCNAME>, Strings/Schedules/{{ModId}}_<NPCNAME>",
"FromFile": "data/Blank.json"
},``` because these are technically the only files that have the specific npc name
As an example, say my NPC was called "Abagaianye.hiriaNPC_Hiria". I want her to have an event in a custom location I've made called "HiriaHouse". I make a file called "HiriaHouse.json" and then write a code block to Load that directly into Data/Events/HiriaHouse.
However, I've used a token in my HiriaHouse.json where instead of writing speak Abagaianye.hiriaNPC_Hiria I wrote speak {{ModID}}_Hiria. Because CP didn't get to edit the HiriaHouse.json to convert {{ModID}} into Abagaianye.hiriaNPC, the game reads my speak {{ModID}}_Hiria as speak {{ModID}}_Hiria instead of receiving speak Abagaianye.hiriaNPC_Hiria which is what it needs to be able to match up with the fact that my NPC is called "Abagaianye.hiriaNPC_Hiria".
So the game goes looking for an NPC called {{ModID}}_Hiria and obviously can't find one because there isn't any.
ooooooh, so it also has to do with the order in which Content Patcher loads things, to make sure it's loading everything in the correct order so it finds the things you want it to find?
this is correct except you need to do the loading yourself
Only in that you have to Load first, EditData second, because the asset needs to exist already for you to be able to edit it. The point is just that CP doesn't convert tokens into the actual text the game needs when you use Load, but it does when you use EditData.
yeah, yeah, I think I get it! thank you for the explanation. I'd seen people say previously that you need a glank .json for NPCs, but I never knew the context for why, or how it was supposed to work. thank you for the explanation :3
It's not specifically for NPCs, by the way. It's for any asset where you want to use a CP token inside the FromFile and the asset doesn't already exist in the game before your mod creates it. It just so happens that most (all?) of the situations that can occur in are NPC-related.
(events)
(I guess you can have events without any NPCs in them, so yeah that's true)
custom locations need a blank load or else you're writing into the air for events learned that the hard way
to use your previous example, would you still need the blank.json if you weren't using Content Patcher tokens, and typed out the longform name Abagaianye.hiriaNPC_Hiria every single time you used it?
Nope!
As long as you also weren't using i18n
because every call to the i18n file uses a token! :D
Yup
I'm learning, I'm learning! 
Where can I get the list of all the different locations? Including Ridgeside
i don't suggest making multiple home locations, it gets really buggy really fast #making-mods-general message
Data/Locations but you'd need to do a patch export to get them
What do you mean by multiple home locations?
You mean unlock the packs?
you can stick to just the default
, multiple meaning several codeblocks with different IDs
I have no idea what unlocking the packs means lol
It's the same as exporting, I suppose? It's a way for you to look into the files
Yeah the ID is fine, though what about the location itself?
download them off of nexus or wherever, smapi: patch export Data/Locations
Unpacking and doing a patch export are slightly different. Unpacking allows you to look at the vanilla game data. Doing a patch export lets you see the data for a particular asset after it's been modified by mods.
Why do you want a list of all the locations anyway?
It's so I can figure out where I want my custom NPC to be at, or where they spawn in!
I'm still new to everything modding related, so I'm trying my best
Okay fair enough. If you just plop them into someone else's location they won't have a bed though
Yeah, the idea wasn't to have them spawn at somebody's but perhaps they can go in a shop.. maybe
Assuming lore-wise, the character lives in the store and such
I'm interested in the Ridgeside Village location assets to see where I can fit the NPC I'm makin'!
if you do plan to use an expansion you'll need the dependency in your manifest:
https://stardewmodding.wiki.gg/wiki/Tutorial:_How_to_create_a_manifest
just so it doesn't scream at you that the location doesn't exist due to mod load order
Spent way more time than I'd intended on this, but I'd say it turned out as a pretty good demo for a few hours of fiddling around.
Fancy!
(Probably would have taken half the time if I'd chosen anything other than monsters as the data source, I'm never touching those again.)
Just for clarification; this Unique ID is what the CustomNPCName asks for when it comes to the festival folder, correct? In other words, the Internal name is the same as the UniqueID here?
No, they are different things. Your NPC's internal name is just for the NPC. The UniqueID in the manifest is the ID for your entire mod. It's recommended that you use your UniqueID as a prefix for items, NPC internal names, custom locations, etc (anything that needs to be unique to your mod) so that your mod doesn't conflict with others.
I see, so if my UniqueID were to be Example.Example2; it's alright to use Example.Example2 for the assets you mentioned?
No. You'd have Example.Example2_NPC or Example.Example2.itemname or something similar.
For example, my UniqueID (also called a ModID) is Abagaianye.hiriaNPC. I put that as a prefix before all my maps, locations, portrait and sprite files, etc. E.g., Abagaianye.hiriaNPC_National_Park.
If we were to take the Festivals JSON as a quick example; my UniqueID is F1F4.F1F4Gift
Is using F1F4Gift alone possible, or should I strictly follow the examples you provided?
(I use the CP token to do it, so I actually write {{ModID}}_National_Park but then CP converts that into Abagaianye.hiriaNPC_National_Park for use in the game.
Is your NPC called F1F4Gift?
As in display name? If not, where can I check or make sure?
No, not display name. The name of their entry in Data/Characters. The "Aba.Hiria" that my arrow is pointing to.
To show an example in the context of festival setup like you have, here's my festival placement for Hiria at the egg festival
Sorry, I'm a little confused. I may have done something wrong in that case; are you okay with me sending over images of my folder layout?
Yup go for it. You can also share the json with your data/characters entry code if you want to.
If this example is through the Disposition, then I have it correct^
Okay yes you do. That's a very unusual internal NPC name but it is certainly likely to be unique lol. Usually people use some version of their NPC's display name (ideally with a prefix to make it unique) but you don't have to do it that way.
As long as it works!
I apologize for the confusion and constant fussing--thank you so much for your help !
No problem. It can take a bit to wrap your head around some of these concepts at first.
Certainly! Fascinating to learn a new skill though--I've been going at this for 7 hours now aha
My manifest seemingly follows a ContentPatcher inspiration
Does that work any differently, or should I just add the additional dependencies command?
you just replace the bit that says spacechase0.JsonAssets with whatever expansion unique id you're goin to use
ex: RSV is Rafseazz.RSVCP (i had to go look that up)
I have Pathoschild.ContentPatcher
yeah in the link it has the extra dependencies list
contentpackfor changes depending on the framework that you're using, but you're using content patcher, so that stays
This is my current manifest folder^
contentpackfor is not equal to dependencies
I'm sorry, I'm not following what you mean ;-;
"Name": "MOD TITLE HERE",
"Author": "AUTHOR NAME HERE",
"Version": "1.0.0", //your mod's version
"Description": "DESCRIPTION HERE",
"UniqueID": "AUTHOR.TITLEHERE",
"UpdateKeys": ["Nexus:???"], //unnecessary to change if you don't plan to release on nexus
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
},
"Dependencies": [
{
"UniqueID": "Rafseazz.RSVCP", //ridgeside dependency
"IsRequired": true,
},
],
}```
Thank you!
Nobody has been talking about Furniture recently 
I need a pretext to avoid actually working on FF
shame, i had a question about backwards compatibility and if you were gonna bother
I could ask a question about furniture if you'd like :3
Not really, every major update changes the "Format" number, and I just send a warning and skip the pack if the format is not the same as the one in the FF version
Having to do some sort of auto version fixes would probably kill me, since I tend to change a lot of small details every time I do a format update.
(but FF is open source, so...)
bring it on!
I made a mod that adds some hoardable stuff to the game. what would I need to do to also have those objects double as furniture, and have it make bigger and bigger piles of scrolls/platinum bars/gold coins/etc the more and more items you place on a single tile?
you know, so you can decorate your house with huge piles of your own grotesque amounts of wealth and tell Joja they need to get on your level
That would need some custom C# code, is your mode CP or C#?
the only way I can see it working is having a Furniture for each pile size and add crafting recipes to merge smaller piles into bigger piles
I don't know if it's possible to use Furniture in crafting recipes tho
that's alright. I got to ask a question, that and reading the answer is the fun part
Is this still valid? Also, can somebody elaborate what they mean by this? Just so I'm sure
I believe 1.6.9 allows using furniture items as crafting input. for output though you still need Craft Anything Framework
it's referring to https://stardewvalleywiki.com/Friendship#Universal_Gifts
it means you don't need to specifically set them to like artisan goods or hate fishing trash or stuff like that, because those sorts of tastes are automatically set unless you manually make them something else
if you don't specify a gift taste for a specific item the game falls back to universal tastes
Ahhh, makes sense!
For example; the Rainbow Shell is a universal like--if I set it to be a hate, that changes it to hate. If not, it stays a universal.
yes :D
Got you
Makes sense
In that case, I'll just go through the list and map all the items that should be noted, and let the rest be dictated by universal laws in stardew
incrementing a Furniture by placing more of it in the same spot is a neat idea, and I don't think it'd be too hard to do with a bit of C#. I was thinking of making a FF API to allow modders to attach custom C# code to a Furniture action (on right click), which would make piling-up stuff possible.
Actually, I want to do that more than working on the FF update.
Goddammit, it's going to be hard to focus on my next class with so many ideas in my head
I am sorry for inspiring a new idea? XD
I'm just gonna add this to the FF 3.1 changelogs as "work in progress"
For the record, 3.0 is still work in progress
Can somebody elaborate on this as well? What is the point of this function?
so you can set a character to hate all fruits instead of doing it for every fruit item in the game
Got it
This is also applicable for love/like/neutral, etc
Correct?
yes, and any category, I was just using an example
It can also be used for other things, like cooking recipes. For example, you can cook an omelet using any egg (chicken egg, duck egg etc) because the recipe data uses the egg category (-5) that all those egg items are part of, rather than specific item IDs. Also useful for making sure a custom item is affected by profession bonuses
Cant u do that just by letting people use tile actions
that's map shennanigans, I'm not touching that
Although, is it already a feature in calcifer 
Ik better crafting has the bigcraftable can tiledata feature
That brings me over to another question. If I were to.. let's say.. put AllOres in like (-) however Emerald is in hate, what happens there?
Does it cause an error, glitch or just make an exception?
@lucid iron when I make an API, people will be able to write custom functions, so they'll be able to use tile actions all they want
how would you do the stacking thing with tile actions?
well it does pass the tile point, so you can get the furniture item placed on that point 
(and SpaceCore)
That should work, since you'd be specifying that particular item (the emerald) as being different from the more generalized category. I haven't tried it myself though, so I can't be 100% sure
Can you be certain it won't cause an error, however?
no
the game has priority checks for gift taste
with a code that is a bit complex but is able to do stuff like "this generic category is liked, but this item is loved"
and other variations
So that means this example is doable?
yes
it should yes
I mean, that's pretty standard for me while mods are loading, once mod loading is done the actual game window pops up
maybe smapi needs time to wake up
smapi dail up sounds
is it going to tell me I've got mail once its done dialling in?
it works, thank you so much you absolute legend
actually the program will stop responding and the screen will white out before closing because it overused the memory
I see
I get nothing but my SMAPI window for 5 minutes when I start my playthrough setup.
I use the time to look at what mods need updating and then decide I'm not going to update them 
hmmm... so I have this as my condition to unlock the building that sells the post-Perfection stuff, but once Perfection was unlocked (via the debug command), the vault still did not show up in Robin's build menu, even though my other stuff, like my custom greenhouses that require Pantry unlock, did. Farm_Eternal is the right command to use for Perfection, right?
the debug perfection command doesnt send that mail flag, you might need to go actually view the perfection cutscene at the summit
ok. that boulder that blocks the summit clears after a night's sleep, right?
¯_(ツ)_/¯
ive never gotten perfection!
still dunno what the cutscene even is. ill get there eventually
pfft, day 1 perfection is easy! (with the help of console commands XD)
yep, looks like a night's sleep unlocks the summit
and you do not seem to need to see the cutscene, either, as there is a message that pops up at the bottom of your screen that seems to set that mail flag the next morning after sleep. nice!
my vault is where it is supposed to be, and all is well with my world :D
(now to work on a bigger shed that can hold exactly 1000 machines in a manner where all items can be reached and filled/emptied without needing tools to do so)
hiii, first time player like literally never owned a steam acc, but here we are .. can anyone help with modding please, i'm lost and i don't wanna crash the game and stuff 😦
Making mods or adding them to the game?
above question, but also is there any particular reason you need to mod the game? otherwise I recommend you start with vanilla
yes, npc mapping & i've seen different videos.
and i never understood what was vanilla
vanilla means no mods
ohhh, i thought it was like just light mods
but i've played some hours, not as long, but i'm able to farm properly now and i guess guides help a lot.
not a fishing gal, but trying.
so yea
Do you guys know a tool I can use to make portraits and spritesheets on mobile
nope, vanilla is the original, plain, unaltered game. just like vanilla flavor is plain, unaltered ice cream
I like Pixel Studio, and I know it has a mobile version, but I can't remember if the mobile version is paid or not. it's free on Steam, though
yep yep, i figured going right after mods starting, but i've been on the game and i guess it just hit me, i do need the map and ive read different stuff.
i've downloded smapi, but i don't wanna start without proper guidance.
well, this channel is for help with making mods. I think that you want the Modded Farmers channel, as they've got a fancy command for getting started with some popular mods :D
I think it's !gettingstarted or something
but
vanilla isn't unaltered
it has vanilla in it
unaltered would be if you didn't put vanilla in it
it's not a starting point in ice-cream like you don't put the strawberry in after the vanilla you put it in instead
yes, but the people who originally came up with the term 'vanilla' to refer to games didn't know that, and I was trying to give a bit of background as to where the term vanilla came from
right but
in terms of ice cream
that would be confusing
if you knew how ice cream worked
you might then think that vanilla is slightly altered like they originally thought
when it's just not that in games
ice cream or flavours in general might be the root of it but they are different so it doesn't really clear it up
look, if people said they wanted to play the Sweet Cream version, then it would be correct, but people seem to think that vanilla is the 'original OG flavor of ice cream', hence the origin of the term
you can blame WoW players for that, which should really tell you a lot of how that term originated. we.... we were not the sharpest bulbs in the box or the brightest tools in the shed
being broken doesn't count XD
anyway moving on from ice cream etymology
trying to develop my content patcher skills
I've made a fish (forgot to make it edible but will do that at first opportunity)
what should be my next challenge
a crop?
crops aren't bad! a crop mod was my first mod ever
they aren't hard to do with 1.6 data, maybe even easier than fishes
(im not very good)
perfect
I'll probably make like a green potato
then make a crafting recipe for green chips with oil and green potato
and pair that with my green fish and make green fish and chips as a cooking recipe
that covers quite a few bases
(i made a green fish and now i need to do something with cooking and i don't wanna make another fish)
i think once you've made a fish, an object, and two different recipes, a good next step would be real-time raytracing
hmmmmmmm
@sarcasmdetector
isn't gonna help me with this one
alright well that sounds complicated
so im going to not do that
and instead I'll make a node in the mines or something
can't be that hard surely
this is exciting
you could always jump straight into the pits and make a dungeon with radiant maps like Skull Cavern and monsters that get tougher the deeper down you go
"i started going on hike the week end, what is a nice next goal? 5 hours hike with a picnic in the middle?"
"what about climbing the everest next instead?"
that sounds like a lot of art and a lot of mechanics I haven't looked at the documentation for
this is very serious scope creep 😄
yes, a node in the mine sounds reasonable and doable if you use Item Extension
alright guys I made a fish therefore it's time to make stardew valley expanded expanded
it can drop custom stuff, or vanilla stuff if you want to keep it simple
I'll probably make a custom ore then make a bar for it so I can make a machine interaction
then do it step by step, but it's doable yes
(and you can do the steps in different order, first the node then the item ore then the item bar then the machine, or first the item then the machine then the node)
true
realistically I'll make the node to make sure it exists then make the item to make sure it drops fine then make the bar and try to make the furnace interaction
hey, that's why I foreworded it with 'if you want to jump into the pits' XD
*to cover your basses
Does anyone know how to setup pathing for custom location?
For the NPC pathfinder all you need to do is ensure you haven't excluded the lcoation from pathfinding. Or do you mean adding warps?
My npc just walks into the void on custom maps
Have you got your warps set up correctly?
Yes I’m so confused
i finally made my first mod! and... idk what the skirt is doing
ive been trying so hard to get it to work but i cant understand where im going wrong LOL
Have you checked that your map has tiles on the Buildings layer all around the edges so NPCs and players can't walk into the void normally?
They shouldn't have any issues using doors if the place they need to go is behind it.
He walks straight over the building layer
Are you sure it's definitely the Buildings layer, not Buildings+1, Buildings-1, or any other Buildings layers?
No I only have one building layer
I re check and it’s all in building I’m so confused why he’s walking into the void
This is the schedule or the beginning where I put the custom location
it's incredibly hard to read text in photos
I’ll try screen shot
copy paste
{
"fall": "610 Custom_House 7 6 2/730 Town 63 14 2 Sitting/930 Town 41 72 2 Drinking/1030 Custom_Village 11 14 0/1130 Custom_House 10 14 2 Sitting "Strings\schedules\micheal:spring.001"/1230 Custom_House 7 6 2",
"spring": "610 Custom_House 7 6 2/700 Town 26 29 2 Reading/930 Town 26 29 2/1030 Custom_Village 11 14 0/1130 Custom_House 7 6 2",
"summer": "610 Custom_House 7 6 2/700 Town 63 14 2 Sitting/930 Town 41 72 2 Drinking/1030 Custom_Village 11 14 0/1130 Custom_House 7 6 2",
"winter": "610 Custom_House 7 6 2/730 Town 63 14 2 Sitting/930 Town 41 72 2 Drinking/1030 Custom_Village 11 14 0/1130 Custom_House 10 14 2 Sitting "Strings\schedules\micheal:spring.001"/1230 Custom_House 7 6 2"
}
i just dont know why hes walking past the building layer
content patcher question:
does anyone know a nice way to apply a map change that is only present for when an event is happening? or would it make more sense to work with temporary actors?
Tbh I'd just make a temp map, load it, and call it with data/events/temp
- changeToTemporary command
yeah I'm a bit worried that if I do it that way, it wont be really compatible with recolor/retexture mods
it's all the same as long as you've used the recolors/retextures, unless by map edit you mean it's all furniture
If it's all furniture, uh, you'd have to finagle one of the fancier commands with depth in their requirements
I see 
I just want to add a custon background layer ontop of the current one as a background+1
I will try to mess around with When conditions a bit more to apply a overlay change
and if that still does not work I'll cry and try making it work in a different way /lh 
if you have an 'update' onlocationchanged for that when condition, you can set it to a mailflag and map changes inside of an event actually counts
what do you mean by mailflag?
"LogName": "Lance's Scar",
"Action": "EditImage",
"PatchMode": "Overlay",
"Update": "OnLocationChange",
"When": {
"HasFlag": "{{ModId}}_Scarred",
"Portrait": "Vanilla Compliant"
},
"Target": "Portraits/Lance_Spring",
"FromFile": "assets/{{TargetPathOnly}}/Lance/Vanilla Compliant/LanceScar.png"
},```
an ex from one of my crazier things
so inside of the heart event i actually do: `addmailreceived {{ModId}}_Scarred`, force a `changeLocation` inside of the event, and then if i need to get rid of it in the event i just do `addmailreceived {{ModId}}_Scarred false` and `changeLocation` again
https://stardewvalleywiki.com/Modding:Mail_data#Mail_flags
Mail flags are generally used as an easier means to track if something has happened, can be accompanied with actual mail or just a flag raised in the players data
Okay, I think this helps me for even more stuff then the specific issue I just had 
that is really cool thanks guys! :D
4am me can't remember how to describe laymen terms 
lmao, you're fine! I got it somehow :D
are you sure? at least wikipedia says monogame uses directX on microsoft platforms
MonoGame has a DirectX version, but Stardew just uses the cross-platform OpenGL version on everything.
ah I see
Hey, I've gently poked at that as a suggestion for a bit! It is better on Windows!
God, I miss how easy discriminated unions are in Rust
I'm not going to elaborate
Also implementing your trait on someone else's type
Does any one know why a custom npc keeps walking into void and through buildings layer
have you considered turning the custom npc off and on again?
Trust me I tried lol
That's usually either a schedule or a map problem. Are they on a custom map?
Yeah they are on a custom map
Double check your warps in and out. If you want to verify it's a map problem, have them wander the Bus stop or another vanilla location and see if they move properly.
It could also be a schedule problem where your destination isn't valid or they don't have a valid way to get there (e.g., a bad warp or a blocked path)
My warps work perfectly and I just had him on a vanilla path and it worked 😭 I’m using the bus stop as a path way connecting the maps
What kind of warps are you using on the custom map?
Warps through tiled and I have a warp in my content
A TouchAction Warp?
Yes
Those don't work for NPC's
Try adding a Warp through the Map Properties
It’s only when you click on the house from the outside I’m trying to make the the Npc leave the house but whenever he leaves he walks sideways into the void
I already have a warp through map properties
There are several different kinds of warps available, a TouchAction Warp is the kind of that happens when you step onto a tile
An Action Warp is the kind that happens when you right click on something on the Buildings layer
There's the Map Property Warp that functions like a TouchAction Warp but works for both players and NPC's
Do you not have something on your Building layer on the map blocking passage?
There's also Action LockedDoorWarp that's usually used for NPC houses
For whatever map he is walking through void on
Remind me in 3 days to look at the dotnet string rehash code
I'll have you know atravita I am SO MUCH MORE than just a reminder bot. but fine. (#6300706) (3d | <t:1729174188>)
Ughhh I’ve tried everything I’ve checked like ten times if anything was blocking it
It might be bugged 😦
can you send a screenshot of your custom map with just the building layer/layers turned on (visible)?
if not that's also totally fine, I get that you checked multiple times by now 
The base Buildings layer is the only one that has collision, but if you have Passable tile data on a Back layer tile that will also have collision
You said I can always make UI3 as long as it's all new code, but if I make the mod without looking at the code from UI2 and there are some things that just happen to be the same use to how they need to be implemented, I am fine right? I don't really know much about the legal part of making what would essentially be a successor mod.
We probably should have a note somewhere on the mapmaking page that layers with numbers do not retain the normal properties of their base layers and only impact the drawing z-index
I agree 
Like this?
I think the last line probably isn't quite clear enough
The explanation about the drawing layers is fine, but people still expect Buildings2 to have collision, for instance, because it isn't mentioned
I think it should be worded something akin to "Tile properties must be set on the default layer to function. Tiles on layers other than the default layer do no have collision."
yeah, I guess that would require more wording
And Tile properties implies TileData objects more than anything else to me, not necessarily collision?
Well, it's true that they only work on the base layer
tile properties require numberless layer-names to function 
The base layer must be used for tile properties and collision.
Mk, added
im just so confused idk if theres something wrong with my map or schedule
Can you use the eye symbol to turn off everything but the Buildings layer?
^this :3
It'll look a little funky but it's easier to check for NPC/player barriers that way
new update for Goat Mod is out << 🐐 https://www.nexusmods.com/stardewvalley/mods/27321
Not expert either but code licenses typically only apply to the source code plus right to distribute. Can't copyright mechanics like "show npcs on world map", that is territory of patent
we also have last 24 h of our poll as to which language versions are needed for our mod to be enjoyed freely by all players https://ko-fi.com/polls/Which-language-translations-are-needed-for-our-mod-A0A513DV9D if you want a translation in your preferred language, vote or pm us ^^
okay, so unless the warp is somehow taking them behind the house or within the fenced area, they should have collision blocking them from walking off map.
Could put Building tiles on any edges where you don't have warps to be safe, but which way is he walking into void again?
hes walking towards the right
Also, I am wondering, since looping NPC paths is an issue do you have a warp on the right behind the fence that goes to the same map as where you are going from the bottom?
I am curious as to if the pathing is detecting that there are two different warps to the destination, so the NPC is trying to go there to use that warp instead.
there is no warp for the fenced in area
Not sure if looping paths being fine is a vanilla thing or because of SpaceCore
i just dont understand whats wrong with it
I know they cause longer loading times while it calculates the shorter path for every NPC
Have you shared the schedule already?
"spring": "610 Custom_House 5 6 2/630 Custom_House 7 22 2/650 Custom_Village 4 23 2/710 BusStop 36 5 2/730 BusStop 20 18 2/800 Town 26 30 2 Reading/930 Town 26 30 2/1000 Town 41 72 2 Drinking/1200 Town 16 96 2/1400 BusStop 21 19 0/1420 BusStop 35 5 0/1430 BusStop 35 0 0/1450 Custom_Village 4 9 0/1500 Custom_House 7 20 0/1520 Custom_House 9 13 2 Sitting "Strings\schedules\micheal:spring.002"/1650 Custom_House 7 14 0/1700 Custom_House 7 9 0/1710 Custom_House 7 6 2"
}
this is the only one i added the custom location too
Okay, and Custom_House is the interior while Custom_Village is the outdoors from your screenshot?
yes
Have you tried simplifying the schedule or stripping out different parts?
ive been up all night doing it it seems to only get better when i add more like shorten the distant between paths he walks off the map at 650 Custom_Village 4 23 2 to the right im so confused
i want him to move down
Well, if you want to zip your project and send it I could do some testing. Not really sure what else to suggest at this point
Vanilla can handle loops just not well
Ngl it's probably a warps issue
oki its two sepreate files though
Tbh I would be very surprised if you do things in a way that is the exact same as uii2
Just. Saying.
ive checked the warps i can screen shot them all
Two separate mods? I just meant zip up the whole mod
And just to verify, there's nothing in the SMAPI log when this is happening?
yeah two sepreate mods one for the house one for the npc i didnt know how to combine them no it show no error message
Second question: Does the NPC mod have the house as a dependency in its manifest (even as a false one)
To rule out mod load ordering shenanigans.
You can zip them to the same directory. Combining them is as simple as making them all part of the same content or having that content include the appropriate files. Not really an issue at the moment though
roku can probably also check that when you give them the files though, so
Yeah, though load order should generally have some errors
I'm thinking some combo of either warps or schedule, since those would just fail silently
(hoping not schedule lol)
thanks for helping me it means alot
Does anyone know a command for completing the players entire shipped items catalogue? I cant find it just scrolling through the debug commands page, theres a lot
do i just use the perfection command?
Can't be sure there's no Console Command for it, but that's the only base debug command I can see that touches shipped stuff
I'll have to be careful not to let this save affect my steam achievements then haha

I've already given up after the time I accidentally added the Joja achievement to my Steam achievements while testing a mod xD
Depends on how the game implements achievement tracking 
(curse you, my need to see how the Joja victory scene played out with my edits!)
In 1.6 they changed it so you get the steam achievement if you even open a save which has already earned the achievement
correct me if I'm wrong but I think you can remove steam achievements with the console?
Really?
Just gotta put this project on hold until you get all the steam achievements /j
I removed achievements from an entire game once because I didn't realise it was spamming my steam achievements
See you guys in uhhhhhhhhh 40 years
Just don't launch by steam
sorry, no mod updates till then
I been afraid to cus beta auto updates when I do that
fectors challenge when
Unfortunate, but understandable 
it counts it if steam is even open when you launch the game, and it counts it if you do it with steam closed but later open the save with steam open
anyways, not a big deal, just gotta juggle a backup save
I set debug perfection and it didnt even fill in the shipping collection 😅
you can reset individual achievements or all achievements
with the client console
Cool!
you can remove it with the above if you were so inclined
Does CP convert NPC disposition to Data/Characters?
Migrations won't happen in some of the newer formats, yeah?
Yeah, had to change that back lol, was wondering why it was set that way
ahhh wait i can just check what items are needed for the shipping collection using lookup anything. Duh!
Probably just confusion because of how we were talking about Data/Locations a few days ago and how you needed newer formats for some features, but we didn't mention that the CP migration feature and Custom Locations was for older formats.
Pretty sure that got overlooked
Yeah I mean, there's a lot in here I would do differently, just trying to see what's the minimal required to get it to work, if that's possible lol
I was checking your level lmao
:P you can also do the bot commands in #governors-mansion if you want to be more sneaky about it /lh
Thank you :p
Okay, primary suspect right now is that your schedule points are ending on warps, which causes them to warp but messes with their pathfinding from there
Generally speaking, you shouldn't micromanage your NPC's schedule
Oh okay all this stuff is confusing to me thanks I’m kinda a dingius 😭
You wanna pick a time for them to start going to a place and then make sure they have enough time to get there, but your schedule points should just be primarily major stops
Alrighty sounds good
I’ll try that next time I just thought more warps equal better but that was not the case lol
Nah, usually less warps is better. 🙂
The game will try to connect them, so it's better not to confuse it too much.
If you have like a very specific vision for how your NPC should reach a place, by all means add more schedule points, just follow them around and make sure the timings are gonna work
And also make sure to not end any schedule points on a warp
Alrighty will do
Schedules are kind of annoying to test since you can't just reload the patch while in a save, but you can go back to title, reload your patch and then reload your save
So you can save a little bit of time that way over fully quitting
Yeah, definitely don't reload a schedule patch while in game, this is how I ended up with my NPC accidentally murdering an entire forest by pathing into the trees. xD
Lumberjack mode activated
Obligatory: the NPC creator isn't updated and you should be using the new Data/Characters system rather than relying on CP to migrate your dispositions. It's technically one of those "it's fine until it isn't anymore" situations though
I'm surprised it still works tbh
gonna ask this now as I WILL forget that it's a thing by the time I need it - how can I use multiple JSON files for one content patcher mod? (e.g. MNF has more json files in its Data folder)
Yeah you’re right I just thought it would be easier and when I unpacked my game I couldn’t find my npc dispositions
(the sound of an NPC colliding with a tree enough times in a row to chop it down is HORRIFYING by the way, do not recommend)
THATS what that does ok tyvm
!npc It's under Data/Characters now
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
Which funnily enough, Tia's guide also has some simple examples of using Include
Hi! I'm very confused on something. So I'm following the process of NPC building on this page: https://stardewmodding.wiki.gg/wiki/Npc_template. When I got to the "ScheduleDialogue.json" section, I got confused by the tokens being used. Specficially, I'm stuck on this:
"{{Edelweiss}}:Spring_Sleepy.1": "{{i18n:EdelweissSeung:Spring_Sleepy.1_0}}",
I'm looking at an npc mod's file and their format of things was:
"spring_17.100": "<text>",
"JojaClosedA":"<text>",
"JojaClosedB":"<text>",
"JojaClosedC":"<text>"
I thought the format for these was supposed to be:
"<season>.000": "<text>",
"<Map>.000: "<text>",
Also where did JojaClosedA/B/C come from? Is that from a dependency mod?
so
the format of dialogue accept keys of all sort as long as it matches with the corresponding schedule stuff
I think I ripped schedule dialogue straight from strings/schedule because the format hated everything I did. I'm on mobile so I can't check the unpack but it needs specific formatting
the author here just wanted them to be in format modid:mykey
the .number isn't mandatory, it's just what CA liked to have because it made sense for those
In terms of CSS, it's basically just adding your own class name and rolling with it ?
i can't really draw comparison with CSS
Don't worry, I ate an edible so most of what I'm saying and thinking is absolute nonsense lol
i think the .number might have been code line numbers 
WAIT WHAT
esp for stringsfromcs
chu, throwing gasoline on the fire:
Now that you mention it, it probably was from their CS code
(aren't edible supposed to be, like, edible, and not like, hallucinating mushrooms?)
but like lumina said it's not important
I always assumed it was indicative of CA's intention to have multiple choices
u can use roman numerals if you want
I'm not hallucinating 🤣 my brain is just scrambled lol
anyway, if you want stuff in format mymod_myscheduleentry it should work if the corresponding key is used in the right place too
So does that mean in this:
"{{Edelweiss}}:Spring_Sleepy.1": "{{i18n:EdelweissSeung:Spring_Sleepy.1_0}}"
I don't need the semicolon for this?
"{{Edelweiss}}Spring_Sleepy.1"
or write it like {{Edelweiss}}_Spring_Sleepy.1"
Yeah don't use the same dynamic token I use for the layout
It's a dynamic token because the real internal name is {{ModId}}_Edelweiss
Leaving it as just {{Edelweiss}} without doing anything to it will just get smapi to scream at you, which is purposefully why I did it 
"i like to see the world burn (but with a good logging)"
You only live to torture yourself 🤣
Highkey I love that LogName exists because when I was doing debugging on my last attempt, that was the ONLY way for me to target where the coding issues were
No it's purposeful for a plug and play, if someone gets a red smapi error I know exactly where, why and how
yo
having some issues with textures
how can i use a second texture
do i need to make a second load action or what
because im seeing assets which are like 78265982689 images in one png but idk how it knows which one to point to
Depends on where you're doing it, but if there's a SpriteIndex field you can use that to choose which sprite to use
what is that
The size of each index depends on where you're using it, but Objects are 16x16 so your first index would be the top left at 0, the next one would be 16 pixels over at 1, when you hit the end of a row it drops down and goes along the next row
Where are you trying to use this specifically?
idk what you mean by where
im doing everything in content.json and referencing everything in assets
Like what are you making, a new object?
yes
And your loaded texture has multiple sprites on it?
Then you can start there, increase the size of your sheet and add new sprites to it
If you increase downwards, just know that you should avoid increasing to the right after that
So I would start by increasing to the right for a bit and then start adding additional rows downwards if necessary
ok so make it how many long
Each sprite is 16x16 so if you can show a grid that'll help you keep your items separated
game automatically detects the "end" of the png, so you can make it one really long strip if you so pleased
It's up to you really, whatever you're comfortable working with
ok fair enough#
any recommended site for turning sprites into a spritesheet or should i continue to use piskel
its really slow at importing if i select spritesheet for some reason
It's important to know what you're working on, such as if you're adding new objects or shirts or pants or whatever, because each thing has different rules about how you choose where in a texture you're using or what size that texture has to be
iirc shirts is like..... 8x16 or something right? 
I dunno, I use dedicated programs rather than websites
Shirts has to be the full width of the original shirt png
But you don't have to use the whole area, just have to match the bounds
Because it has very hardcoded specific logic about how it chooses where the different sides are and where the dye colors are
Some things like fruit trees are a specific width and use only a row index to decide what your tree texture is
(i need to backread stardewui to see if chu figured out the ISalable because maybe i might take a crack at the #demonopolize-marnie
tbh base wild tree texture is the only reason why i don't have more mushrooms in my mod 
is SpriteIndex 1 or 0 index
starts at 0
Trying to think if there are any that start at 1
so the first item will be Index 0?
Yeah
i ask because the cornucopia more crops doesnt seem to reference any index 0
Oh, because 0 is default
it seems to be because cornucopia's object index 0 is some unused thing
I was like looking and thinking "why is that" and I do the same shit lmao
the spritesheet doesnt seem to be empty at the top left
