#making-mods-general

1 messages · Page 281 of 1

still frost
#

oh so where does the name of the item im editing go? do i need that?

uncut viper
#

you dont

lucid iron
#

you don't need it, Data/Objects step is for confirming Texture

still frost
#

ooh that explains it

uncut viper
#

the name of the item doesnt matter, because you are just editing the texture

#

SVE/Cornucopia/whatever mod you're editing will then use that texture in their edits still, with your edits applied

#

they need to care about the item name and sprite index and such

#

you just need to worry about replacving the right square of pixels in the spritesheet texture

still frost
#

wait so im confused again. the sprites for the seeds arent in a sheet in the sve mod. theyre single png files for each items sprite.

lucid iron
#

hrm i cant start local coop

uncut viper
#

from the games perspective, a single png and a whole spritesheet are no different

#

the former is just a very tiny spritesheet

brittle ledge
#

random question: how hardcoded are the random map pools for skull cavern and volcano?

uncut viper
#

it does make it more annoying for you though

#

bc you'll need to find the original texture paths for each item

lucid iron
uncut viper
#

so each item in their Data/Objects patches will have their "Texture" field set to something else

calm nebula
#

Button storage mod when

uncut viper
#

and you will need as many different EditImage patches as there are items you want to edit

calm nebula
uncut viper
#

however it does make it easier to figure out what pixels you're replacing, bc you wont need to worry about it at all and can just do Target and FromFile and not worry about FromArea or ToArea

lucid iron
uncut viper
still frost
uncut viper
#

no, swap the Tartget and FromFile

#

Target is what you are editing. its the target of your patch

still frost
#

frick lol

#

gotcha

uncut viper
#

FromFile would then be like "assets/items/mycucumber.png" or w/e

lucid iron
#

did you read the edit image documentation, it explains much of this

brittle ledge
#

thanku both, I figured it was but didn't know for sure SDVpufferheart

tiny zealot
lucid iron
#

arent cucmbers new

still frost
sly perch
#

how do you go about disabling individual objects in an asset pack (like Peachy Objects)?

calm nebula
crude plank
#

they are but if all the others were converted they probably just followed what they already had

uncut viper
#

well we are just reiterating the documentation

devout otter
#

@ivory plume, There's a potential Content Patcher bug related to Robin's community upgrade that give shortcuts all over the maps?

Reproduction Steps:

  1. In content.json, use an Includeaction that has a fulfilled When field pointing to another .json file.
  2. The included .json file contains an EditMap action targeting Maps/Forest.

Issue:
After applying the edit to the Forest map, the special warp from the Forest to the Beach stops working.

Addendum:
If the EditMap targets Maps/Beach instead, it seems to break the warp from the Beach to the Forest as well.

uncut viper
#

this is just the chest?

hard fern
lucid iron
#

arent volcano dungeons using the funny layout

devout otter
lucid iron
#

i think that might actually be possible to randmize somewhat on a day to day basis

sly perch
devout otter
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Pro, with 3 C# mods and 1 content packs.

calm nebula
#

Lol

lucid iron
#

i wonder if this falls under vanilla bug or CP bug tbh

calm nebula
#

It still isn't hard to, you just make maps in a different day

still frost
calm nebula
#

Somewhere i had a project for it

#

Anyways

#

I'm gonna go back at looking at tomato cake

uncut viper
still frost
#

i think i understand what needs to happen then, thanks all o7

ornate locust
#

alright, I've got a bit of a pickle. Someone testing for me has reported that my NPC is throwing an error. https://smapi.io/log/ef3d6405d8d84e5d87a54e9d75680012 It's got several problems, and I'm fixing the ones related to my mod and not Love of Cooking exploding, but the one that's puzzling me is how it says there's already a rain2 schedule. They mentioned it was during a modded weather from either Weather Wonders or Project Danger Weather.
https://smapi.io/json/none/2176e6d65a9a4ee5a5c0e04719fd9863
This link is the schedules JSON. It's telling me about an error that I am also fixing and seems unrelated.

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 262 C# mods and 629 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

calm nebula
#

I got about fifteen minutes into making new maps for it and gave up

#

One day I'll nerdnsipe kailey into it

uncut viper
#

sounds like it was hard to do!

ornate locust
#

I'm assuming it doesn't want me to do two "has flags" in the same statement, though I think that's the only way to make it require both flags, isn't it?

crude plank
uncut viper
#

it was difficult enough that i didnt even bother keeping even a half assed attempt in my mirror mode mod

calm nebula
ornate locust
calm nebula
#

I also tried to make one of the png maps but I lack game design skills

calm nebula
# ornate locust alright, I've got a bit of a pickle. Someone testing for me has reported that my...

NPC 'MV.Municipal_SheriffBill' failed to parse master schedule 'rain2' with raw data '0 MunicipalFloor2 22 14 2/610 MunicipalFloor2 22 14 2 MV.Municipal_bill_readside/1100 MunicipalFloor1 22 7 1 MV.Municipal_bill_working/1100 Saloon 42 23 2 MV.Municipal_bill_saloon_lunch/1330 Town 80 58 2 MV.Municipal_bill_fish "Strings\schedules\MV.Municipal_SheriffBill:MV.Municipal_SheriffBillStakeout"/1600 MunicipalFloor2 24 7 0/1700 MunicipalFloor2 22 14 2 MV.Municipal_bill_readside/2200 MunicipalFloor2 6 7 MV.Municipal_bill_sleep "Strings\schedules\MV.Municipal_SheriffBill:MV.Municipal_SheriffBillSleeping"'.
ArgumentException: An item with the same key has already been added. Key: 1100
at System.Collections.Generic.Dictionary2.TryInsert(TKey key, TValue value, InsertionBehavior behavior) at StardewValley.NPC.parseMasterScheduleImpl(String scheduleKey, String rawData, List1 visited) in D:\GitlabRunner\

uncut viper
#

oh, that schedule bug

calm nebula
#

It's not rain2 that is a duplicate

#

You just have 11am teice

ornate locust
#

AHA

#

THANK YOU

calm nebula
#

You literally just have 11 am twice

ornate locust
#

I was reading that wrong

calm nebula
#

No worries!

uncut viper
#

at least it wasnt caused by a this time

tiny zealot
#

a is so helpful but you do have to be aware of that, yeah

crude plank
#

Schedules scare me

calm nebula
#

I know, right! I'm so much more of a task based person than I am a schedule based person

lucid iron
#

im a event based person

#

need someone to invoke me before i do anything

calm nebula
#

Anyways

#

I saw another tomato cake on YouTube

#

Justice for Demetrius smh

hard fern
#

SDVpufferflat he can make all the tomato cakes he wants

static garden
#

thank you, I'll try it SDVpufferwoke

ivory plume
#

(Hmm, actually vanilla map patches should already be reapplied.)

devout otter
uncut viper
#

(i was gonna say i was messing with map patches/makemapmodifications specifically a lot recently and they always reloaded when i invalidated things afaik)

devout otter
#

And it's only if the Include has a fulfilled When field.

ivory plume
#

I'll need to look into it; any chance you could submit a bug report on the Github repo with that mod, a sample save with the shortcuts unlocked, and the repro steps?

scarlet ether
#

Hiya, everyone. Is the 24 color mini palette included in Cursors2 the one the in game color picker uses? For coloring chests and whatnot.

devout otter
ivory plume
lucid iron
#

fyi pathos earlier i gave dolphin a test mod that does this in a prefix on Forest.showCommunityUpgradeShortcuts and it fixed it

private static void Forest_showCommunityUpgradeShortcuts_Prefix(ref bool ___hasShownCCUpgrade)
{
    ModEntry.Log($"showCommunityUpgradeShortcuts: {___hasShownCCUpgrade}, will set this to false", LogLevel.Info);
    ___hasShownCCUpgrade = false;
}
#

all it does is force Forest.showCommunityUpgradeShortcuts to always do stuff

untold oriole
#

I'm not asking for anything, just making a suggestion.

ivory plume
uncut viper
lucid iron
#

yea i thought so too, so it's confusing why it worked

untold oriole
lucid iron
#

dolphin is not nyapu

untold oriole
hard fern
#

on nexus

tiny zealot
#

nyapu is an artist/modder's name and is someone else, yes

untold oriole
ivory plume
#

(Not a fish and not Nyapu. What is Dolphin? SDVpufferpensive)

hard fern
#

er, wrong channel?

dreamy owl
#

It's past my bedtime

calm nebula
devout otter
calm nebula
devout otter
#

Yey, thank you for your attention!

devout otter
ember gale
#

ive decised in my head that imma re-do the sebastian portrait i made even though it would just take even longer to finish all of them SDVpufferwaaah

#

the things ill do just to please my mind

normal root
#

I know this might be impossible/really hard to do, but is there a way to define how objects move around when a building is upgraded? For example, if a building adds a room to the left and some space in the middle, can you define something that moves all of the items in the origianl room over to the new position at the right?

rigid oriole
#

Certainly in c#

normal root
#

