#making-mods-general

1 messages Ā· Page 154 of 1

rancid temple
odd bloom
#

But I am tryna make it into a loved gift

brittle pasture
#

not possible then

odd bloom
#

oof

brittle pasture
#

gifts dont support item queries

#

or flavor checking

odd bloom
#

hmm how about recipes?

brittle pasture
#

you can use flavored items in ingredients with SpaceCore

#

crafting flavored items require Extra Machine Config or Better Crafting

#

either way it's not supported in vanilla crafting

odd bloom
#

ooh dang thanksSDVpufferheart

brittle pasture
#

(you can see that they were not really meant to be used outside of machines)

odd bloom
#

is it just the usual <item id> <amount> thing?

brittle pasture
latent mauve
#

Friends, am I doing i18n correctly?

#

(I know the |default= probably isn't necessary in this case, but I remember reading someone talk about weirdness with default and en recently?

brittle pasture
#

you can also see Cornucopia Artisan Machines for examples, they override some vanilla recipes to be "accepts any cheese item" instead of strictly cow cheese

brittle pasture
uncut viper
#

(happy new year from my timezone makin-mods SDVpufferparty)

versed wyvern
#

At the very least my first foray into an i18n didn't need that part and I haven't seen any issues

tiny zealot
#

anybody know or have around a method to check whether an Item is the one held by the mouse cursor?
a frustrating number of menu classes have their own heldItem so it seems like it will take a bunch of tedious checks to get whatever may be held right now

rancid temple
#

Remind me in 10 hours to test wide doors

patent lanceBOT
#

sure thing, bud (#6450479) (10h | <t:1735744188>)

rancid musk
#

There's no global "item held by mouse cursor" concept, which is why lots of menus have their own. You pretty much need to check for heldItem.

uncut viper
#

might i suggest just getting the current activeclickablemenu no matter what class it is and just checking for the existence of a heldItem field

#

via reflectiony methods

#

assuming they all have that same name or the same couple names for it

tiny zealot
#

thanks

rancid musk
#

Wait that was hovered item not held item. I am tired and a bit off my game lol

#

Same idea though. Reflection to check for the field on custom menu types. Hard-coded logic for vanilla menus. And make sure to check for GameMenu to get the current page.

uncut viper
latent mauve
#

ah, I see

uncut viper
#

which means if you're intending to use en.json it'll use default.json instead

gaunt heath
#

You won

vernal crest
#

Roku this is amazing! Sideways doors!

brittle pasture
#

waow... doors defeated...
maybe some day Robin will be dethroned as well (nudge, nudge, wink)

uncut viper
#

whats wrong with robin

brittle pasture
#

you can't have a builder NPC other than Robin

#

that's it actually, I just like bringing it up randomly

uncut viper
#

what about the wizard?

brittle pasture
#

he doesn't teleport to your farm and pretend to smack a building with hammers

uncut viper
#

oh thats what y ou mean

#

i thought you meant the builder field on a building lol

#

ill counter your fun fact with my own: only the wizard is allowed to build a Gold Clock

#

if anyone else builds it the clock doesnt work or get drawn properly

brittle pasture
#

dang that's a shadow monopoly right there

light bramble
uncut viper
#

(minor correction it actually might still WORK but it definitely wont be drawn correctly, it'll be missing the clock face)

velvet narwhal
#

i coulda sworn roku defeated that too

#

oh maybe not

uncut viper
#

that just changes where robin is positioned

brittle pasture
#

no, chu defeated the Robin/Wizard duopoly on construction and roku made the woman actually stand in a sensible position for modded buildings

uncut viper
#

not who robin is

velvet narwhal
#

marnie dethroned now too

brittle pasture
#

yes, it was valiant effort on chu's part

velvet narwhal
#

i need more ridiculously useful ideas SBVPensiveButt

#

maybe i piss someone else off with the way i'll go about a custom data asset for cooking/crafting recipes SDVpuffersquee

brittle pasture
#

are you throwing another transpiler on top of clickCraftingRecipe

velvet narwhal
#

though it's not necessarily something i need for my expansion so i don't know how much effort i'd put into that one

brittle pasture
#

side note, but now that I installed LOC for my current save maaaaaybe I'll have motivation for adding integration with EMC's flavored crafting feature
(or I just tell the users to install Better Crafting idk)

latent mauve
#

Hooray, Pelican Valley Loft NPC Apartments update is live!

rancid musk
#

I for one welcome all the downloads from dependencies and definitely recommend the Better Crafting route. gooseBop

latent mauve
#

Just in time for the New Year over here xD

rancid musk
#

-# Can't believe I haven't updated my mods since last year I am so lazy

light bramble
#

Ok, so this is my config schema for my mod https://smapi.io/json/none/616e8e15489543eb90547c9167ade560
And I want to know if I would need to do multiple edit datas to account for the changing of editibility and price based on the config options chosen or if I could just do a bunch of whens. So for example:

{
    "Action": "EditData",
    "Target": "Data/Objects",
    "Fields": {
      "426": {
        "Price": 250,
        "When": {
          "Cheese amount": 2
        }
        "Edibility": 10
        "When":{
          "Cheese amount": 2
          "Balance Regen": true
        }
        "Price": 150,
        "When": {
          "Cheese amount": 4
        }
        "Edibility": 5
        "When":{
          "Cheese amount": 4
          "Balance Regen": true
        }
    }
}```
uncut viper
#

you can only have one When condition per patch, not per edit in the patch

#

so you can control that single EditData with a When condition, but not individual fields

#

you would need multiple EditData patches to account for different config

light bramble
#

Ok that's what I wanted to know

#

Thank you

royal stump
#

you could probably make a dynamic token for* those values, or use queries to do actual math as Selph mentioned

velvet narwhal
#

would price let you get away with the dynamic tok-

uncut viper
#

i was also going to suggest a dynamic token with a query potentially

#

but itd depend on how your config is set up

#

(for the queries anyway. should probably be fine for dynamic)

light bramble
#

I mean idk how I would do it for the edibility...I could do it for the price since I just want to devide the price of the large item by the number selected in Cheese amount

#

The issue there is decimal places and rounding issues...

#

hence why I kinda wanted it hard coded?

uncut viper
#

CP has a {{Round}} token

rancid musk
#

Hmm. Maybe I should expose Better Crafting's option to use all chests everywhere via config now that Better Chests is delisted. šŸ¤”

velvet narwhal
rancid musk
#

Got some people talking about that in my comments, and then someone asking for compatibility with a fork of an old aedenthorn mod to craft from containers. ... yeah, probably should.

#

Don't want users using weird patches when the native feature is literally already there and just not exposed

light bramble
#

but it doesn't say about rounding to the nearest 10... I mean I can easily just handle the nearest 1's place

#

so that works for the price. Now just to see if I can make something work for the edibility...

#

Wait! no I have another question >_< If I wanted to use the numbers (since the Cheese amount IS a number) how would I do that? Like would it be

"Price": "{{Round: 500/{{Cheese amount}}}}
#

is...is that right?

uncut viper
#

you would need to put 500/{{Cheese Amoubnt}} in a query token

light bramble
#

so
"Price": "{{Round: {{Query: 500/{{Cheese amount}} }} }}"

uncut viper
#

seems fine to me

light bramble
#

Time to forward/link these helpful answers in my thread lol

tender bloom
#

To round to the nearest 10: divide by 10, round, multiply by 10

#

I think you can make the round query do nearest 10 natively, but since you already have 500 on the inside, it’s super easy to just change that to 50 and multiply the final rounded number by 10

light bramble
#

I'm honestly not gonna worry too much about that.

#

Having it have small little extra bits here and there is actually kinda nice XD

#

but I will be having it round down for price and up for editibility

#

which should be this if I am reading the github correctly
"Price": "{{Round: {{Query: 500/{{Cheese amount}} }}, down }}"

#

the real crazy thing is how quickly the health and energy regen plummets

#

like cheese normally has edibility of 50, but with what I want to do, it would go 50, 13, 9, 7

#

Like that's crazy

#

so edibility will be much different than price lol

fervent horizon
#

First release of the new year?

light bramble
#

Or better yet...I won't touch edibility lol

latent mauve
#

I got my mod release in just before midnight xD

light bramble
#

It'll make the cheeses kinda OP but idk

#

Y'all are living in the future. it's it's 2024 for me

fervent horizon
#

Been 2025 for half an hour

latent mauve
#

^

fervent horizon
#

Been laying in bed for the last 3

light bramble
#

It's 10:32pm 12/31/2024 for me

latent mauve
#

So far the future is making me sleepy

fervent horizon
#

I'm old though, so it's ok

tender bloom
#

It’s still 2024 here!

#

It’s feeling like bedtime soon though

velvet narwhal
light bramble
light bramble
velvet narwhal
#

not my mod

#

it's another cheeto's

light bramble
#

ah

latent mauve
#

I mean, technically, there are docs, but it's on the github

velvet narwhal
#

roku hasn't written the door docs yet that's why KEK

light bramble
#

Also how the HECK do you make the text the link? I tried and it didn't happen 😭

latent mauve
#

ahhhh, for if/when the doors get officially added to docs, I see

velvet narwhal
#

if roku won't write it i can infer just from the custom asset json tbh

#

and then i can write it fimger

light bramble
#

is this correct syntax?????
"Price": "{{Round: {{Query: 500/{{Cheese amount}} }}, down }}"

velvet narwhal
#

i just highlight and paste the link

uncut viper
#

the CP docs will have the syntax information

#

ive never used round before, so i dont know it

#

i just know it exists

tender bloom
#

I use patch parse when idk if it’s right

light bramble
#

???????

tender bloom
#

CP troubleshooting docs has more details

light bramble
#

patch parse???

tender bloom
#

!patchparse let’s see if this is a command

velvet narwhal
velvet narwhal
#

patch summary?

#

ah that thing

tender bloom
#

Patch parse is for checking if your snippet of query stuff is parsing right

old edge
#

how does the shipping bin work? in the game code?

#

is it a proximity sensor

vernal crest
#

Patch parse can be so handy once you figure out how to use it

light bramble
#

so I tried doing the patch parse

#
[Content Patcher]
Metadata
----------------
   raw value:   assets/data/itemBalances.json
   ready:       True
   mutable:     False
   has tokens:  False

Diagnostic state
----------------
   valid:    True
   in scope: True
   ready:    True

Result
----------------
   The token string is valid and ready. Parsed value: "assets/data/itemBalances.json"```
#

I think I did it wrong...

blazing magnet
#

Hi, sorry to interrupt. I'm trying to add dialogue behind heart levels and need to know what key to use. The example on the wiki was Sun4: "Hey, @.#$e#How's your day going?", but I'm unsure which part of the tag is referring to the heart levels. If anyone could point me in the right direction, it would be much appreciated.

light bramble
#

and after looking in the game...this isn't working...

#

this number should be 62....

#

I'm just gonna do whens...this is too hard.

velvet narwhal
#

[[Modding:Dialogue]]

light bramble
#

So...when I do the when for this is it like this?

{
            "LogName": "Price Changes!",
            "Action": "EditData",
            "Target": "Data/Objects",
            "Fields": {
                "424": {
                    "Price": 250
                },
                "When": {
                    "Cheese Amount": "2"
                }
            }
        }```
#

Also, how do I make sure the GMCM makes the selection a drop down or slider?

tender bloom
#

the patch parse lets you check whether your {{}} stuff is right

light bramble
#

I think imma just do it manually with everything...

#

Additionally...How do I remove the slider???

#
        "Cheese Amount": {
            "AllowValues": "2, 4, 6, 8",
            "Default": "2",
            "Description": "The amount of normal cheese you get when crafting from a Large Cheese",
            "Section": "Splitting"
        },
        //crafted goat cheese amount
        "Goat Cheese Amount": {
            "AllowValues": "2, 3, 4, 5",
            "Default": "2",
            "Description": "The amount of normal goat cheese you get when crafting from a Large Goat Cheese",
            "Section": "Splitting"
        },```
is it because Goat Cheese Amount is consecutive numbers?
tender bloom
#

nah it's because it doesn't know the config values

blazing magnet
tender bloom
#

plus in some number there and see if patch parse is happier

velvet narwhal
light bramble
#

ok so I need this "{{Round: {{Query: 500/{{Cheese amount}} }}, 0, down }}" XD

tender bloom
#

no, I meant replace {{Cheese amount}} with what you expect that to be

light bramble
#

I did

latent mauve
#

When are you defining the {{Cheese amount}} dynamic token?

light bramble
#

and it said errors: digit count 'down' can't be parsed as an integer value.

latent mauve
#

If it's not early enough, that will give you that error.

light bramble
tender bloom
#

Ahhh I see, then yes

#

You’re right

light bramble
#

ok, but then. how do I fix the slider vs dropdown????

tender bloom
#

That’s a GMCM/CP thing

light bramble
#

but is it because I have sequential numbers???

tender bloom
#

Unfortunately it’s bedtime for me, but I suspect it has to do with how many acceptable values there are?

#

Or possibly you need to set only min and max?

#

I usually only interact with this from C#

light bramble
#

Nexus being slow...

velvet narwhal
#

Min max adds the slider, I assume since you have one as incremental and the other as skipping that you have your answer. It will automatically detect to slide since it can have evens and odds for increments but otherwise will decide for a bool, or a dropdown since it is reading it as a normal string

light bramble
#

I want them both to be drop downs....

#

uggggh

#

eh screw it. I'll make them both sliders...

#

bed time for me. XD

versed wyvern
#

Just out of curiosity, has anyone ever tried to give Krobus a schedule? Had the random thought it could be neat if he came out of his sewer late at night or something

#

But that was followed by the thought that there could be something weird and hard-coded with him since he's a shop

hard fern
#

marriage schedules are cursed

#

so if he did, it would have to be only non-married

#

"married" i say

latent mauve
#

Soooo, in theory, if I wanted to make an elevator, could I use a fake NPC combined with the dialogue action and BETAS WarpPlayer trigger action to choose and then warp to specific floor?

#

I cannot do C# so I'm trying to brainstorm how this would be feasible without it.

hard fern
#

šŸ¤” robin and marnie all run shops though, and they still have schedules... maybe krobus is just weird

versed wyvern
#

It's entirely possible he can be totally functional and I'm overthinking it, but he just sticks out since he literally never moves and doesn't have a shop counter

hard fern
#

Well, the "counter" might be krobus himself? I would have to check

latent mauve
#

My other silly elevator idea is to make a "shop" for the elevator and when you 'purchase' a floor for the price of free, you have an ActionOnPurchase to BETAS trigger action warp you. Which just removes the fake NPC part, really

#

But that's needlessly complicated since it involves adding an item

#

I'd almost rather just make a doorman later on.

rancid musk
#

Hmmm. I wonder how awkward that would be with better crafting data recipes. Probably need a useless item to give the player and I don't think I've actually tested a recipe with no ingredients?

latent mauve
#

Honestly, I'm happy to try to workshop any way to get an elevator in my apartment building that doesn't require me to learn C#

drowsy pewter
#

Does anyone know a CP token or GSQ that would somehow return either the number of farmhands OR cabins built or anything else related to # of people in multiplayer?

rancid musk
#

Though, is there a reason not to just use a custom mine cart network?

brittle ledge
#

and only one, because if you do it at both ends you'll make a loop and that causes NPC schedules to go wonky

#

(I considered one for my WIP NPC, but I did not want to gamble on potentially borking everyone else's schedules SBVLmaoDog )

versed wyvern
#

Not a problem I would have anticipated but also one that makes perfect sense ThinkO_O

#

There IS a vent right behind him and goddammit now I'm thinking of Krob-sus

inner harbor
versed wyvern
#

Ooh, that's fascinating

#

So if I had gotten this thought a year ago it wouldn't have been doable

#

At least not without a lot of extra complicated steps

devout otter
#

Speaking of, is Krobus now the only character with a portrait not modded with a schedule?

stable grotto
#

should I update my code or not?
currently if someone runs SVE with Vibrant Pastoral Redrawn but without the Expanded add-on they see this patch pop up
I accidently put the add-on's ID instead of SVE's in my query which kinda results in this little tell for a missing mod āš–ļø

            "Name": "Version",
            "Value": "Vanilla"
        },
        {
            "Name": "Version",
            "Value": "Expanded",
            "When": { "HasMod": "VibrantPastoral.Expanded" }
        },```
little crag
#

When regarding GSQ - "PLAYER_STAT <player> <stat name> <min value> [max value]" : Whether a stat counter for the specified player(s) has a value between <min value> and [max value] (default unlimited) inclusively. Is there a number or something that I can enter that makes the max value that's considered infinity?

I'm trying to fix a issue in my mod, Shop Tweaks, and seeing this GSQ seems to be a good solution from the other GSQs I've checked out, I'm just worried that if I set the max value a number and once the player hits that number the item in the shop will disappear.

gentle rose
little crag
gentle rose
little crag
#

It's helping my modding motiviation XD

gentle rose
#

nice! the first time I learned c# was after I did some personal stardew modding last year so I get you

rancid temple
#

On the wiki sometimes square brackets also denote a group that can be repeated, in order to check more things in one GSQ for example, usually there's a plus sign at the end of those

inner harbor
devout otter
#

Oh, I meant "not modded with a schedule" as in nobody has made a mod that added schedule for him yet.

#

There are mods for the rest, right?

shut edge
#

anyone know why my hay is being deposited in the wrong spot?

#

does it not just check for trough tiles and fill them?

#

ambientlight and path lighting is also refusing to work on this map, i'll try manual placement next but wtf

#

oh right

#

i know what's wrong with the trough

#

gotta set it in the tilesheet oops

hoary lake
#

mod idea: you can "give" a npc a farm. how they use that farm depends on their speciality...
Emily might grow mixology stuff while Gus might make a animal farm that produces a variety of produce. Haley might grow flowers...or something. (Haley can do whatever haley wants)

#

maybe you are giving one of the modded farms and you get something in return like a portion of the income or the crops so you can start cooking without having to worry about growing the ingredients.

fossil osprey
#

Oooh, that sounds nice

Now that I think about it, that could be cool if the "spouse patio" was a little plot of farm so your spouse can actually do things there?

hoary lake
#

maybe if your friendship level is high enough, you can make one suggestion a season of what they should plant (so that you have it prepared for cooking)

unreal fjord
hoary lake
#

people were saying in modded farmers how they rarely use the ridgeside farm becuase it is too much to manage.

#

so giving it to one of the npcs sounds like a decent idea!

unreal fjord
#

Thats a great idea too, I haven't started that farm either lol

#

The mod could check for any additional farms so you can give them a choice of farms too.

drowsy pewter
#

TIL you can drag a snippet of text from one notepad++ window to another and it copies it into the new window

rancid temple
#

That's neat, I kinda hate the text dragging feature but that's mostly because I accidentally do it when I don't want to SMCKekLmaoDog

rigid musk
#

you can

#

oh my god... catpeek

tight rivet
patent lanceBOT
twilit briar
#

Hi, I'm trying to install smapi for android but I get an error of Length=3827; index =3827, I can't find the problem, I have the version of stardew 1.6.15

tender bloom
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

vernal crest
#

Is the language spoken in the Ferngill Republic named anywhere?

drowsy pewter
#

nope

iron ridge
#

(context: big nexus markdown update and me being annoyed at the types)

hard fern
vernal crest
#

Awkward sidestepping to avoid calling it "English" it is!

hard fern
#

I know fantasy games and stuff have just a general language that everyone can speak, alongside specific languages like elvish and such

tight rivet
#

People in the Ferngill Republic speak Human, obviously.

hard fern
#

What language do shadow people speak šŸ¤”

tight rivet
#

ShadowPeople

vernal crest
#

Yeah but if it isn't named in vanilla lore I don't want to give it a name even if it's just "common" or whatever because that's adding my own lore to my mod that might not match up with other mods and it's not a big point in mine.

hard fern
#

Welp, unnamed language of stardew valley it is

vernal crest
#

But also my expectation would be that the different human nations speak different languages as well.

tight rivet
#

Nah, they all speak the same langauge. It's a planet of hats.

vernal crest
#

...hats?

tight rivet
#

it's a sci-fi refernce toa trope "everyone on planet x is y, their hat is y."

#

but it's also a doublejoke to the fact you can put hats on everything in Stardew

vernal crest
#

Ah, I see

calm nebula
#

It's the common tongue

#

Standard Language

#

Whatever they did in star wars

vernal crest
#

Galactic Basic Standard

#

I do already have a Star Wars reference in there, maybe I should lean into it SDVkrobusgiggle

stray stone
#

This is probably a bit specific, and I am unsure if there's some mod that has this possibility yet, but I have an issue where my wireless headset randomly disconnects, which removes it as an audio source temporarily. This is normally fine for most things, most programs will find it again when it reconnects. Sometimes they don't, which forces me to manually update the audio in a way where it tries to select an audio output source again. However SDW does not do this(there's no option to even change audio source in the game?). I saw there was one mod that is no longer maintained that could possibly help with this(https://www.nexusmods.com/stardewvalley/mods/2838). While I have programming experience, I have no modding experience for SDW. So I am mostly wondering if anyone is aware of another mod that fulfil the same functionality?

tender bloom
#

Hmm, i don’t know of such but #modded-stardew is typically the place where people ask what mods exist

stray stone
#

oh I'm sorry

tender bloom
#

If you’d like to make one, I think it’s actually not too complicated

stray stone
#

I missed that completely

tender bloom
#

If you know Java, C# should be pretty easy

#

No worries!

stray stone
#

Yeah I was possibly thinking of just doing it myself if there was no alternative.

#

I know some very basic C# so I should get by, especially with the source code from the old mod as reference

tender bloom
#

This is one of those weird Stardew quirks

rotund elm
#

Hey yall! Hope everyone had an amazing new years night. So I just got my first person requesting to make a respite of my mod for Vanilla Tweaks, is there anything I should know before giving them permission to do so?

tender bloom
#

Is the old mod open source licensed?

tender bloom
stray stone
tender bloom
#

@scarlet quarry

calm nebula
#

stardew now uses monogame and openal

#

entirely different backends

stray stone
#

oh

#

well maybe it at least gives me a hunch of the thought of doing it but idm going in mostly blind so

calm nebula
#

(I assume a matching file exists on other operating systems.)

stray stone
#

should really just go back to a non-windows machine, always struggles to find anything online that is even remotely technical that applies to this shitbox

scarlet quarry
calm nebula
rotund elm
# scarlet quarry can you give me the details?

Hey! So I just had a user of my mod Fish of Stardew ask if they could respite my mods fish to match the visual content of yours. I have no problems with this, and I know there are a few Vanilla Tweaks respites out there. I just wasn’t sure if permission was needed first or if there was anything specific I needed to know before giving them a yes?

drowsy pewter
#

You should probably make them ask instead of doing the legwork for them (and indeed, they may have planned to ask tai after asking you first)

calm nebula
#

hmmmm

#

it's weird, the full config file says that's a pulse setting

#

so clearly you solve your problem by going back to Linux SDVpufferthumbsup

stray stone
#

Ngl Ideally for the case of audio devices, before digging into the modding, it would be absolutely great if SDW threw an error that I can use as trigger to start an attempt to automatically reconnect it after a set time but that's mostly wishful thinking xd

calm nebula
#

tbh stardew modding experience won't be helpful, openal experience would be helpful

rotund elm
#

Unless Tai doesn’t want to be asked about it again then I’ll just pass the info along with a go ahead šŸ˜…

scarlet quarry
rotund elm
#

Awesome I will pass the info along and let them know, thanks for the quick reply! Hope you’re having a good start to your year : )

stray stone
calm nebula
#

that github thread is basically what you're trying to do. I woudl start there

#

audio...not sure how seamless you can make device switching (tbh in my experience even Teams does it...badly)

#

My assumption is that you want it to switch with some amount of grace but a minor (even 20s) gap is fine

tight rivet
#

Here's a funny coincidence:

#

two valuesstayed the exact same. c.c

stray stone
#

I'm unsure how SDW works in the case of the device it tries to use disappears, but if it is not on SDW's part, but rather Openal that can't handle it, I will give it a go from the thread

#

šŸ˜” lost my reason to get into modding for sdw tho

tender bloom
#

You could try something brute force like restarting audio every night

#

I probably would not publish that mod for general use tbh, but it might fix your issues

#

I say every night because I expect poor performance

#

And hiding lag in the day night cycle is a time honored tradition

stray stone
#

yeah it would just be for my use xd

stray stone
#

but I guess sdw would not throw an error in this case that I would be able to handle?

#

gonna have it check every frame >:)

tender bloom
#

Every frame might be rough šŸ˜…

stray stone
#

yolo

calm nebula
#

hmm, a later comment says audio device switching is public now

tight rivet
#

c# thankfully allows operator overloading

#

This comment coming from "implementing caching for probably no good reason"

stray stone
#

Gonna learn modding SDW at some point anyway so will just try to brute force it now and see what happens

tight rivet
#

Hm. I wonder if I can find some GMCM mods that implement list options and look at their code

tender bloom
#

I think Customize Marriage Attire has list options in GMCM

#

Feel free to yoink that stuff if you need

gray bear
#

i can send a snippet

#

all my mods kinda have list options, actually

tight rivet
#

will do, thanks!

#

It's not a huge priority because I want to complete otehr mods first, but I do want to get this chart updated

rotund elm
#

Is there a way to move the tilesheets location for a map so it doesnt error in console without having to redo the entire map

#

please someone help X|

#

wHaT hAvE I dOnE SDVpufferwaaah

hard fern
vernal crest
#

@rancid temple Help him Obi-Roku, you're his only hope.

rotund elm
#

LMAO ok Shrimply so just use notepad++ to open it and I should see the tilesheet path?

vernal crest
#

Wait I may be jumping the gun. Are you getting a tilesheet GID error or just tilesheet climbing?

hard fern
#

(at least i think this is what you're talking about)

rotund elm
#

IDK what that means asjhdkjashd but Im about to find out I think? LOL

vernal crest
#

Yeah I think you are on the right track Forsy

hard fern
#

(leave the name of the tilesheet, so if it's .../.../.../Maps/paths)

#

(just have it be paths)

rotund elm
#

ok testing it rn

#

Ok, I have no idea what I'm doing X||| I'm gonna send my locations.json and the error as a smapi link in hopes that you wont judge me for being an idiot after looking at them XD

ocean sailBOT
#

Oops, couldn't parse that file. Make sure you share a valid SMAPI log.

rotund elm
#

ignore the error from governor I only pasted the error for my mod, everything else appears normal

tight rivet
#

Silly but relevant question

latent mauve
#

okay, so for a quick example from that: invalid tilesheet path '../../../../locations/spring_beach.png'

tight rivet
#

What is the spritesheet size for giatn crops?

rotund elm
#

WHY IS IT INVALID SDVpufferwaaah

#

that is the folder that its in

vernal crest
#

Because it's path climbing

rotund elm
#

ok so what does that mean X((

vernal crest
#

You cannot have a tilesheet outside of the Maps folder

#

The game can't access it

latent mauve
vernal crest
#

It either has to be in the game's Maps folder or inside your mod's map folder with your .tmx file.

rotund elm
#

so I need to rename the folder from locations to Maps? or inject it into the maps folder using the load action

latent mauve
#

As a best practice, you should always edit your Map files with the PNG sources in the same place.

vernal crest
#

It is better practice to Load it to the game's Maps folder like fireredlily said, as that allows other mods to edit it if needed.

#

No, renaming the folder wouldn't help.

rotund elm
#

Ohhh ok

latent mauve
#

Also if your TMX is inside say, assets/Maps in your mod folder, your PNGs should be there too while you are editing to keep the filepaths relative. Right now it's making absolute paths.

rotund elm
#

So its not gonna make any issues if the sping_beach.png tilesheet already exists in the games maps folder?

vernal crest
#

In addition to adding a Load code block in your json, you will need to edit the tmx file in Notepad++ like Forsy said before, to remove the part that isn't the name of the file (so ../../../../locations/).

rotund elm
#

ok so replace locations with ..

vernal crest
#

Yes, it will be an issue. Is the tilesheet you're using just a copy of the vanilla one or is it something different?

latent mauve
#

And if it's something different, are you intending the replace the spring_beach file for the entire game, or is it just in your section of the map where it's specifically changed?

rotund elm
#

Yes, the one for my bridge is not its custom, so I'd need to load those, but why didnt I have to load those in the beginning? before I added the new beach the patch for the bridge and its tilesheets all worked fine

latent mauve
#

You might intend the first if you're respriting or making a recolor, so I have to ask

vernal crest
#

Is the one for your bridge the file called "spring_beach.png"? I can't tell from your answer.

rotund elm
#

what do you mean? the tilesheet file is the same as the vanilla

#

Oh no that is a different tilesheet all together

#

its spring_GOATTiles.png

vernal crest
#

If you are just using the vanilla tilesheet, good news! You just have to delete the tilesheet from your mod folder before starting the game (and edit the .tmx to fix the tilesheet path).

latent mauve
#

^

rotund elm
#

OMG YES SOMETHING EASY

vernal crest
#

For the spring_GOATTiles.png, you will need to Load that one into Maps

rotund elm
#

So i just replace locations in the notepad++ tmx file to "Maps" or ".." and the game will do the rest

tight rivet
#

ah-ha, so for spritesheet indexes, I should probably sized my objects one to the size of springobjects

vernal crest
#

No, remove all the folder information from the tilesheet path in the tmx file

#

Once you are finished, it will look like this <image source="spring_beach.png" width="160" height="160"/> (with different height and width of course)

#

And you will need to do that for every image source in the file.

rotund elm
#

Alright I can definitely do that

vernal crest
#

No forward slashes, nothing from in front of the forward slashes. Just the file name.

rotund elm
#

ok testing it now!

vernal crest
#

Is your spring_GOATTiles.png file in the same folder as your .tmx file inside your mod folder?

rotund elm
#

Yes

vernal crest
#

That's why you didn't have to load them before. The map pulls the tilesheet from the mod folder first and if it isn't there, then it looks in the game's Maps folder.

#

It is not best practice to keep it in there.

latent mauve
#

^ for vanilla tilesheets, you absolutely should not keep it there, but for custom assets, you CAN as long as your intent is for no mods to ever be able to edit on top of your files.

vernal crest
#

(Which is a bit crap for compat, hence me saying it's not best practice)

latent mauve
#

It's bad for mod compatibility to just leave them in there instead of Loading to Maps (which future mod devs can use the Load target to recolor and such later)

rotund elm
#

OK ok I understand, so if I add the load action and load the custom tilesheets then im in the clear for compats

vernal crest
#

I put my tilesheets inside a tilesheets folder inside my maps folder and Load them from there into the game's Maps folder. Some people (like SVE) have a completely separate tilesheets folder that's at the same level as the maps folder.

#

Doesn't matter which one you do.

#

As long as there are no .png files in the same folder as your .tmx files.

uncut viper
#

(note that even if you Load the custom tilesheets, you still need to delete them from your folder)

vernal crest
#

You can't completely delete them though. They still have to be somewhere in your mod folder.

rotund elm
#

Ok and for the tmx of the bridge I just need to remove the folder info, load them into the games maps folder, and then move them to a seperate folder within my mod aka a subfolder in the locations folder

uncut viper
latent mauve
#

Might need to be more specific about that, button. I can already SEE the potential confusion when someone deletes their mod's custom tile sheet and then gets an error because the file can't be loaded

vernal crest
#

Move them before you write your Load code block so you're using the correct folder location when you write your FromFile value.

rotund elm
#

Ok, and I have a question since im not targeting a specific file what do I put in my target "Maps/"?

latent mauve
#

And of course, you fixed it in the time it took for me to type šŸ˜›

vernal crest
#

xD

uncut viper
#

(i blame sick brain)

vernal crest
#

Like Maps/{{ModID}}_bridgeTiles or something

rotund elm
#

Ohhhh I see so since it doesnt exist and im targeting it it shall exist because the stardew modding gods say so

vernal crest
#

Yes, if a Target doesn't already exist, it gets created.

rotund elm
#

You guys are amazing, I would still be trying to add an object to the game if it weren't for yall SDVpufferheart

#

Ok so I just need the action target and fromfile info and then it is good to go?

#

dont need to add anything else?

gaunt orbit
rotund elm
#

ok coolio that was easy enough!

latent mauve
#

Load patches are the simplest of CP operations! The only added complexity they get is when you add on When conditions to only load them some of the time.

vernal crest
#

Have you tested it?

latent mauve
#

Which for a map, you generally won't have to worry about for Load itself.

rotund elm
#

I am about to!

#

loading my test save šŸ¤ž

#

NO ERRORS lets go take a looksy

#

OMG that fixed the rain overlay not working tooooooo yall are some GENIUSES

#

Ok so the rain recolor works on the new map, but there is no rain, on top of that the beach waves are not moving, im assuming this has to do with a tile property I didn't add or something? Ill send a screenshot in a sec im fixing the warps rn

latent mauve
#

Tile animations are set by the TSX file, which if you are referencing the vanilla tilesheet, will be built in. Otherwise, you will need to animate the tiles yourself for custom tilesheets.

ruby rapids
#

Hi there! I have a quick question. If I want to have a portrait replaced at a certain location (Ginger Island) is this code correct for the condition?
"Condition": "LocationContext island"

rotund elm
#

Then they should work, but are not!

uncut viper
vernal crest
rotund elm
#

no rain, no wave movement I broke something

uncut viper
#

so you'd want LOCATION_CONTEXT Here Island (assuming the island context is Island, idk what it is off the top of my head)

vernal crest
#

Or use a copy of the vanilla beach.tmx as your starting point for the map?

rotund elm
#

I created a .tmx from scratch

latent mauve
#

Ah, then it won't have the TSX animation data

ruby rapids
#

@vernal crest Yes, I am doing it through the appearance field. Do you know what I need to type for the condition then?

vernal crest
#

Then you didn't include any of the animations which is why it isn't working.

vernal crest
rotund elm
#

ok so I need to make the map from scratch, or copy the beach map remove everything and redo the map

ruby rapids
#

@Button @vernal crest Thanks!

rotund elm
#

as a tsx

latent mauve
#

Best practice for retaining tile animations is to open the unpacked version of a vanilla map with the tilesheets you want, and then "save as" to create a copy and remove everything you don't want, and add whatever new tilesheets you need.

vernal crest
#

I think you can import the .tsx and it will just add the tileset data but if not, you can just animate the tiles yourself using the bulk animation plugin.

latent mauve
#

But yeah, you can also just animate the tiles yourself or try to import the TSX

vernal crest
#

(I don't recommend telling people to do save as, because they frequently then try to save the map into a different folder and bork the tilesheet paths)

rotund elm
#

So by exporting you mean go in tiled open my mpa and save it as a tsx and not a tmx

vernal crest
#

Nope

#

Go to the vanilla beach.tmx file

#

You can't see where my cursor is pointing but it's the third button along

#

Export the spring_beach tileset as a .tsx. Make sure you export it into your Content (Unpacked)/Maps folder, then cut and paste it from there to your mod folder where your tmx file is.

rotund elm
#

Ok then I need to load it right

vernal crest
#

(If you don't do that, you will potentially get tilesheet path climbing again)

#

No, you do not need to load it.

#

Instead, you will then open your tmx file and go here

rotund elm
#

ok, so I don't need to rename the tilesheet or anything just go to the untitled tile sheet export it and move it to the tilesheets folder in the locations folder where my maps are, then do what you just mentioned above by adding an external tilesheet

#

do I need to redo the tiles using the animations?

#

using the new tilesheet or will it just update

vernal crest
#

You might need to make sure the tileset is named the same as the tileset in your tmx, I'm not sure.

#

I'm also not sure that this will actually work, but we're giving it a try because it's easy.

#

If this works, the .tsx file you are adding should just change your existing spring_beach tilesheet instead of adding a new one.

#

If it adds a new one, then it hasn't worked.

#

And if it has worked, you shouldn't need to redo the tiles.

rotund elm
#

ok so I reloaded the .tmx of my map and its all red x's now, so how do I relink the tilesheets properly?

vernal crest
#

I can't remember if I've done this before or if I'm just theorising about it, sorry.

#

Close your map immediately WITHOUT saving

rotund elm
vernal crest
#

Then go get all the tilesheets your map uses and move them into the folder with your map

rotund elm
#

I think its too late it was already save

vernal crest
#

Why...would you save something clearly broken?

rotund elm
#

No it opened as saved

#

i didnt save it with the red x's

vernal crest
#

It can't open as saved

#

If you didn't save it, it didn't save

rotund elm
#

oh well idk it didnt have an * infront of it

vernal crest
#

Yes that just means you didn't make any changes which is fine.

#

Okay good, no problems here. You can continue moving your tilesheet .png files back into your map folder.

rotund elm
#

Ok cool i put the spring_beach.png back in the folder

#

looks fine now

vernal crest
#

Is that the only tilesheet you're using on that map?

#

(This is the sad thing about map editing - to edit the map you need all the tilesheets in the same folder as your map, to test the map you need the tilesheets NOT in the map folder. It is such a pain.)

rotund elm
#

yes, now I see spring_beach and untitled tile sheet in my tilesets area

vernal crest
#

This is after you have added the external tileset?

rotund elm
#

Oh that is so useful to know LMAO

#

no it just showed up

vernal crest
#

Uhh

#

Without you doing anything?

light bramble
#
{
    "LogName": "Mayo changes",
    "Action": "EditData",
    "Target": "Data/Objects",
    "Fields": {
        "306": {
            "Price": 150
        }
    },
    "When": {
        "Mayonnaise Splitting": "true"
    }
}```
This is correct...right?
rotund elm
#

Yes so delete it and add it manually then?

vernal crest
#

No, pause.

rotund elm
#

ok pausing

vernal crest
#

Did you have two copies of it before?

rotund elm
light bramble
#

wait is there mapping talk?!

rancid temple
#

Assuming Mayonnaise Splitting is set up right anyways

light bramble
#

I can help with mapping!

rotund elm
#

yes I am frying everyones brain lmao I feel so bad

light bramble
#

That's my specialty!!!

vernal crest
#

I've got it but thanks Nerdgirl :)

light bramble
#

oh

#

ok

vernal crest
rotund elm
#

she just decided to pop in without an invite

#

originally the last time I opened the map it was just spring_beach

light bramble
#

wait, why are you having him export or import things with the top bar?

vernal crest
#

Because we're trying to see if we can get the tileset metadata into the map without him having to manually animate the tiles.

rancid temple
#

Top bar and buttons in the tilesets window should work the same

light bramble
#

this stuff?

vernal crest
vernal crest
rotund elm
#

Would it be helpful if I went in a voice channel and screenshared?

vernal crest
#

No, I don't do vc sorry

light bramble
#

I can help out in the vc

rotund elm
#

No need to talk just so you can see everything

vernal crest
#

You haven't imported that tileset at any point have you?

rotund elm
#

correct

vernal crest
#

Even when the red Xs were happening?

rotund elm
#

no importing any tilesheets except the spring_beach when I made the map, and no didnt import anything then either

rotund elm
light bramble
#

did you make the map from scratch?

ornate trellis
#

the beaches beach tilesheet is indeed named untitled tile sheet

rotund elm
#

Yes I did

light bramble
#

or did you copy paste an existing one?

ornate trellis
#

CA sometimes names them weird in the maps idk why

vernal crest
#

I don't think it's going to be super productive if we're all trying to help and pulling GOAT in a bunch of different directions, so I am going to bow out.

light bramble
#

I'm just trying to garner info

rotund elm
#

NoOoOoO 😭 please stayy I understand you

uncut viper
#

this info has already been said before

vernal crest
#

It's info I'd already gotten from him, but thanks.

ornate trellis
#

oh im not here to slide in, just saw the tilesheet name mentioned and thought id clarify lol since i was confused while mapmaking before too because of it

light bramble
#

I couldn't find it when I looked back...sorry

#

I will let you work

vernal crest
#

Thanks

#

Okay GOAT this is interesting, can you try closing the tmx again and moving the tsx file out of the folder? Doesn't matter where to, just so it's not with the tmx.

rotund elm
#

It isnt with the tmx its in a subfolder in the folder the tmx is in locations/tilesheets/untitled tile sheet.tsx the tmx is in locations/

#

move it out of the subfolder?

vernal crest
#

There is no way it can be showing up when it's not even in the same folder.

rotund elm
#

IT IS I SWEAR 😭

vernal crest
#

If you have closed the map, please open it again (sorry lol) and right-click on the bit that says "untitled tile sheet" and click "edit tileset"?

rotund elm
#

I did and it opened just fine

vernal crest
#

Once you've done that, can you pull the properties box out to the side so the full Image Source line is visible and take a screenshot of it?

rotund elm
#

also I moved it to the main mods folder, I'll move it back to tilesheets if im told

vernal crest
#

Thanks, can you now do the same for your original spring_beach tileset?

rotund elm
#

yes

vernal crest
#

Is your .tmx file inside your assets/locations folder?

rotund elm
#

yes

#

the tsx is in the assets folder now just fyi

vernal crest
#

Okay. Well, I don't know what has happened here but let's try to reverse it. First make a copy of your .tmx file as a backup (just copy and paste it inside the file browser, no need to move the copy anywhere).

#

You don't have to close the .tmx file to do this either.

rotund elm
#

Made the copy

#

its in documents for now

vernal crest
#

Okay cool. Now in the non-copy, click on the untitled tile sheet in the map and then click the little trash can to delete it.

#

If it pops up with a box saying it's still in use by the map, pause and tell me.

rotund elm
#

it wont let me trash can button is grayed out nothing happens when clicked

#

I can only click the first second and fourth buttons

vernal crest
#

Ah because it hasn't been embedded. Uhhh. Try the second.

rotund elm
#

ok ok

#

now there is two tsx tabs

vernal crest
#

...unexpected

#

Ok try clicking the trash can and see what happens

rotund elm
#

for the original or the second

vernal crest
#

Either lol

#

I suspect the original will still have a greyed out can?

rotund elm
#

second deleted original is greyed out

vernal crest
#

Okay I do not know what is happening with this thing, it has gone very strange.

#

Would you feel comfortable just sending me your .tmx file instead of me trying to experiment through your fingers?

rotund elm
#

GOAT breaker of EVERYTHING

#

Yes by all means

vernal crest
#

I'm fine to DM if you'd prefer that over uploading it in here

rotund elm
#

shot you a dm

umbral vault
#

semver done right

light bramble
#

Could use some creative input in my thread #1323499944321224715 I'll have to look at it all when I get home from work tho.

light bramble
#

Like for instance, I did a dumb and have to add the i18n to my animal crossing digspot mod (I have the files I just forgot to put it in there properly) and so it's going from 1.1.0 to 1.1.1 XD

vernal crest
#

I got one of my i18n keys wrong in one of my mods so I have to upload a new version just to fix that lol

ornate trellis
#

thats an interesting way to see it, i certainly agree with the shame version lol, happens too often to me...like manifest or spelling mistakes

#

have yet to ever change the first one in any of my little mods

steady folio
#

second place would be a function or feature change or addition, 3rd for admitting guilt, but strictly speaking a 2.x.x of a program is supposed to be be a complete from-scratch rebuild, yes?

vernal crest
#

I actually don't agree with the shame part because everybody misses things and it's okay, not shameful.

teal bridge
#

In any case, that really shouldn't be presented as "semver done right", it's semver done horribly wrong.

vernal crest
#

My understanding was that the first number is for when it's not backwards compatible with the older version because it's changed too much.

uncut viper
steady folio
#

ah, fair enough

teal bridge
#

Prototype of the color picker overlay. Thought I'd post for any comments before it goes into the library proper.

devout otter
#

Admittedly I put compatibility patch and translation update to the third place, even though they're technically "feature change or addition".

chrome mountain
tawny ore
#

Two new mods, both with UI bugs related to zoom levels. I gotta stop putting off switching to StardewUI.

teal bridge
#

Haha, yeah all those static methods on Utility and IClickableMenu are a bit of a mess.

tawny ore
#

I really feel like I still stumble upon solutions through trial and error as opposed to having any intuition about what works or not

teal bridge
#

I still sometimes feel like that when I'm dealing with low-level SpriteBatch and GraphicsDevice stuff.

ornate trellis
#

how would the 2.x.x would be translatable to things like npc or retexture mods tho thonking

uncut viper
#

you dont HAVE to do a major version upgrade

ornate trellis
#

true, but ive just been wondering tbh

teal bridge
#

NPC mods can definitely break compatibility with previous versions. Retextures, probably not, since they have no code in the first place.

#

For example, deleting a quest would be a potentially breaking change.

ornate trellis
#

mainly also because as an example i take my npc mod the fishmonger. had one npc, some events recipes etc. but now I am adding locations, more stuff, several npcs...basically kinda turning it into a small scale expansion. I COULD just go 1.1.0 -> 1.2.0 for example but with so much added i wonder if a 2.0 would be more fitting.

ofc at the end of day we arent making a program and can just choose what we want but yeah i probs just been thinking too much about silly stuff lol

#

(also including that there will be a change of dependencies too for the update btw)

devout otter
#

About that, how could an update be backward compatible with the previous version? Shouldn't you only have one, anyway?

mortal stag
#

yo what is it about 1.6.9 that made so many mods no longer compatible? it seems like 1.6 all over again?

#

havent played in a while

#

what do i have to do is there a guide?

teal bridge
mortal stag
#

the wiki guide says "No. The vast majority of mods should be unaffected by the changes in 1.6.9, and SMAPI will automatically rewrite most mods that are. "

Yet even Content Patcher itself is incompatible now so what am i missing

teal bridge
#

A minor version is supposed to communicate that anyone else using your stuff should expect it to keep working without having to fix a bunch of new problems.

uncut viper
#

content patcher is absolutely not incompatible

vernal crest
mortal stag
teal bridge
#

Content Patcher was incompatible for like... a day? During the flurry of 1.6.x minor updates.

ornate trellis
#

so unless its something like a c# mod that for example broke through 1.6 its mostly likely best to jsut stick to 1.x.x stuff?

uncut viper
#

you havent updated any of your mods?

devout otter
vernal crest
#

You do have to actually update the mods

ornate trellis
#

(or if ones mod has c# components)

umbral vault
#

better to just post a log

vernal crest
#

There was a slight miscalculation about how much 1.6.9 would break things.

#

It broke a lot of things. But things are mostly fixed now.

mortal stag
#

I cannot update like Slime Produce or Free Love as they are old script mods that were updated unofficially for 1.6 but the mod author has abandoned them

latent mauve
#

SMAPI 4.1.10 is required for the latest version of Content Patcher, I think? Could be wrong, but it was definitely an earlier SMAPI version that caused the compatibility issues.

vernal crest
#

You can choose to stay on 1.6.8 like I have

mortal stag
#

if I update SMAPI and CP will these code mods work?

#

or nah

vernal crest
#

(For my current save anyway)

mortal stag
#

so I actually just have to update or delete everything if i want 1.6.9 😦

#

ok i will try

#

tks

teal bridge
mortal stag
#

mostly I want the slower growing blue grass haha

#

faster growing*

devout otter
vernal crest
#

You could just revert your game to 1.6.8 and have a copy of both versions

mortal stag
#

yeah 1.6.8 still works

#

i figured out how to do that

vernal crest
#

That way if something you want to keep hasn't been updated you can stay with 1.6.8 until you feel ready

mortal stag
#

but i want my colorful slimes AND my faster blue grass

teal bridge
#

No one's forcing you to update, just don't expect to get any new mods compatible with 1.6.8.

mortal stag
#

I was just wondering if there was an easy fix e.g. fixing headers in the old mods or smth

#

if it's a deep coding thing i can't do it

uncut viper
#

especially since its not uncommon for updated mods to specify a minimum smapi version

vernal crest
#

I am quite excited about staying back with 1.6.8 for several months

#

Once I finally do update I feel like I am going to get this rush of new content

#

It will be so exciting

rain dagger
#

Gotta reach level 5

#

Uff

teal bridge
#

There are no headers in Stardew mods, they are all DLLs (excepting CP mods/content packs). 1.6.9+ has changes that are incompatible with binaries built against older versions. It's nothing like the change from 1.5 to 1.6, but you still can't take newer mods and run them against an older version.

brittle pasture
#

(if you still have issues feel free to take this to #1272025932932055121 , since this is somewhat irrelevant to mod making)

mortal stag
#

yes understood thank you

#

the relevance was if i could fix it somehow

#

i get what i have to do now thank you

devout otter
brittle pasture
#

you fix it by updating everything to the latest version

#

if it's a C# mod that broke and you're interested in how, feel free to continue here

#

it would require at the very least decompiling the mod and fixing its code

mortal stag
#

I don't want to take up channel space if it's a tech support issue guys dw

#

I do not know C# though I am interested in learning it, it's not a today thing šŸ˜„

gaunt orbit
#

what does the boolean return value on tile actions indicate? is it just whether or not to display it as "interactable"?

uncut viper
#

whether it was successful i think

#

assuming you mean in the C# function itself

gaunt orbit
#

yes

#

what happens if it's unsuccessful?

uncut viper
#

then yeah that returns whether the function succeeded

#

it returns false and presumably logs an error saying why

gaunt orbit
#

does it keep checking for other things to interact with?

uncut viper
#

i assume it'd do nothing else

gaunt orbit
#

there is no error out, and the wiki example does not imply that returning false represents an error

#

time to go decompile diving

uncut viper
#

actions and GSQs return false and log an error when something goes wrong, so i just assume tile actions work the same

royal stump
#

actions return true if it successfully handled something and false if there was no relevant action, but I'm not sure how often the game actually cares about the result

#

I vaguely recall it might conditionally check for something else in certain cases, but could be misremembering

uncut viper
#

some actions do

gaunt orbit
#

what I mean is, there's no built-in logging mechanism like there is for GSQs

#

Anyways, I've tracked it through the logic and it eventually gets passed up to Game1.tryToCheckAt, which uses it to determine whether or not to show the glove cursor

uncut viper
#

all actions have an out string error that gets used for logging, though

gaunt orbit
uncut viper
#

e.g. AddFriendshipPoints, which will log an error if you try it with an invalid NPC

gaunt orbit
#

oh, not trigger actions, tile actions

uncut viper
#

i blame CA for these names

rancid temple
#

Trigger Actions came about because of modding though

#

The base game doesn't use them afaik

uncut viper
#

it does

royal stump
#

there are a few now, yeah, though obviously it didn't until 1.6

gaunt orbit
#

anyways, mystery solved. I'm adding that to the wiki

royal stump
#

but yeah, touch and tile actions just care about the return result for some edge cases incidental logic like that, afaik; it also stops them checking for other hardcoded stuff like warp obelisks if the action succeeded

uncut viper
#

(there are 31 vanilla TriggerActions)

gaunt orbit
#

touch actions return void I think

royal stump
#

oh right, sorry, I was mixing it up with other [thing]Action methods SDVpufferdizzy

quiet cedar
#

Hello, I'm very inexperienced with coding but was trying to patch a mod for personal use, the json validator said everything was correct except for the end. It's probably a very simple fix but I am stumped.. I always struggle with the ending symbols lol
If someone could take a look I'd be very grateful
https://smapi.io/json/content-patcher/f551968c74654eb7ba4fce7bfaf238bf

devout otter
#

You have too many } at the end.

#

Try deleting the last one.

royal stump
#

it looks like only the bottom is new and the other is from an older file? SDVpufferthinkblob

devout otter
#

Oh yeah, that. Delete the { "Format": "2.4.0", "Changes": [ part starting with line 352.

quiet cedar
#

Ohhh, okay I see what I did but still not sure how to fix it, so I'll explain better what's going on
Basically I was trying to patch a mod that used to use minecart patcher, but the author of the framework said it is obsolete because vanilla can do that now
So I was trying to convert it to vanilla, but I'm super inexperienced so I copy pasted a template that added more fields I didn't realize the file already had

#

So the majority of it is older code with the exception of the bottom because that's all I was trying to fix. So is the issue that the rest of the code needs to be updated too, or more fields are incorrect?

devout otter
#

Just delete those 4 lines first and see if it gives any error.

vernal crest
#

(The reason Dolphin is saying to delete those lines is because a mod can only have one "Format" field and one "Changes" field in it and you accidentally gave it two.)

devout otter
#

Yar, basically by deleting those, we are attempting to merge both Changes fields into one.

quiet cedar
#

OHHHH thank you!!! Thanks for that and for the extra explanation too, it still wasn't working after removing that but I eventually found an extra ] that closed it early and deleted it and that made it validate:)

versed wyvern
#

Are you using Notepad++? It helps keep track of what's enclosed by marking the portion of the json and its corresponding bracket in red like so

#

So you can tell if you have any rogue brackets if they don't pair up correctly

wanton pebble
#

Weird question only meant for personal modding - how much work is it to create a new farm from a replacer farm?

#

I.e. is it super simple if you already have the map patches or is it just absolutely awful to do

latent mauve
#

I don't think it'd be too awful, actually, since the replacers typically have the same underlying farm traits that you could then copy over to the custom additional farm format?

royal stump
#

(haven't personally done it, but) I think the main difference would just be fixing whatever farm-specific hardcoded stuff it was relying on, like forest forage/stumps and such

calm nebula
#

I believe you can do it in about half an hour or less assuming youd o shit like "reuse icons"

wanton pebble
#

Alright. I'll put it on my to-do list for later then

wanton pebble
latent mauve
#

Only weirdness would likely be for the specific hardcoded elements like Esca mentioned, so hilltop/mining node or beach farm elements might need some specific tweaking.

wanton pebble
#

This falls into the category of "I just want it working, I don't want it cleaned up for release" XD

calm nebula
#

So we don't get a lyoko farm map

wanton pebble
#

Oh good god no

#

I can barely edit maps, creating them would be a nightmare

#

Plus my main priority once I'm done with current stuff is getting Date Night Redux's Island date done so that the Winter Star date + the responses thing that I need to program here when I have a free moment with Button's moddata storage can actually go live too

calm nebula
#

Don't worry. Tiled scares me too

brittle ledge
hard fern
#

Maps

uncut viper
#

im also scared of tiled and map making lol

brittle ledge
#

I mean I also hate tiled but also I'm a shlub

rigid oriole
#

I'm scared of maps also

rotund elm
#

How can I delete tial data off a map

hard fern
#

Just delete the tiledata tile?

royal stump
hard fern
#

Or if it's a map property, you delete that part (ex: a warp, you open map properties, and delete the warp line)

royal stump
#

or rather, for tile data it'd be "SetProperties" to null, sorry
(and that for map properties, yeah)

rotund elm
#

Alright I am trying to do it in tiled but no luck let me try doing it in notepad++

#

im trying to clear the beach map

hard fern
#

Why notepad?

rotund elm
#

because the tiledata labels wont disappear and I want them to go bye bye XD

hard fern
#

Are they actually not being deleted, or do you just still have them selected in tiled?

royal stump
#

tmx is just xml under the hood, so it's helpful if the UI is being weird (aside from risking format errors)

hard fern
#

Because i found that sometimes if i still had the tiledata selected, it would show, even if i deleted them

rotund elm
#

OH I GOT IT

#

i can just use ctrl x to cut them cool beans

hard fern
rotund elm
#

Yea no kidding XD

velvet narwhal
rotund elm
#

is there a way to rotate a tile?

uncut viper
#

that didnt require any map making, though

velvet narwhal
rotund elm
#

Oh I didnt even realize those were there thanks!

velvet narwhal
#

all you gotta do is take tiled out for a nice candlelit dinner, then it'll listen SDVpufferpensive

#

as well as break in through the doggy door with arbitrary tilesheet access--

rotund elm
#

lmao

calm nebula
#

Afraid of Tiled and afraid of Harmony

uncut viper
#

another form of artists vs coders

velvet narwhal
#

tia isn't allowed to talk, tia is also afraid of tiled suspicious

versed wyvern
#

Speaking of tiles I can't figure out how to control footstep sounds of different tiles cathuh

#

Guides mention it as a tile property but I can't find a damn thing about how to set it in Tiled

velvet narwhal
#

pretty sure that one's one of the cursed ones

calm nebula
#

I'm not at home or I would take a photo

velvet narwhal
#

ah

#

Back Type <str type> Sets the tile type for various game logic (e.g., step sounds or planting crops), where <type> is one of Dirt, Stone, Grass, or Wood.

#

make sure that you're on the pink "Back" layer when you're creating the TileData

#

i think that's the right way to go about it

versed wyvern
#

Hmm... so in Tiled we have to select the portion of the map we want the footstep to change?

velvet narwhal
#

afaik it will not work indoors though

#

yeah if you want to overwrite the properties it's necessary, otherwise it's hardcoded

versed wyvern
#

Ah, if it doesn't work indoors that won't work for me either, I'm working with a map that has an indoor grass patch I wanted to sound like grass thonking

steel frigate
#

ahah

royal stump
#

it's a bit hacky, but I think you can technically put the phrase "mine" anywhere in your location ID to make type-based footsteps work SDVpufferthink

#

(both the footstep code methods check it like this, and I don't see anything else with similar checks, so it shouldn't cause any problems)
if (this.IsOutdoors || this.treatAsOutdoors.Value || this.Name.ContainsIgnoreCase("mine"))
and
if (Game1.currentLocation.IsOutdoors || Game1.currentLocation.Name.ContainsIgnoreCase("mine") || Game1.currentLocation.Name.ContainsIgnoreCase("cave") || Game1.currentLocation.IsGreenhouse)

gentle rose
versed wyvern
rancid musk
#

I don't fear harmony. Not my own patches at least. And I don't fear tiled. I just wish I was more artistic.

brave fable
#

you don't strictly need to be artistic to make things in tiled; it's really very structured, and compared to things like spritework there's more often a logical solution to most problems

#

layering and composition is still the hardest part, but its usually clear if and how you're doing something wrong

brittle pasture
#

counterpoint: my maps are fugly

calm nebula
#

Counterpoint: tiled

#

Although with more layers I may finally be able to add access to the area above qi's

brave fable
#

id say you only really need art skill if you're making a 'scene' map rather than a tile map

#

otherwise you're just assembling a jigsaw

versed wyvern
#

Well, room composition is an artistic thing

#

I couldn't be arsed to make a good looking room so I just asked someone else if I could borrow theirs MouseSit

velvet narwhal
calm nebula
#

I'm barely above putting a mattress directly on the floor

brave fable
#

hope u got the layering right at least

#

remember half of the bed has to be on Front

brittle pasture
#

dang is this why my legs phase through my bed in my apartment after all this time

#

I've been sleeping at a right angle for 3 years

uncut viper
#

did you save your room as a .tbin? those dont support rotations

#

might have something to do with the bad angle

brittle pasture
#

good point let me contact my landlord tomorrow

viscid cargo
#

gotta question rq, do cabins follow the naming convention like the farm house where the upgrades are labeled like "Log Cabin_0"?

velvet narwhal
#

i have worked too hard today and that went straight over my head as a joke

uncut viper
#

as an incidentally map-making related aside as ive been looking at my old files, is it better to just start a map over from scratch to resume work on a mod than continue with a map from 1.5.whatever. did a lot of map properties change or anything

velvet narwhal
#

i imagined selph just rotating the farmer sprite with a draw call and going, "good enough"

velvet narwhal
brave fable
#

of course the extent depends on the map, but you're fine to upgrade an existing map

uncut viper
mortal stag
#

guys for those of you who learned C# to mod stardew, do you have any resource for someone starting out that has done bunch of CP mods but never done C# before? I really want to do it now

velvet narwhal
#

uh

brave fable
#

ive had a couple endless maps from 1.3 to 1.6 and they just keep going without much change

#

what is daa

velvet narwhal
#

i would definitely yeet all of those map properties

uncut viper
#

i have no clue what daa is

#

i dont remember what map i even started from with this one

calm nebula
mortal stag
#

thanks!!!!

viscid cargo
velvet narwhal
#

i don't actually use alternative textures so that's beyond me thonk but buildings do have skin data...

brave fable
#

the only transferable knowledge from CP to C# is sdv and smapi general knowledge, like assembling mod folders, understanding the content pipeline, and knowing game stages

#

other than that you're in a fun new world

viscid cargo
velvet narwhal
#

going from cp -> c# is basically, "how much time and effort do you want to put into it", especially if you've never even read some other programming language

mortal stag
#

I have downloaded visual studio before, and opened up a dll file, and gotten hopelessly overwhelmed and gave up =/

brave fable
mortal stag
#

but that was, I think, because I went about it from a CP point of view, of just trying to figure it out on my own, and that doesn't work with real world scripts. i need to learn the basics of C# before doing that

brittle pasture
velvet narwhal
#

read the decompile like it's your new bible

mortal stag
#

roger that

uncut viper
brittle pasture
#

opening another mod is useful once you know how a mod is structured as well as how to read code

velvet narwhal
#

and just kinda, let vs22 redirect you to all of the bs microsoft links and maybe you'll be able to glean what the hell it's talking about

viscid cargo
#

sick the mod i downloaded told me AT is handling it in the background, thanks for the help!

velvet narwhal
#
Stardew Modding Wiki

Framework mods refers to C# mods that add new functionality to the game's code, and allows content mods to make use of them without having to make their own C# component. They usually work by reading custom data set in content mods and then apply their changes accordingly.
This page details the various...

calm nebula
#

Tbh c# for mods is really "learn c#" first

#

Unless you know some other programming language well

mortal stag
brave fable
#

instead of CP YAML to JSON can we get a CP to C# converter thanks

brittle pasture
velvet narwhal
#

yeah fair enough

calm nebula
#

What if I want to learn d flat instead

velvet narwhal
#

the main problem is "just find someplace that you can learn c#" iirc atra has the cheese page somewhere about it

calm nebula
#

!yellowbook

ocean sailBOT
velvet narwhal
brave fable
#

i tried getting into the yellow book but it was just a lot of names and numbers? i didn't get it

#

at least i was able to phone domino's

brittle pasture
#

the yellow book is recommended because one of those numbers is for a C# expert that will beam their knowledge directly into your brain

velvet narwhal
#

oh so atra's on the front page

calm nebula
#

Atra is not a c# expert

#

Atra is an idiot

rancid temple
#

Professional Figure It Outer

velvet narwhal
#

atra you get paid to figure it out idk what you're talking about timnk

topaz zenith
#

Slowly writing npc dialogue ee

#

What are like the basic event things I should write for first

versed wyvern
#

KannaHuh What do you mean by basic

topaz zenith
#

Like the general things to write dialogue for before doing specific scenarios

#

Holidays, etc

versed wyvern
#

Oh, like just general conversation to fill out the year

topaz zenith
#

yeah

versed wyvern
#

Mm, without knowing the context of the character I guess I'd start with small talk about generic stuff like the season and weather at low heart level, then more specific things about them at higher heart level after the player has seen whatever characterization scenes you're putting in

tender bloom
#

Must be the 2nd one

#

Since I’m pretty sure I’m not nonbinary

topaz zenith
#

Cringe dialogue that I’ll make less cringe in the future

gentle rose
#

listen. we can be both

topaz zenith
#

It’s a baseline I’ll work with

versed wyvern
#

So they're obsessed with Clint, eh

topaz zenith
#

They’re his wife

#

They have two kids LOL

versed wyvern
#

Well I guess that rules out making all their low-heart dialogue about him

topaz zenith
#

the low heart dialogues might mention him a bunch

#

But also not too much

round dock
#

Are you trying to make dialogue for Clint?

golden basin
round dock
topaz zenith
#

It wouldn’t make sense for her to not react to you trying to propose to her husband lol

round dock
#

Alright, have fun then šŸ™‚

small frigate
#

how do I convert the smapi log again so I can send it here? Cause I am havin an issue

rotund elm
#

yall I made my first 2 tilesšŸ’€

#

LMAO

small frigate
versed wyvern
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.

small frigate
teal bridge
round dock
#

Ah, gotcha, you wanna send the json?

small frigate
#

I can do that too

gritty furnace
#

lazy question:
where is the code for the statue of endless fortune?

rotund elm
#

Ok, but editing your tiles in aseprite and then seeing the changes live in tiled after saving the sheet is dope

royal stump
topaz zenith
#

I’ll transfer from notes app to smthng else eventually

ocean sailBOT
#

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

small frigate
#

That's not the issue but thank you governer

topaz zenith
#

Perks of the npcs two kids being toddlers? I have to write less

latent mauve
#

you missed a comma, dorkup

topaz zenith
#

I still have to write some dialogue for them but it’s far less

latent mauve
#
"{{ModId}}_MermaidLamp":"{{i18n:furniture.MermaidLamp.name}}"```
#

line 48

round dock
#

You missed commas

latent mauve
#

Yep, both of those lines.

#

48 and 49

round dock
#

(relatable bcat_horror)

latent mauve
#

(Commas get me every time)

topaz zenith
#

My npcs name is now Susan until further notice

small frigate
#

I KNEW IT WAS SOMETHING DUMB LIKE THAT AUGH

#

thanks guys

#

separated question, does there need to be a comma at the end of the section? since the next line will simply be the }

royal stump
#

the trailing commas are optional (and only tolerated because it's a more forgiving json reader)

velvet narwhal
#

can't get hit by commas if vsc/vs22 screams at you every time SDVpuffersmart

small frigate
#

lmao

topaz zenith
gentle rose
#

for anyone who struggles with commas/syntax, you should really try a proper IDE like VSCode or something of the sort. It will highlight your mistakes (for stardew, I think you should usually manually change the language of the files to jsonc inside your IDE, because stardew json is closer to jsonc than actual json)

uncut viper
#

if you can set it to json5 thats even better

round dock
hard fern
#

I love vscode my bestie no more notepad content.jsons

topaz zenith
#

My npc giving the player random items every holiday event is lowkey silly

uncut viper
#

jsonc im pretty sure only adds comments support but doesnt change anything about trailing commas or anything

#

or single quote strings

hard fern
#

I just stick the content patcher schema at the top of the file im working in

gentle rose
#

I think it does do trailing commas? idk about single quote strings

velvet narwhal
#

json5 supported uhhh newline whitespace so that's the thing i've generally suggested

uncut viper
#

json5 also lets you not use quotes at all for your keys which is weird and dont do it but you could

gentle rose
#

so json5 basically takes ā€œjavascript object notationā€ literally, huh SDVkrobusgiggle

velvet narwhal
#

i'm pretty sure i still have that cursed triplicate escape quote from pathos somewhere in my stash

gentle rose
#

I mean, when in doubt, you could always set the language to javascript and be done with it DogeSmile

topaz zenith
#

I need to do dialogue for the egg festival, the dessert festival, feast of the winter star, more seasonal dialogue, the heart events, and random other dialogue SDVpufferwaaah

latent mauve
#

I saw the someone mentioned my NPC Apartment mod (Pelican Valley Loft) as a potential living space for Susan -- thank you #modded-stardew for promoting my mod -- so feel free to poke me if you decide to go that route and need any assistance with it.

velvet narwhal
#

yep, cursed just like i remember it

gentle rose
#

I love escaped escapes

gentle rose
#

it’s best when you get to like 4 of them

latent mauve
topaz zenith
#

I was thinking she’d live with clint, since they’re married, but I would have to add a basement or smthng to the blacksmith or just have them all live there

latent mauve
#

If you've already got a home in mind, no biggie, but it's an option I've made available for any custom NPCs.

topaz zenith
#

The apartment could work actually

gentle rose
#

also, have you even lived if your code has never had something like ā€œā€¦{ā€˜{ā€˜}ā€¦ā€ in it

hard fern
#

😭

topaz zenith
#

I would have to put clint there too LOL

#

The apartment makes more sense than the blacksmith

hard fern
#

The number of times ive done something like {{ModId} and wondered why it's yelling about brackets😭

topaz zenith
#

I’m not sure my ocs profession yet

round dock
#

I think it’s pretty neat, fireredlily. So many new npcs without a prospective house just yet, also helps lots of NPC makers worry less about their home while the NPC is in dev.

topaz zenith
#

Maybe she’ll be simmilar to Marnie but sell only specific things

hard fern
#

(yep, apartments are super cool)

latent mauve
#

Yeah, and I left lots of vertical space so folks can expand the rooms up or down as needed if they decide to patch over them.

gentle rose
#

and even better, no need to worry about a space to put an entrance to a map 😭

topaz zenith
#

I kinda wanna have her sell stuff but also not be generic..but also have her work in the blacksmith

#

Maybe she’s like Clint’s assistant incase he’s gone for smthng?

velvet narwhal
#

fimger i already found my good spot for my expansion and it's next to the coolest lookin' statue in the game

topaz zenith
#

So if he’s out for his Harvey visits or smthng she’s at the counter selling his goods and breaking geodes and doing tool upgrades

gentle rose
#

you’re slowly veering into potential c# territories there with the assistant thing if you want to have her run the shop

topaz zenith
#

Not really run but

latent mauve
#

As a bonus, I have an exterior map that just has fences all around it, so people could potentially build off of there too if they wanted a freestanding building, until those tiles run out. xD

topaz zenith
#

Make sure you can still use the shop LOL

gentle rose
#

same thing, game-wise

topaz zenith
#

Maybe she’ll be the door gaurd (she will never let you into clints room.)

velvet narwhal
#

the blacksmith i'm pretty sure is like robin, hardcoded to hell and back

topaz zenith
#

Or she just cleans and works in the background and doesn’t actually do anything you need to interact with her for

latent mauve
#

But I already did the hard work of SVE compat, so one less worry for everyone else who uses mine as a jumping point

topaz zenith
#

so like she’s cleaning stuff or she’s outside working idk

gentle rose
#

we joke a lot about scope creep, but if this is one of your first mods, you should really define a minimum viable product and try making that first, then add after

topaz zenith
#

I’m not sure what I want her to do. Suggestions open

hard fern
#

An npc as your first mod sounds kinda tough too, imo

velvet narwhal
#

portraits, sprites, get the npc in game, that's the main goal

hard fern
#

Not impossible but

tiny zealot
velvet narwhal
#

once you can actually see the npc in game and it speaks then you'll be able to think about other things

topaz zenith
#

I don’t really want her to vanish yknow?

latent mauve
#

Minimum viable product is get them to spawn in successfully