#making-mods-general

1 messages Β· Page 374 of 1

royal stump
#

@twilit quest Button's tip about the Merge token here might help; it seems like a simpler way to do "or" directly in a When condition

quasi summit
#

i noticed when u try to enter the farm it warps you out of bounds since its so small

tender bloom
#

you can change the entry points

tender bloom
#

these should be the map properties to change the map entrance location

sinful reef
#

ive got another dumb question sorry. so for some reason my custom npc is not spawning in the location id like him to <:3? he always spawns @ the railroad. im pretty sure my json is valid because i checked it multiple times with jsonlint and notepad++ plugins and such, and smapi doesnt spit up errors at me when i load the game but he just does not want to cooperate?

#

the display name for the custom location is 'Eni_Map" and i tried it with the mod id as a prefix, same result. eek

brittle pasture
#

is your location named shmegaman.Enigma_Eni_Map or just Eni_Map

#

I presume the former

#

if you changed the Home make sure to sleep one day for it to take

sinful reef
sinful reef
brittle pasture
#

also don't use CustomLocations, it's deprecated

sinful reef
#

eek Okay

#

whats the alternative then?

brittle pasture
#

I believe CustomLocations will also prepend Custom_ to your location name

#

[[Modding:Locations]]

#

[[Modding:Location_data]]

sinful reef
#

okay ... thank you for the help πŸ™‡β€β™‚οΈ

brave fable
#

(the new method is simpler and more capable than CustomLocations, it's a straight upgrade and more in-line with your usual CP patches β˜€οΈ )

hard fern
#

sigh im expecting my map to blow up in my face

twin wadi
#

good luck SDVpuffersalute

hard fern
#

map exploded

#

(i made a typo)

calm nebula
#

Hi bluebs!

brave fable
#

how are you always there to notice when i half-write and delete a message

tender bloom
#

atra is always watching

brave fable
#

unbelievable powers

upper heath
#

@teal bridge hello! do you know if the mod Reciprocate has any big issues with Pen Pals? sometimes when i load up a save, the reciprocated gifts no longer spawn on me like they did in my last game session. i saw your mod page said you were okay with pings here, sorry if this is the wrong thread.

hard fern
#

SDVpuffersweats too many things happened

#

my map is cursed

frail oasis
#

Hello

#

Can someome

#

Tell me

#

Where is 60 40 2

#

On the map?

#

In town

brave fable
#

60 tiles to the right, and 40 tiles below from the top-left corner, facing downwards (2)

#

oh in town specifically

frail oasis
#

Yes

quasi summit
#

mod is working but for some reason there are 2 impassable tiles in the bottom right corner to the farmhouse that make it impossible to reach the mailbox

upper heath
#

is that the spot behing the cc?

tender bloom
#

for invisible tiles

quasi summit
frail oasis
brave fable
#

apparently sitting beside a bush

upper heath
frail oasis
#

Ohhhh

#

Let me see

brave fable
#

if you're doing any sort of character/map modding, i'd suggest you unpack the game content and explore in Tiled yourself

frail oasis
#

I'm doing an npc

quasi summit
#

it doesnt work

brave fable
#

you do, in fact, have invisible Buildings tiles ([16]) on the bottom-right area of your farmhouse entry

frail oasis
#

Down

#

Im just following a guide

upper heath
#

ill walk it rq

brave fable
#

i have no idea what the context or your goal is β˜€οΈ

brittle pasture
#

what guide is this?

hard fern
frail oasis
#

What does down means

brave fable
#

presumably the facing direction of the character after using the warp

#

if this is warp data? i have no idea what i'm looking at

brittle pasture
#

but really what guide are you referring to

upper heath
#

its a map coord

brittle pasture
#

I'm asking because I don't recognize that syntax

upper heath
#

does town have...up and down?

frail oasis
#

Idk

brave fable
#

up/down/left/right is for the character, not the location. please explain what you're doing lol

frail oasis
#

Forget about it

#

Ty

#

Ill manage to make it work

brittle pasture
#

...

brave fable
#

we may never know....

hard fern
#

so...

brave fable
#

post a log shrimpy 🦐

pine elbow
brave fable
#

probably also your map file

hard fern
#

oh

#

yeah

#

that's my fault

#

i closed the game and tweaked something so i was about to open it again

twin wadi
brave fable
#

you don't need to load a blank.json, it's already targeting the existing asset Strings/StringsFromMaps

#

map message actions load from that asset by default

pine elbow
hard fern
#

uhh in the meantime you wany my map? do i just send the tmx in here

brave fable
#

no worries, every chance to learn something new is a good one SDVpufferthumbsup

#

sure!

hard fern
twin wadi
#

oh i might be wrong but iirc, you dont need quotation marks for the message key?

#

lemme double check

#

nvm

#

disregard that

#

you might need multiple tile data rectangles even for the same thing, im not sure but that's how vanilla does it

brave fable
#

it's fine to have multi-tile objects, so long as they conform to the grid

twin wadi
#

ah okay

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 24 C# mods and 8 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

hard fern
#

here's my log

#

uh

twin wadi
#

i was confused because vanilla had multiple

hard fern
#

it's just saying "no translation" when i click on a tile that i stuck a map string on

brave fable
#

that's just what happens when it's exported, since all tiledata is applied to the individual tiles ingame

#

exporting tiles won't rebuild larger tiledata objects

#

what does a patch export strings/stringsfrommaps show? or a patch summary?

twin wadi
uncut viper
#

i dont see CP editing StringsFromMaps in that log

brave fable
#

.. did you include your strings patch?

round timber
#
            "LogName": "Intro event CTs",
            "Action": "EditData",
            "Target": "Characters/Dialogue/Lewis, Characters/Dialogue/Wizard, Characters/Dialogue/Marnie, Characters/Dialogue/Linus",
            "Entries": {
                "{{ModId}}_Arrival": "{{i18n:{{ModId}}_Arrival.{{TargetWithoutPath}}.{{Random:Neutral,Fem,Masc}}}}"
            }
        },```
![SDVpufferlurk](https://cdn.discordapp.com/emojis/591022278955761676.webp?size=128 "SDVpufferlurk") if i have this set up in this way, will the randomization choose the same result for all targets? would i need to patch separately to achieve that?
hard fern
#
            "Action": "Include",
            "FromFile": "Data/Strings.json, Data/Locations.json"
        },
       ```
#

its

#

it should be?

uncut viper
brave fable
#

patch summary and export πŸ‘

round timber
#

ooh cool thank you

uncut viper
#

{{Random: Neutral, Fem, Masc |key={{TargetWithoutPath}} }}

pine elbow
#

Can someone help me with my mod I’m trying to add a new town but I need help with the content.json

pine elbow
#

Yes?

hard fern
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 24 C# mods and 8 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

hard fern
#

uhh as for the export

#

do i just parse it in the json parser and send it

brave fable
#

sure

brave fable
#

if you actually clicked with the Magic Wand tool, it'd be limiting your changes to just the selected tiles, so if you clicked something other than the invisible tiles you wouldn't be able to erase those

#

try using the Same Tile tool (S), selecting the invisible tiles, and then pressing Delete

brave fable
#

aint that so

#

so what's your mod folder structure look like? clearly the i18n itself isn't being applied

hard fern
#

πŸ˜”

#

uh it's like this rn. is that bad

torpid sparrow
#

wuh

brave fable
#

now i don't know the nested-folder style of i18n

torpid sparrow
#

are your folders in the i18n folder?

hard fern
#

yes

brave fable
#

but i feel like this might not be right lol

torpid sparrow
#

dun do that

uncut viper
#

you cannot nest inside a nest

#

one folder deep only

#

so i18n/default/strings_maps.json

hard fern
#

Oh you know what

#

im just dumb

#

😭

#

i managed to confuse myself bc i knew you could slap things inside a whole folder called default.json and name your actual files whatever, but i uh. put them inside yet another folder.

uncut viper
#

its a relatively newly allowed i18n format so you are forgiven this once

#

however if you ever make the mistake again your cheeto is truly dusted /j

hard fern
#

πŸ˜”

pine elbow
#

Is there a good map modding tutorial for beginners?

#

Specifically focused on the coding part?

twin wadi
#
Stardew Modding Wiki

Tiled is understandably one of the most unintuitive/intimidating programs to use when making maps or patches for your mod. This tutorial aims to break it down into very simple steps with pictures! This tutorial will use the example of making an NPC house to teach you how to make a map patch (for adding a house to an existing map) and write the J...

pine elbow
#

THANK YOU SO MUCH i’ve spent my entire Sunday trying to find a good tutorial

hard fern
#

:0 it works (interior map)

#

...and then the mistake

#

... πŸ€” is there no way to flip doors

versed wyvern
#

Ahoy, I've got a couple questions about patch priority ThinkO_O

  • There's no way to override another mod's Load action with my own Load if they left it on the default Exclusive priority, correct?
  • If I need to override another mod's EditData action (specifically to a specific location on a sprite sheet), and they have theirs set to update OnLocationChange, do I also need to put OnLocationChange on mine or will the patches obey load order without it?