The upgrade is made inside of Content Patcher by adding it to Data\Buildings, how would i detect in c# when the building was updated and move everything?

rigid oriole
#

!decompile

ocean sailBOT
uncut viper
#

doesnt BuildingData have an IndoorItemMoves field or something

rigid oriole
#

Does it rly

#

[[Modding:Building_Data]]

#

It's not my day

uncut viper
#

it does, it lets you select a rectangle of space to move from and to

#

you can define multiple moves

rigid oriole
#

Oh then listen to button lol

normal root
#

And can I just define the ID as anything?

uncut viper
#

the Id is the same as an Id in any other data asset, in that its for you to define as long as its unique within the list

normal root
#

Ok I see thank you a lot! Thats a lot easier than what I was thinking

still frost
#

is a content pack(as opposed to a smapi mod) just a content patcher mod?

uncut viper
#

no, not necessarily

vernal crest
#

Not necessarily CP. Could be JA, FF, AT, etc

uncut viper
#

all mods are SMAPI mods, but not all mods are C# mods

#

Content Patcher is a C# mod that reads your json files to do things for you, which is what makes your mod a content pack for content patcher

still frost
#

okay, so how do i know which format to use in my manifest.json?

uncut viper
#

but like Aba says there are other frameworks that will also read jsons

#

the manifest.json is 99% the same for every mod

#

but the getting started guide on the wiki should also link to the format

tiny zealot
#

a content pack is a mod that is consumed by another mod, instead of directly interfacing with SMAPI.
most content packs are for content patcher, i expect

uncut viper
#

the only difference between a C# mod and a Content Pack manifest wise is the ContentPackFor line vs the EntryDLL line, with C# mods using the latter

vernal crest
#

If you're referring to the "content pack for" field, the mod that you put in that field is the mod that you wrote the content pack for.

still frost
#

oh okay so the mod im making rn is a replacer for the textures of seeds/saplings from expanded, am i making a smapi mod or a content pack?

uncut viper
#

the premise of the question is wrong, bc you can do that with either kind of mod. what you should be asking is what framework you are using to make the mod, if any

#

are you making a Content Patcher mod? if so, you're making a content pack mod with Content Patcher, and Content Patcher is the ContentPackFor

#

are you writing C# code and compiling things into dlls? then you're making a C# mod and you use the EntryDLL format

elfin grove
#

Does anyone know of any way to teleport an NPC directly to the location indicated (by schedule or otherwise) with the content patcher?

still frost
#

i think its a content patcher mod? im 99% sure im not using c#?

uncut viper
#

presumably you've been following some sort of guide or documentation somewhere?

still frost
#

yee, definitely content patcher, thats the github page im on

vernal crest
uncut viper
#

then you're making a content pack for content patcher

still frost
#

cool so i can just leave the
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
lines from the wiki example as is then?

uncut viper
#

yes

still frost
#

awesome, where do the dependencies lines go then? i dont see where to put them on the wiki page

uncut viper
#

the dependency line just goes beneath everything else

still frost
#

okay like, using the examples
{
"Name": "Your Project Name",
"Author": "your name",
"Version": "1.0.0",
"Description": "One or two sentences about the mod.",
"UniqueID": "YourName.YourProjectName",
"UpdateKeys": [],
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
}
}
"Dependencies": [
{
"UniqueID": "SMAPI.ConsoleCommands",
"MinimumVersion": "3.8.0" // optional. If specified, older versions won't meet the requirement.
}
]
this?

uncut viper
#

no, beneath the other lines like ContentPackFor and UpdateKeys

#

it must still be inside the overall json object

still frost
#

okay thats what i thought, so before both of the } things at the end?

uncut viper
#

only before one of them

still frost
#

my brain saw the last bracket ] as } o7 my eyes i guess lol

#

so
{
"Name": "Your Project Name",
"Author": "your name",
"Version": "1.0.0",
"Description": "One or two sentences about the mod.",
"UniqueID": "YourName.YourProjectName",
"UpdateKeys": [],
"ContentPackFor": {
"UniqueID": "Pathoschild.ContentPatcher"
"Dependencies": [
{
"UniqueID": "SMAPI.ConsoleCommands",
"MinimumVersion": "3.8.0" // optional. If specified, older versions won't meet the requirement.
}
]
}
}

#

this feels wrong

uncut viper
#

your feeling is correct. do not mess up the braces for ContentPackFor

#
{
    "Name": "Your Project Name",
    "Author": "your name",
    "Version": "1.0.0",
    "Description": "One or two sentences about the mod.",
    "UniqueID": "YourName.YourProjectName",
    "UpdateKeys": [],
    "ContentPackFor": {
        "UniqueID": "Pathoschild.ContentPatcher"
    },
    "Dependencies": [
       {
          "UniqueID": "SMAPI.ConsoleCommands",
          "MinimumVersion": "3.8.0" // optional. If specified, older versions won't meet the requirement.
       }
    ]
}
still frost
#

side note, i forgot how to make that code box

uncut viper
#

!codeblock

ocean sailBOT
#

