#making-mods-general

1 messages Β· Page 161 of 1

latent mauve
#

The AddWarps example on the CP docs is a little different, since Add Warps takes an array or list(?) of strings

#

Threw me off too for a minute there

hard fern
#

see, i was just looking here

uncut viper
#

brackets in places like that just means whatever is inside the brackets is optional

hard fern
#

ah

uncut viper
#

thats documentation syntax

#

whereas in JSON syntax, [] means you're making a list/array

latent mauve
#

it's a little misleading in spots

rancid temple
#

Well, in that case those brackets actually mean that's one group

#

As putting nothing in Doors would cause issues lmao

latent mauve
#

yeah xD

rancid temple
#

When you see []+ that usually means it's a grouping of fields that can be repeated to create multiple entries to the one key

uncut viper
#

<>+ is valid too

rancid temple
#

Basically, everything is made up by whoever wrote it at the time SMCKekLmaoDog

uncut viper
#

(what is sheetID? is that what the "1" is in shrimply's property? what does it refer to)

calm nebula
#

One means optional

#

The other means not optional

rancid temple
#

Technically it refers to nothing

calm nebula
#

This is linux command convention

uncut viper
#

correct <>+ is not optional i just meant you can also see a + on it

calm nebula
#

And I never remember

rancid temple
#

Because the sheetID and the tileID there are never actually used

calm nebula
#

Yes.

uncut viper
#

so the 1 120 can be literally whatever?

rancid temple
#

Yep

calm nebula
#

CA named them "1" and "untitled tile sheet"

uncut viper
#

fun

rancid temple
#

I have taken to just putting 0 0 lmao

#

Doors really weren't that far off from being un-hardcoded

#

I dunno if there was an effort made at some point and just given up on or what, but they really don't need a lot of effort to be able to use anything

#

Wide doors are probably not gonna be that hard, I just don't have a lot of time to deal with it at the moment

calm nebula
#

Wiidddeee

ivory plume
uncut viper
#

i think sometimes wiki editors dont know that though and when they go to edit or add things they just go based off of either what was there before or what something else they saw used

#

not often tho

#

but i do recall havin to correct some occasionally

ivory plume
#

I guess it could be worth documenting the format explicitly in a Modding:Style guide or something at some point.

uncut viper
#

by the way pathos, i know you're still on vacation, but would now be a good time to let you know about some bugs SDVpufferthinkblob (one SMAPI, one vanilla SDV)

ivory plume
#

Possibly, though ideally vanilla bugs should be reported in the official forums (and then you can link me to the thread if needed).

uncut viper
#

tbh im not sure if it is actually a bug or intended but it seemed weird to me that Item.CopyFieldsFrom always resets stack size to 1

#

the new one added in 1.6.9

#

but the wiki does say its equivalent to Item.getOne() so i wasnt sure

ivory plume
#

Hmmm.

uncut viper
#

(it also doesnt copy the itemid but that one i assumed was intentional?)

ivory plume
#

It should copy the ID:

this.ItemId = source.ItemId;
#

I can add a line to copy the stack size. That one is just because it calls GetOneCopyFrom under the hood (i.e. 'get one').

uncut viper
#

would that change the QualifiedItemId though? that getter only re-qualifies it if its null, but it wouldnt be null if you c opied the fields

ivory plume
#

Yep. The ItemId setter sets _qualifiedItemId to null.

uncut viper
#

hm. i mighta misread earlier then when i did a brief test so ignore me on that one. stack size for sure tho

ivory plume
#

I'll put the change in 1.6.16, though there's no timeline for when it'll be released.

uncut viper
#

the SMAPI thing was bc we realized that if you have an en.json in your i18n folder, it will never be used, because when SMAPI checks for the relevant locales, it asks for the codes from the game (like fr-FR) but the game returns an empty string for english, which from the smapi internal documentation seems intentional, but the problem is SMAPI's GetRelevantLocales doesnt account for that, so it uses default.json only

elder mountain
#

WHAT THE...

uncut viper
#

in my testing i just made BaseContentManager.GetLocale return en-EN if it received an empty string and that worked, but i imagine anywhere in that chain of function calls accounting for that would work just as well, and i dont know the consequences of changing the empty string assumption at any given point anyway

ivory plume
uncut viper
#

(this also means it wont use en-EN.json either)

#

sure!

elder mountain
#

I added 3 fish, it has a strange icon for some reason, and when I ate it, the game froze :0

hard fern
elder mountain
#

And not completely

#

For example, I cannot open the inventory, but I can switch icons

#

Opened and closed the cheat menu and that's it, it was delayed

tiny zealot
#

@ivory plume while you're here, i thought idly the other day about this potential feature for content patcher. is it something you'd consider allowing?

hard fern
teal bridge
elder mountain
tiny zealot
ivory plume
#

Speaking of which:

#

New feature in the upcoming Content Patcher 2.5.0: local tokens!

This is a major new feature which lets you define tokens at the patch level. This is most useful with Include patches, which let you apply patches for each set of values.

For example:

// add each hat to the item data, shops, and Fashion Sense
{
   "Action": "Include",
   "FromFile": "assets/add-hat.json",
   "LocalTokens": {
      "Id": "PufferHat",
      "DisplayName": "Puffer Hat",
      "Description": "A hat that puffs up when you're threatened.",
      "Price": 500
   }
},
{
   "Action": "Include",
   "FromFile": "assets/add-hat.json",
   "LocalTokens": {
      "Id": "ClownHat",
      "DisplayName": "Clown Hat",
      "Description": "A hat that jingles as you move.",
      "Price": 250
   }
}

And then you can just use the tokens in assets/add-hat.json (e.g. {{Id}}, {{DisplayName}}, etc). This can be used to reduce repetition, do very simple non-dynamic loop logic, etc.

Thanks to @next plaza for the pull request!

velvet narwhal
#

I'll put the change in 1.6.16, though there's no timeline for when it'll be released.
SDVpufferweary i have lost the bet

uncut viper
#

i saw the commits for those local tokens earlier and im very excited for them πŸ‘€

tiny zealot
#

oh this looks very nice indeed

ivory plume
#

(Technically the only thing preventing you from using this to perform actual programmatic looping and control flow is the circular load detection.)

elder mountain
velvet narwhal
#

iirc this was the template things that casey was suggesting which is: eyesh

tiny zealot
#

yeah, major cool

versed wyvern
tiny zealot
#

kind of like how i18n works, but for json instead of strings SDVpufferthinkblob

elder mountain
#

I specified the aquarium version

hard fern
#

πŸ˜… alright, new problem! the blacksmith map still has all the default warps, and my new ones won't apply...

tiny zealot
# ivory plume Sure, I'd be open to discussing how it'd work.

what i had in mind was a new key much like DynamicTokens (say, DynamicTokensFromFile), also only usable directly in content.json, but it just takes a string pointing to a file like FromFile.
that file would be an object containing only a "DynamicTokens": [...] array, just the way you'd write it currently.
up to you, i suppose, whether to allow it to exist in addition to DynamicTokens (in which case perhaps it would be appended?) or to make them mutually exclusive

ivory plume
#

I'd want them to be mutually exclusive with that approach, so it works in a clear predictable way.

tiny zealot
#

ok, that makes sense to me. thanks!

elder mountain
#

So what is πŸ₯Ί

velvet narwhal
#

DynamicTokens.json timnk

latent mauve
hard fern
#

i just realized i think i put them in the wrong place

ivory plume
#

AddWarps should override any older warp(s) from the same tile, unless something isn't working correctly.

rancid temple
#

Well they changed the size of the location, so they probably just need to overwrite the Warp property entirely

latent mauve
#

Shrimply did a map edit to the left and top, so the old tile coordinates are not applicable anymore

ivory plume
#

(Sounds fun for mod compatibility.)

hard fern
#

(i have learned my lesson...)

latent mauve
#

(It's not too late to move your edit again)

#

πŸ˜›

hard fern
#

πŸ˜”

#

i could just move over the clutter in the botton right

latent mauve
#

❀️ it's fine, you're just learning map editing on hard mode right now.

#

Clint's place is definitely a challenge without rearranging his vanilla furniture

merry summit
#

Hi there! Can someone help me with this error? For context, I'm connecting some of my fave farm maps (solely for personal use ofc) and I took the relevant bits of each content json and put them in one doc. It keeps throwing up this error and I have no idea what it means (super new to this)

hard fern
#

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

merry summit
#

oh my gosh i didnt realize that was a tool that existed ty!

#

thank you ive been using a non smapi json validator!!

velvet narwhal
#

thonk connecting farm maps... i don't even know if it'd be viable since all instances redirect to the same farm warp

#

unless you mean just forcibly merging them all into a singular tmx then be free, commit crimes

rancid temple
#

I think there was a mod that let you have a bunch of farms side by side

merry summit
#

making them custom locations with magic warps to my og farm map haha its my baby practice for messing with locations

rancid temple
#

I can barely use the space of one farm, no idea what I'd do with multiple lmao

merry summit
#

i need a gigantic frankenstein farm idk why im built like this

blissful saddle
#

it is possible, and it was poorly done. you need to download the maps made to this

#

what is not many and made to work as a solo map by themselves

rancid temple
#

Could also do the adding a bunch of locations and stitching them together with warps

#

I think you'll have to do a lot of work to make them function as expected though

obtuse pike
#

does anyone happen to know where this wall is located in the tilesheets? (the lighter one)

blissful saddle
#

there is the meadows farm map though, and I was considering to make SDR patches for the other vanilla game map, so be able to create a giant frankenstein farm map that makes sense somehow, but you can just look and buy the two first farms the mod detects each time and they are put at the order you buy them...

elder mountain
#

Why are my fish caught instantly without a mini-game and only normal quality πŸ˜•

blissful saddle
hard fern
#

(well, i still like the kitchen on the left side πŸ˜”)

elder mountain
blissful saddle
#

oh, you are adding new fishes. sorry, I just looked up now

#

did you registered a valid fish behaviour on Data/Fish for the minigame?

elder mountain
calm nebula
blissful saddle
#

very strange. can't help. sorry

tiny zealot
# uncut viper cmctfear.png

πŸ«‚ sorry! but who knows if i'll even write up the PR for it. i just know pathos tends to like a little discussion beforehand so people don't waste their time on things he won't consider

calm nebula
#

Like, having "DynamicTokens": "path"

#

OR "DynamicTokens":[]

tiny zealot
uncut viper
calm nebula
#

A custom json convert could probably do it!!!!

obtuse pike
#

how possible is it to edit a mod to make so it doesn't change a certain part of a map? example: make the rustic interior mod not edit the farmhouse. does that just require editing parts of the content.json?

tough crater
#

Are you changing a few tiles?

uncut viper
#

you would need to edit the map itself to use a vanilla copy of the tilesheets

tough crater
#

Hold on, you mean that you want the code to exclude the farmhouse?

calm nebula
#

Fuck it.

uncut viper
#

it would probably work to make a personal mod only that just re-loads the same .tmx with the tilesheets present in your mod folder to force them to be used (though idk if the game forces certain loading with the farmhouse)

calm nebula
#

Ichor, if you don't do it in the next two months I might try to prototype the jsonconverter

uncut viper
#

you probably could also make the patch for the content.json not apply in the FarmHouse only, if you're okay with the idea of it reloading your textures every time you change locations

tough crater
uncut viper
#

which may or may not induce a little bit of lag depending

#

but probably not

calm nebula
hard fern
#

how would i go about changing an npc's default spawn location?

tough crater
hard fern
#

vanilla character

tiny zealot
obtuse pike
tough crater
uncut viper
#

you can make the mod only load those tilesheets when you are not in the farmhouse

calm nebula
#

I might not get around to it eitherrrrrrr

uncut viper
#

once you have a file you can do whatever you want with it as long as you dont redistribute it

tough crater
uncut viper
#

like sure, maybe the strictest of people might say that by downloading it i agree not to edit it etc etc but. if its on my computer, im gonna do what i want with it, if its for personal use

tiny zealot
#

what happens in vegas on your computer stays on your computer

obtuse pike
uncut viper
#

you're not allowed to alter it and then upload it or give those edits to someone else

#

as that would be redistributing their assets that you modified without being licensed to do so

tiny zealot
#

technically there are things you aren't allowed to do even on your own computer in the privacy of your own home, but if a tree falls in the forest and no one hears it etc etc.

uncut viper
#

technically we're all redistributing stardew assets with our mods

#

mostly

#

(pure C# mods that dont actually do that do not interact)

calm nebula
uncut viper
#

your mods are MIT ill just reupload it without that clause /j

calm nebula
#

(||NOTE that the MIT license takes priority||》

undone hawk
#

TFW you mess up string syntax and type _fish.TryGetValue($"(O)+{id}", out var value); instead of _fish.TryGetValue($"(O){id}", out var value);

uncut viper
#

ferris...

hard fern
#

wheel

tiny zealot
#

the worst kind of bug, where it just silently fails to work. cruel

undone hawk
#

Extremely painful

#

Definitely didn't spend 20 minutes trying to figure out why it wasn't working since there were no errors

#

That'd be crazy ahaha

calm nebula
#

(ItemRegistry.ManuallyQualifyItemId)

steep charm
#

Hey, I'm very new to coding in C# but I have quickly found out I suck at it. I am just trying to give Lewis different portraits when he is on the beach and my code is apparently too busted to run. Anyone know a simple way to do this?

undone hawk
#

You should probably be using ContentPatcher for that

hard fern
#

if it's just a portrait replacement, can you not-

#

yeah

tiny zealot
#

even in C# the easiest way is probably to add an entry to his Appearance array with the conditions you want

calm nebula
#

Lewisssss

steep charm
#

Lewis uses his base portrait for his beach look, it surely isn't a simple replacement

calm nebula
#

Is his beach outfit still hardcoded

steep charm
#

Is it?

proven spindle
#

Hmm I don't see a Lewis beach portrait in the unpacked files

hard fern
#

right i know for a fact im not doing this right.. πŸ˜… i'm trying to make him not spawn in the middle of the floor... { "Action": "EditData", "Target": "Data/Characters", "TargetField": { "Clint": { "Home": [ { "Id": "Default", "Condition": null, "Location": "Blacksmith", "Tile": { "X": 13, "Y": 13 }, "Direction": "down" } ], } } }

proven spindle
#

Either way, you could probably set a conditional for 'currently on the island/beach map'

brittle pasture
#

Fields, not TargetField

royal stump
# calm nebula Is his beach outfit still hardcoded

(there's still this bit in IslandSouth.HasIslandAttire, at least?)

if (character?.Name == "Lewis")
{
    foreach (Farmer farmer in Game1.getAllFarmers())
    {
        if (farmer?.activeDialogueEvents != null && farmer.activeDialogueEvents.ContainsKey("lucky_pants_lewis"))
        {
            return true;
        }
    }
    return false;```
calm nebula
#

yuppp

#

but I guess appearance will override that one

hard fern
steep charm
rancid temple
#

I would suggest just using CP for this honestly

proven spindle
hard fern
#

he's where he needs to be now :D

steep charm
#

My coding adventures almost always lead to disasters.

steep charm
hard fern
#

SDVpufferflat im gonna take a break lool i dont wanna look at the blacksmith anymore

steep charm
#

I will gladly say when I am being dumb and am grateful for everyone's guidance. Content Patcher is so much easier.

light bramble
#

ok trying to make sure I have this i18nification right... for this section of my config schema;

      "AllowValues": "true, false",
      "Default": "true",
      "Description": "Changes the worm artifact spot with the digspot from Animal Crossing.",
      "Section": "Artifact Dig Spots"```
I need to put the token of these for the name, description and section? `{{i18n: config.Animal Crossing Dig Spot.name}}`, `{{i18n:config.Animal Crossing Dig Spot.description}}`, `{{i18n:config.section.Artifact Dig Spots.name}}`
#

I mean I think I might shorten the tokens XD but that's generally what I need to do?

tough crater
#

Oh you actually don't manually add the i18n tokens for configScheme into the content.json

#

You leave the i18n tokens in your default.json and they'll still be used by the code

#

I think the ConfigSchema is able to peek into i18n's and uses the naming convention for it to show

light bramble
#

ok

latent mauve
#

Might be able to get them both to move during an event though, if I can do simultaneous doActions

#

Not sure what I did wrong to get the cross-section highlight on the middle set of doors though.
From left to right, I'm using:

  • SlidingDoorLeft, SlidingDoorLeftFlip
  • SlidingDoorRightFlip, SlidingDoorRight
  • SlidingDoorLeft, Sliding DoorRight
rancid temple
#

Cross section highlight?

#

Oh the ghosting

latent mauve
#

The left door in the middle pair has the highlight from the top section of the door in both the normal and flipped position overlapping, yeah

rancid temple
#

Did you make sure to use the correctly flipped transparent texture?

latent mauve
#

I'm guessing it's because I placed the relevant door tile on the front layer instead of leaving it blank?

#

I checked it at least three times, so I'd hope so?

#

But I could still have messed it up

rancid temple
#

All the front tiles get replaced with whatever you used as the bottom tile and the two tiles above it

#

So whatever your Buildings tile is, the game sources from that tilesheet and selects that one for the Buildings and then automatically places the two tiles above it on the Front layer

#

I didn't modify that behavior but I might because I think it's bad SMCKekLmaoDog

latent mauve
#

the ghosting is only there on the first frame (before it's interacted with) so I probably still have the wrong tile in that spot in my TMX somehow

rancid temple
#

Yeah it's literally the transparent tiles just facing the wrong way

#

Because they're only removed when you open the door

latent mauve
#

I'll look at it again once I've eaten, maybe the brain fog is getting me

rancid temple
#

So further badness really because it means however you design your doors they're going to be slightly wrong since they'll literally be your doors with a transparent overlay on them

latent mauve
#

I kind of want to try these doors with the broken 2-wide version just to see

rancid temple
#

Not a huge difference but it can push some colors just to the other side of wrong

#

Well they'll open right

#

But if you put a Buildings tile in the way of one side it just won't go away

#

You could leave it open but then you can just walk through

latent mauve
#

ah, so you're not able to get the TemporaryBarrier thing working for both sides

rancid temple
#

I just didn't even try, I spent a few more days on it than I intended as is

latent mauve
#

that's fair

light bramble
#

So one of my descriptions of my config options looks like this: "Description": "Choose to enable crafting one large mayonnaise into 2 \"normal\" mayonnaises" mainly because I didn't want to have errors? But the i18nifier spits out this: "config.Mayonnaise Splitting.description": "Choose to enable crafting one large mayonnaise into 2 \" Is there no way to have "" in a string for i18nification?

rancid temple
#

I finished the original code for the doors in a few hours, figured I'd spend a day fixing my documentation

#

Then I lost a second day to redoing most of my documentation and fixing a bug I caused in my fireplace code

latent mauve
#

aww

#

well, I appreciate your door code sacrifice, it means if I ever want to actually use normal double doors, I can.

#

Rather than weird sliding ones that only make sense with a synced animation. πŸ˜›

rancid temple
#

I will definitely be tackling wider doors when I get some free time, I really want to make some more double doors lol

latent mauve
#

I can pass you my door PNG for the sliding ones if you want to play with those, LOL

#

one less sprite to make

velvet narwhal
rancid temple
#

Yeah that would help, Avi made me all the doors I used for testing, I would have lost another day recoloring like a buffoon KEK

velvet narwhal
#

took like, 10 mins

latent mauve
#

here you go, roku xD

light bramble
#

do I just have to use ''?

uncut viper
#

the i18nifier probably just cant handle escaped quotes

#

what you had originally with the backslashes is fine

light bramble
#

but putting a string with "" are ok for the i18n?

uncut viper
#

as long as they are escapedwith the backslash

light bramble
#

"config.Mayonnaise Splitting.description": "Choose to enable crafting one large mayonnaise into 2 \"normal\" mayonnaises",

#

yes?

velvet narwhal
#

yeah

latent mauve
#

I don't know why lowercase mayonnaises looks like a fake word to me, LOL. But the syntax looks correct.

velvet narwhal
#

is it time for roku to have a thread for ~doors~

rancid temple
#

Maybe, I'm waiting to see if anyone has trouble with my docs/examples

latent mauve
#

I struggled a bit before I realized I messed up on the Tile Property

light bramble
velvet narwhal
#

KEK i gaslit you into making it but i haven't been able to get around to it

light bramble
#

I started thinking the mayonnaise was a fake word

rancid temple
#

I'm hoping the examples are good enough to get most people past any roughness with my docs lol

#

I love word fatigue

#

It's such a wild phenomenon

latent mauve
#

my brainfog REALLY thought it was Action EMA_CustomDoor <key> at first.

rancid temple
#

Is mayonnaise not just the plural though too?

latent mauve
#

Before I was like "wait, no, you only get one Action per tile and that has to be Door"

rancid temple
#

I would have loved to be able to simplify it down that much though

uncut viper
#

i would never say "how many mayonaisse do we have"

rancid temple
#

How much mayo we got

#

There we go, mayo is the plural of mayonnaise

uncut viper
#

how much is a quantity of one single Object of mayonaisse

latent mauve
#

Mayo is too liquid to quantify it outside of using the container for me. xD

uncut viper
#

but thats different from asking how many mayonaisses you have in the fridge

calm nebula
#

All y'all should make mayo mods for no good reason

light bramble
latent mauve
#

Prismatic mayo

velvet narwhal
#

it's like moose

uncut viper
#

a collection of mayonnaises

latent mauve
#

Bonus points if you consume it and get the Magic Hair Gel effect

rancid temple
#

I think the problem is the way that the word is being used in SDV is not the way we would use it in real life lol

calm nebula
#

Clearly the game needs a mortar and pestle

uncut viper
#

the game uses it the same way i do

rancid temple
#

Mayonnaise is an object in and of itself, whereas in real life you would quantify it by the vessel it's in

velvet narwhal
#

maybe a machine but that seems strange

rancid temple
#

I have a jar of mayonnaise, I need 4 jars of mayonnaise to cure my dark desire

hard fern
#

making-mayonnaise-general

uncut viper
#

"how many mayonaisses do we have" is something i have said before and will say again

velvet narwhal
#

button confirmed drinks out of the jar

light bramble
#

And to think this is all because I am making large mayonnaise

rancid temple
#

You have brought back the goopy curse

latent mauve
#

I can't say I've ever said that about mayo, but I've definitely said that about mustard.

light bramble
#

Well

#

to be fair

brittle pasture
#

jail for all of you

light bramble
#

I'm not making the large mayo edible

velvet narwhal
latent mauve
#

"How many mustards do we have?" sweats in bottles of mustard stockpiled in the pantry

rancid temple
#

Coward /j

uncut viper
#

imo its the same situation with mustard

light bramble
#

"Description": "An almost absurd amount of mayonnaise, I wouldn't drink it...",

uncut viper
#

and ketchups

#

NOT horseradishes

rancid temple
#

horseradishii

lucid iron
uncut viper
#

hi-chew

velvet narwhal
#

wasabi, wasabis? thonk

lucid iron
#

btn waves

light bramble
#

ok another (maybe dumb) question. Should I indent the default.json?

rancid temple
#

Wasabeeses

velvet narwhal
#

whitespace is a personal preference

lucid iron
#

you are probably the 20th person to call me hi-chew

uncut viper
#

indentation literally matters not at all

#

sorry SDVpufferpensive

rancid temple
#

What about chu chu train?

tiny zealot
#

this mayonnaise discourse is a fish-fishes situation, isn't it

velvet narwhal
#

i'll just judge you disrespectfully if it looks like nonsense if i have to debug your json

light bramble
#

Like it looks wrong tho...

brittle pasture
#

and I'd rather let an automated tool to the indenting for me

lucid iron
velvet narwhal
brittle pasture
#

now if we're in the alternative universe where everyone is using YAML that would be a different answer

tough crater
rancid temple
#

linkoid tried to bring our realities together

velvet narwhal
#

don't say yaml you'll summon linkoid

lucid iron
#

it was not meant to be

#

cp x yaml starcrossed lovers

tiny zealot
#

yaml
one fear

light bramble
#

thing is...if I indent this one...I then have to do it for ALL of mine...and then upload an X.X.7 version or something

lucid iron
#

but u can use it if u want, yacp

brittle pasture
lucid iron
#

i dont think its particularly danger unlike many of button's mods

velvet narwhal
#

my favorite quote

ivory plume
#

(I suggest indenting all JSON files, and using .editorconfig and a text editor which supports it to enforce consistent indentation.)

uncut viper
#

none of my mods are any more dangerous than any random person making a C# mod imo

lucid iron
#

the danger is that power corrupts

rancid temple
#

Flavored mayo mod, mayo machine lets you add other ingredients to it

uncut viper
#

you cant delete all lightsources with BETAS

light bramble
#

what is that?

tiny zealot
rancid temple
#

Or is this a new chapter in mod making history

calm nebula
#

Mod where doing anything costs stamina

velvet narwhal
#

i should've really quoted that thing that chue said

calm nebula
#

Making mayo is half the bar

rancid temple
#

Climbing out of bed instantly costs 50% of your daily stamina

ivory plume
patent lanceBOT
hard fern
#

(i know part of the cornucopia mods lets you make flavored mayo, but will this new and unheard of mayo mod let you make fruit mayo... eel mayo...)

calm nebula
#

Pufferfish mayo

velvet narwhal
#

y'know i'm glad atra is retired

patent lanceBOT
calm nebula
#

Yessss

#

Finally

rancid temple
velvet narwhal
#

waiting for that one, huh

tiny zealot
#

hey friends, (C# GMCM) what is the incantation to get the current value of a config widget (during edit, before the user hits Save)? simple rtfm answers like "reflection" are acceptable

velvet narwhal
#

that is very cursed knowledge

uncut viper
#

i thiiiink GMCM lets you ge those normally?

calm nebula
light bramble
calm nebula
#

Near the bottom

uncut viper
#

OnFieldChanged

tiny zealot
#

bueno, thanks friends!

velvet narwhal
#

okay nevermind not as cursed as what i was thinking

uncut viper
#

you can reflect if you want to

#

you can leave the api behind

tiny zealot
#

if the api has it, i'll use the api. i'm not a monster /lh

ivory plume
lucid iron
#

I never used editorconfig cus the default settings for jsonc plus the content patcher schema is good enough for me

#

!vscjsonc

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

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

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

at the start of your content.json file.

light bramble
lucid iron
#

The schema thing should be supported by other editors too

rancid temple
#

Well, open permissions isn't quite the same as open source, but for CP mods it's probably close enough

velvet narwhal
#

i mean not necessarily for others, but incase you lose your own files, though ig if you're only doing content packs you don't have to worry much about recompiling

ivory plume
#

(Tip: besides content.json and manifest.json, Content Patcher doesn't actually need the file extensions to be .json. So all your included files can be .jsonc if you want.)

velvet narwhal
#

hides my folders of json5

lucid iron
#

Using git also give u nice version control stuff

lucid iron
#

And if u hate GitHub specifically there's other git providers

uncut viper
#

(if your mods are meant to actually be open source then yeah you would need to fix your nexus permissions and add a license saying so)

rancid temple
#

Since I still haven't released any CP mods, I mostly like git for CP stuff because it makes it really easy to share

light bramble
velvet narwhal
#

direct link, points at it right there

#

saves me the hassle of typing it out if i know i've already done something similar when i'm helping people too thinkspin

rancid temple
#

If it's a snippet, I copy paste and then spend the same amount of time fixing all the indents because Discord ate them

brittle pasture
#

ggVG= my beloved

uncut viper
#

explain

#

is this another one of your vim things

brittle pasture
#

noyes
gg - go to beginning of file
V - enable line select mode
g - go to end of file
= - indent

velvet narwhal
#

oh a linux thing
-# you and you damn vim users

tiny zealot
#

(it's vim)

calm nebula
brittle pasture
velvet narwhal
#

i wish casey a good vacation

drowsy pewter
#

i heard flavored mayo

calm nebula
#

We're brainstorming an aloli mod that requires a custom tool, goes bad in two days, and requires half your stamina bar to make some

drowsy pewter
#

Sounds amazing, where do I sign up

calm nebula
#

Irl

drowsy pewter
#

Nevermind

calm nebula
#

Meanwhile I'm making mayo with sichuan chili oil

drowsy pewter
#

That actually sounds like it fucks

#

I need it

light bramble
#

what type of license should I use for my stardew mods???

uncut viper
#

most people choose MIT

#

some GPL

light bramble
#

What's the difference thoooo

tiny zealot
#

big, big difference between those two specifically

uncut viper
#

MIT = anyone can do whatever they want with your stuff at any time
GPL = they can do that but they also have to put the results out as GPL
along those lines. ish. im not a lawyer

tiny zealot
#

MIT places almost no restrictions and can fit on a business card. the GPL has a bunch of (good, for certain applications) restrictions and is so long i've never read it in its entirety

brittle pasture
#

also you may not necessarily want to license your assets (art, writing, etc.) under those licenses

calm nebula
#

Realism mod that makes myao machines also require oil

uncut viper
#

myao machines SDVpetcat

light bramble
#

I mean I want people to know my mods are open source, but also don't want people to take my mods and turn around and sell them if that makes sense.

uncut viper
#

well, then that isnt open source

#

that would be source-available

light bramble
#

Wait really?

uncut viper
#

being able to see the source code =/= open source

brittle pasture
uncut viper
#

open source means your stuff is open to other people taking, modying, altering, redistributing, etc. your stuff

#

placing restrictions on what they can do with the software means it isnt open anymore

drowsy pewter
#

What mod are you making again?

light bramble
#

I just....I don't want people to take credit for my work. Like I want people to credit me for ideas and such.

uncut viper
#

content patcher, for example, is open source (MIT I believe?) which means if i wanted to, i could copy content patcher, make some edits, and sell it somewhere else if i wanted to and had a buyer

#

they would need to include your license in it, still, with your name as the license holder

light bramble
# drowsy pewter What mod are you making again?

a lot XD but rn I'm working on Large Cheese and Mayo, I'm adding credits to you and the creator of Dairy and egg product overhaul mod. You because I'm using some of your code, and the other person because I'm basically turning their mod from JA and PFM to soley CP

brittle pasture
#

MIT/GNU does require attribution

drowsy pewter
#

I see

uncut viper
#

the only commonly used license i know of that doesnt require attribution is the Unlicense

#

and even that isnt very common

drowsy pewter
#

so the first thing would be that typically, if you used code from other people, you no longer have the right to license that code (in this case it doesnt really matter since it's a few blocks of CP "code")--because you're not the original creator

#

But that immediately makes the licensing thing not relevant

tiny zealot
uncut viper
#

i dunno what that even stands for

light bramble
#

_<

drowsy pewter
#

I mention this because if you end up with a mod that has art, etc from other people, you'll want to be considering what the permissions are for those images before assigning an open source license to the project

uncut viper
#

you can license your portions of code under your own license but 6480 is also correct that you cant change the terms of a license for stuff you didnt make, unless you have permission to relicense it

tiny zealot
#

but aside from explicitly "i don't care" licenses like that, and public domain dedication (which is only questionably possible depending on your territory), every license requires attribution, so your name will still be in the thing (as long as people follow the rules, which they don't always do)

uncut viper
#

(and that "you can license your portions of the code" also has caveats depending on the license of the things you used)

light bramble
#

Gods above I feel like I'm being dumb >_<

#

And like what about art I get commissioned for a mod? Then does that not let me license it?

uncut viper
#

also, if you accept translations for your mod and dont have a license, then the people who made those translations have ownership over them, and you cannot redistribute those translations under a new license without asking them for permission

light bramble
#

I'm so confused...

drowsy pewter
#

Generally the convention for content pack mods is to not provide a license other than nexusmods page permissions and other permissions stated by the author/artist. I don't mind whether or not you do choose to license your work. But I want to let you know that 99% of content pack modders generally don't think about this question

uncut viper
#

if you commission art, you need to ask the person you commissioned about licensing

drowsy pewter
#

This isn't really something that you have to worry about if it's confusing for you

light bramble
#

but the wiki says....

uncut viper
#

you dont have to make your mod open source

velvet narwhal
#

basically: you don't need to put a license on your git, you don't even have to make your git public

light bramble
#

but the wikiiiiii

tiny zealot
#

the other side of the licensing coin is that the stardew community is, broadly, very good about this stuff, and for the most part you don't have to worry about your work being stolen

rancid temple
#

The wiki was written by people, it's not a legal document

brittle pasture
#

(also the open source thing is mostly relevant for C# code mods)

light bramble
uncut viper
#

(also, licensing stuff IS confusing, so its not something you should feel dumb about!)

drowsy pewter
#

I'm just trying to give you some context on this

uncut viper
#

nothing in that wiki page says its required of you to do

light bramble
#

I know...I'm just like...getting confused

velvet narwhal
#

i feel like we go over this licensing thing at least once a month SDVpufferclueless

rancid temple
#

It's a fairly common issue to face lol

light bramble
#

like could I just put in my ReadME to ask permission for the art?

uncut viper
#

open source is just recommended for a modding community like stardew because it lets the community collaborate and work together in the event that a mod author is no longer around or too busy or what have you

light bramble
#

Or like ask that people contact me for adding translations?

#

Like I just wanna make sure I'm doing things right...

velvet narwhal
#

you can do that in your nexus profile

uncut viper
#

you might not have permission to give the art to other people

#

buying art does not always equate to buying the rights to that art

light bramble
#

Well I mean for the art I made

uncut viper
#

and as for translations, even if they ask you first and you accept their translations, they are still the owners of the translations

light bramble
#

The subpar bad art I made XD

uncut viper
#

if its art you made you decide the rules withi t

rancid temple
#

Even bad art can be licensed, and stolen, just look at NFT's

uncut viper
#

you can also license different parts of your mod differently

#

my books mod, for example, is not open source, but the translations specifically are all under MIT and each of my translators agreed to that

#

(which did result in me losing two languages at one point, bc i did not think about licensing either when i started and could not get in contact with two translators to relicense. oopsie)

light bramble
#

But then...like. how do I do the different licensing for different mods?

#

I'm sorry I'm asking so many questions...I just want to do right

uncut viper
#

you can decide which licenses you want to use for each mod, if any license at all

brave fable
#

if it makes you feel better i haven't added a license to any of my mods at all, content pack or otherwise

uncut viper
#

really, the important thing to consider is that all a license is, is you defining what your rules are for people to follow if they want to use your stuff

#

you can make up literally any rule you want. its your stuff. you own it.

#

MIT, GPL, Creative Commons, etc, its all just preset rules written by lawyers

rancid temple
#

Licenses lose a lot of power if you're not around to try to enforce them also

uncut viper
#

you can write "You're only allowed to redistribute my mods on a full moon in November." and that is a license

rancid temple
#

The community can try to push back against theft, but it's hard to get some places to listen to a bunch of randos on the internet

uncut viper
#

people use the presetr licenses like MIT and GPL and whatnot because they didnt have to come up with all the legalese to close all the loopholes and requirements they wanted

light bramble
#

So would I be allowed to just say for each mod what you can and can't do? Like would that work?

#

Or like...Idk

#

I'm getting hella confused

drowsy pewter
#

Since most of my modding activity is art-focused, I have a blanket permissions clause available on my nexus page and github that applies to my artwork in general, and individual agreements with people who commission me to give them further rights over controlling usage of the artwork, or individual statements on specific mods containing modified work from other people. I dont use a preset license because I dont feel like they fit my purposes (even though I know Pathos would say otherwise πŸ˜›)

#

Yes

uncut viper
#

that would work. it just wouldnt be called "open source"

drowsy pewter
#

Pretty much everyone does that

latent mauve
#

So I figured out my issue: I forgot to flip the actual door in my PNG for that one sprite.

#

oops

hard fern
#

oopsie...

light bramble
#

😭

#

what would I call it then???

drowsy pewter
#

Just call it your permissions..

brave fable
#

NerdPL

uncut viper
#

you wouldnt really call it anything

brave fable
#

who knows, we could be moving from NameCore era into a whole new NamePL era

light bramble
#

I'm still really confused...really scared, and really worried about screwing EVERYTHING up...

drowsy pewter
#

I think this is a sign to maybe put the question off for another day

uncut viper
#

as long as you dont give permissions you dont have for art/assets you didnt make, theres nothing you can really screw up

#

but i also agree with 6480 here

brave fable
#

i've been putting it off for 4 years now. you're good

light bramble
#

_<

rancid temple
#

If you mess up your license, you can always start a new repo and try again

light bramble
#

I'll just specify things in my ReadME(s) for each mod...

uncut viper
#

i put it off for a while and then at one point in here i just said "If I go AWOL and you can't get in touch with me, mod authors in making-mods-general have permission to do whatever they want with my mods" and bam. thats my license. s'all i need or want right now

drowsy pewter
#

That's a good policy

velvet narwhal
#

i have forgotten the quote number for that one dammit

uncut viper
#

jam quoted it for legal proof or whatever /lh

brave fable
#

ah, the classic join-my-discord license

drowsy pewter
#

"Mod authors I like can do whatever they want with my mod. How do you figure out who I like or not if I'm gone? Fight amongst yourselves."

rancid temple
#

"If you can't get in contact with me, please don't try. Just take my stuff and go"

uncut viper
#

"if you have to ask you cant afford it" energy

velvet narwhal
light bramble
#

ok...I need to just not freak out I guess..

rancid temple
#

Modding is a great way to get introduced to this

#

The stakes are insanely low, basically non existent

uncut viper
#

yeah to be perfectly clear, the odds of it mattering are practically 0, unless you make a mod that gets a ton of unique DLs that breaks in 1.7

#

and the odds of it mattering right now are even more practically 0

velvet narwhal
#

content patcher will never break, 1.6.9 release was a hoax

rancid temple
#

There are still public decompiles of SDV out there, so we're doing just fine

light bramble
#

Well I got what I need for the art I commissioned at least. so there's that.

languid aurora
#

Any console command to invalidate assets?

tiny zealot
#

patch invalidate <asset>

languid aurora
#

Aren't the patch commands only for assets added via CP?

brittle pasture
#

CP cant add assets

#

wait I worded that wrong

uncut viper
#

everything CP does is routed through SMAPIs content pipeline, which is whats invalidated

brittle pasture
#

anyway tl;dr the game doesn know the difference

uncut viper
#

you are perhaps thinking of patch reload

royal stump
#

yeah, the command should work on any SMAPI-edited asset, despite being added by CP

uncut viper
#

or patch update

languid aurora
#

I think I must've tried patch reload last time and it complained about CP not having loaded it

uncut viper
#

patch reload just makes CP reload the actual files in your mods folder

languid aurora
#

Ok neat, less restarting to game to see texture diffs

uncut viper
#

like re-read the .json itself or the .tmx or whatever

royal stump
#

yeah, reload is for a specific content pack, invalidate does whatever

patch invalidate
Usage: patch invalidate "<asset name>"
Invalidates an asset from the game/SMAPI content cache. If it's an asset handled by SMAPI, the asset will be reloaded immediately and Content Patcher will reapply its changes to it. Otherwise the next code which loads the same asset will get a new instance.

languid aurora
#

Nice, thanks

fervent horizon
#

Curious if anyone has ever tried to convert the stable to a true building, or if there is just too much hard coded horse stuff

brittle pasture
#

wdym "true" building

fervent horizon
#

Like a mapped building

#

Instead of just a png building

brittle pasture
#

apologies I still don't quite follow

fervent horizon
#

So the Stable is just a png file, unlike the barn and coop that have the png building, but you warp to a building map interior

rancid temple
#

Like you want it to have an inside?

fervent horizon
#

Basically, has anyone ever turned the Stable into a building with an interior

rancid temple
#

Hm, would require de-hardcoding the horse a bit

velvet narwhal
#

horse is a disaster

brittle pasture
#

yes, making it have an interior is the easy part

velvet narwhal
#

not recommended

brittle pasture
#

the hard part is actually making the horse spawn inside

fervent horizon
#

Yeah, I figured it was a hardcode thing, but I have a full day of professional development tomorrow and need something to dual focus on.

patent lanceBOT
brave fable
#

i tried to make a mini framework for horses with custom sprites and sounds. the goddamn hat code, man

#

never again (probably)

brittle pasture
#

not a fan of every single hat in the game having to be manually fitted with your own two hands?

fervent horizon
#

I have all the spriting stuff down. This is just a scope creap idea I was thinking about.

velvet narwhal
#

you really want dual focus?

brittle pasture
#

though to be fair horses don't have opposable thumbs

velvet narwhal
#

do you really want the crazier idea i have?

#

modernize the crafting/cookingrecipes to have the object data, and make sure it's backwards compatible 3dcry

tiny zealot
fervent horizon
#

I cannot listen to 8 hours of pd and stay focused without a secondary focus

brave fable
#

please do not touch cooking recipes. this is all i have left

brittle pasture
#

SpaceCore tried that. Better Crafting tried that. Most mods still aren't 100% compatible with both

velvet narwhal
#

become another drop in the bucket, slave to clickCraftingRecipe

brittle pasture
#

Heck I tried that

rancid temple
#

Put it on the 1.7 wishlist

velvet narwhal
#

what's the lesser evil

#

porting shovel to 1.6.15?

fervent horizon
#

I have no desire to mess with recipes at the moment

rancid temple
#

But yeah, horses are such a mess there's really only a couple of mods that have messed with them

fervent horizon
#

I'm guess the hardest part would be the returning to it's spot at night

rancid temple
#

Honestly could just warp the idiot in the morning

#

Who cares if they wake up intersected with a building if they'll just teleport right away

light bramble
#

so in machines...what does min/max stack do? and if I just keep it to defaults is that ok?

fervent horizon
#

I already have the ability to have different horse skins for all horses in a save by configuring the body, pattern, hair, saddle and accessories, and they have the NPCMapLocations for each horse

velvet narwhal
#

i think my other dumb idea is /yet another/ interception on maps, where the night/day tiles can have custom tilesheets instead of the dedicated uhhh untitled tile sheet

light bramble
#

cuz it's not in the modding machines page

fervent horizon
#

Just thinking of other things I can add to flesh it out a bit

brittle pasture
#

so those are just the regular item query fields

patent lanceBOT
brittle pasture
#

supported in many places, not just machines

royal stump
#

I wonder if horses are "found" correctly in farm buildings SDVpufferthink
several years ago I did an unofficial fix for the horse whistle mod, and teleporting them to certain maps would just kinda lose them overnight* and generate a new hatless horse

#

but yeah, 1.3 era logic so maybe it looks harder now

rancid temple
#

Hm, I leave my horse in all kinds of places you shouldn't, so I think it's fine now

brittle pasture
#

1.6.9: When you leave a horse/mount in a temporary location, it now returns home when that location is removed.

rancid temple
#

One of the mods I made forever ago makes it so you can take horses into indoors maps and I frequently leave it in them lol

fervent horizon
#

Yep, deep dive into horses it is.

royal stump
#

it might've only been an issue on temp maps (the mines) anyway, I just never tried instanced buildings back then

brittle pasture
#

the rest I assume is just part of NPC day update and/or location update

rancid temple
#

That mod is only half working now, when I try to leave indoor locations on the horse I'm dismounted, not sure what's up with that

royal stump
#

oh right, the main nonsense I added to the unofficial was farmhands pinging the host to find their horse, because my coop friend's horse kept getting lost indoors SDVkrobusgiggle

fervent horizon
royal stump
#

non-active locations being the issue

rancid temple
#

But I can't get back on the horse since it's still inside

#

I just horse whistle

#

I made it for someone who was doing a walk to the desert mod, but I dunno if they're still making mods

royal stump
#

that one's still around but as a "redux", so I think someone else took over at some point

#

it spawns cornucopia forage with FTM without listing the mods as a requirement, so people keep reminding me SDVkrobusgiggle

fervent horizon
#

But the 🚫 said it was your mods item

velvet narwhal
#

i wish to have the amount of "i don't care" that esca has

uncut viper
#

so. potentially dumb question bc for some reason my mind is just blanking super hard right now. if im Harmony postfixing a Property Setter and i want to alter or read the thing that is being set, how would i do that in the patch? in this case im postfixing the setter on Game1.currentSong and i want to mess with the ICue that the property is being set to.

royal stump
fervent horizon
#

That's good at least

royal stump
#

it's agnostic about where the item came from, so usually there's no obvious source mod name
(or at least for older IDs like that)

brave fable
#

it almost sounds simpler to transpile and use the arg

fervent horizon
#

I have had a few WAG forage items show up today as 🚫, but it was in the bug lair and ginger island, first time load, so I wonder if they were from the old WAG packs and those maps were created back at the beginning of the save

#

None since, so Im not worried about it, just a curiosity

royal stump
uncut viper
#

i will attempt this

#

oh yeah that just worked

brave fable
royal stump
uncut viper
#

ill be honest i always completely forget Harmony has other ways to get the args that arent __name

royal stump
#

it won't spawn new error items, but existing items that lose their data will usually stay

uncut viper
#

oh nice i can even do ref CueWrapper value too since i know thats what it actually is

#

perfect, thank you both SDVpufferheart

brave fable
#

___fields behaviour is the one i forget most often. so useful

#

but also whenever i remember about it and go 'a-ha' i'm using a transpiler and it's pointless

uncut viper
#

i used to like fields but now __instance + publicizer my beloved

royal stump
#

I kept meaning to try the fields one, but I think all the use cases ended up as transpilers anyway, yeah

velvet narwhal
#

i am reminded of yet another violently gendered thing

gaunt heath
#

I explained the gender code to a terrified non-modder once, 10/10 recommend

#

Them: what gender is the dwarf
Me: great question! You will regret asking

versed wyvern
#

Is there deep lore behind the dorf yugu

gaunt heath
brave fable
#

gender is a spectrum, ranging anywhere from true, false, 0, null, and undefined

versed wyvern
gaunt heath
#

The fair calls the dwarf she because of how the code handles undefined characters, or at least it used to

brave fable
#

maybe even empty string. imagine

gaunt heath
#

Is smapi throwing an error a gender

#

I say yes

tiny zealot
royal stump
#

as we all know, gender is determined by whether GreenSlime.cute is true or false

#

(something I accidentally made CA comment on in like, 1.5 beta)

brave fable
#

petition to move bool cute upwards into NPC.cs

gaunt heath
#

Ah yes I remember now, the three genders: cute, cool, and prismatic

royal stump
#

and now I've found yet another slime setting I didn't know about SDVpetslime

specialNumber = new NetInt();```
(it's just an offset for prismatic slimes so they don't all have the same color at once)
hard fern
#

fascinating

gaunt heath
#

What's up with "???" in characters.json? I just noticed it since I have that file open

rancid temple
#

I think that's Krobus?

gaunt heath
#

No krobus has a proper entry

teal bridge
#

Might be the "shadow guy"

rancid temple
#

Oh, is that the uh, shadow guy who runs away in Winter?

hard fern
#

...huh

royal stump
#

it's involved in making shadow enemies not hit you anymore, apparently

brave fable
#

TextureName: ShadowBrute
Shadow: null
interesting

royal stump
#

it checks friendship level on that

gaunt heath
#

Huh!

teal bridge
gaunt heath
#

But the shadow guy doesn't use the standard brute texture

versed wyvern
#

Shadow Guy just uses Krobus' sprite, yeah

gaunt heath
#

I always figured that was just plain krobus honestly

rancid temple
#

The interaction is weird and I don't think there's any indication that it is

royal stump
#

I was assuming it was just dummy info in case an NPC or monster loads "???" somewhere, e.g. due to a default or weird legacy stuff, but I'm not seeing it come up much

versed wyvern
#

I assumed it was Krobus and it's just a really early cutscene Ape never revisited

#

Like maybe it originally took much longer to unlock the sewers

gaunt heath
#

Birthday 0 seems like it would cause problems on a fallback entry

velvet narwhal
#

oh sorry i immediately ignored the channel after finding the relevant code

#

do i give ya'll whiplash

brave fable
#

null 0 birthdates are fine, the game doesn't care

gaunt heath
gaunt heath
velvet narwhal
#

if i am to patch the girlfriend/boyfriend/husband/wife thing, i need to backtrack through sheku's stuff to make sure i'm not stepping on RSV's toes

#

oh sure, here

gaunt heath
#

Is that not because every other term is gendered?

#

Or for localizations with gendered terms

velvet narwhal
#

yeah, doors were finally set free, i'm now slowly making my way through the rest of the game now ig

#

anyway this is cursed

#

)))))));

rancid temple
#

I like the unnecessary one wrapping the whole thing

velvet narwhal
#

i assume i need to target both the profilemenu and the socialpage, huh?

rancid temple
#

Not sure where profilemenu appears

velvet narwhal
#

same tbh

rancid temple
#

Oh, is it when you click on them in the social page?

velvet narwhal
#

the little mugshot thing maybe?

hard fern
#

πŸ˜… are there mentions of any sports in the game, outside of gridball?

rancid temple
#

I can't think of any SDVpufferthinkblob

uncut viper
#

doesnt alex have a football

rancid temple
#

They call it gridball though

uncut viper
#

oh

rancid temple
#

Technically there's animal racing in the desert festival I guess lol

hard fern
#

...can you consider track and field a sport

#

it totally is right

uncut viper
#

it is

royal stump
#

just checked for a list of random sports like SDV has for "other town" names, but I didn't see any
and there's this, but it's vague enough to apply to a lot of things SDVkrobusgiggle

"SportsShirt_Name": "Sports Shirt",
"SportsShirt_Description": "Knock it out of the park with this classic look.",```
uncut viper
#

how many other sports do you knock things out of the park besides baseball

rancid temple
#

Yeah, kind of a baseball term but vague still

#

Could also be softball

royal stump
#

maybe it means being really bad at football

hard fern
#

gonna call it Batball XD

rancid temple
#

Diamondball

velvet narwhal
#

oh is it because it's using tiles, so therefore it's "gridball"

hard fern
#

maybe to avoid confusion between american football and everywhere else football

rancid temple
#

I just assumed it was because the field is gridlike

tough crater
#

gridball is a real life sport lol

hard fern
#

oh it is?

rancid temple
#

Lmao

#

I'm dead, that's hilarious

hard fern
#

(so clearly i know nothing about sports)

tough crater
royal stump
#

...oh, grid[iron foot]ball

velvet narwhal
#

first google search is reddit asking what the hell gridball is

royal stump
#

I've never heard that, but I guess SDVkrobusgiggle

hard fern
#

first search result LOL

tough crater
#

The name sounds as ridiculous as pickleball lol

velvet narwhal
#

when was stardew released

rancid temple
#

80 years ago

velvet narwhal
#

February 26, 2016
Gridball is a new sport created by Steve Porter from Lisburn in March 2018.

hard fern
#

....

velvet narwhal
#

gridball canonically fake sport

rancid temple
#

They stole it from CA

hard fern
#

well then

#

oh ive played pickleball. it's like worse table tennis

rancid temple
#

How do you fuck up table tennis?

hard fern
#

the ball is big

velvet narwhal
#

paddles as small as the-

royal stump
#

(oh, there's exactly one direct mention of baseball in the hungarian hat i18n SDVpufferwoke)

"DarkBallcap": "Dark Ballcap/TΓΆkΓ©letesen rΓ‘illeszkedik a fejedre./false/true//SΓΆtΓ©t baseball sapka/111",```
hard fern
#

(it's real! baseball is real.)

velvet narwhal
#

translations don't count /lh

hard fern
#

aww

rancid temple
#

I mean, the base item is called a Ballcap though right?

velvet narwhal
#

but that could be an actual ball on a cap

#

i am now gonna make that a hat

rancid temple
royal stump
#

the only protection you get to wear in gridball is a cap SDVpufferconstruction

rancid temple
#

Really captures the essence of football

forest bobcat
#

Ove never made a mod for Stardew and I was curious as to if someone could point in the direction on where to start

velvet narwhal
#

but a ball instead, just to piss you off /lh

rancid temple
#

In a world with magic, you would have to wear less protection to get better concussions

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.

forest bobcat
#

Oh thanks

velvet narwhal
#

we can also help further if you know what kind of mod you wanna make

forest bobcat
#

Well that's more helpful than I thought this would be thank you

#

I appreciate it

hard fern
#

πŸ˜… this event im scripting is already looking long.. whew..

rancid temple
#

The docs and wikis are chock full of good info

forest bobcat
#

I don't quite know yet, I'm just now learning c# and coding in general

#

Ok thank you

royal stump
#

...oh, Alex says volleyball is real in 1.5

"Resort_Wander_2": "I wonder if anyone would be up for a volleyball tournament.#$e#Don't worry, I'll go easy!$h",```
latent mauve
#

I should have looked over here first before DMing you roku, didn't think you'd still be around xD

velvet narwhal
#

wait, 1.5?

#

is it gone now?

royal stump
#

1.5+, sorry, it's still in his resort stuff

rancid temple
#

Oh, I didn't even notice the DM, the notif icon is so damn small

royal stump
#

just no other mentions until that point

latent mauve
#

LOL, it's all good. Just more door stuff

hard fern
#

well, so far i have

    (Gridball) 
"Seems popular in the valley, yeah? The Mullner boy's usually outside tossin' one around." 

    (Track)


    (Swimming) 


``` for my options...
#

idk anyone would want me to list out every possible sport XD

royal stump
#

(his other wander line is about frisbee, which is both a specific trademark and a sport SDVkrobusgiggle)

rancid temple
#

Ultimate Discus

hard fern
#

(for some reason i was going to ask if steak was a sport, thinking about his event with dusty)

rancid temple
#

Only for the dog

royal stump
#

playing disc golfℒ️ with steaks so dusty joins in

#

I guess those are the notable ones I can easily search, though stuff like track/foot races/etc could be assumed to exist ig
(oh right, that's on the list already SDVpufferdizzy)

uncut viper
#

another question related to earlier: does anyone know off the top of their head the very first place a Cue is told to play audio or send audio to a buffer or whatever? the issue im having is im trying to update some variables on the Cue object itself for playback, and the methods ive tried prefixing/postfixing so far (including Cue.Play()) are too late.. the effects i want take place, but only after the first little chunk of audio, which is like half a second. so the music plays normally and then suddenly changes when my changes take effect (presumably from some Update function somewhere?) in a very jarring way

royal stump
#

XNA's audio stuff is a little too convoluted for me to help much, but I think modifications to cues involve some OnModified events that get invoked by Stardew's AudioCueModificationManager SDVpufferdizzy not sure if that's what causes the delay before it updates

#

not seeing any obvious precursors to Play() itself, so far

#

(that might also be limited to Data/AudioChanges modifications and not direct C#)

uncut viper
velvet narwhal
#

that sounds like i'm being haunted by a ghost

uncut viper
#

i guess this mod will just have to go on the backburner for a longer while cuz i cant figure it out

#

i cant just edit the audio before it plays, either, because I actually need to edit stuff on Cue._soundEffect, but _soundEffect does not exist until the Cue plays :u

#

you'd think editing the SoundEffectInstance before it gets assigned to that would work, but you would also be wrong

uncut viper
ruby rapids
#

Can some one help me to find where the documentation is dealing with character locations at a festival? I am trying to move a couple of NPCs around because they are on top of each other during the egg festival. I messed with the numbers and had some really unexpected results.

royal stump
ruby rapids
#

Thanks!

timber plover
#

is there a "When" call for "player has full health" ?

#

i searched a bit and found nothing on that Γ–vΓ–

velvet narwhal
#

uhhhhh

#

i don't think there's a vanilla one but there is one in BETAS // queries

timber plover
#

oh ❀️ thanks

#

now ..do i want to unclude this just for 1 thing to be cooler to use Γ–-Γ–

kindred patio
#

\

proud wyvern
#

keep in mind this can only update at most once every 10 in-game minutes

timber plover
#

hmm ok thats then not working with my idea >.>..damnit

proud wyvern
#

(and you need to tell it to update that often)

timber plover
#

would it update when you leave a map?

proud wyvern
#

it can, yes

tough crater
#

You gotta put the code in the same chunk as "Action" and whatnot

timber plover
#

uhh then i could still use it ..since its combat related and mines are not that big Γ–vΓ– thx<3

#

dump for vulcano but well for the funs its fine

peak isle
#

you guys know how I might be able to unlist a config option in GMCM? like, lets say I have option 1 and option 2. i only want option 2 to even show up if option 1 is enabled. I can think of a way to do it, but I was hoping there might be an easier way. i was thinking something like OnFieldChanged => case id: (refresh thing here or smth lol). is this possible or am i being weirdly difficult about this lol

proud wyvern
#

not possible without great black magic hackery

peak isle
#

damn

proud wyvern
#

GMCM just isn't dynamic like that

peak isle
#

then for my second question, and this is a little embarassing to ask as its prob obvious, but would unregistering and reregistering the config have any sevre consequences to include resetting all of a users settings to default πŸ˜…

proud wyvern
#

GMCM doesn't care at all about the actual settings model

#

it's you who provides the model

#

GMCM doesn't even know it's working with one

#

so unless you do something stupid, it couldn't possibly reset the settings

peak isle
#

nice

#

cheers, i appreciate the help

proud wyvern
#

but you can't unregister and register a menu you're currently on

#

last time i tried to do that, it just kept the previous contents

peak isle
#

oh interesting

#

im going to try something stupid now, for science

proud wyvern
#

you could hack around and close the menu, unregister, register, and open the menu again, all in code, but i think it may need to be across multiple frames; and you also lose any pending changes that way, and you also lose the scroll position

#

and it slowly becomes great black magic hackery

peak isle
#

yeah im seeing now. i had a whimsical idea i think would work but im really lazy and the laziness is starting to win out lmao i guess ill investigate some more sane alternatives first

tiny zealot
#

my current GMCM question is "how can i set up an AddComplexOption so that it actually consumes zero height in the widget list?"
i have a couple with height: () => 0 but there still seems to be some padding or something and the extra pixels are driving me mad

#

(negative height does not work, i tried that)

#

i'm doing live preview shenanigans and there's enough free space (next to checkboxes) for me to draw the previews in the widget column without inserting vertical space, but when i put in the complex options with height 0 i get uneven gaps due to said padding and i am Botheredℒ️

next quarry
#

is there a guide somewhere on how to look up how something works in the games c# code? I would need to look up how the TV works

proud wyvern
#

i think there comes a point when GMCM just isn't meant to be used for what you need

tiny zealot
#

!decompile

ocean sailBOT
next quarry
#

Thank you!!

tiny zealot
timber plover
#

i think im missing something i have no error but it doesnΒ΄t work
is the spiderbutton thingy correct?

velvet narwhal
#

so gsqs can only be used under conditions

#

where are you using this patch?

timber plover
#

on a projectile of a sword Γ–_Γ–

#

.> if you mean that

velvet narwhal
#

like the editdata is on data/weapons?

timber plover
#

yes

#

it is

#

i think i would work when i write is in a diffrent way ..at least its mostly why my things fail Γ–_Γ–

velvet narwhal
#

i guess i'm just not understanding the end product, i assume you want the projectile to do a different amount of damage based on the player's max health?

#

like current, or did you mean to count stardrops

#

beyond that, you wouldn't be able to use the BETAS query like that, it's meant for trigger actions

timber plover
#

oh sry no i want it not to fire when i dant have max health ..im not sure i under stand teh condition write in the patch thingy

tiny zealot
#

sounds like maybe legend of zelda master sword full-health-sword-beam

calm nebula
#

there is not a way to do that currently, no

#

and I don't think there's a way to do that

timber plover
#

correct

velvet narwhal
#

yeah that sounds like fully custom c#

tiny zealot
#

i doubt you can do this via content patcher, yeah

timber plover
#

thats why i use the Spiederbutton conditions i thought it would do it >.>..

#

but might be my lenguage barrier at that part

velvet narwhal
#

yeah that's my fault for suggesting it because i thought you were using trigger action queries, not cp conditions

timber plover
#

wordsT-T

tiny zealot
#

a couple issues with the approach, i would think, including that i think a spawned weapon wouldn't see updates to the weapon data after the fact, and you'd have to spawn a new one

vernal crest
#

BETAS contains game state queries (GSQs) that can only be used where other GSQs can be used. Content Patcher "when" fields is not one of them.

calm nebula
#

(even if content patcher when fields could handle gsqs, this is updated at most once every ten in game minutes)

timber plover
#

yeah im fine with the update thing was curries if at least its kinda possible

#

they must be a way to turn projectiles off XD

calm nebula
#

not necessarily πŸ˜›

timber plover
#

i just want to much Q-Q again

tiny zealot
#

anything is possible in the land of C#

timber plover
#

Q-Q ...im an artist mostly im happy that i can basic shit

velvet narwhal
#

crazy enough, it can be probably made into a trinket via trinket trinker, but uh, that is Pretty Advancedℒ️

timber plover
#

well i write it down for future me Γ–-Γ–
...becouse i need to do my last tilesets for the update

#

but thanykyou everyone for the help ❀️

latent mauve
#

Sounds like I need to get a move on with the NPCs again

plain marsh
#

Is there a tutorial to make a custom tool?

tough crater
vernal crest
#

Motivation probably lol

tough crater
#

That's valid lol

tiny zealot
gaunt heath
#

People have fought the tool code and won, but it's rare

latent mauve
#

Right now Shane's drunk portrait is my nemesis, because I'm having trouble redrawing it with Ingo, and then I still have a few more portraits to go before I can jump back to sprite work (which I find way easier, usually)

#

I have maybe 5 portraits left, they're just frustrating me at the moment.

gaunt heath
#

Should the pinned message here be updated to direct to the new modded suport area?

latent mauve
gaunt heath
#

I know quill, I know, someone is reading the pins. It's a miracle SDVpuffersquee

latent mauve
#

There's so many pins though

gaunt heath
#

Pathos will occasionally re-pin the directory message so it's at the top

timber plover
#

but take your time

latent mauve
#

Some of them need still code tweaks for events and scheduling/home repositions, but otherwise, most of the code should already be done for them, it's just the art holding me up. >_>

#

I did all the pre 1.6 dialogue ages ago, so only need to update the new lines.

fading walrus
fading walrus
final sequoia
#

I tried searching but didn't find quite what I was searching for, so thought I would ask: Is there anything like a checklist anyone uses for making an NPC? I am going through general info and things, but get distracted or overwhelmed. Like "Make Sprite" (check), "Make Portrait" (check), "Make home map", "Make Data/Characters", etc. etc.

hard fern
#

Honestly idk, i just move as i go...

#

I made the sprites/portraits first to get them out of the way, then started dialogue, as it's the bulk of the work i need to do

fervent horizon
latent mauve
#

I have a roadmap of sorts that I'm using for the Legend of Zelda NPC mod I've been working on for a while now. There's so many of them that I needed it to keep me on track.

#

And it's basically just:

  • Sprite
  • Portrait
  • Home / Schedules
  • Dialogue
  • Events
  • Festivals
  • Map strings

which is kind of overkill, but then, I'm doing a complete replacement of the vanilla NPCs, so I have to be thorough.

final sequoia
#

That helps a lot, @latent mauve (hello again, btw). I just need something to help me stay organized. I started some of the data things, but got a little frustrated with "Home" because I didn't have a proper map. So now I do that then come back and... just wanted some idea to make it flow a little better.

latent mauve
#

Feel free to use my Pelican Valley Loft NPC Apartments mod for a temporary home while you get the rest filled in (hi again!). πŸ˜‰

Or you could use the non-mod option of setting Home to the town square (I think that's the default still) and changing it later once your map is implemented.

tiny zealot
# fervent horizon Just curious if you are ding a live preview, how are you changing the image dyna...

AddComplexOption puts in a widget where you specify the draw function, so you get to control how it renders. i use OnFieldChanged to change some static fields in response to the user changing the other widgets, then draw the complex widgets based on those values.
see here for detail: https://github.com/ichortower/HatMouseLacey/blob/develop/SMAPI/Config.cs (look for Register() and follow from there)

ivory plume
fervent horizon
#

Awesome, I will look into that. I was using the addImage, but I am pretty positive that is non updatable and static

vernal crest
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:

thick anchor
#

Hello, i need to find somewhere a list of WHERE i can trigger cutscenes... like if i can trigger them AFTER day ends , etc ....

tiny zealot
thick anchor
tender bloom
#

Keep in mind that you will have a hell of a time with a cutscene in the farmhouse

#

it sounds like you want a night event

valid folio
#

Hello! Could you please help me with something? I'm trying to translate a mod into Spanish. I have extensive experience doing this, but it's the first time I've encountered something like this.

I'm attaching a screenshot. Normally, when what's shown in the screenshot happens, it's either because the i18n folder is misplaced or the quotation marks were omitted. However, the first shouldn't be the reason, and the second definitely isn't.

Do you happen to know if Produce Framework Mod is compatible with i18n?

tiny zealot
#

{{i18n}} is a content patcher token, so PFM would need to support it explicitly i think

teal bridge
ivory plume
valid folio
tiny zealot
valid folio
#

(optional) The translation key. This is the key in the i18n file where the mod will look for the format of the OutputName in other languages. The value of this key follows the same rules of the OutputName property above. Default is null. "PFM only supports one translation name per output index."

Now I understand, thank you.

elder mountain
#

Please help πŸ™ I have no mini-game and no quality when fishing. Everything is fine with vanilla fish, there is also a mini-game and quality

#

It seems that there is no problem in the files, textures, description and everything else loads, but there is simply no mini game and quality

tough crater
#

Do you have a mod like EasyFishing installed?

elder mountain
#

No, I'm fine with others, but not with mine

#

There are no mods that do anything with fish

tough crater
#

That's so weird

hard fern
#

did you set a fishing difficulty..?

elder mountain
#

That's why I wrote here, because I don't understand what the problem is at all

elder mountain
#

I can take a video now and send it here if needed

orchid patrol
#

Hi there, hello. If I am seeking some help writing a content patcher mod, where do I go?

elder mountain
#

Here

hard fern
#

right here!

hard fern
# elder mountain yep

hm unfortunately im not a fish expert...i know there is a guide somewhere on making fish, maybe you missed something?

orchid patrol
elder mountain
#

I checked all the files and everything should work fine

#

But for some reason it still doesn't work πŸ˜”

fading walrus
#

(are you using a mod someone else made, or making one and having problems while testing?)

elder mountain
#

I do it

fading walrus
#

ahh

#

carry on then

elder mountain
#

Everything was fine with the first fish, but after sorting through Include, the mini-game stopped working

uncut viper
#

also what are you trying to trigger? a patch?

#

also, you dont want to use Entries when changing single fields on existing things (like the dino egg and mayo prices)
you want to use Fields instead
using Entries here means you are setting every other field, the ones you didnt write, to their default values

orchid patrol
orchid patrol
uncut viper
#

if you want it to change immediately, you can't do that with just Content Patcher, and existing mayo will not have it's price changed, only newly spawned mayo

elder mountain
uncut viper
#

iirc for the new stuff the HasWalletItem token will check for the stats that they apply to the player, so I think you might need to check for the unqualified item id of the treasure appraisal guide (since books name the stat after the book)

#

im not 100% on that though

orchid patrol
uncut viper
#

Data/Objects yeah

#

all the books have a name like "Book_Name" like Book_Horse

#

but IDK off the top of my head what it is for the treasure appraisal guide

orchid patrol
calm nebula
#

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

reef geyser
#

agh my bad! Thank you!

hallow urchin
orchid patrol
#

Alright sooo "HasWalletItem": "Book_Artifact" does not work, SMAPI says "Book_Artifact" is an invalid condition. But I also see in Data/Powers something about "UnlockedCondition": "PLAYER_STAT Current Book_Artifact 1", could that be useful?

uncut viper
#

!json please show your json. the UnlockedCondition is not helpful. content patcher when conditions cannot use GSQs

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.

brittle pasture
#

CP When conditions doesn't seem to have one for player stats

#

which is how book reads are saved

#

if what you're trying to edit supports GSQs use that instead

orchid patrol
brittle pasture
#

(there is a workaround for CP not having stats, but show us what you're trying to do first)

uncut viper
#

i thought i read in the code at one point that since that stuff all goes in the special items & powers tab (Which was once the Wallet) that the HasWalletItem token accounted for the vanilla stuff, but that was the part i was not 100% sure about

orchid patrol
#

Relevant snippet:

            "LogName": "Multiply Dinosaur Mayo Price",
            "Action": "EditData",
            "Target": "Data/Objects",
            "When": {
                "HasWalletItem": "Book_Artifact",
                "MayoBook": "true"
            },
            "Entries": {
                "807": {
                    "Price": "{{Query: {{PriceMayo}} * 3}}"
                }
            }
        }```
uncut viper
#

but i wouldnt think "Book_Artifact is an invalid condition" would be the error thatd show if it wasnt unless the json was formatted wrong?

#

could be wrong though

brittle pasture
#

HasWalletItem uses a hardcoded list of wallet items (which back in 1.5 was themselves hardcoded, no mail flags associated with them IIRC)

uncut viper
#

this is fine for now but for future reference though please send the entire json through the uploader

orchid patrol
#

Fair LMAO I just am trying to do several things with the same code so I didn't want you wading through other things

brittle pasture
#

hmm yeah that is tricky, and GSQ doesn't help there

uncut viper
#

if HasWalletItem wont do it then your best bet without other mods as dependencies is to send a mail flag on location changed

#

using Data/TriggerActions

#

then check for that mail flag as your When condition instead

#

TriggerActions use GSQs so you can use the same condition as the thing in Data/Powers

orchid patrol
#

So send a letter about the increased price and then that will trigger the price increase?

uncut viper
#

a mail flag doesnt need to have any actual mail with it

#

if you send a mail ID that doesnt actually exist in Data/Mail, then it still gets put in the mailbox and you can check for it with GSQs or When conditions

orchid patrol
#

Oh cool! Didn't know that (my first mod lol) thank you for your patience with me and I will try that!

uncut viper
#

just remember to send it straight to their "received" box and not their normal mailbox

#

so they dont get the lil letter icon over their mailbox

#

the game and many mods use mail flags all over the place that the player will never know or care about

valid folio
# ivory plume `{{i18n}}` is a Content Patcher token, so it'll only work in Content Patcher pac...

In the end, it couldn't be solved. I followed the steps from the README, but it didn't work, so I opted to do a direct translation by replacing the text in English with Spanish text. This way, the desired result was achieved. I'm not fully satisfied because it's like a hybrid translation between i18n and text replacement, but it works, so I'll leave it as is.

The positive takeaway from all of this is that I learned about the dynamic variable {farmName}, although it seems it doesn't work outside of PFM.

elder mountain
distant radish
#

MES & MPS Beta Test Group | Check Pin!

simple spoke
#

Can someone help me with the Code for Items. The Item is Ingame but it dont want to load the Texture