lucid iron
#
  • nop Load exclusive default sucks for that reason
#
  • naw your change will just be forced to happen too
twin wadi
#

my sleepy brain nearly typed "do exclusive exclusive priority" SDVkrobusgiggle

lucid iron
#

let's say we have some abigail sprite mod and 2 different mods editing the Characters/Abigail asset

versed wyvern
#

Okay, thanks... I guess the only way to override an Exclusive Load is directly editing their json, then... which could get messy snuffFear_s

lucid iron
#

if one mod that makes abigail hair green when i enter CC while the other just changes her jacket color

#

smapi still has to apply the jacket color change again too

#

cus it doesn't do anything about partial edits of asset

lucid iron
versed wyvern
#

Oh? I'm unfamiliar with this terminology "bonk" GWshizuPlsRember

lucid iron
#

e.g. change abigail's TextureName in Data/Characters to MyModSpecial.Abigail so that you get Characters/MyModSpecial.Abigail texture loaded

#

you will have to elaborate on the usecase though, sometimes you just cant

#

and sometimes its bad idea for config reasons

versed wyvern
#

Ah, I'm reasonably sure I can't do that because my change is just cosmetic at the end of the day (but one that requires horizontal sheet extension which is only possible via Load) and all the actual mod code still exists in the parent mod

#

So if I changed the asset name all the other code referring to that asset would need to be reproduced on my end directed to the new asset and that is like several times more complicated

upper heath
#

could you merge the two into a content pack? i know thats a thing in other game modding, like skyrim or fallout but im really new to getting into the grit of modded SD

tender bloom
#

You can but it’s often just as much or more work than editing them each

#

If the edit to each of them is as simple as changing the load priority in particular whereas merging would involve a lot of art fussing

upper heath
#

ahh yeah that makes sense. i, too, would prefer editing a line or two over art fussing.

#

does something like Wyre Bash or LOOT exist for stardew?

gentle rose
#

that depends, what are those? SDVpuffersquee

upper heath
#

tools to check load order, comparability, and edit files. make bached packs to ease load order, clean up mods/files with deleted meshes etc

#

compatability with eachother, not with current game mode

versed wyvern
#

Those are utilities for Skyrim modding, one is capable of mashing together otherwise-conflicting patch changes to some types of data and the other is a masterlist of load orders to resolve conflicting changes to the same records

#

But the key difference is that there's nothing like Content Patcher's default Exclusive priority there, load order is king when it comes to conflict resolution

lucid iron
#

Content Patcher kinda is this tbh

gentle rose
#

I don't think these are really as possible in stardew beyond content patcher? if you have two mods both saying "we want these (different) images to be used" at the same priority level, there isn't really a way to combine them other than very specific cases

lucid iron
#

It's just happening at runtime instead with some limitations as a result

versed wyvern
#

I'm just kinda mystified why Load still defaults to Exclusive sadj

upper heath
#

yes load order is really what i want to be able to manage without doing it one by one!

lucid iron
#

Me too PecoWant

#

But i think it's a backwards compat decision

#

Since all Load were exclusive pre cp 2.0

versed wyvern
#

Mm, perhaps, but then conflict resolution still exists in the form of load orders there

gentle rose
#

mod load order isn't as sensitive in stardew as it is in some other games, and theoretically with patch priorities isn't really relevant either, but it's still tricky

idk how a tool would help though tbh

versed wyvern
#

Meanwhile the documentation has suggested not leaving it on default for a while, outright saying it can cause compatibility issues iirc

lucid iron
#

But yeah if u can suggest to original author to change load priority that would solve a number of things

#

Ig it also depends on why need horizontal extend

versed wyvern
#

It has open upload permissions so I can just upload the altered json itself but I'm gonna have to be vigilant about updating that file the moment it receives any updates MokouDed

upper heath
#

thats fair, with what ive been learning today it seems those tools aren't quite compatible with the coding of this game. and really i just don't want to have to peruse a list thats way longer than it has any right to be(158) for load order SDVpufferthumbsup

lucid iron
tender bloom
#

Most people edit manifests to change load order

upper heath
#

what i aspire to be

tender bloom
#

Adding a false dependency usually sorts it out

lucid iron
#

Many mods are only add new

tender bloom
#

!loadorder

ocean sailBOT
#

When two mods edit the same dialogue or images, whichever edit is applied last "wins" and is the one you see in the game.

If the mods don't set edit priorities (which most don't), that order is mainly determined by the order the mods were loaded by SMAPI. You can change that mod load order to influence the edit order.

lucid iron
#

So u only have to deal with load order if u were using several mods that edit same target for whatever reason

#

One example is way back pelican town + recolors

#

Those r both targeting tilesheets

upper heath
#

im using two that involve gifting, so its not targeting a tile, but i do want to change load order to see if it fixes an issue that's not an error necessarily. i will try this, thank you πŸ™‚

lucid iron
upper heath
#

thank you! i didn't want to go there till i knew what my issue was and you have set me on the right path ^.^

gilded thunder
#

hii, i'm a bit confused on the one-time dialogue token, mostly on the <letter_id> the wiki includes in its usage - will i need it in the context of gifting a certain item for the first time?

brittle pasture
#

the letter ID in$1? just put something in there, doesn't matter what, but make sure it's unique

#

{{ModId}}_CoolGalFirstTimeReceiveClay

gilded thunder
#

ohhh, i see now, thank you very much c:

worthy cobalt
#

Does SMAPI still only work on .NET 6? Or can I use .NET 8?

quasi summit
#

thank you to everyone who helped me

brittle pasture
#

you can target NET 6 and use newer syntax

lucid iron
quasi summit
upper heath
#

is there a way to see a log of executions that do not show up in SMAPI? i was looking at the mod Debug Mode but it seems item and ease of movement/time related as opposed to action

gentle rose
#

we may need specific examples

upper heath
#

like SMAPI shows when most mods or even the game does something, like loading an asset or appended an item, even gifting an item. but for somethings it doesnt show anything

lucid iron
#

!log

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.

royal stump
#

those messages are all just voluntarily generated by the game/SMAPI/C# mods, so there's no way to just force more of it to happen
that said, some of them display more log messages in verbose mode; you can open Stardew Valley\smapi-internal\config.json and edit the "VerboseLogging" setting to enable that

lucid iron
#

the full log would have trace level stuff from various mods

#

worth checking that first

royal stump
#

(oh, right, that's probably more helpful if you're not already checking the log file SDVkrobusgiggle)

upper heath
#

i love this dicord. I have been googling and using the wiki to try and figure all these things out and you all point me in the right direction so fast ❀️

royal stump
#

it has niche settings like verbose logs, displaying trace-level logs in the console, etc

upper heath
#

i can acess the raw one and i made the parsed one, is the raw what you meant chu? or is there another one?

#

ohhhh i see the trace button that adds that to the parsed one now, nice

upper heath
#

thanks SDVemoteheart , i got the issue resolved

wooden crater
#

Hey, sorry if this is a dumb question - if I want to create a certain variable for each player, would the easiest way be to make an array of the variable and tie it to the player's id, or is there a way to append the variable to the player object itself?

lucid iron
#

@frosty hull hello do you know if ShopMenu.ShopCachedTheme exists on the phone (it's a class)

lucid iron
wooden crater
#

Yep! Okay, gotcha! Thank you!

frosty hull
lucid iron
#

Oof ok

#

On PC this class caches ShopThemeData

#

It's used for qigemshop and lostitemshop

#

Does that exist at least?

frosty hull
#

left: PC, right: Android

lucid iron
#

How does qigemshop work on phone then blobcatgooglyblep

frosty hull
lucid iron
#

for ref it look like this on PC

#

the special theme is through shopthemedata which should be somewhere in gamedata dll

frosty hull
#

onesec

#

i don't know haha

lucid iron
#

mystery

#

well what ill do is just copy the class from base game 3sSmolMiku

#

this is for my mod livestock bazaar which reused ShopCachedTheme for stuff

foggy marsh
#

can someone point me to a guide for making custom npcs?

ocean sailBOT
#
Creating a Custom NPC

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:

foggy marsh
#

thank you :D

hard fern
#

good luck

foggy marsh
#

i get the feeling i'm gonna be working on this for a while until i figure it out, but i want a project πŸ˜”

lucid iron
#

i can send u whole zip if u want this is just content.json

young pond
#

Woah, it worked! :0
Gotta check what I did wrong the first time then, lol, thanks!

lucid iron
young pond
#

Do you mind if I use this to make a CP version with credit?

lucid iron
#

go ahead

young pond
#

Thank you! :D

lucid iron
#

i declare this officially MIT licensed

young pond
#

Could I know your nexus username to credit properly? SDVpuffereyes

young pond
#

Thanks! SDVpuffersmile

ebon lark
#

Any advice for making furniture items?

#

I want to start doing that but idk where to exactly start

vernal crest
#

Find a mod that was published after March 2024 which adds new furniture items via CP and look through its files to see how to do it. Use this page for reference.

hard fern
hard fern
vernal crest
hallow prism
#

(i made it)

vernal crest
#

(I did not give AT as an option because I have an agenda to remove AT furniture from the world xD)

ebon lark
#

Thanks guys

fathom rapids
#

agreed, AT is for having 5 color schemes for the same furniture item, not for making a chair into a sink

vernal crest
#

Yes it is great for alternate palettes for the same piece of furniture

#

(Sorry chu, but it is!)

fathom rapids
#

as a happy home designer person, its wayyyyyy better than scrolling thru a dozen alternate palettes of the EXACT SAME ITEM in the main list πŸ˜”

reef siren
#

If a cutscene has no preconditions, will it always play or never play?? Wondering how to set up a cutscene that is started not by entering the location

hallow prism
#

i believe cutscene triggering in classic sense need a precondition

#

but i'm unsure

#

the best way would be to have something like G false

#

which will make the precondition always not working, letting you free to trigger by other means

reef siren
#

Perfect I’ll try it out

#

Ty :]]