You can embed code in Discord using a series of three ` :
```
Your code can go here
Even if not a haiku
Just an example
```

For syntax highlighting, add the language code on the same line as the first
``` (with no space, like ```json).
The usual codes are cs (C#) and json.

still frost
#

gotcha ty

#

so youve added the comma added after the last } whatchamacallit for ContentPackFor right?

#

just before the dependencies line

uncut viper
#

yes

still frost
#

okay making sure that was necessary cause i would def have missed that lol

uncut viper
#

its a necessary concept in json in general

still frost
#

yee, its been a bit since ive done any coding and i wasnt exactly good at it last time i was doing it lol

#

which manifest.json do i use for stardew expanded? there are 3

uncut viper
#

for a dependency?

still frost
#

yee

uncut viper
#

either whichever one adds the items you're editing or just do all 3

still frost
#

o7

scarlet ether
#

Anyone familiar with the UI code that can tell me whether the orange border on the skills page is hardcoded, or did I miss something in the cursors page?

uncut viper
#

its likely hardcoded, and also likely something that Theme Manager can replace

#

or perhaps spacecore does away with it since it touches the skills page? unsure.

#

but yeah, theres a handful of annoying hardcoded UI colours in various places. skills page is one of em

scarlet ether
#

Yuck.
TY, Button.

still frost
#

so to double check

{
    "Name": "Muted Expanded Pack",
    "Author": "JaneAndTonicc",
    "Version": "1.0.0",
    "Description": "Item texture replacer for seeds and saplings to match the muted seeds and muted saplings mods.",
    "UniqueID": "JaneAndTonicc.MutedExpandedPack",
    "UpdateKeys": [],
    "ContentPackFor": {
        "UniqueID": "Pathoschild.ContentPatcher"
    },
    "Dependencies": [
       {
          "UniqueID": "FlashShifter.StardewValleyExpandedCP",
          "MinimumVersion": "1.15.8"
       }
    ]
}

this is all correct for my manifest?

uncut viper
#

assuming the uniqueid is correct for SVE's CP component, then yeah

#

if you plan on posting it to nexus eventually, you'll want to remember to add the updatekeys when you get to making your mod page

still frost
#

i dont see an explanation for what to put in the update keys spot, i assume that its basically, i put the number 1 there for the first version and thats probably all ill need to know for this mod?

uncut viper
#

dont worry too much about what semver is just know its why its 3 digits separated by dots. 1.0.0 is the first version, typically

still frost
#

oh i didnt realize updatekeys was different than version, ill give that a look through then

#

ooh so the updatekey is just the numbers after the last / in the link to the nexus page of the mod?

uncut viper
#

correct

still frost
#

great so dont worry about it till im uploading o7 ty

normal root
#

I'm loading in a texture in Content Patcher like this:

 {
    "Action": "Load",
    "Target": "Maps/GreenhouseOverhaul_Greenhouse1",
    "FromFile": "assets\\Greenhouse1.tmx"
}

And then have a building upgrade that uses it like so:
"IndoorMap": "GreenhouseOverhaul_Greenhouse1"
However, for some reason the map doesnt load when the Greenhouse is upgraded, and when I run patch summary the Load item is not applied. How do i fix this?

#

The weird thing is if i close the game and reopen it the map is suddenly loaded

still frost
#

okay ive done my content and manifest jsons, the sprites are all made, i think im done? how do i test it if i use vortex? im not sure how to add a mod to a profile from my computer

normal root
#

Vortex isnt really something good to use but when you compile your mod it should automatically place it in your Mods folder

still frost
#

wym compile my mod?

normal root
#

What IDE are you using, and do you have a .csproj file?

lucid iron
#

jane isn't using C#

uncut viper
#

she isnt making a C# mod

normal root
#

Oh ok

still frost
#

(also im using vortex cause im making a collection for my friend and i to use so its easier for her to download everything)

normal root
#

In that case just copy the folder into your mods folder

still frost
#

awesome ty

still frost
uncut viper
#

(understood!! sorry!)

still frost
#

o7 no harm done, glad you default to they/them, just saying for future reference SDVpufferpat

vernal crest
#

Ohh noooo I got an AVE

uncut viper
#

milestone!

vernal crest
#

If restarting my computer doesn't fix this, I will have officially finished my 1.6.8 playthrough lol

#

1.6.8 lives to see another day

lucid iron
#

If you want you can try that alpha mod manager they got

vernal crest
#

NMA?

lucid iron
#

yea is that stable enough rn?

lucid iron
vernal crest
#

Oh lol I thought you were telling me I could use NMA lol

ivory plume
#

(I just deployed a new version to smapi.io; let me know if you see any issues!

Main changes:

  • Improved JSON parser:
    • You can now hover/click braces to highlight matching pairs.
    • You can now hover and click 'Copy' on the top-right to copy the full code to the clipboard.
    • Updated to a newer syntax highlighting library.
    • Fixed some JSON files breaking the page layout.
  • Third-party libraries are now served from smapi.io instead of external CDNs.
  • Removed support for very old SMAPI logs.)
still frost
vernal crest
#

I wouldn't recommend anyone use NMA yet. Too risky for the average user to install a mod manager that deletes your mods if you do the wrong thing.

uncut viper
#

ooh whats the new syntax highlighting library

ivory plume
#

Migrated from Sunlight (last updated 12 years ago) to the more modern Prism.

uncut viper
#

blue... my nemesis /j

#

is the stripping of comments now intentional

#

... or did it always do that. am i misremembering

ivory plume
#

(The JSON parser has always done that; the parsing logic hasn't changed.)

uncut viper
#

i have a good brain i swear

lucid iron
#

I remember it was stripping // but not /* before

#

i never use /* so it is moot

uncut viper
#

well it strips both now then if it didnt before

#

SDVpufferthinkblob it strips trailing commas now too

ivory plume
#

The JSON parser formats the JSON using Newtonsoft.Json; that part hasn't changed in quite a while.

uncut viper
#

i just checked an old json that was posted yesterday and it has trailing commas, but the one i just uploaded doesnt

ivory plume
#

Can you link to the old JSON?

ivory plume
#

I reuploaded the same JSON, and it seems to match exactly (old vs new).

uncut viper
#

hm... i wonder why mine are being removed then

#

oh, wait, the trailing comma is there, just.. only visible if you go to edit the file

ivory plume
uncut viper
#

theres one after the first "CreateOnLoad" mappath

#

its not like its an important thing anyway, just somethin very small to keep in mind if someone uploads their stuff to the validator and then goes to copy from it again SDVpuffersquee

ivory plume
#

(The ways of Newtonsoft.Json are mysterious.)

uncut viper
#

"I could have sworn I left myself a comma..."

hoary lake
#

ideas my brain came up with while playing.

Idea 1: Robin gets a apprentice. the apprentice is a robotics expert who can build construction robots that either help robin or the apprentice do the jobs faster or replace them entirely allowing for more jobs to be done at once. maybe certain tiers can only do certain jobs. basic could do the silos or maybe a well but the more advanced ones can build the sheds, barns etc.

idea 2: the farmer drops the community centre items randomly in the community centre. the cute junimos walk up to the items and can sort it for you.

still frost
#

question, how do i make the game reload my mod so if i edit the textures i can just do that until they look like they fit?

ocean sailBOT
#
How do I reload my changes while I'm still in game?
  • Content Patcher pack: enter patch reload <your_mod_id> in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate the ConfigSchema or DynamicToken sections if you use them).
  • Translation files: enter reload_i18n in the SMAPI console window. If it's for a Content Patcher pack, also run patch reload afterwards.
  • C#: see the Visual Studio hot reload or Rider hot reload feature.
vernal crest
#

patch reload YourModID

still frost
#

awesome ty both o7

uncut viper
#

(if you find that something isnt reloading when you expect it should, remember to make sure you are trashing the items and spawning new ones instead)

inland cedar
#

anyone know why the front and back animation is next to each other but the side is like this lol

hard fern
inland cedar
#

oh so the side way is just a rotation

#

good catch

latent mauve
#

Does anyone know what NPC Map Locations uses to determine the icon on the map for the characters? Trying to figure out why the bookseller replacement's sprite looks so wonky on the map

rigid musk
#

I don't know how to help but that is so funny to me heh

latent mauve
#

Bookseller doesn't have a true sprite (it uses Cursors_1_6 for the maptile NPC), which is why I'm a bit confused.

#

Mostly confused about the unfortunate widening. LOL

frigid hollow
#

though why does it stretch SDVpufferthinkblob

still frost
#

okay i finished making a mod that patches stardew expandeds crops to fit the aesthetic of a seed/sapling retexture, do i need permission from either side to upload the patch or?

frigid hollow
#

what are the permissions like

still frost
#

wym?

#

ooh i see now

#

theres a section for it on the mods page, ty o7

rigid musk
#

Flash doesn't mind vibincat

#

idk what the perms on the page say but I know what he's said a billion times in the SVE server (and said to me personally)

#

As for the other mod I don't know heehoo

still frost
#

yee i wasnt really worried about flash tbh, from what ive seen they dont mind, its more because of the other mod i was worried about

craggy cape
#

gah, so my computer was able to install brainrider for once, thanbkfully, and now im struggling with tryna make the code recoginze the right path SDVpufferwaaah

#

im following the wiki the best i can 😭

#

basically the target can find the correct path, but it cannot find the files .ᐣ.ᐣ

gentle rose
gentle rose
craggy cape
#

ah

#

well the full name is JetBrain Rider so

#

anyways

uncut viper
#

JetBrains is the company and they make a bunch of products, i also didnt know thats what you meant and thought it was like, a Mac alternative or something
(idk what the cause of the error is though sorry)

craggy cape
#

fair lmao

#

ig i have to redo this again and see if i can make the same error occur

latent mauve
#

would probably need to confirm that against the normal villagers though

#

the red box looks to be what the code is pulling

#

which, my replacement is shorter but still within that box.

craggy cape
#

so would that i mean id need to delete the stardew valley folder ????? im not gonna do that but ugh this is confusing

vernal crest
#

The filepath contained in the error switches between forward slashes and backslashes, which seems unusual to me. Did you specify your game path anywhere?

hard fern
#

ah yeah i was going to mention that when i saw it

#

idk if that's like

#

fine or not though

#

since ive never used rider

uncut viper
#

i feel like mine usually also has a mix of slashes. it says it found the folder anyway though, it just cant see the files

vernal crest
#

I know, I was just wondering if somehow it wasn't actually the right folder or something.

craggy cape
#

idk if it means anything but when i just copied the code from the wiki, the stardew valley is in red

#

this is my second attempt

uncut viper
#

whats in your .csproj

craggy cape
#

first attempt had the same issue ( with everything fileld in )

#

theres no csproj 😔

uncut viper
#

every solution has a csproj

#

either go to the folder your mod project is in manually or right click on the green "Test" part on the left there and go to Edit -> Edit .csproj

craggy cape
#

it says i needed to target the API.dll first to make the code run in rider

uncut viper
#

did you used to have stardew installed on your C: drive?

craggy cape
#

D: drive

#

but yea

#

i moved it to the D: drive

uncut viper
#

but was it previoously on your C drive

craggy cape
#

yes

#

sorry im reading too fast lmao

uncut viper
#

then the issue is that it found the old drive on the C drive that is now empty

#

old folder*

craggy cape
#

the hint path has D: in it though so it should be targeting that, no??

uncut viper
#

no

#

thats something separate

craggy cape
#

ah

uncut viper
#
<GamePath>YOUR PATH HERE</GamePath>
<GameModsPath>$(GamePath)\Mods</GameModsPath>

add this under the <TargetFramework> line

#

obv replace the YOUR PATH HERE with the same as the hint path, but minus the last \Stardew Valley.dll

#

the last part of the gamepath should be "\Stardew Valley"

craggy cape
#

ok so that got rid of the error

#

but it gave me a warning xd

#

0>CSC: Warning CS9057 : The analyzer assembly 'C:\Users\Owner\.nuget\packages\pathoschild.stardew.modbuildconfig\4.3.2\analyzers\dotnet\cs\SMAPI.ModBuildConfig.Analyzer.dll' references version '4.9.0.0' of the compiler, which is newer than the currently running version '4.3.0.0'.

uncut viper
#

yeah thats whatever

craggy cape
#

ah so i can ignore thay?

uncut viper
#

yes

craggy cape
#

ight

#

WOO got the file added to the mods folder

uncut viper
#

you also dont need that HintPath part now btw

craggy cape
#

ee oke

uncut viper
#

you can get rid of that entire ItemGroup

rigid musk
#

is there a flag or GSQ for grandpa's shrine?

#

or for having all of the candles on grandpa's shrine anyways

uncut viper
#

not without BETAS

rigid musk
runic gazelle
#

Hello! I want to debug a mod from both host and client side and have set everything up except the timeout issue. While I debug as the host, the farmhouse player gets disconnected after a short time. Is there a way to configure the timeout wait time to be longer?

crisp rivet
#

I draw sleeping img, but they dont sleep
I also write "SleepFrame": 12 too, what's is problem?

golden spire
#

I've never looked at animal data but frames start at 0 from the top left, frame 12 of that appears to be the dinosaur is standing looking left.

#

I assume it starts frame 16

frigid hollow
#

the animal animations are pretty janky sometimes. how is your animal's .json set? the spritesheet layout depends on what you have enabled

#

i notice you're using the one with 7 rows so chances are you have some option not set correctly, the frames get WEIRD if you dont stick with vanilla animal settings

#

you need to have "UseFlippedRightForLeft": false and "UseDoubleUniqueAnimationFrames": true if you have the 7 row layout

#

(also yeah sleep frame should be set to at least 16)

pine elbow
#

Fatz and I are creating a python framework for programming mods using the content patcher, and a structure somewhat similar to programming for c# in smapi modes, if you are still interested, it is still in alpha, we are doing the documentation, but it is already available to install via pip

flat sluice
#

Hi,
I'd like to clarify something for myself:
I had some marriage dialogues copied from the wiki and commented out. <NPC name>_Engaged and <NPC name>_EngagedRoommate were among them. I prevent marrying my NPC using RejectItem_(O)460, so my NPC won't accept the pendant. Because I'm working on an unstable-for-now marriage update for my NPC, I thought I'd replace that RejectItem_(O)460 line with AcceptGift_(O)460; however, <NPC name>_Engaged does the same thing.
Therefore, my question is - if both dialogues would be included in the code, which one would the game choose (and hence, which one should I keep in the code)?

vernal crest
calm nebula
#

My guess is the engagement nit accept gift

#

But I not even at laptop

#

I search for water bottel

vernal crest
#

My read is that it tries to get Data/EngagementDialogue first which is why I am not confident in my read of it haha

flat sluice
#

I'm testing it right now, will report back!

#

(but first I have to re-activate the configs, I forgot to delete their commenting-out (or how should I call it))

#

It'll take longer than I though, I messed something up and it uses the default vanilla dialogues...

#

OK, now she accepts it, but she uses the vanilla dialogue (I forgot a bouquet and then upgrading the house)

vernal crest
#

What vanilla line does she say?

flat sluice
vernal crest
#

Something like "...!!! $l#$b#I accept!! $h#$b#...$l#$b#I'll set everything up. We'll have the ceremony in 3 days, okay?$h"?

flat sluice
#

I probably set the target wrong, it looks like, but the gifts one is (hopefully) correct.

vernal crest
#

The gifts one would just be in her normal dialogue file.

#

The engaged one should be in Strings/StringsFromCSFiles

fathom hound
#

How do I get VSC to stop yelling at me for errors again?

flat sluice
ocean sailBOT
#
How to make VSCode not scream at json comments

In Visual Studio Code, go to File -> Preferences -> Settings, then search for "associations", and in the "Associations" setting, click the Add Item button to add an item with key *.json and value jsonc (see image).
If you are making a content pack for Content Patcher, you should consider using its json schema so that VSCode can tell you if your patches are valid, you simply have to add

"$schema": "https://smapi.io/schemas/content-patcher.json"

at the start of your content.json file.

flat sluice
#

That one's correct

vernal crest
#

I think you should keep a patch editing Data/EngagementDialogue for testing as well, but the line for that would be Eleanor0 (assume I am using her actual internal name here of course).

fathom hound
#

Thank u

flat sluice
flat sluice
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 76 C# mods and 33 content packs.

vernal crest
#

Can you open it and watch it while it loads? You might be getting an AVE and those don't save to the log. Be prepared to take a quick screenshot.

vernal crest
flat sluice
vernal crest
#

Yup, AVE. Restart computer ^_^

proud wyvern
#

i'm... not quite sure how restarting a computer would fix an AVE, especially one coming from Harmony

flat sluice
vernal crest
proud wyvern
#

random AVEs tend to actually be caused by badly written transpilers, or multiple mod transpilers breaking each other

vernal crest
proud wyvern
#

i've never had an AVE that wasn't that

#

anyway, have you installed or updated any mods recently?

vernal crest
#

I've had one AVE in 250 hours of play time with my current 1.6.8 mod setup - and I got it months after the last time I adjusted my mod list in any way, so while I believe you that they're caused by badly written transpilers or by clashes, they can be very hard to pin down.

proud wyvern
#

them being hard to pin down i can agree with

flat sluice
#

(it's a testing profile)

proud wyvern
#

well, it seems like it's at least somewhat related to Dynamic Map Tiles

vernal crest
#

(Unrelated to this, but why on earth do you have Pytk Dummy installed for a mod testing setup?)

proud wyvern
#

as it AVE'd the moment Dynamic Map Tiles tried to apply its patches

flat sluice
#

And I'll test it without DMT.

vernal crest
#

I thought that the problem with Harmony-related crashes is that the mod that's referenced in the error is rarely the one causing the problem. Hopefully that's not true in this case though.

proud wyvern
#

it might be related, but not necessarily the reason

#

if it doesn't crash without it, i'd try going for a harmony_summary (i think that was the command? it was a while...), keep a log of that somewhere, then try a clean setup with just DMT and harmony_summary again, then see which patched methods overlap between DMT and other mods

flat sluice
#

It loaded without these two...

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 74 C# mods and 32 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

patent lanceBOT
#

@calm nebula: make npcs prefer to keep walking in the direction they are already going for the move to command (5d ago)

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 12 C# mods and 0 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

vernal crest
#

That's a lot more mods than just DMT

flat sluice
vernal crest
#

That is what Shockah said to do

proud wyvern
#

eh it's fine

#

just harder to see at first glance

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 2 C# mods and 0 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

proud wyvern
#

hm, all of these are prefixes or postfixes

#

it would be very weird if DMT was the "cause"

#

yeah unfortunately hard to say

#

DMT is definitely the trigger for this AVE

#

but why? idk

#

it could very well be some kind of Harmony/MonoMod bug

vernal crest
#

Try putting your mods back the way they were when you got the AVE

calm nebula
#

Remind me in 6 days to make npcs prefer the same direction

patent lanceBOT
#

just for kicks i'm gonna use lunar cycles to time that one. let's see if I can pull it off (#6617070) (6d | <t:1744473187>)

calm nebula
#

Remind me in 4 hours to look at the barrels for margot

patent lanceBOT
#

You bet, atravita (#6617071) (4h | <t:1743969198>)

calm nebula
#

(Sowwy)

#

The other possibility for an AVE is rewriter gone bad

proud wyvern
#

oh didn't see that

vernal crest
calm nebula
#

I was about to be "CONGRATULATIONS!!!!"

golden spire
#

suprise engagement party..

flat sluice
# proud wyvern but why? idk

I think we'll never know, because I was trying something like 50/50 method, and I ended up with the SAME loadout, NO NEW MOD UPDATES, and the error is gone...

#

Let's finally get back to the engagement thing...

flat sluice
#

Hmm...
If I launch the SMAPI testing profile I normally use, it'll create the error. Then I delete the DMT mod and launch that profile again, successfully. Then I launch the unchanged SMAPI testing profile 2 (that I used as a non-SVE testing profile for emergency purposes, as my SVE-dependent NPC is pretty hard to test without SVE), which now has the SAME mods the SMAPI testing profile have + DMT, and it launches succesfully. So then I copy DMT to original testing profile and now even that one works properly.
...
My SMAPI profiles and my mods are probably cursed SDVpufferchickcry

flat sluice
# flat sluice Or maybe not. I decommented one patch in my mod, and the error is back... <:SDVp...

This is the patch I test, I KNOW IT'S INCORRECT, but I don't think that should be the reason...

      "LogName": "Eleanor - engagement dialogues + marriage fix",
      "Action": "EditData",
      "Target": "Data/Strings/StringsFromCSFiles",
      "Entries": {  //Data/EngagementDialogue
        "Eleanor0": "{{i18n:Dialogues.marriage.Eleanor0 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Eleanor1": "{{i18n:Dialogues.marriage.Eleanor1 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",

        "Eleanor_AfterWedding": "{{i18n:Dialogues.marriage.Eleanor_AfterWedding |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Eleanor_Engaged": "{{i18n:Dialogues.marriage.Eleanor_Engaged |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Eleanor_EngagedRoommate": "{{i18n:Dialogues.marriage.Eleanor_EngagedRoommate |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",

#
        "Utility.cs.5367": "{{i18n:Dialogues.marriage.Utility.cs.5367 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5369": "{{i18n:Dialogues.marriage.Utility.cs.5369 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5370": "{{i18n:Dialogues.marriage.Utility.cs.5370 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5371": "{{i18n:Dialogues.marriage.Utility.cs.5371 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5373": "{{i18n:Dialogues.marriage.Utility.cs.5373 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5375": "{{i18n:Dialogues.marriage.Utility.cs.5375 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5377": "{{i18n:Dialogues.marriage.Utility.cs.5377 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5379": "{{i18n:Dialogues.marriage.Utility.cs.5379 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
        "Utility.cs.5381": "{{i18n:Dialogues.marriage.Utility.cs.5381 |DT_name={{DT_name}} |DT_wizard_name={{DT_wizard_name}} |DT_wizard_fem={{DT_wizard_fem}} |default={{i18n:key_not_found}}}}",
#
      },
      "When": {
        "Marriage": "true"
      }
    },```
#

I should probably use SMAPI json next time I share a code........

#

OH! The last Utility key had it's token parser broken! Fixed.

#

Maybe it's not the only thing that's broken, the game crashed again...

#

As the log (https://smapi.io/log/d95e44026981446aad130f988c3befc1) ends with loading something from the Hogwarts mod (I have it there because my NPC has a part of its game content only when that mod is installed), and as that mod requires DMT, there still is a issue somewhere...
Let's obey this problem by deleting the DMT mod for now, and come back when I'll solve the engagement thing out.

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 75 C# mods and 33 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

flat sluice
#

That might be because I used Data/Strings/StringsFromCSFiles as a target instead of Strings/StringsFromCSFiles. Let's see...

golden spire
#

yes, Data/Strings/... does not exist

flat sluice
flat sluice
flat sluice
flat sluice
# vernal crest I have to head to bed now but I'm curious about the engagement thing so ping me ...

@vernal crest
So after nearly 2 hours of testing (you can see above), I came to a conclusion:
If I tested this correctly (and believe me, I didn't, I know myself too well to know that I messed something up), then the game always searches for <NPC name>_Engaged (with <NPC name> being the NPC's internal name, in my case StrojvedouciDenis.Eleanor), and if it won't find that one, it'll default to the vanilla one you sent here: #making-mods-general message
Looks like the AcceptGift_(O)460 (used normally like other gift dialogues with "Target": "Characters/Dialogue/StrojvedouciDenis.Eleanor") is loaded into the game (at least it is in patch export) but not used.

flat sluice
rare orbit
#

quick question? what do i need to input to make items be random at the traveling cart??
i wanna help out sadnumbme on nexus mods by figuring out how to make this mod's items appear more at random
https://www.nexusmods.com/stardewvalley/mods/30754?tab=description

Nexus Mods :: Stardew Valley

Traveling Cart sells all items for Community Center bundles; both standard and remixed. Have you thought about taking the JoJa route because it is easier to make money than grow crops, fis

#

it'll be for personal use but i did tell em i'll dm the code/content file for it when i get it to work so they can add it to their files!

gray bear
#

ok so i think the modding wiki has a page on this and

#

actually does it thonk

lucid iron
#

You can go in and add RANDOM 0.2 to each condition

gray bear
#

this would do the trick

gray bear
#

i mean if that's what u want

lucid iron
#

Yeah just depends on desired effect

rare orbit
#

cool cool!

#

i kinda wanna not have em spawn at the same time

#

it's mainly for practice but i do wanna help out

#

hold on imma make a thread for dis

#

and i forgot how to..

gray bear
#

i don't think you can make threads

#

gotta ask the juni's

rare orbit
#

seriously??

#

huh

#

i used to be able too

#

maybe they got rid of it?

calm nebula
#

You can

gray bear
#

oh??

rare orbit
#

how so? i lowkey forgot how to

lucid iron
#

Yea just need orang

gray bear
#

makes sense

lucid iron
#

But tbh there's no other topic here

rare orbit
#

got dat but i forgo

calm nebula
lucid iron
#

Might as well just ask

#

Atra top 5 emoji reveal

calm nebula
#

But tbh channel us quiet rn

rare orbit
#

so for adding it to make it random? where do i put it on here?

calm nebula
#

No need for one

gray bear
#

why are you using notepad

rare orbit
#

it's not mine but idk where to put it

calm nebula
rare orbit
#

i know use visual code but note pad is super simple

gray bear
#

that's not where you'd do it

calm nebula
#

What does it say about me

rare orbit
#

wait where do i add the random part??

#

is it in the data folder??

golden spire
#

what are you trying to randomise?

gray bear
#

lemme, do an example i guess. yeah it's in one of the data folder

rare orbit
#

basically all the items based on the rarity

#

ex i wanna make it harder to get ancient fruit compared to say goldstarred parsnips

#

but only when crops are selected

#

basically it's for the traveling cart! i offered to help randomize the items since they said that they'd randomize it but they don't know how

gray bear
#
                    "Id": "{{ModID}} Misc Item",
                    "RandomItemId": ["(O)103", "(O)881", "(O)807"],
                    "AvailableStock": 1
                }```
#

weh

#

the gist is u make a list instead of listing every single option

rare orbit
#

ahhh

gray bear
#

actually now that i look at it might be best to combine list with the stock amount, like 881 is bone shard and the available stock would be 10

rare orbit
#

it's basically a mod to include all community center items that can be got from the traveling cart

#

yee

#

it'd prob be better if i re did the data files huh?

gray bear
#

i'd merge em all into shops.json instead of the individual ones in this case

rare orbit
#

honestly i'd use visual code but i am not very good at understanding da ui ;-;

#

it's still possible to make it so it'll show up when the config is enabled right

gray bear
#

the author seems to want to know how to randomize it. maybe invite them to the discord

rare orbit
#

i'll send over an invite then!

#

i only asked cause i do wanna help em out!

gray bear
rare orbit
#

yee kk!

gray bear
#

that's very nice of you, i'm sure they'll appreciate it ❤️ my overall suggestion is to read the wiki page i linked and see if you have any questions though

rare orbit
#

kk!

#

i still might try to figure it out too :3 not only to help out but also cause i do like the idea of making it random

gray bear
#

i understand. it's just easier for me to explain small parts instead of the whole thing, and the wiki does help in figuring it out

rare orbit
#

i get that!

golden spire
rare orbit
#

i assume visual code is good but the ui is hard to get

gray bear
#

notepad++ is more simple and works better with code

rare orbit
#

yee! maybe i am also an old school user lol i used to use notepad for writing fanfic back in the day

lucid iron
#

Any editor is fine as long as it has json validation

rare orbit
#

and for simple edits i still use it

gray bear
ornate locust
#

Notepad++ is as complicated as you make it. I have some addons for it that do stuff like compare text

#

I use the hell out of compare text to see what's changed between files

proper bobcat
#

Yeah, as long it's got some validation/json support anything is fine

lucid iron
proper bobcat
#

I wouldn't recommend using your notes app or base notepad though

ornate locust
#

at the very least, the ability to see what brackets close each other

lucid iron
#

For notepad++ you gotta turn on the json validation

#

Midnight i would like to lodge a complaint

ornate locust
#

what did I do

lucid iron
#

Dare to use rar file in 2025

ornate locust
#

look

lucid iron
#

No

ornate locust
#

I'm old okay

lucid iron
#

Zip is older than you psure

ornate locust
#

I'm not aware when it stopped being the thing to use, but I clearly didn't notice it LOL

gray bear
#

beware

#

nexus might mark your files as malware

ornate locust
#

And no, it is not

#

I was born in 87

lucid iron
#

Yeah that's the legitimate concern here

ornate locust
#

anyway yeah I genuinely just didn't notice when it stopped being The Format To Upload WIth

lucid iron
#

Psure windows has zip built-in now

gray bear
#

it do

brittle pasture
#

it stopped being so like 15 years ago

golden spire
#

didn't WIndows add rar and 7zip extraction relatively recently?

royal stump
#

looks like it, yeah

#

(and fwiw, I've only ever heard complaints about rars here and 1 other place SDVkrobusgiggle modding's the only reason I knew to stop)

golden spire
#

not that I would use rar/7z for mods on Nexus as users get easily confused.. my former boss a year ago was asking for winzip to be installed as he didn't realise Windows was able to open them for over a deccade

ornate locust
#

I've never heard it anywhere else either, even though I've uploaded mods for several games on Nexus

calm nebula
#

I'm gonna fucking tar.gz and y'all are gonna like it

golden spire
#

well I'm fine with that

gray bear
#

you're gonna what?

golden spire
lucid iron
#

Burning me mods onto an iso to mail directly to your house

royal stump
#

see those are the ones I hated as a kid, for lack of knowing what they even were SDVpuffersquee

golden spire
#

only time I ever see them is for Linux/BSD nerds

#

like me

royal stump
#

a few people used them for not-linux things and I always thought I downloaded the wrong files

gray bear
#

i dunno my windows is not that new but i realized recently it can open zips

#

not rars though

royal stump
#

I'm pretty sure they only embedded zip support in the context menu* in 10 or 11

golden spire
#

Windows could open zips since Windows 98?

gray bear
#

or i didn't make it do it. idk

#

really? I didn't know

#

am uneducated

#

i do know it can make zip now

ornate locust
#

anybody remember Windows ME

royal stump
#

if win7 had any native concept of zips, I never noticed

golden spire
#

could make zips in Windows XP... not sure if older

royal stump
#

possible I just didn't bother looking at the apps though

golden spire
#

they just called them compressed archives when you did it

#

rather than zips

royal stump
#

ah, right, I do remember that phrasing in the menu

golden spire
#

don't think their zip compression was amazing, one reason to use 3rd party.. even now

gray bear
#

i've only now realized i saw that too and didn't connect the dots

#

compress to tar

golden spire
#

tar by itself isn't compression, unless it zipz the tar afterwards

gray bear
#

uhh

uncut viper
gray bear
#

it just tar now

uncut viper
#

nexus only allows .7z, .rar, .zip, .omod, and .exe anyway

royal stump
#

exe that unpacks into bin/iso, got it

gray bear
#

dunno a portrait mod got flagged and it was a rar

lucid iron
#

omod nolbDerp

uncut viper
#

well .rar is in that list

ornate locust
#

anyway my mods will be zipped as I update them, but I don't want to update just to zip

gray bear
#

gonna upload the tar

uncut viper
#

omod is oblivion mod manager. there for legacy reasons basically

#

or oblivion mod something. idk its for Oblivion

ornate locust
#

I've got my settings changed so I don't rar it without thinking

#

out of like a decade of habit

uncut viper
#

the main reason i dont use anything but .zip is for the same reason thats been said which is users get confused. i dont want people asking me how to open a .7z or a .rar

gray bear
#

i use the windows zip now

golden spire
#

you don't need to update to just go to zip, you'd keep the version the same and replace the file,

gray bear
#

dunno how affective it is

ornate locust
#

actually that's right, I can just do that and not bother people. after my fajitas, then

uncut viper
#

fajitas > zips

ornate locust
#

Fajitas take priority

gray bear
#

TAR seems to work fine btw

royal stump
#

(still doing this right up until I actually released -> "i guess smapi builds zips and it's easier for people, i'll stop")

uncut viper
gray bear
#

oh not on nexus just in general

uncut viper
#

oh

#

i thought you meant you uploaded a tar my bad

gray bear
#

someone asked me with my consistent books mod to change to zip so i just did

#

the people don't yearn for the rar

golden spire
#

tar stands for "tape archive" an old and still use format for archival storage onto tape/drives/etc.. great for achiving, but you normally want to compress that archive afterwards.. if you're actually using it for backups

ornate locust
#

I've just never had anyone object until recently, so I didn't change anything

gray bear
#

funky

#

why is my windows 11 using it

#

(do i even have windows 11)

golden spire
#

tar? well it's common in server use.. and I guess they thought "why not?" when they added more zip/7z/rar support

royal stump
#

yeah, I imagine it's necessary elsewhere and/or simple to tack on

ornate locust
#

look on the bright side, at least I'm not my granddad who deadass pulled out a working Commadore 64 at work one day to pull a map up for work (surveying)

gray bear
golden spire
#

very common with linux and source code downloads as they are often in gzipped tars

royal stump
#

oh right, that's where I see them most, github download sections SDVkrobusgiggle

ornate locust
#

I'd thought that computer was over there because nobody wanted to bother getting rid of it, not because he'd sit down and work on the thing

golden spire
rare orbit
#

ok! i did some editing and it should work!

ornate locust
#

Fajitas done. alright, I have 53 mods, so I'm just doing this for the Stardew ones.

patent lanceBOT
ornate locust
#

There we go, zipped

#

though I'm not sure Nexus is showing it yet for some of them

gray bear
#

it's uh slow

lucid iron
#

what are the barrels for margot

fierce vault
#

Hi! Can you have a first time green rain dialogue, and then a regular one that plays after the first has been used up? (I just got green rain for the first time in game.)

royal stump
fierce vault
#

Cool. Thanks!

#

Oh man, I just realized I didn't even talk to the wizard. Does the key only get used up if you talked to the person, or is it gone after the first time, period?

royal stump
#

afaik, it should only happen on year 1, regardless of whether you actually talk to the person

fierce vault
#

Ok. Guess I'll have to get everyone else I missed on a different save, or look their lines up then. Thanks!

frigid hollow
#

yep, a lot of people who didn't start new saves for 1.6 missed out on the first-time dialogue

fierce vault
#

That's probably why CA wanted people to start a new one, along with some other reasons.

lucid iron
#

need the green rain day to last 10x as long so u can talk to everyone

#

i do actually just pause time for it

uncut viper
#

tbf for the first year most of em are in the saloon arent they

fierce vault
#

A lot of them, yes

#

But definitely not everyone

lucid iron
#

yes but modded npcs Dokkan

uncut viper
#

mod authors should just put them in the saloon too, clearly

ornate locust
#

Gotta make time to poke around in Eli and Dylan's house during it

fierce vault
#

Lol, I know I missed some really good reactions

uncut viper
#

fun fact Demetrius's portrait is hardcoded that day

lucid iron
#

make saloon 10x bigger too then

#

wow what

uncut viper
#

cant change it even if you change the portrait command

fierce vault
#

I did not know that

ornate locust
#

He glued on that hazmat suit

uncut viper
#

its bc hes in his hazmat suit

#
public int getPortraitIndex()
{
    if (this.speaker != null && Game1.isGreenRain && this.speaker.Name.Equals("Demetrius") && Game1.year == 1)
    {
        return 7;
    }
        ...
#

gotta change the portrait itself that day if you wanna change it

fierce vault
#

Huh, I could really begin to guess why that would be hardcoded?

uncut viper
#

i mean i think its pretty obvious. dont want him out of his hazmat suit

lucid iron
#

you need pry him out of the suit by force

fierce vault
#

Robin would approve, probably

uncut viper
#

i imagine his sprite is hardcoded too, but i dont know where that check would be

lucid iron
#

tbf its not like vanilla game can just do When to conditionally edit content

#

however i do feel like this coulda been an appearance

ornate locust
#

Zipper got stuck

#

Robin has to break out the power tools to free him

golden spire
lucid iron
#

oscars best picture

golden spire
#

not sure whats worse, making terrible art or having to come up with a lot of lines of reactions from villagers

#

as after I do all the actual "movie" work.. have to do all dialogue work..

ornate locust
#

I'd say the dialog SDVpufferchickcry

golden spire
#

reminds me I need to add Ayeish'as reactions to fellowclowns custom films

#

she doesn't have any generic reaction text for films by tag

smoky nimbus
golden spire
#

well it is one advantage of the cinema as you can get away with a different (or no style) more as it's a film in -their- world

#

unless it's just one of those mods that scales down a 1080p movie into a 90p frame

#

also tidied this chart up a bit for refrence for myself/others

uncut viper
golden spire
#

also did this little batch of mv and ln commands on all the extracted audio files to renamed them rather than just their hex values:

https://pastebin.com/raw/RkhP6XD2

final arch
#

@ivory plume on the logpage in smapi when you click "view raw log" it just shows {{data.RawText}}

ivory plume
#

I'll deploy a fix in a moment!

ocean sailBOT
#

Log Info: SMAPI None with SDV None on None, with None C# mods and None content packs.
Suggested fixes: One or more mods are out of date, consider updating them

final arch
#

just noticed it and saw youre active SDVkrobusgiggle
thanks!

golden spire
#

that is pretty raw text to be fair

ivory plume
#

On that note: I just deployed a very experimental update for smapi.io/log; let me know if you see any other issues!

Main changes:

  • Mods which failed to load are now shown in the mod list (with 'failed to load' in the error column).
  • Reduced response times with a new analysis cache and client-side fetch.
  • You can now download a JSON representation of the parsed log (see the download link at the bottom of the log page).
final arch
#

Mods which failed to load are now shown in the mod list (with 'failed to load' in the error column).
oh thisll be so useful :3

ivory plume
#

(RIP Governor's HTML parsing though.)

uncut viper
#

none content packs with left beef

ivory plume
#

(The raw text is now slightly less raw.)

fathom hound
ocean sailBOT
#

Log Info: SMAPI None with SDV None on None, with None C# mods and None content packs.
Suggested fixes: One or more mods are out of date, consider updating them

uncut viper
#

i have no idea what you changed since then so i dont know what you mightve removed that you shouldnt have. your patch at line 1815 is wrong because its trying to patch a letter that doesnt exist in your png

#

your FromArea is choosing a rectangle that is outside your image

fathom hound
#

Oh snap. I’ll try to find my old file then

#

I know I had my old json in the link I sent before actually

brittle pasture
#

huh this is a new one

#

(told the reporter to delete and reinstall)

lucid iron
#

no mod subclass..

brittle pasture
low current
#

So I have two mods that are conflicting. A recolor mod for interior buildings and a kitchen CP mod. I was recommended to change patch priority so that they can work together. How exactly would I go about doing that?

lucid iron
#

by adding a false dependency in the manifest on the kitchen mod to the interior building recolor mod, kitchen mod will load second

low current
#

Huh. Thats odd because in the mainfest on the kitchen it had false on the mod that it was conflicting with. Are you saying i need to add a similar dependency in the Recolor manifest?

#

Its the vibrant pastoral one. I guess this mean the conflict is coming from somewhere else.

#

Wait...i think they put the wrong unique idea in the kitchen one

still frost
#

okay, im about to publish the mod i was working on yesterday, how do i know what my update key is to put into the manifest json?

low current
#

Jk I really thought I had something there. I have no idea whats going on 😭

brittle pasture
brittle pasture
#

just do the steps to make a new mod page basically

#

you dont have to upload anything yet, or make it public

still frost
#

i dont think i follow

uncut viper
#

go start uploading your mod on nexus

#

dont hit the Publish button

#

look at the address bar

lucid iron
# low current

This one is not VPR so you need to add it to the kitchen manifest yep

#

It's not a wrong id, just a different grapeponta mod basically

still frost
uncut viper
#

yes

#

thats your mod id

still frost
#

o7 gotcha ty

low current
#

I copy pasted the unique id from the grapeponta into the dependency slot in the kitchen manifest (under false) and when i booted it up, the kitchen would not appear even with the grapeponta mod disabled (it used to be visible when interior recolor was disabled)

lucid iron
#

Well that sounds like you broke the manifest

#

!json

ocean sailBOT
#

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.

lucid iron
#

Use this to validate that you have right format

#

If the manifest is not correct smapi skips the mod

low current
#

no, it was correct. ran it through that. Good to know that tool exists, ill save it for later.

lucid iron
#

!log Gib new log then

ocean sailBOT
#

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:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. 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.

lucid iron
#

And show us the edited kitchen manifest for reference

low current
#

yes do i put it here in discord?

still frost
#

hypothetically if i was dumb and uploaded the file before i put the update key in how would i delete that version? cause im not seeing the option to

low current
#

ah

uncut viper
still frost
#

problem with that, i already uploaded the second one with the updated part and both are marked 1.0.0 with the same description cause i assumed i would be able to delete it

uncut viper
#

just archive the old version, there isnt a problem

#

when i say version i dont mean new version number

#

just upload the new files with the updatekey in it

#

it can have the same version number

lucid iron
#

Just so you know you cannot delete mod files on nexus, only archive

#

Practically speaking it's close enough but you can unarchive files too

still frost
#

yeah i know its just sad cause it wont look as clean lol, is there really no way to get rid of it without retyping the entire page out?

uncut viper
#

no, there isnt by design

lucid iron
#

Hide the file archive if you want

uncut viper
#

hardly anyone ever looks in the file archive. you can hide it

#

99% of people will not even know you had an old file

still frost
#

i dont see how to hide it

uncut viper
#

in your permissions section

low current
#

OH MY GOODNESS IT WORKED

lucid iron
#

Nice that's good

still frost
#

o7 gotcha thanks again peeps

low current
#

Okay so i think my problem was i just pasted over the mod that wasnt the mod i thought it was. This go around i fresh installed the kitchen mod and added an extra line for the dependency.

#

Thank you so much for your help

reef kiln
#

The only time I look at the file archive is if the current version has errors.

still frost
#

nooo that setting is only available for verified mod authors SDVpufferwaaah

lucid iron
#

I usually leave stuff in old versions instead of sending it to archive

uncut viper
#

well, good thing having the archived file basically does not matter whatsoever

#

just ignore it

lucid iron
#

There's no button to dl from there

uncut viper
#

(you can still download archived files without the button. i wouldnt expect most to.)

still frost
uncut viper
#

because mod authors in the skyrim community would throw hissy fits and delete all their stuff and break every collection that relied on them

#

thats not a joke. thats the reason. it was like 10 yrs ago or w/e

#

shortly after collections came out

hard fern
#

Once again it goes back to Skyrim huh 😔

uncut viper
#

now files are archived and hidden for the most part but nexus can still download them if they are a part of a collection

still frost
#

yeah i believe it, thats just sad that its gonna be messing up the look of my first mod cause of that

uncut viper
#

its not because practically no one is going to see it

still frost
#

o7 oh well ill live with it, thanks SDVpufferpat

uncut viper
#

it does not change the look of your mod page in any meaningful way. it might literally not? the "View file archive" link might be there even if its empty

#

once you get 1,000 downloads you can hide it and then its gone forever

golden spire
#

if you only just uploaded a file by mistake you can contact them to delete it

uncut viper
#

practically speaking

#

i dont think contacting them will do anything

golden spire
#

they will

#

I've done it before

still frost
uncut viper
#

how long ago was this, because the only info i can find on file deletion requests says its until august 2021, and links to a form that is now closed

golden spire
#

2024

tribal ore
uncut viper
#

then ill amend my message to say "i dont think contacting them is worth it"

lucid iron
#

I mean does it at least go to old files

still frost
#

yeah im with button on that part, itll be unfortunate but ill live with it

lucid iron
#

Or do u see 2 main file even tho its 1 main file 1 archived in edit

still frost
lucid iron
#

Yeah that's just caching

#

It'll fix itself dw

still frost
#

it will? awesome ty

tribal ore
#

This is a bit of a specific question, but does anyone know if the pet name entries in "StringsFromCSFiles" will respect gender differences? These things:

"Target": "Strings/StringsFromCSFiles",
"Entries": {
"NPC.cs.4507": "Pookie",
"NPC.cs.4508": "Love",
"NPC.cs.4509": "Hot Stuff",
...

I'd like to put stuff like ${Prince^Princess}$ in there, if I could

uncut viper
#

it depends on the context of their usage

#

if its used in dialogue it should respect it

#

if its just like, shown on a menu or somewhere other than dialogue/mail it might not

brittle pasture
#

if you have the decompile look at getTermOfSpousalEndearment

tribal ore
#

I think these are only used in dialogue, but I could be wrong. I've never seen them anywhere else

uncut viper
#

only used in dialogue in vanilla

lucid iron
#

You can ctrl+f for this string in the decompile

uncut viper
#

if the possibility of another mod using them is important to you then its good to keep in mind

lucid iron
#

Since it says StringsFromCSFiles that means it used to be some hardcoded thing

#

Who is pookie though...

brave fable
brittle pasture
#

it seems all of them are gender-neutral, however 4512 and 4516 can only be used by non-male spouses (NOTE: not to a non-male farmer)

#

smh let elliott call me darling

tribal ore
lucid iron
#

it just occurred to me that pet name is like nickname and not literally a pet

uncut viper
#

you're modding now, so i get to ping you with scope creep

lucid iron
#

I was gonna ask when did pet get dialogue...

proven spindle
#

Hey all, does player_stat work across multiple mods? Like if one mod does incrementstat customstat 1 and another mod does incrementstat customstat 1, will the total for customstat be 2?

uncut viper
#

i can imagine you were very confused with the Hot Stuff one

uncut viper
lucid iron
#

Well i dunno maybe someone named their bearded dragon that

ornate locust
#

"Hey Hot Stuff," giving fingerguns to my turtle

proven spindle
#

Also, will IncrementStat All Customstat 1 apply that stat to all players in a multiplayer game? I don't see an optional field for player in the entry on the trigger actions page

uncut viper
#

you dont see it bc it doesnt exist

still frost
#

my first mod is officially uploaded, ty peeps for all the help SDVpufferheart

uncut viper
#

you cannot alter the stats of another player

#

not through trigger actions

lucid iron
#

What's the goal here si

uncut viper
#

not directly* i should say

#

if you need everyone to receive a stat increase at the same time no matter what the other players did, send mail to everyone and use that mailflag as a trigger action condition for incrementing a stat

proven spindle
#

I want to use the stat number as a condition for an event to happen, and that stat number increments whenever a player interacts with certain map tiles. I have it set so those map tiles no longer trigger incrementing the stat once interacted with, but I'm wondering if that'll cause an issue in multiplayer saves if different players interact with each of those map tiles without sharing a single stat to increment (so none of them can reach the minimum required for the event to fire)

uncut viper
#

how are you making the tiles stop incrementing after theyve done it once?

lucid iron
#

Tbh this sounds like a flag1 flag2 flag3 etc thing

#

Not a stat++ thing

proven spindle
#

So it's not so much the map tile itself (it was in an earlier iteration) as it is the secret note obtained from that map tile, which has increment stat in the ActionsOnFirstRead field using secret note framework

lucid iron
#

To explain more clearly it sounds like you have N number of true false switches

#

So to ensure consistency N number of mail flag make more sense

#

And mail flag can be set for everyone np

uncut viper
#

that actionsonfirstread will only fire for the player who reads it anyway

#

so if player 1 goes around and reads all the notes, they will get 5 stat increases or w/e, but everyone else still has 0

#

so when they get the secret note its still gonna increment the stat for them

#

if you wanted everyone to share progress then mail flags are better as chu suggests

lucid iron
#

Maybe ichor provided some kinda has read secret note gsq?

uncut viper
#

if you want them separate then incrementstat will still work, though mail flags are still probably better, since they can be read with CP conditions

calm nebula
calm nebula
#

anyways

uncut viper
#

welcome to the club

calm nebula
#

goes back to taxes

lucid iron
#

You can maybe use this

#

Instead of any fiddling with flags

#

Are notes in multiplayer shared

calm nebula
#

iirc no

uncut viper
#

no

lucid iron
#

I guess it's just up to si then, if players should share progress or no

uncut viper
#

notes are just mail but to the left

tiny zealot
lucid iron
#

Yeah i found the docs YuniHappy

proven spindle
#

These notes can be found in any order, so I'm trying to avoid 'player has to find specific notes to fire the event' since there can still be other remaining notes from this mod after that, which means not using note-specific flags. I also want to be able to add additional notes to the batch from some of my other mods, which means there can be additional notes to find that aren't necessarily part of the main mod

uncut viper
#

just check for having read all of them

lucid iron
#

Well if you desire something like

#

Found 5 notes out of 10

#

You can do stat increment stat as long as you don't care about all players sharing progress

proven spindle
#

That's what I'm currently doing, and it works really well in single player

uncut viper
#

you could still do that with mail too

lucid iron
#

ActionsOnFirstRead is still firing for everyone individually right (ichor pls correct me)

calm nebula
#

an imperfect one

#

is to have the event locked behind a mailflag that is set by a trigger action

#

after that stat is achieved

uncut viper
#

i would really hope actionsonfirstread does not broadcast a signal to everyone to run the trigger action

calm nebula
#

you can broadcast a mailflag

lucid iron
#

Since notes aren't shared between players i imagine the expectation is also a event based on number of notes i have is also not shared

tiny zealot
#

i'm pretty sure actions on first read does not broadcast a trigger action (i don't think SNF broadcasts anything)

proven spindle
#

The event is 'adds items to a vanilla shop', which might actually be shared? (I'm not sure if shop inventories are player-specific)

rough lintel
#

if i want an event to continue while i play a sound, do i just need to load that sound as "music" or is there a way to do like a playSound (sound) continue type thing

#

i ask because the sound is 12 seconds long, and i wanted it to keep playing as the event faded out

#

i probably have to load it as "music" right?

uncut viper
#

a shops inventory is subject to the conditions of its item entries

#

and those conditions are run on the client

reef kiln
#

That's tough as players can take as long as they want to read.

#

So your music may not be long enough.

rough lintel
#

it starts playing at the end of the event its not about reading lol

calm nebula
#

(again, you can broadcast a mailflag)

reef kiln
#

That's true.

calm nebula
#

(you can also have the event broadcast a mailflag, or have the items added by checking HAsSeenEvent Any iirc)

rough lintel
#

its literally

character does action
sound plays
event fades out as character "does action"

#

ergo i load it as... music, im guessing

#

to make the event continue

proven spindle
#

If incrementstat only affects current player and I set the notereceived mailflag to current player so the map tile can still trigger for other players, could I set a mailflag based on player_stat so that whichever player reaches that stat first triggers the flag, which then triggers the shop event/added items for all players? Would that work?

tiny zealot
lucid iron
#

Or maybe get ichor to add a note read trigger (is there one already?) DokkanStare

proven spindle
#

There is, it's just note-specific and I'm specifically trying to avoid that lol

tiny zealot
#

chu if you mean an action to mark a note as read, i have that yes SDVpuffersquee

lucid iron
#

No a trigger

#

PlayerReadNote

#

Fires whenever player uses the note item

tiny zealot
#

oh i see

lucid iron
#

The only difference is that if si used dayending the player has to sleep

tiny zealot
#

actions on first read more or less does that job though, unless you need it to fire when other players read notes or every time a note is read (not just the first time)

uncut viper
#

actionsonfirstread does it for a specific note

#

i can see the value in incrementing for Any note

lucid iron
#

The difference here is that trigger actions get to check a gsq

rough lintel
lucid iron
#

And yeah it would also be any note

uncut viper
#

(actions can also check a GSQ)

#
If <query> ## <action if true>
If <query> ## <action if true> ## <action if false>
lucid iron
#

But u have to enter escape hell for this

uncut viper
#

not really

lucid iron
#

You are right tho Dokkan

rough lintel
lucid iron
#

I always forgor this is a thing bc i add Condition everywhere

uncut viper
#

If PLAYER_HAS_READ_NOTE Whatever ## AddMail whatever ## playSound breakingGlass

rough lintel
#

or playSound whatever

uncut viper
#

no escaping at all

lucid iron
#

Ah it is use the ## yay

uncut viper
#

but that said i still agree there should be a generic trigger for it

#

surprise surprise, author of mod that adds a billion triggers thinks there should be more triggers

tiny zealot
rough lintel
#

word, word

lucid iron
#

Button something that troubles me with triggers is that I can't pass very much context info

uncut viper
#

a trigger also would not actually fire when another player reads a note

lucid iron
#

E.g. the whole desire for target item

uncut viper
#

not unless you specifically made it to

#

which would require broadcasting

lucid iron
#

I dunno what can be done here tho

uncut viper
#

technically oyu can pass whatever context you want in any form as long as you control both the trigger and the action/query that consumes it

lucid iron
#

Perhaps something like

#

A specific key in custom data that we patch the handler to use as input target item

#

But that is +1 as standards sadness

uncut viper
#

im not sure what you mean or if i do im not sure why thatd be better

#

there wouldnt be any GSQ or Action that could read just Any Arbitrary C# Object unless you made it do so

tiny zealot
#

anyway i can consider adding a generic trigger that fires whenever the player reads any modded note. will it solve si's problem?

uncut viper
#

and if you're doing that, you may as well use the existing stuff

#

it wouldnt work for Si unless there was a way to specify it was one of the notes that is part of this puzzle, though

lucid iron
#

Well GSQs do actually have the input/target convention for items

uncut viper
#

yeah and only items. what would be the benefit of being able to pass in things that arent items versus whats possible now

lucid iron
#

The glue is agree on how a trigger can pass some item there

proven spindle
#

I think the day ending trigger would work fine for me tbh

lucid iron
#

So that u can use the vanilla GSQs following the convention without specific C#

proven spindle
#

Would be a cool parameter to play with though

uncut viper
lucid iron
#

Im exaggerating when i said troubled anyways, not like i have a present usecase

tiny zealot
uncut viper
#

triggers dont fire when other players do things unless you make them specifically do that

#

if you put the TriggerActionManager.Raise call inside your SecretNoteMenu, then naturally that will only run when the SecretNoteMenu code runs. which it wont if you are not the client that opened the note

calm nebula
#

if youre okay with a single day delay

proven spindle
#

(Though if you're looking for more features to add, it would be awesome to have a parameter to exclude notes you've already read from crumbling if you press the action button while holding them. I'd love to set up gift responses for npcs for some of them without risking destroying them lol)

tiny zealot
#

hmm

#

in normal gameplay, you shouldn't ever see a note crumble

#

the mod spawns a note item according to <math nonsense>, but it doesn't actually pick a note to show you until you use the item (this is actually how vanilla notes work, too)

proven spindle
#

Yeah, but in vanilla you shouldn't be able to re-get notes, so it makes sense. With SNF you can set them as objects, so that opens up possibilities

lucid iron
#

if ichor adds pagination we'd have a readable book framework yuniShake

proven spindle
#

I've kind of been playing around with that, but was going to hold off on publishing that part since I keep misclicking while holding them lmao

#

This is actually the book collecting mod I talked about a while ago, it's what I've been referring to here

tiny zealot
#

plus tiakall (i'm fairly sure it was tia) only asked for one or two lines of text and i'm a man of my word

mint saddle
#

Hello everyone! I have a question about warps.

#

I have a custom building that has two floors (ground floor map and basement map). When I enter the building then immediately turn around and exit I end up standing in front of my building's door (expected behavior - though, it seems to ignore the target coordinates given in the warp map property). However, if I enter the building, warp to the basement, warp back to the ground floor, then exit back to the farm, it puts me at the target coordinates specified in the map property.

#

How does the game remember what tile the player was standing on when entering a farm building or rather how can I capture the location I need to warp to on the farm that will put the player in front of the door after visiting the basement?

lucid iron
#

farm building warps have special logic because you can move building

mint saddle
#

I assume the transition to another map causes the coordinates to be lost?

lucid iron
#

i dont think there's any easy way to do this for a map -> map situation but you can fake the map -> map by having it actually just be map

#

more like game doesnt try to do this recursively

tiny zealot
#

hey friends, who knows of mods that add different kinds of crabs to the game, and in particular if they have already agreed on a context tag to use to identify crabs? i promise it's not a weird question

lucid iron
#

just be one map = make 1 tmx, but have a big gap to simulate 2 different location, use a within map warp to go between the locations

calm nebula
#

ichor, we love you

tiny zealot
#

i'm hoping that the tag they are already using, if any, is "fish_crab"

mint saddle
#

I see... Thanks for the info!

brittle pasture
#

it's a tall order since not even the vanilla crab has the tag

hard fern
#

Unfortunately i do not know of any crab

lucid iron
#

maybe u just have to do fuzzy search

#

item query that does fuzzy search...

tender bloom
#

i bet more new fish has crabs

tiny zealot
#

more new fish has some crabs!

tender bloom
#

VMV has a crayfish but no crab

tiny zealot
#

i'm fairly sure item queries are not going to work for this, sadly

brittle pasture
#

passersby adds a graverobber crab

tender bloom
#

C# for substring "crab" i forsee no problems

lucid iron
#

i meant use fuzzyItemSearch