lucid mulch
#

in current version if its an event id with a number then it will always play
if its a string id then it needs the trailing / after the event id, but don't need to actually have any preconditions and it'll always play

#

if it is a string id and it doesn't have a / at all, then it wont play and a different source is required to start it

#

in an upcoming stardew version then numbered events lose that exception and for them to auto-play they would also need a /

vernal crest
#

I have a bunch of events that I'm midway through writing that I keep triggering when testing other stuff because they start simply by entering the location. They are string IDs with a trailing forward slash as SinZ says.

#

I hope I remember to actually add preconditions before I release the mod lol

hallow prism
#

i would say that you can always put precondition like G false but then

#

you may forgot the events existence entirely

#

and 3 months later be "why didn't i see this event???"

lucid mulch
#

if you want it to delibrately not start then don't give it preconditions at all and don't have the /

#

and it'll be a manual script

reef siren
#

So if I have a building tile data Action: PlayEvent I should instead use a string ID? I'll have to look those up πŸ€”

hallow prism
#

you should use string id anyway

vernal crest
reef siren
#

Oh! thats what it is! I was just putting that in without knowing what it was called lol

stark spindle
#

Just out of curiosity how do number ids work? Like how were those id decided upon?

vernal crest
#

Nexus mod ID and hope, I think

brave fable
#

people generally just used their nexus mod ID as the first 4 digits, then another 4 digits from 0-1000

stark spindle
#

ahh then the 0-1000 is just whatever works for the modder?

lucid iron
#

back in the olden days ppl tried their best to avoid conflicts here yes

#

no one ever made a json assets for events right

stark spindle
#

must have been a bit of a nightmare

brave fable
#

nowadays you can just call your event sebby and immediately collide with 100 others β˜€οΈ

lucid iron
#

blueberry entering a β˜€οΈ phase after the SDVdemetriums and 😌 eras

hallow prism
#

the convention mostly worked

stark spindle
#

thanks have been wondering that for a while.

#

so with the vanilla events was there a convention ?

brave fable
#

he is my sun and my moon and my stars

hallow prism
stark spindle
#

well there was no nexusmods id for the start

hallow prism
#

yeah but

brave fable
#

i'm pretty sure vanilla events generally just clocked up from 1

#

with some outliers, of course

hallow prism
#

do you want to know if CA followed rules of sort?

stark spindle
#

yeah

brave fable
#

what surprises me most about vanilla events is abby's Journey of the Prairie King event is number 1

lucid iron
#

sdv nexus mods id is 0 obviously

reef siren
#

Hmm okay well new problem has arised then. If to have the curscene only accesible via tile action (ie removing all / after ID and having a playEvent on the tile) then I can't have ANY preconditions for the cutscene. Like the cutscne plays after interacting with the tile but then checks if you have 1 wood in your inventory and if not won't play πŸ€”

brave fable
#

which means it's entirely possible that CA seriously wrote JOTPK before most of the game

#

if true, priorities

lucid iron
#

its named abbygame

stark spindle
#

ha interesting history

lucid iron
#

so yea the event was first

reef siren
#

I need to one day beat jotpk ;-;

brave fable
#

i mean if you install calico desert bus you can have it replace jotpk. it still counts if you beat it SDVdemetriums

#

just depends if you find it easier to beat JOTPK or drive a bus for 8 hours

hallow prism
#

let me a min to finish a dialogue then i'll search an example

reef siren
#

Oh thank you so much!

reef siren
lucid iron
#

I feel like the desert isn't 8hr away is it

reef siren
#

On the map its closer than clints

#

preferable tbh

brave fable
#

i mean if it was just 5 minutes away wouldn't emily go there more often than never

hallow prism
#

        "Lumisteria.MtVapius_Faycombe_FairyStatue/Tile 15 7/t 800 2000": "Plums/18 6/farmer 15 7 0 HeliaDiamantiVMV 13 22 0/skippable/
move HeliaDiamantiVMV 0 -6 0/pause 200/textAboveHead HeliaDiamantiVMV \"{{i18n: FairyStatueOverheadHelia01}}\"/faceDirection farmer 2/move HeliaDiamantiVMV 1 0 0/move HeliaDiamantiVMV 0 -5 0/
speak HeliaDiamantiVMV \"{{i18n: FairyStatueHelia01}}\"/pause 200/speak HeliaDiamantiVMV \"{{i18n: FairyStatueHelia02}}\"/pause 300/
speak HeliaDiamantiVMV \"{{i18n: FairyStatueHelia03}}\"/pause 300/faceDirection farmer 0/move HeliaDiamantiVMV -1 0 2/move HeliaDiamantiVMV 0 5 2/
end",```
#

AND

brave fable
#

it took 8 years for the whole town to go there for a festival smh

hallow prism
#

i have PlayEvent Lumisteria.MtVapius_Faycombe_FairyStatue true true as a tiledata on back layer

#

both are important

reef siren
#

Ah so the event starts when you stand on the tile? :0

hallow prism
#

yes

reef siren
#

I didn't consider thattttt!

hallow prism
#

and the preconditions ensure it will trigger only by this way (specific tile) and other preconditions (here, the hours)

#

there's one to click on a tile too, if you don't want the walk on

reef siren
#

So I can have that tile be the one you stand on to interact with the tile with the item and BAM yes OKAY !! This is groundbreaking for me thank you!

hallow prism
#

the wiki has some details so don't hesitate to search for stuff like "tile" on the event page, and "playevent" on the map property page

#

to see if the arguments at the end (true true) need to be different for you

reef siren
#

Thank you! I'll go play around now :0

hallow prism
#

have fun

unborn shadow
#

Does anyone know if "Summit" is a valid value for "EndSlideShow" when creating a custom NPC? My co-author of the mod says "Summit" works fine for the latest version of CP, but I keep getting yellow error of "failed converting entry" when I use it. When I change Summit into MainGroup, the yellow error disappears. I checked the modding wiki and only found Hidden/TrailingGroup/MainGroup, but no mention of Summit.

brave fable
#

only those 3 values are valid, and i'm not sure what a Summit value would do given there's only one endslideshow

vernal crest
#

Your co-author perhaps has been missing the warning in the log about it?

torpid sparrow
#

what a shiny tag aba SDVpuffersquee

vernal crest
#

I know! I don't even know how I got it! I haven't been particularly active here the last couple of weeks because of being busy IRL.

unborn shadow
#

I'll use the MainGroup then, tyvm!

foggy marsh
#

is it possible to give a character different dialogue on a stormy day than a rainy day? say i want to make them comment on the thunder

brave fable
vernal crest
#

Both CP and GSQs can check for storm

#

So you could possibly even do the check inside your existing rainy dialogue using $query WEATHER Here Storm

foggy marsh
#

i'll probably come back to this once i'm ready to put it all in game (god knows i'll definitely mess it up lol)

#

good to know it's possible though

brave fable
reef siren
#

Trying to add an object. I've followed the tutorial and looked at some files.
My content.json has an include fromfile to this file
https://smapi.io/json/content-patcher/3795fe06a79940a3ad03fdac70d3e54c

Problem is my objects aren't working I dont think. I player_add Shmoky.GP_Ticket, and I even try just player_add Ticket. But neither works... Wondering if its how I'm doing my objects :////

unreal spoke
#

Looks correct at first glance, but I’d try checking whether your items actually exist in-game. Have you tried, for example, spawning them using CJB? Alternatively, does your log say anything?

reef siren
#

nothing inn log

#

Ill grab CJB yeah good idea

brave fable
#

item definition seems fine, it shows up ingame with a quick test mod

#

it's possible you were using player_add incorrectly?```diff
player_add ticket
-[Console Commands] There's no item with the qualified ID ticket.
player_add (O)Ticket
-[Console Commands] There's no item with the qualified ID (O)Ticket.
player_add (O)Shmoky.GP_Ticket
+[Console Commands] OK, added Ticket (ID: (O)Shmoky.GP_Ticket) to your inventory.

reef siren
#

Ah that might be it yes!

brave fable
#

if you're not familiar, qualified IDs include the item type code in parentheses, e.g. (O) for objects and rings, (S) for shirts, ..

calm nebula
#

(Debug fin is easier because it's a fuzzy search)

#

Funny though

brave fable
#

alternatively, you can use debug f returnticket, short for debug fuzzyitemsearch, to search for loose matches

#

alternatively again, just install CJB Item Spawner hahah

reef siren
#

Yes there they are haha!

calm nebula
#

In Monday mayhem, every time debug fin gave me a clothing item I didnt expect, I had to wear it

reef siren
brittle pasture
reef siren
#

ah so like this?

#

Amazing thank you all! :]]

dusk terrace
#

Anybody else getting bug reports on nexus that look written by AIs? I assume by non-English speakers, but the AI isn't able to translate back any meaningful information so it's just really frustrating

reef siren
#

Gotta redo those sprites now eww

brave fable
#

true, it's weird having abby peeping over the spawn box

lucid iron
#

Trinket MedLurk

brave fable
#

you've seen spenny. now get ready for babby

calm nebula
#

There is a character in kpop demon hunter named Abby just because he has abs

devout otter
#

Well his name actually is Abs. "Abby" is his nickname. πŸ€“

hallow prism
brave fable
#

(even if it's technically not needed, since the item still loads, it's still expected imo. especially with a non-unique name like Ticket)

reef siren
#

Okay, onto the next problem (I swear I run into them too often)
Location https://smapi.io/json/content-patcher/87c76003bf24487d92de122a7068b7b7
Event https://smapi.io/json/content-patcher/eea322f116294c479e94edff17382fbb
This event won't load at all in Prairie Station. The location works perfectly fine, and when I change the Data/Events to Railroad instead of {{ModID}}_PrairieStation it works perfectly as it should. I have switched it over to Shmoky.GP_PrairieStation also and that didn't work... I swear that just is the location but alas apparently not 😭

hallow prism
#

i mean, it is some expectation somewhere that names are to be unique and matching id?

reef siren
#

oh also playSound and playMusic dont like trainLoop for some reason in cutscenes

hallow prism
#

i am not remembering any specific convention about names themselves, only id

brittle pasture
reef siren
#

🫠 even events have to be blank loaded?? Well that solves that haha! Thank you

devout otter
reef siren
#

OHHH!! Makes sense! Gotta do that from now on thennn

#

So blank load, schedules, dialogue and events in new locations

brittle pasture
#

did you see a command console pop up when you run the game

#

as a separate window

#

you probably missed the launch config step when installing SMAPI

shrewd seal
#

I wonder if it's possible to mod starter value to be like harvest Moon back to nature

finite willow
#

I'd lock in to .NET dev if I could set up an environment which doesnt require bloating my main pc with vs code 22, Rider is an option but I don't like doing 2 IDEs

#

what are the differences between vs code for .NET and something like Rider or VS code 22(purple one)?

brittle pasture
#

is your mod a DLL mod or a content mod

#

(also that's not what I was referring to)

#

(the launch option thing)

#

did you write json

finite willow
#

just unzip your debug/net6/modname.zip, and move the folder to your mods folder

NVM THIS IS FOR MODS AS IN C# WRITTEN MODS

ocean sailBOT
#

@finite willow You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

brittle pasture
#

then it's a content mod

brittle pasture
finite willow
#

yeah mb. sorry

#

you can get stuff like extra npcs and items using jsons those are called content pack. On the other hand there's also the way to tinker around actual game code using c# with class libraries and the smapi library

brittle pasture
#

your content patcher unique ID is incorrect

latent mauve
#

ContentPackFor needs to use the unique ID of Content Patcher, don't add your name to it

#

You only add your name to the unique ID of your mod (so the top level UniqueID field). Anything under another field, like ContentPackFor or Dependencies, is referencing another mod's uniqueID and has to match exactly so that the code knows what mods to look for.

#

Yes, Pathoschild.ContentPatcher is what you put always for content pack mods

#

That is the uniqueID of the Content Patcher mod.

brittle ledge
#

Is that the official wiki?

latent mauve
#

Looks like the getting started/creating mods page on the official wiki

brittle ledge
#

I'm at work so I can't do VC, but it looks like you're working on an NPC? Have you seen the tutorial?

latent mauve
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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:

vital lotus
brittle ledge
#

Dang. If it was the modding wiki I'd go in and edit that to be a little clearer.

latent mauve
#

Yeah, the wiki is still needed for the very first steps, so clearing that up might be helpful

#

Gotcha

#

Also to save yourself future pain, it's "Elliott" in the code, two Ts

#

That gets me every time

brittle ledge
#

Fair enough, though if you can make a retexture, you can make a new NPC kyuuchan_nod2 Replacers tend not to be popular but if this is a personal edit or you're not worried about popularity, go for it.

unreal spoke
#

Is this your first time installing mods in general? In that case, I’d recommend giving the starter guide a read. You just throw the whole CP folder into your mod folder.

brittle pasture
#

I'm impressed and also scared you're jumping into making mods before even installing a single mod and playing with it

#

!gs I recommend following this guide, pick a retexture mod on Nexus and make it show up in game before doing anything else

ocean sailBOT
gaunt orbit
#

It will show if you haven't added any patches to your mod, yes

#

Content patcher assumes that you're using it to patch content, so when you're not patching content it yells at you :P

reef siren
opal tendon
#

such a sweet comment was left on one of my cats but idk how to do this how do I do this?

brittle ledge
#

I'd go look at one of the mods that adds pets as a new animal- skellady's raccoon mod is one.

ivory plume
#

(See Modding:Pets on the wiki for the format. It doesn't have an example currently though, so looking at an existing mod would probably still help.)

red egret
#

Hello, if i edit/recolour a furniture catalogue but also want to add new items there, is it possible? There is still space on the spritesheet.

hallow prism
#

Its not advised to add to vanilla tilesheet

ivory plume
#

(Custom furniture should have their own texture to avoid conflicts with other mods or future game updates; see Modding:Furniture for more info.)

hallow prism
#

Its not really more difficult to add furniture with a custom tilesheet

#

Editing image to recoloring is fine

red egret
#

all right, ty

hallow prism
#

some fields are optional if both images are same size if i remember well

#

try finding a small mod doing something similar and see how it's done

#

a basic portrait replacement

craggy goblet
uncut viper
#

sometimes SMAPI just gets stuck or thinks its waiting for input or something. i usually try a Ctrl + C and sometimes it gets it going again. sometimes it also just closes SMAPI. either way its not bc of your mod list or anything.
try not clicking the SMAPI window at all while its launching

gaunt orbit
#

Ctrl + c is the console shortcut for "kill this thing right now"

#

I thought we had a command for the smapi select thing

uncut viper
#

sometimes the "thing" is whatever task interrupted it and not the entirety of SMAPI itself. i have used this many times. the success rate is not great but not terrible

gaunt orbit
#

Does it say "select" in the window title anywhere?

wheat sundial
#

!mapmaking

ocean sailBOT
#

If you want to make mods that add or edit maps:

  1. Use Tiled to edit .tmx or .tbin files.

  2. Refer to the Maps wiki page for details on how maps work in Stardew Valley.

  3. Content Patcher allows you to create custom locations through editing Data/Locations

  4. Vanilla Maps can be edited via Content Patcher as well: EditMap

gentle rose
#

you don’t need to censor your windows version number, it’s okay

#

try clicking on the black window and clicking enter?

#

try running without Cauthen then

#

and see if that works

round timber
#

does anyone happen to know if its possible to have Central Station tourists that have portraits? this is probably a question for pathos himself but... figured id ask in general first SDVpuffersquee

uncut viper
#

i believe Dolphin gives them portraits with BETAS

#

I think

round timber
#

i shall investigate

uncut viper
#

Jinu in the Casino is one of their mods that lists BETAS as an optional dependency for central station portraits

rocky copper
#

Hey, does anyone know if it's possible to add another type of cow or chicken to the AlternatePurchaseTypes of the existing cows or chickens? I really thought you'd just be able to make a new, unpurchasable animal and then add it to the AlternatePurchaseTypes so it could be added to the rotation but for the life of me I can't get it to work.

brittle pasture
#

you totally can, but have you considered making it a skin instead

twin wadi
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on macOS Unix 15.5.0, with 14 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

twin wadi
#

ah okay

brittle pasture
twin wadi
#

yup you're right! thanks button

rocky copper
brittle pasture
#

no, what I mean is you have to copy brown eggs to your custom chickens as well

#

while with custom skins you don't have to worry

rocky copper
#

If I wanted to make, say a Purple Chicken that lays Purple Eggs but can show up when I just purchase a chicken, is that possible?

brittle pasture
#

if you're adding a new animal with new product then yeah that's totally how it works (AlternatePurchaseTypes)

#

(I just have a skin agendaβ„’ and try to redirect people to using that if they just want to reskin an animal)

rocky copper
#

Skins are great, don't get me wrong. But at this point I'm just trying to figure out what all the options are.

brittle pasture
#

anyway if you need help with your code post what you have

#

(also tbh from a player perspective I never liked the alt purchase system, just let me buy the blue chickens directly damnit)

rocky copper
#
      "Action": "EditData",
      "Target": "Data/FarmAnimals",
      "TargetField": [ "White Cow", "AlternatePurchaseTypes" ],
            "Entries": {
            "HighlandCow":
                    {
                "Id": "Highland",
                "Condition": "RANDOM 0.9",
                "AnimalIds": [ "Highland Cow" ]
                    }
                },
    },```
This is what I've got to just try and add my Highland Cow to the Cow rotation, but it won't show up no matter what I do here
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 3 C# mods and 0 content packs.

brittle pasture
#

you can use MoveEntries to move your entry to the top, and this will make it so that whenever the player buys a cow 90% of the time they get your highland cow

rocky copper
#

That's why Blue Chickens are first, got it

brittle pasture
#

the better solution is probably to targetfield deeper and edit the default entry to add your cow

rocky copper
#

Can I just add "AnimalIds" to the Targetfield?

brittle pasture
#

you also need the id of the default vanilla entry

rocky copper
#

If the game doesn't provide a name, is it just "Default"?

brittle pasture
#

it does have a name, and it's "Default"

rocky copper
#

Okay, awesome

#

What goes under that, is it "Entries"?

#

I haven't figured out how to edit existing models like this before

brittle pasture
rocky copper
#

Okay, oh my god, I got it

#

Thank you so much

opal tendon
#

what does it mean when your mod is in moderation review?

fathom rapids
#

most likely that you accidentally put a zip inside a zip and now its triggering the virus check

opal tendon
torpid sparrow
#

In review or in moderation?

opal tendon
torpid sparrow
#

the moderator shouldve attached a message

#

that tells you why it was put under moderation

opal tendon
#

am I allowed to show the screenshot of the notification?

torpid sparrow
#

idk but feel free to dm me

#

mine was put under review a couple weeks ago so im curious xd

opal tendon
#

okay

gentle rose
#

you should be allowed to put the screenshot I think?

astral eagle
#

Quick question...

Does anyone have an example of GitHub actions CI for their mod? I got pretty far on my own, but I can't find a way to make ModBuildConfig skip the search for my game installation.

Is the game actually a dependency for building?

#
dotnet build --no-restore -p:ContinuousIntegrationBuild=true -p:EnableModDeploy=false -p:EnableModZip=false -p:EnableGameDebugging=false -p:BundleExtraAssemblies=false -p:GamePath=/placeholder/game/path -c "Debug"
gentle rose
#

I think dh did some stuff to do with github actions? @blissful panther

calm nebula
#

The game is a dependency for building yes

#

I know there was talk about making reference assemblies

astral eagle
#

Makes sense. Is there a list of which dlls are needed?

pine elbow
#

I need some assistance with my map mod I followed directions on how to make it but every time I try loading it into Stardew Valley content patcher gives this error

pine elbow
#

!log

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.

pine elbow
#

ok

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 12 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

uncut viper
#

do you have a stray " at the end of your content.json file?

#

!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.

uncut viper
#

you should upload it and share the link same as you did with the log

uncut viper
#

all of your patches should be inside your Changes field between the [ and the ]

#

not just copied and pasted at the end of your json

pine elbow
#

OH

uncut viper
#

the error is bc the } on line 5 was signalising the end of your json, but then there was more stuff after it

pine elbow
#

Thank you

harsh sail
#

I've been having some issues with this mod I've been editing; it's been doing some funky stuff that I don't understand. I went to validate the JSON and it did tell me there was an issue- but I don't understand what the issue is.

uncut viper
#

the line before it is missing a comma at the end

#

line 32

harsh sail
#

AH! i see, thank you. And, I'm not certain about this, but I believe for whatever reason the code is ONLY using lines with _(character name) at the end.

#

I don't know what's up with that.

brittle pasture
#

this looks like it's just an i18n file, it doesnt matter that the key name is, only how you're using them

#

what's your dialogue CP patch

harsh sail
#

Do you mean the error codes I'm recieving? Sorry, I'm a bit new at this. I know you're talking about content patcher.

uncut viper
#

what Selph means is that the game isnt the one using any of the lines here. the author of the original mod used them in specific places

#

simply adding more lines to this file wont do anything on its own

#

and whether or not they end with _characterName or not doesnt matter, bc the name is meaningless. the original author could have called them asdf1 through asdf10 for all the game cares

#

unless this is dialogue that is Loaded directly

#

so you need to find in the original mod where this dialogue file is used, whether its i18n or otherwise

thin fern
#

help i edited pelican town on tiled and tried putting it into the game but nothing is changing, i looked up a bunch of things and tried changing what could be wrong but nothing is working 😭

i put it in assets folder for my mod and its in the sdv mod folder. i also have a content.json and manifest.json

#

i tried watching different yt videos

#

so i could see how they did it but it wont work

brave fable
#

welcome aboard SDVpuffersalute we're gonna need some troubleshooting done. do you still have the game open with your mod installed? if so, travel to the town and type patch summary into the SMAPI console, send it to https://log.smapi.io/ and link the result here

#

it'll give us an idea of whether or not your mod's been loaded and applied, and maybe what went wrong

#

also if your youtube guide was released before about march 2024 it's likely out of date hahah

thin fern
#

dang i dont know a thing

thin fern
#

theyre all old

brave fable
#

!log in that case, just share your log file as-is SDVpufferthumbsup

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.

brave fable
#

yeah we generally don't recommend trying to use video tutorials, they're hard to keep up-to-date since youtube doesn't really alllow for edits and amendments

gilded thunder
#

hii, what would adding commands (such as $b and $k#$e) look like in a one-time dialogue command? would the following be correct, for example? :o


(dialogue after nth time are as follows)Another earth crystal? ... Thank you, these will help me stablize some mixtures...$1"```
#

i'm having trouble figuring out when the next command separation would apply... :<

calm nebula
#

Not like that, one second

#

Actually I'm gonna have to check the decompile to see how that behaves tbh

gilded thunder
#

thank you for looking into it c:

uncut viper
#

what happened to your 2yr old memory of the game

calm nebula
#

Hush

#

Tbh I'm not sure it's possible

#

I think it might search for the next #$e#

round dock
#

Also, what’s $kthonkid

calm nebula
#

You can use #$b#

gilded thunder
#

yeah, that's what i was kinda thinking as well, that's unfortunate

uncut viper
#

$k is kill

calm nebula
#

The dialogue parser is weird tbh

gilded thunder
#

will $k#$b will function essentially the same way, perhaps? :o

#

i'll be fine with removing the dialoguekill command, otherwise

calm nebula
#

I wonder if the GSQ query syntax would work instead

#

The | one

#

And use an $action to set the flag

#

Or maybe it searches for #$e# specifically and you can use $k

torpid sparrow
#

Hi, is there a command for the page of mod requests/suggestions?

calm nebula
#

!modideas

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your ideaβ€”modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

torpid sparrow
#

yippee thank u

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 1 C# mods and 0 content packs.

brave fable
#

ah, that'd do it SDVpufferthumbsup you haven't installed Content Patcher hahah

#

err actually, is AerynAndSerelia your own mod?

thin fern
#

hi oops

#

YEAH erm

#

i forgot to add it

#

i got on just now and redoing it

brave fable
#

are you writing your mod in C#?

thin fern
#

thats the only thing that i was pointed to when i started πŸ˜” so yeah

uncut viper
#

where did you get a content.json from without doing content patcher

#

do you want to be doing it in C#? bc you absolutely dont need to use C#

thin fern
thin fern
uncut viper
#

Content Patcher is the other way

#

C# mods dont use content.jsons

brave fable
#

ah yeah, to be clear, content.json is only going to be loaded by Content Patcher, and for a single mod (you can make multiple interacting ones if you like) it's either going to be a content pack OR a c# dll of your own making

thin fern
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26100.0, with 2 C# mods and 0 content packs.

uncut viper
#

so im confused what was even in your content.json if you're making a C# mod

gentle rose
#

I’m still confused about how your mod got both content.json stuff and c#, if a tutorial told you to do this could you link us to it please?

thin fern
uncut viper
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

uncut viper
#

discard all prior knowledge

#

start fresh with the top bullet point

thin fern
#

OKAY

uncut viper
#

specifically the wiki tutorial for content patcher

thin fern
#

so i should avoid

#

c#

#

?

uncut viper
#

its unnecessary if you just want to edit a map

#

overkill some might say

gentle rose
#

you don’t need to avoid it, it’s good for things that actually need it

thin fern
uncut viper
#

both are Content Patcher capable

gilded thunder
uncut viper
#

C# is basically for when you cant do something in Content Patcher, most of the time

lucid iron
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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:

uncut viper
#

otherwise, if you can do something in Content Patcher, you should probably just do it in Content Patcher

thin fern
uncut viper
#

that said i commend you for getting your C# attempt to actually compile and run

#

even if it is going to be discarded

thin fern
thin fern
foggy marsh
#

if i add multiple dialogue for a specific heart level, will it pick a random one or is there something else i need to do to have it random? say the character is on 4 hearts, there's 5 possible dialogue for 4 hearts, and it picks a random one each day

calm nebula
#

Please show your code

foggy marsh
#

uh i haven't written anything yet give me a sec

uncut viper
#

you cant add multiple dialogue for a specific heart level with the same dialogue key period, so that i18n randomisation is what you need to do

foggy marsh
#

oh i should specify i want it to be location specific

uncut viper
#

the same principle applies

vital lotus
#

Same principle apply

uncut viper
#

in JSON, if you try to add two things with the same Key inside the same section anywhere, it does not work. keys must be unique. one will be used and the rest will never even make it into the game

vital lotus
#

Button r u the one who made BETAS?

uncut viper
#

i am

foggy marsh
#

is it possible to do location, heart level and day of the week instead? i don't need it to be completely random, i just want to have more than 1 option for dialogue so it doesn't get boring

calm nebula
#

It's basically the same principle tbh

foggy marsh
#

like i want to combine these

opal tendon
#

when crediting another creator for a mod that you edit do you just say like "original base by so and so" or something like that?

calm nebula
#

The keys listed on the wiki are the ones that exist

vital lotus
calm nebula
#

You basically use the same i18n trick

vital lotus
#

And uses CP token on the i18n key to kinda combine those

calm nebula
#

Smth like "Saloon2": "{{i18n: saloon-2-{{DayOfWeek}} }}"

foggy marsh
#

this is too complicated for me rn i think 😭

hallow prism
#

Then do a break and return to it later

calm nebula
#

Could also probably look at an example, if anyone has a nice one handy

#

I think you could try looking at Realistic Writer Elliott

pine elbow
#

atarted decompiling today baybe six hours on the fucking grind lets goooooooooo

finite willow
#

this is funky

brittle pasture
#

the farmer is no longer restricted by the binary of a bool. they're still restricted by the slightly lesser binary of a 3-value enum though

pine elbow
#

also ive started to make my sprites

gentle rose
#

ternaries are more flexible than binaries tbf SDVpuffersquee

gentle rose
gentle rose
pine elbow
#

i know ittl take like 6 month to a year

tiny zealot
#

??? my decompiles take like thirty seconds what is going on over there

gentle rose
uncut viper
gentle rose
#

yeah I've never had it take longer than a minute

calm nebula
#

I'm assuming 6 mths to a year of understanding and comprehension

pine elbow
#

i meant reading the files

#

to understand and comprehend

gentle rose
#

ah, I see

uncut viper
#

well you dont need to literally read every file and class

calm nebula
pine elbow
#

well i know button

#

you need to understand repatble things until something clicks

#

im just saying ive made progress would syaing i"ve began tracing the files be more clear

pine elbow
gentle rose
pine elbow
#

i want to make a chillis mod

calm nebula
#

They be an int by default

#

But you can make them a byte if you're hungry

gentle rose
#

then why 255 genders

calm nebula
#

It's enough for anyone I would think /jk

gentle rose
#

not me

#

what gender do you think MAXINT is

pine elbow
#

a googol probably

calm nebula
uncut viper
#

peak enby is when you learn the Overflow Gender skill

gentle rose
#

...and does this imply there could be gender overflow-- dammit button

dusky sail
#

My gender exists as a quantum superposition actually

lucid iron
#

Gender ought to be flag enum

calm nebula
#

My gender is watching line distribution videos for virtual kpop bands

gentle rose
#

my gender is "why are you asking so many questions. suspicious"

calm nebula
#

We're going up up up it's our moment

pine elbow
#

is burger a gender

obtuse wigeon
#

it is if you lay between two halfs of a bun

trim sand
#

pfft

tiny zealot
#

missed opportunity to have one answer be simply "you may not"

uncut viper
#

absolutely do not do that

hard fern
#

Uh, you dont want to load the whole thing

calm nebula
#

Thinking of the scientific study that accidentally had "UNUSED" as a gender

uncut viper
#

for starters, that is not where most character dialogue is stored

ornate locust
#

Still don't do that

tiny zealot
#

in almost every case, if the asset already exists in the game's content files, using Load on it is incorrect

uncut viper
#

EditData is better

brave fable
#

hi @ivory plume , wondering if you're interested in a PR on Data Layers for UI peek-through? alternatively it could be Toolbar-style flip top/bottom position, but that'd be a little more in-depth if you wanted the buttons to remain aligned, since the legend info would need to then be drawn above the title scroll, etc

#

just noticed it's a little difficult to check collisions in the topleft of some locations

uncut viper
#

i mean your example isnt an example of editing someones dialogue

#

so you're kind of asking "aside from being incorrect, is my example of editing dialogue correct?"

#

the Target isnt something you can say "well besides that" bc the Target is the most important part

harsh sail
#

I have been researching all day, what is an I18n? My head is throbbing πŸ˜΅β€πŸ’«

uncut viper
#

maybe second behind the Action, depending on who you ask

hard fern
#

!i18n

ocean sailBOT
#
Creating Translation Capability

So you'd like to stop writing all of \"your strings straight in your content.json?\" and/or you'd like the capability to see all of your strings across all of your .jsons?
Introducing i18n!

  • How to make your mod compatible with other languages: stardewmodding.wiki.gg

  • The file where you can put all of your strings is called default.json, and it sits in a folder at the same level of your assets, named "i18n".

  • If you're converting from an older version of the game, there's a converter for ease-of-access.

Not to be confused with {{DynamicTokens}} since these require the specific {{i18n:<KEY>}} modifier

uncut viper
#

(i18n = internationalization = translations)

hard fern
#

i18n is short for -

uncut viper
#

(i18n is long for i)

uncut viper
#

also, Coop, EditData does not take a file

#

you'll want to look at the CP documentation for EditData

lucid iron
uncut viper
#

yes, i was. EditData does not take a file

#

Load takes a file, so FromFile is correct

#

EditData does not, so you do not use FromFile. you use Entries/Fields as a dictionary

#

you'll want to take a look at the CP documentation for EditData

vernal crest
#

Button brought up EditData because that's what you'll need to use

brave fable
# ivory plume Sure, that looks good!

cool! if the alpha pop-in on changing data layer view mode is an issue it'd need the Opacity field made public/internal, so let me know if that'd be breaking style, otherwise i'll push the PR in a moment

#

or if you need a new config option added for enabled/min-opacity

obtuse wigeon
harsh sail
#

Thank you! I finally found the I18n folder- but it seems to have nothing in it about the mod I mentioned earlier. I was told the file I uploaded looked like an I18n file. I'm sorry, I'm learning a lot of this from the ground up.

opal tendon
#

so if I edit someones mod who allows you to do that should I put both of us in the author section of the manifest or just myself?

#

like if you make a recolor

obtuse wigeon
uncut viper
#

i would just add yourself

uncut viper
#
"Entries": {
  "Elliott": "Whatever Other Name"
}
#

for a string to string dictionary it is this simple, actually, and Fields is interchangeable with Entries

#

Fields matters if you want to edit things that are not top level

tiny zealot
#

keep in mind that if you change Elliott's name in Strings/NPCNames, that will not edit direct references to his name in dialogue

#

yes, his name displayed on the dialogue box will change. but if (contriving an example) Leah says something like "have you seen Elliott lately?" it will still say Elliott because that's baked into the line she says

uncut viper
#

it will also ofc not change it if a mod uses Elliott's name directly instead of the tokenizable string

#

which may still happen in dialogue regardless of whether or not you change all the vanilla dialogues

opal tendon
#

when you recolor a mod how does saying that mod is required work do you need to say its required or do you just thank the person and say to check out them too?

brittle pasture
#

what do you mean by required, does your mod need theirs to function because you're recoloring their asset

brittle pasture
#

would your mod not function without theirs installed, the same way your mod depends on content patcher

opal tendon
lucid iron
#

I would give them a shout out but that rabbit sprite looks vanilla

opal tendon
twin wadi
lucid iron
#

Yeah possible, I didn't open up the file to check

brittle pasture
#

they roll their own spritesheet which is mostly copied from vanilla

#

no new poses, the separate sheet is probably because the vanilla wabbit sheet can't be used as-is

brittle pasture
#

(it's just technical pedantry is all lol)

opal tendon
#

okay ty everyone!

obtuse wigeon
#

Hi! when I run my mod that edits the moutain map i get the error that it shouldn't climb directories for the custom tilesheet, that's fine and all, the issue is I don't want to have multiple copies of the tilesheet each in a different folder, is there a better way than adding the tilesheet along side each map when the maps are in different folders?

vital lotus
#

@uncut viper Sorry I took so long to continue inquiry about BETAS. If possible would like to suggest.

  1. Trigger Action Action to make npc play animation.
    ActionName <NPC> <loop> <frames>
    Some use cases that comes to mind...
    On tile action, step into a place NPC salute or start dance (loop?)
    On dialogue, NPC shows off dance move or skate board trick
  2. GSQ to check NPC facing direction to determine the animation to play
ocean sailBOT
#

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"/>.

obtuse wigeon
# pine elbow !tilesheetclimbing

The issue is it's a custom tilesheet not a vanilla one, referencing vanilla ones is fine, my map uses them too and they work perfectly, I just don't want multiple copies of my custom tilesheet that's all

vital lotus
#

U should load ur tilesheet and reference it

vernal crest
# obtuse wigeon Hi! when I run my mod that edits the moutain map i get the error that it shouldn...

You only need the tilesheet to be in one location in order to Load it into the game's content. If your issue is wanting the tilesheet to be present when editing your map, there are several options for that. One is to have a working folder in which all your tilesheets are present and which you move the map to in order to edit it (you'd have one copy of the tilesheet present in that folder and one in your mod folder in a separate folder from the maps). Another is to symlink from your tilesheet folder inside your mod folder to your map folder while editing.

obtuse wigeon
#

don't I still need a png file in the same location as the tmx though if i load it like that?

vernal crest
#

While editing in Tiled, yes, you do. But you don't want it there when in game.

obtuse wigeon
obtuse wigeon
vernal crest
#

Yup basically.

obtuse wigeon
#

Brilliant, thank you!

#

Just tried changing it and now I get an error saying it can't find the tilesheet

[Content Patcher] Unhandled exception applying patch: (CP) Paved Valley > Include Maps/Mountain/Mountain.json > Paved Valley: Mountain.
StardewModdingAPI.Framework.Exceptions.SContentLoadException: (CP) Paved Valley loaded map 'Maps/Mountain/Mountain.tmx' with invalid tilesheet path 'zzz_pavedvalley_onlypath_tilesheet.png'. The tilesheet couldn't be found relative to either the map file or the game's content folder.

I'm guessing I've gone wrong somewhere in here:

        {
            "Action": "Load",
            "Target": "Maps/Mountain/zzz_pavedvalley_onlypath_tilesheet",
            "FromFile": "Maps/Assets/zzz_pavedvalley_onlypath_tilesheet.png"
        },
        {
            "Action": "EditMap",
            "Target": "Maps/Mountain",
            "LogName": "Paved Valley: Mountain",
            "FromFile": "Maps/Mountain/Mountain.tmx",
            //"FromArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 },
            //"ToArea": { "X": 22, "Y": 61, "Width": 16, "Height": 13 }
            "PatchMode": "Overlay",
            "When": {
                "HasMod |contains=FlashShifter.StardewValleyExpandedCP": false,
            }
        },
#

The tilesheet is in "[CP] Paved Valley/Maps/Assets/zzz_pavedvalley_onlypath_tilesheet.png" and the map is in "[CP] Paved Valley/Maps/Mountain/Mountain.tmx" is that helps

uncut viper
vernal crest
uncut viper
#

(as in, load it with that prefix. not literally just Maps/)

obtuse wigeon
#

Oh gotcha, I thought it had to be in the same directory as the .tmx itself, I'll give that a go now, thank you both!

vernal crest
#

The game can't see where your .tmx file is

uncut viper
#

all tilesheets must always* be loaded to Maps/<tilesheet> to be properly usable

*not always dont worry about it

obtuse wigeon
#

Gotcha, always load where map is loaded, not where map is stored

void aspen
#

Good morning everyone!!
Was wondering of where exactly all the player data located, their skill levels, professions and such

hard fern
#

player data? thats stored in the save πŸ€”

obtuse wigeon
#

Just want to make sure I am understanding the Content Patcher docs correctly, when I want the tilesheet to change with the season I just add {{season}} into the "FromFile" section and not add a "When" condition

hard fern
void aspen
void aspen
vital lotus
obtuse wigeon
void aspen
twin wadi
#

yay! my npc is spawning... teddy spotted in 4k πŸ‘€

finite willow
#

this has been bugging me, just where are these trees located at?

hard fern
finite willow
#

gotcha, ty

obtuse wigeon
#

I'm looking for a way for a Content Patcher pack to output something like <MapName> Loaded" to the console when a map is loaded/reloaded, I want to easily see which map is loaded when required mods are present instead of going to each map manually, I already have "LogName": "Paved Valley: Mountain", in the "EditMap" section but it doesn't output that to console when it loads like I thought it would

blissful panther
# astral eagle Quick question... Does anyone have an example of GitHub actions CI for their mo...

Iro's right!

You can see the current workflow I have in place: https://github.com/AlanDavison/StardewValleyMods/blob/master/.github/workflows/manual-release.yml

And the little companion script for it: https://github.com/AlanDavison/StardewValleyMods/blob/master/Build/verify_project.py

The workflow pulls in the required reference assemblies from another repo, sets that as the game path for the build, and builds from there.

And the one tiny csproj related change just to dump the version to a file: https://github.com/AlanDavison/StardewValleyMods/blob/97e2eb8a92da4cd547065731f42b45477358db96/Directory.Build.targets#L18

I am working on a fully drop in replacement action, though.

Summary: The short answer to your question though is that you just need the reference assemblies in place to pass as the game directory.

vernal crest
obtuse wigeon
#

Is the trace hidden from view within the smapi console then? if it is, is there a way to enable it so that I don't have to upload the log to the log parser?

vernal crest
#

Although on rereading your message I'm wondering if you want to know which .tmx file was present in the FromFile field for any particular edit and that you cannot see.

royal stump
#

the alternative installer "SMAPI [version] for developers" just toggles that setting too, incidentally

obtuse wigeon
#

for more information I'll re write because the wording may not have been the best, my mod that adds pathways around the valleys uses content patchers overlay feature, I also want it to support various mods like SVE, Ridgeside, and East Scarp, some of these areas are heavily changed from vanilla meaning I have different tmx files to overlay, e.g. vanilla_Town, SVE_Town etc. To make sure I have the code right at a glance instead of going around all the areas, when a specific map loads, I would like it to output something along the lines of <MapName> Loaded when a map is overlayed, so it would be like SVE_Town Loaded

obtuse wigeon
vernal crest
#

No, it won't do that

lucid mulch
#

you also can setup a user config file that sets DeveloperMode to true separate from the smapi install

#

or an environment variable

vernal crest
#

It will show you when the target is loaded or edited but it won't tell you what tmx file you used to do it with

#

(I'm pretty sure, anyway. I've never seen it and I look at trace logs pretty often.)

lucid mulch
#

smapi and by extension content patcher in the asset pipeline don't edit individual tmx files (and the vanilla map isn't a tmx anyway), you are editing an entry in the asset pipeline (Maps/Town)

obtuse wigeon
lucid mulch
#

the trace logs will say that the content pack edited the given asset in the pipeline.
Content Patcher verbose logs (enabled via smapi config and optionally filtered to just content patcher) can get more details, but I'm hazy on it because I never use it

#

but even that verbose log wont say that you edited sve town, as there is no concept of sve town, just town when sve is loaded

vernal crest
lucid mulch
#

the verbose logs will say the exact patch (logname) that edited the specific asset

obtuse wigeon
vernal crest
#

Oh, will it? That will be what they are after then. Ah, right, I thought developer mode and verbose logging were the same thing but I see in the config they're not.

obtuse wigeon
#

I'll have a browse through the smapi config and add verbose logs to the new config I made

vernal crest
#

I should have a look at verbose logging, I've never examined it before.

lucid mulch
obtuse wigeon
#

I am seeing a LOT more logs when enabling dev mode and verbose logs, this is going to be fantastic for figuring things out

lucid mulch
#

its for stuff that is otherwise too verbose or expensive to bother logging in the first place that you need to opt-in to it ever happening

#

tbh I haven't touched verbose logs in years, pretty much always a better option

obtuse wigeon
#

verbose logs are exactly what I needed, I can easily see which specific edit is loaded

lucid mulch
#

which patch summary would say

obtuse wigeon
#

Are SMAPI logs generated on the fly or only when SMAPI closes?

lucid mulch
#

real time

obtuse wigeon
#

I mean the actual log txt file itself not the logs in the console

#

perfect

lucid mulch
#

real time

obtuse wigeon
#

thank you, I thought it must've but wasn't sure

vernal crest
#

Why are you wanting this instead of checking the patch summary?

obtuse wigeon
#

I didn't know what patch summery was, I thought it was the console log but I've just found out it isn't

#

it's formatted so much nicer too!

vernal crest
#

Ah I see. Yeah it shows an overview of the whole mod (or mods if not filtered to a significant mod) including its tokens and all its patches. It shows which patches have been applied.

#

Also handy for seeing which mail flags and CTs you have

#

In fact, that's what I use it for the most. I just filter it to a nonsense mod so it doesn't clutter the log with any info about patches.

obtuse wigeon
#

That's perfect bc I'm having issues on my steamdeck where a mod just stops fully with no errors

#

is it only for content patcher packs or for any mod? C# included?

lucid mulch
#

patch summary is a content patcher command for content patcher packs

obtuse wigeon
#

gotcha , wouldn't work with the mod issue on my steamdeck, oh well

lucid mulch
#

verbose logging probably wouldn't either

vernal crest
obtuse wigeon
#

Very helpful, thank you

vernal crest
#

A fair number of C# mods come with their own troubleshooting commands so it might be worth checking the documentation

#

Other than that, the only other command I know of for exploring C# mods is harmony_summary.

blissful panther
#

(You can also just enter help to get a list of all mod-provided commands!)

obtuse wigeon
#

Gotcha, I'll have a look at UI Info Suite docs in a little while to see if I can solve my issue

#

The more I learn about SMAPI and Content Patcher, the more I absolutely love them

thin fern
#

what do these mean SDVpetbearsad

ocean sailBOT
obtuse wigeon
#

nope, wrong thing

thin fern
#

😭 gelp

obtuse wigeon
#

They are what the game usees to spawn foragables, grass, debris etc

small pivot
#

anyone know how to remove pond quests for certain fish via modding? I can't really find any tutorials for this =[

obtuse wigeon
#

they shouldn't be touched in other words

#

they also don't display in game

thin fern
#

yeah

#

wait can i know specifcally what the question mark does

obtuse wigeon
thin fern
#

okay TYSM

brave fable
obtuse wigeon
#

Why aren't these tiles being place? if I modify any other area they get placed, this specific spot however does not, the rail tracks are on a custom tile sheet along with the edge of the paths on the Back20 layer, same as the edge of the paths, making edits on the .tmx file works and loads in correctly so I'm not missing anything in the code

small pivot
obtuse wigeon
#

When placed directly on the Back layer, in game it just turns into the void

lucid iron
#

Your patch mode may need to be Overlay

obtuse wigeon
# lucid iron Your patch mode may need to be Overlay

It is, which makes it more confusing

        {
            "Action": "EditMap",
            "Target": "Maps/Railroad",
            "LogName": "Paved Valley: Railroad",
            "FromFile": "Maps/Railroad/Railroad.tmx",
            "PatchMode": "Overlay",
            "When": {
                "HasMod |contains=FlashShifter.StardewValleyExpandedCP": false,
            }
        },
hard fern
#

Hmm

#

Your rails are on the layer above your paths, right?

brave fable
lucid iron
#

Is your tilesheet png wrong perhaps?

#

Can check what the tile id is in game with lookup anything

#

And then compare with tiled

obtuse wigeon
obtuse wigeon
lucid iron
#

You need tile lookup on

obtuse wigeon
#

Thats the 2 tiles in photoshop, transparent backgrounf but clearly has visible parts

small pivot
obtuse wigeon
lucid iron
obtuse wigeon
#

Patch export includes the rails

brave fable
small pivot
obtuse wigeon
small pivot
#

the wiki doesnt really specify where pond data needs to go

lucid iron
#

It's also possible it's loading from same folder which doesn't go through content pipeline

obtuse wigeon
#

okay it works with the tile sheet removed from the folder, the rails show up. but not when its actually ther

lucid iron
#

Maybe restart game just for good luck

vernal crest
lucid iron
#

Ah that's what i suspected then cool

obtuse wigeon
#

it was in the same folder but I restarted the game fully twice thinking that was the issue, weird?

obtuse wigeon
brave fable
thin fern
#

i have a question about smth, i edited the town map but i cant walk in the section i cleared. i have it on the same layer as normal pathways (back) for the player but it doesnt let me pass through, idk if theres a barrier cause i cant really tell. i got rid of all the other layers that could be stopping me from walking in

royal stump
# small pivot the wiki doesnt really specify where pond data needs to go

If you haven't already unpacked the game's data files, there are instructions here: https://www.stardewvalleywiki.com/Modding:Editing_XNB_files#Unpack_game_files
They usually have specific examples for data formats, e.g. it'll have a Data/FishPondData.json you can read. Here's the first entry as an example for where PopulationGates goes & how it looks:

{
    "Id": "Lionfish",
    "RequiredTags": [
      "item_lionfish"
    ],
    "Precedence": 0,
    "MaxPopulation": -1,
    "SpawnTime": -1,
    "BaseMinProduceChance": 0.15,
    "BaseMaxProduceChance": 0.95,
    "WaterColor": null,
    "ProducedItems": [
      /* trimming this part out because it's very long */
    ],
    "PopulationGates": {
      "4": [
        "(O)829 3",
        "(O)832 1"
      ],
      "6": [
        "(O)834 1"
      ]
    },
    "CustomFields": null
  },```
lucid iron
#

Possible invisible tile

thin fern
fathom rapids
lucid iron
#

Erase it in tiled but first check what flavor of not passable it is

thin fern
#

theres no passable

#

that i saw

brave fable
#

it's pretty straightforward to try and add new fishponddata edits into the same file, you'd just want to go to the Changes: [] list and add in a new {} entry that'd probably look something like this at its simplest:

{ 
  "Action": "EditData",
  "Target": "Data/FishPondData",
  "Entries": {
    "Kehaan.FishBonanza_Butterfish": {
      "Id": "Kehaan.FishBonanza_Butterfish",
      "RequiredTags": [
        "item_kehaan.fishbonanza_butterfish"
      ]
    }
  }
}
#

all of those 0/-1/null fields should be their default values, so you don't need to rewrite them here unless you're setting it to something new

#

i believe that's the correct RequiredTags format, correct me if i'm wrong

vernal crest
# thin fern how do i get r id of it plz πŸ˜”

Make sure you're on the buildings layer and then hover over the tile. Down the bottom left it will say [empty] if there's no tile in there. If there's a number between the square brackets instead it means you have an invisible tile on the buildings layer.

fathom rapids
thin fern
#

thanks everyone i have never done this, it sucks πŸ˜”

small pivot
brave fable
#

no worries! play around with it, follow examples where you can, and come here if the whole thing explodes and falls into fishy pieces

obtuse wigeon
#

How do I remove a small bush from a map? I've removed the tile on the Paths layer, however the bush is still there and I can't chop it down

lucid iron
#

You need rtf

#

Bushes are terrain

brave fable
lucid iron
#

There's a BETAS traction u can use

obtuse wigeon
obtuse wigeon
brave fable
#

!rtf

ocean sailBOT
#

Reset Terrain Features (https://smapi.io/mods/#Reset_Terrain_Features) is a mod that lets you reset, clear, or generate everything that spawns on a map using an in-game menu. That's especially useful when changing maps mid-save, as the debris will otherwise use the old layout (causing things like trees in the water or bushes blocking exits).

brave fable
#

rtf.

hard fern
#

Rtf

obtuse wigeon
#

Ahh gotcha, so theres no way to remove them from the map when making changes without another mod? Is that the same case as a a user who starts a new save with the mod enabled?

hard fern
#

If they start a new save on a map that changes the bushes its fine

#

But for players installing on a pre existing save need rtf

#

Since the paths have already been generated

obtuse wigeon
#

Okay gotcha, I'll kep that in mind when I make the mod listing

small pivot
# brave fable no worries! play around with it, follow examples where you can, and come here if...

i added this at the end of the content.json file

{
"Action": "EditData",
"Target": "Data/FishPondData",
"Entries": {
"Kehaan.FishBonanza/american_lobster": {
"Id": "{{ModId}}_American_Lobster",
"RequiredTags": [
"Kehaan.FishBonanza/american_lobster"
],
"SpawnTime": 3, "ProducedItems": [
{
"RequiredPopulation": 3,
"Chance": 0.4, "ItemID": "812",
"MinQuantity": 1,
"MaxQuantity": 3
},
{
"RequiredPopulation": 10,
"Chance": 1.0,
"ItemID": "812", //812 is fish roe, will produce roe for your particular fish
"MinQuantity": 1,
"MaxQuantity": 5
},
],
}
}
}

its all errored up now =[

brave fable
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.

obtuse wigeon
fathom rapids
#

rip

#

well, theres a lot of mods that can help. Let's Move it is another standout

obtuse wigeon
#

I usually play with destroyable bushes, it's just for people who add it to a save already made

hallow prism
#

most people are familiar with RTF

#

there's a mod that allows to remove bushes mid save with trigger action

uncut viper
#

if you dont mind a dependency then BETAS can help as Chu mentions but otherwise yeah people who change modlists md-save are probably used to and/or expect weirdness

hallow prism
#

but it's a bit advanced stuff

uncut viper
#

especially if they knowingly install a mod that changes the entire town walkways

#

not exactly a tiny change

obtuse wigeon
#

I'd rather not add another dependancy, but I will add a note to the mod page

obtuse wigeon
lucid iron
#

You can make BETAS an optional dependency

#

Since it's just a trigger action that fires one time

#

Compared to rtf u get more control over which bushes to yeet

fathom rapids
foggy marsh
#

am i stupid? just to add, i've been following a tutorial... i have quite literally zero idea what i'm doing aside from that

i followed the entire tutorial and didn't skip any steps though so idk what's happened :,)

devout otter
#

Have you Load the portrait?

#

And which tutorial did you follow?

foggy marsh
foggy marsh
lucid iron
#

Your npc internal id shouldn't be Keith

devout otter
#

You Load your Portrait as Portraits/Keith, but your NPCs internal name is cheembs.KeithMod_Keith.

foggy marsh
#

oooh okay

#

it told me to replace it with the character name