#making-mods-general

1 messages ¡ Page 238 of 1

uncut viper
#

CP tokens do return values, but BETAS does not add any CP tokens

tribal ore
#

What I'm doing right now is clunky. I have a conversation timer that I check for when it runs out. The BETAS GSQ would certainly solve that part of the problem

halcyon prawn
#

It isn't a long time anyway. Really, it's awesome that you managed to make such a mod in less than a year

tribal ore
#

The reason I was so excited about accessing the friendship data is because I've had a couple people already ask me about Polyamory support and... yeah

candid stratus
#

May I ask what these are and what they're used for?

rigid musk
#

light tiles

#

from the paths tilesheet

uncut viper
#

just reading arbitrary data from the Friendship data would require bespoke CP tokens

ornate locust
#

Invisible ingame, but a light will be placed there

candid stratus
#

Ahh okay thanks

uncut viper
#

i feel like ive seen a mod with similar ones before, but it wouldve been months ago and i dont recall it

ornate locust
#

Doesn't Ridgeside do something with wedding anniversaries?

tribal ore
uncut viper
#

i imagine ridgeside just does everything it needs compeltely bespoke in C# without the need for tokens

ornate locust
#

ah yes, the speedbump in "Let's see how they do it", bespoke C#

uncut viper
#

Custom Tokens was the one I was thinking of actually yeah. they do have an anniversaryday and anniversaryseasson token, though

calm nebula
rigid musk
tribal ore
#

For the polyamory stuff

ornate locust
#

hm

uncut viper
#

Polyamoury support is a whole other can of worms when it comes to mods providing tokens for this stuff

tribal ore
calm nebula
ornate locust
#

yeah that's a problem

candid stratus
calm nebula
#

Or if the polyamory mod does it

tribal ore
#

Alright. Thank you both for answering my questions. I'll mull on the poly stuff for awhile yet, but then go down either the Betas route (for the GSQ) or the Custom Tokens route

tidal stone
#

@rigid musk does the other map im trying to warp to need any properties to allow the warp to happen because I think i put it in right but im not entering the other map, i assume it might because that way you could specify where you warp onto maybe?

rigid musk
tidal stone
#

caretaker interior being were im trying to go btw

rigid musk
#

Hm... that should work then - that's for sure the name of your map ?

#

no mod id or anything with it?

#

internal name as well

calm nebula
#

Did you not....yes

rigid musk
#

And that's also on the buildings layer right

tidal stone
#

its named purely CaretakerInterior.tmx it should be yes

#

yes it is

rigid musk
#

the tmx file isn't what you need the name for you need the name for uhh

#

how do i do words

#

how you load it in CP

tidal stone
#

ohhh then do i also need to load it as a map then

rigid musk
#

from your data/locations load for said location

#
          "DisplayName": "{{i18n:Aos.QiRoom.DisplayName}}",
          "DefaultArrivalTile": {
            "X": 23,
            "Y": 10
          },
          "CreateOnLoad": {
            "MapPath": "Maps/AngelOfStars.Mrqifriendable_QiRoom",
                    },
                },```
#

from this

tidal stone
#

oh

#

i was gonna use this one

#

lol XD

#

i would broke it

#

like with no entry thing

uncut viper
#

you do still need to make sure you loaded the actual map itself too

tidal stone
#

arrival that word

#

do i need to extract it and save it as an xnb because the paths thing says its looking for an xnb

uncut viper
#

no

#

do not work with xnbs

tidal stone
#

ah ok

uncut viper
#

the game expects xnbs. CPP/SMAPI handle that for you

#

its just what the error log says

rigid musk
#
            "LogName": "Load Room Location",
            "Action": "Load",
            "Target": "Maps/AngelOfStars.Mrqifriendable_QiRoom",
            "FromFile": "assets/QiRoom.tmx"
        },```
like this for loading the location itself as well
uncut viper
#

for loading the map

rigid musk
#

er yeah (im very good at words i promise)

uncut viper
#

Map =/= location is an important difference

tidal stone
#

Oh

#

that might be why theres so much red

rigid musk
#

there's two pieces to locations B)

#

or two main ones anyways

#

that you do with cp

uncut viper
#

a Location is a collection of data about a place, such as fishing spots, music, etc. that data includes what Map to use

#

a Map is the actual thing you made in Tiled. it isnt a Location

#

the Map needs to exist for the Location to be able to use it

#

so you must Load the map

rigid musk
#

Button you are very smart

uncut viper
#

im very good at repeating info

#

that ive read elsewhere

candid stratus
#

also an important skill to be fair

rigid musk
#

yeah but you also understand it which requires smarts

tidal stone
#

NOOO i didnt skip intro

tribal ore
tidal stone
#

thats so real 2

tribal ore
#

Make a whole new save file xD

tidal stone
#

oh no its doing the "i will pull data from the wrong folder thing again, time to edit more

#

if i leave this bit alone

#

will that make it pull from the downloaded mod dependency?

uncut viper
#

dont leave that bit alone

tidal stone
#

ah ok

uncut viper
#

no, it will just break it entirely

#

you must change it to just MidnightsMisc

tidal stone
#

ok

ornate locust
#

Yeah you want to strip the paths for all your tilesets

tidal stone
uncut viper
#

(or MidnightsMisc.png, it doesnt matter if the extension is there)

tidal stone
#

i wasnt sure if i left it like that if that was how making them dependant would work

uncut viper
#

if someone makes a tilesheet mod then its their responsibility to make it work

#

because what the tilesheet author does is they do a Load for their tilesheets and load it to, for example, Maps/MidnightsMisc

ornate locust
#

Yeah the coding to make it work is on my end there

uncut viper
#

that way when the game loads your tmx and looks for MidnightsMisc, the tilesheet author hass already loaded it beforehand

ornate locust
#

You just refer to the image and I do the rest

candid stratus
#

So if I make a new map with vanilla tilesheets (tilesets according to tiled? Does it have additional data embedded?) I will put my map in the mod folder and accompany a copy of the tilesheets in the same directory right?

uncut viper
#

your unpacked content folder has abslutely no effect on anything when the game is running whatsoever

#

some people like to make their maps with their .tmx inside their unpacked Maps folder to keep all the tilesheet paths correct, but the tmx will be moved back into your mod folder in the end regardless

#

i did misread "i will put my mod in the map folder" so oops

candid stratus
#

Ahh okay SMAPI repacks it for me?

tidal stone
#

i still cant click the door to go in 😭

uncut viper
#

you can either do what i said and make your .tmx in the unpacked maps folder and move it later, or you can do what ytou said and put your map in your mod folder and TEMPORARILY copy tilesheets over

tidal stone
#

i think i gave it the wrong name

#

is it the full mod id

uncut viper
#

its whatever you named your location

candid stratus
#

I was more wondering whether the game will end up finding its vanilla tilesheets in its unmodded data or use the modded folder for it but if it repacks it before deployment then I guess that doesnt matter

ornate locust
#

I always use a workspace folder for mapmaking. I put all my tilesheets in it, including ones from mods I use, and then I put the maps in there. And when I finish them, I put the map files in my mod without the tilesheets

uncut viper
ornate locust
#

this means I don't accidentally leave any tilesheets I don't intend to in my mod

candid stratus
#

Then what about custom tilesheets? Where do they go?

tidal stone
#

OHHH

uncut viper
#

you can i think rename them to put a . in front of their name and SMAPI will ignore them, but i dont recall exactly, and its not so good an idea anyway to distribute vanilla assets like that ifd you can avoid it

candid stratus
#

that's fair

uncut viper
#

Custom Tilesheets will also be copied into your mod folder with the .tmx, for editing

#

but just like vanilla tilesheets, you delete them before you publish your mod

candid stratus
#

Then how does the game find them?

#

Or do you mean remove them after packing?

uncut viper
#

if they are in the same folder as your tmx when you load them in tiled, then it sets the filepath to find them as just "spring_outdoors" for example

#

i.e. there is no filepath, its just looking for smth in the same folder

candid stratus
#

Yes relative path

uncut viper
#

this is what you want, bc that filepath is what the game then tries to load

#

when it reads your tmx

#

with Maps/ tacked onto the front

#

so the game (or well, SMAPI for modded maps) sees that your .tmx asks for spring_outdoors, so it tries to load Maps/spring_outdoors

#

which exists in the game already

#

as its just an asset name

candid stratus
#

That I understand, but what about custom tilesheets

uncut viper
#

if its a custom tilesheet, it'll try to load Maps/customtilesheetname, which if the tilesheet author did things right, they do that themselves

#

by using Content Patcher to load their tilesheet into that Target

#

which is why you set a dependency on their tilesheet mod, to make sure they get to Load that first before your map is ever read

#

by the time your map is read, their tilesheet already exists and is loaded under the name Maps/customtilesheetname, and since your .tmx will be asking for just customtilesheetname, it will work

candid stratus
#

So I'm supposed to make a separate mod for my custom tilesheets? Isn't that a bit convoluted?

uncut viper
#

well, if theyre your tilesheets, you technically dont have to

candid stratus
#

I mean my own custom tilesheet if that makes it a bit more clear

uncut viper
#

you would need to allow people to redistribute your assets, t hough

#

bc they cant use them otherwise

#

and they wouldnt be recolourable

undone hawk
#

Hey y'all! Technical question: I have the sales price for my items working. One problem; the parsed data for PondData gives GENERIC roe, and not the fish's specific roe. Therefore the price is always listed as the same. How do I get a fish's specific roe, and more importantly it's cost?

uncut viper
#

unless you mean you're nmot like

#

making tilesheets alone

#

if you just need some custom work for your map but you're not intending other people to use your tilesheets like for example daisyniko's tilesheets

#

then you can actually just keep them inside the same folder as your .tmx even when publishing your mod

candid stratus
#

I'm making new maps and I'm 99% intending on not having recolours

uncut viper
#

but it is better for you to Load them and move them to a different folder (still within your mod folder ofc)

#

in case someone does want to do recolour compatibility

#

however its not a requirement. any tilesheets you keep inside the same folder as your .tmx will be used with priority, unless they have a . in front of their name

candid stratus
#

Okay so I keep custom tilesheets within my modfolder but in a dedicated directory

#

after editing the actual tmx of course

uncut viper
#

yeah if you put your tilesheets in like, assets/TileSheets/tilesheet.png and your .tmx in assets/Maps/MyMap.tmx, then they wont be in the same folder as your .tmx anymore and the game will rely on them existing via a Load action for your .tmx to work

candid stratus
#

or the pathing will be ruined

uncut viper
#

correct

candid stratus
#

Okay good, thanks

#

And so using CP's load to load a tweaked vanilla sheet under the same name will replace the vanilla's sheet right?

uncut viper
#

this also does not account for the existence of the Arbitrary Tilesheet Access mod which lets you use tilesheets from any asset name/unpacked content folder location but i assumed you didnt care

#

it will do that yes but pls do not do that

candid stratus
#

What else should I use? EditMap?

uncut viper
#

EditImage

#

change only the bits you need

#

and only change them if actually necessary and you cant just use a custom tilesheet for it

candid stratus
#

Okay that's fair, no need to change the map when only texture changes

brittle pasture
uncut viper
#

i think there is a way to add tilesheets to an existing map with CP but i dont know it, CP specific map stuff is one of my blind spots

brittle pasture
#

then get the price of the created item

candid stratus
#

Yes I mean swapping a vanilla sheet with a custom one if that makes sense

brittle pasture
#

fish ponds are hardcoded to make flavored roe when it detects the generic roe item

uncut viper
#

is it a vanilla location you are changing?

#

or are you just using a vanilla tilesheet?

candid stratus
#

I'd be making a vanilla sheet entirely black/white

#

Though it's optional, cause foliage will be a pain too probably

#

I'll probably have to end up making significant changes to the tmx for that to work anyway

uncut viper
#

if its for a custom map it probably is still maybe better then to just use a custom tilesheet that is just a black and white version of the vanilla one, if its just for this one location

#

but idk at this point things get very contextual so

candid stratus
#

yeah, there'd have to be a distinction between regular objects and black/white objects of the same type. It goes beyond a simple recolouring at that point

#

But I might still reduce all colours of every sheet

#

I'm making a horror/adventure mod :p

uncut viper
#

in any case you still wont want to use Load to replace the sheets then

#

not only bc you risk clashing with someone else doing a Load with an exclusive priority (though you an ofc change the priority of yours)

#

but bc if you do a Load, then anyone else doing EditImage still comes after you

candid stratus
#

What is the technical difference between all these variations?

#

Is it purely hierarchial or priority wise?

uncut viper
#

Load is the very first thing that happens to an asset, and only one mod can Load an asset

#

it replaces an asset completely with what you've set as the FromFile

#

after that, all the non-Load patches happen i.e. EditMap, EditData, EditImage, etc

candid stratus
#

Why wouldnt a different mod be able to do that afterwards as well? It'd be a race condition, sure, but would it crash?

uncut viper
#

thats not how Load works

#

whichever Load has the highest priority wins

#

they dont get Loaded one after the other in order bc there'd be no point

tidal stone
#

should i delete the tsx files i used to animate water since you shouldnt pass out vanilla assets through mods on accident i dont wanna get in trouble

uncut viper
#

they are complete replacements

#

whats important for your case is that all Loads happen before any Edit___ patches

candid stratus
#

Yeah I agree it'd be pointless to do on purpose, but I mean accidentally :p

uncut viper
#

so if someone is using a recolour mod, for example, and that recolour mod uses EditImage to replace bits of a tilesheet, that happens after your Load

#

CP just will not load them in order. its not how CP works

#

CP loads the one with the highest priority

candid stratus
#

And what if two mods use EditImage? Is it again ambiguation by priority?

uncut viper
#

if two mods do Load and dont change the priority, CP throws an error and neither of you load

#

everything besides Load has a different priority system

calm nebula
#

Tbh it feels like storm is trying to do a total conversion mod

uncut viper
#

Edits get applied in order of priority, one after the other

candid stratus
#

I'm just trying to understand the mechanics so I know the limits/best practices

calm nebula
#

(Ie, completely ignoring compat, the ecosystem, etc.)

uncut viper
#

if theyre doing a total conversion mod i imagine they dont want to Load a black and white tilesheet just to have like, Earthy Recolour come in and EditImage some browns and earth tones over top of it

candid stratus
#

Maybe I'm getting too deep into it, but I will also be making really significant changes, probably making every other mod uncompatible

uncut viper
#

i would expect them to want to have the last EditImage that happens that just also happens to overwrite the whole image

candid stratus
#

Yeah exactly

uncut viper
#

to make sure their black and white conversion is the end result

#

even if someone installs a recolour mod on top of it for some reason

#

bc a user will do that and complain that its not recolour compatible

#

even if you say its not meant to be

undone hawk
#

Did some cursory poking around and couldn't figure it out

candid stratus
#

Okay well thanks for the help!

uncut viper
#

anyway, i would just recommend looking at the CP docs for Load and EditImage to read about their different priority systems

#

it will explain the order in which things are applied

#

and how to change your priority

undone hawk
#

Ty for the link!

#

Dunno why that didn't pop up with searching the wiki, I must be awful at search terms

ornate locust
#

Because that's in the Modding namespace so it doesn't show up on normal searches

#

which is why I had a hellish time searching the wiki until I realized that...

rigid musk
#

You know.. I think I'm actually starting to understand how to use Dynamic Tokens in a general sense... this is magic

ornate locust
undone hawk
#

Oh

#

Snap

#

Ty I had legitimately no idea

ornate locust
#

yeah it's not immediately obvious, so I missed it too!

tidal stone
ornate locust
#

Wait I just realized something

rigid musk
#

like is there an actual tile there

tidal stone
#

let me double check

scarlet saddle
#

can you tmx animate a tile that is larger then 16x16? Such as like.. 48x48 so you don't have to do a bunch of smaller tiles for a bigger animation on a map? Or do I need to not be lazy.

ornate locust
#

I had this happen with a trashcan before I found the snapping feature

rigid musk
scarlet saddle
#

gahhhh

#

sadface

tidal stone
#

there is in fact a tile there

#

its on the tile layer as well

#

wait i wonder if its like

#

no actually that wouldnt make any sense

hot gale
tidal stone
#

this is what i have written

brittle pasture
ornate locust
#

is 15, 10 an open tile and not a "building" (aka a wall)? Is the square exactly on the grid, easiest to do with "snap to grid"?

hot gale
tidal stone
#

the exact tile is a building tile of the bottom half of the lewis door sprite

#

let me try raising the tile a bit maybe

ornate locust
#

No I mean is the TileData square that door information is for RIGHT on the pixel line? Because if it is one pixel off, the game may think it's an entire 16x16 square over

#

not the actual picture of the door

rigid musk
#

yeah the tiledata tile needs to be exactly 16x16

tidal stone
#

oh

rigid musk
#

Sorry I've been doing four things all at once so my brain has been ... in many places

ornate locust
#

It has to be really exact. I'd recommend going into the menu and going View, Snapping and select "Snap to grid"

#

then it'll always line up

#

would have saved me time if I knew about that when I was setting up my trashcan

tidal stone
#

can i send my log rq

calm nebula
#

Sure

tidal stone
ocean sailBOT
#

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

tidal stone
#

i think i sent the wrong log hold on

final arch
#

without we really have to just guess what could be wrong

tidal stone
#

like the actual tmx files?

final arch
#

yes

tidal stone
#

oo ok i can do that

#

the interiro map has some map porperties i have to change btw but idk if that would cause it to just plain not warp me

candid stratus
#

This may be a dumb question but can you trigger a cutscene without having to enter a location?

#

Or am I gonna have to warp myself to an identical location upon a certain event trigger instead? like killing a specific enemy

#

(or the same location I suppose)

calm nebula
#

If you're in c# you can start an event at any time you care to

brittle pasture
#

SpaceCore has a play event trigger action

urban patrol
#

when the beach bridge hasn’t been fixed yet, is there a way to make my custom NPCs ignore that and walk over it anyway? (for lore reasons they’d be able to.) as of right now, their schedules break and they just freeze at the entrance to the beach.

if i can’t have them walk over it anyway, how would i conditionally check in their schedules to see if it’s been fixed? i imagine a “when” but is that allowed in the schedule line or would it be something else

rigid musk
#

If there is a when for it you would need to do a CP entry for that specific schedule

urban patrol
brittle pasture
#

yep!
I believe HasFlag beachBridgeFixed is the condition you need

#

(after formatting that to make it look like a When condition)

urban patrol
#

awesome thank you both

latent mauve
# tidal stone oo ok i can do that

It looked like you had an extra space at the beginning of LockedDoorWarp (before the L) which can sometimes cause silliness because of extra characters, is that still the case?

#

Also if there is anything at all in your SMAPI log on your most recent attempts, that is also useful information

#

(since it will tell you if your desired warp location is not loading)

tidal stone
#

no now i get an error about invalidtile gid: 176

latent mauve
#

Okay, that means you removed a required tilesheet in your map and need to reopen it with the removed tilesheet in the working folder to remove the sheet in Tiled, change any tile so it recalculates the gid, save, erase your extra tile, and then save again.

#

@tidal stone ^

tidal stone
#

ooh

latent mauve
#

I am probably explaining poorly, but it's at the bottom of the Troubleshooting section on Modding:Maps

tidal stone
#

i wonder if i deleted the pngs incorrectly?

#

or should those remain in the asset folder

urban patrol
uncut viper
#

AND

tidal stone
#

could it be
that i deleted the tsx file but shouldnt have and even though i undeleted it it isnt registering it as there?

reef kiln
ocean sailBOT
#

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

tidal stone
#

wait i think i found the issue?

uncut viper
#

at least one of them has less fields than it should

tidal stone
#

also button i saw you say that its not good to pass around vanilla assets or something through mod files right? or something of that nature? should i delete this tsx file i have in my asset folder then too?

old edge
#

where Can I find the parrot textures!~

uncut viper
#

a tsx file isnt a vanilla asset

tidal stone
#

oh ok

#

i wasnt sure

#

because its a vanilla map i exported as a tsx or something so i could animate water rq

old edge
#

I'm using unlockable bundles but for some reason the sprite has this totem thing the parrot is perched on

undone hawk
#

I finally have enough done with my mod to showcase what I'm working on! It needs a lot of formatting and optimization, but lemme show y'all what I've been cooking

old edge
#

want this one.

undone hawk
old edge
tawny ore
# undone hawk

That looks great. By any chance is that using StardewUI?

undone hawk
#

I was recommended towards StardewUI and was previously using code based on CBJ Cheat Menu for my UI stuff. This API is much easier to work with

tawny ore
#

Yeah, I've been playing around with it, but it'll be nice for me to see more examples of what everyone is doing with it so I can get some ideas of my own.

brittle pasture
# undone hawk

Looks good!

Also FYI Coral while not a fish can be put in fish ponds as well, not sure if you want to take that into account

lucid iron
#

Hover scale up my beloved

rigid musk
#

woah that does look really cool

#

i like the little bounce the fish do...

lucid iron
#

Just like my html/css from me youth

uncut viper
#

i still do hover scale up in my html/css

#

(though not very bouncy like..)

undone hawk
#

Oh snap and I'll also wanna include the new jellies as well

brittle pasture
undone hawk
lucid iron
#

What will the fish dex do

tawny ore
#

We're like one framework/abstraction away from UIs being 100% content packs

undone hawk
#

It'll provide pretty much every stat imaginable for every fish you have, modded and vanilla, as well as a HUD element that will show when you hold a fishing rod that shows you what fish are catchable in the area you're currently in, as well as restrictions such as time of day

tidal stone
#

ok it says that my map is trying to load from a another file but i checked it in notepad rq and it does not say that so idk what to do 😦

uncut viper
lucid iron
undone hawk
#

Basically doubling as an in game Fishipedia (since you have to do SO much searching around for fish info) and also helping you track whether you've caught every fish in the area

uncut viper
#

i say this bc it is more difficult than it sounds to calculate

tawny ore
#

It'll also be nice if there were examples of StardewUI working with Khloe's Better Game Menu

lucid iron
brittle pasture
#

I think if you don't care about exact percentage it's rather straightforward

rancid musk
undone hawk
lucid iron
#

The general idea is to provide common widgets that are backed by a regular ol data asset

uncut viper
#

if you have a way to translate any arbitrary GSQ to user-readable info, sure

tawny ore
#

So the format is entirely content-driven

lucid iron
#

Kind of like the question dialogue thing

rancid musk
tawny ore
#

True, I suppose that is the O.G. solution

rancid musk
#

It would've been if I released it.

undone hawk
rancid musk
#

Honestly, really wish people hadn't tried to update it to 1.6 for me because it completely took the wind out of my sails as far as wanting to work on it went.

undone hawk
#

That stinks :C

brittle pasture
#

in the meantime there's SpaceCore's guidebook thing, though it's mainly for static data

uncut viper
#

i would still like someone to make Guidebook but Standalone

brittle pasture
#

everyone and their mother has SC nowadays it's fine /lh

rough lintel
lucid iron
#

The thing about stardewui is just that if you want to do anything responsive you gotta have the C# context control all that

uncut viper
#

its not exactly entirely just bc i dont need all the other spacecore stuff too

tawny ore
#

Is SMAPI compatible with SpaceCore?

undone hawk
#

Yea! Ur mod is awesome and is what inspired me, I know how crazy the code is for your mod to work

reef kiln
uncut viper
#

i also want to take into account being able to quickly iterate on it

lucid iron
#

For example the animated animal in livestock bazaar

uncut viper
#

like, if it was a standalone mod, its a lot easier to make changes to it and push out updates and accept PRs and stuff

#

also a lot easier to receive unofficial updates for should the need ever arise

lucid iron
#

Or just how lb's page 1 and page 2 worked in general

lucid iron
#

Im not sure how a content pack would be able to describe it

#

Or like, the format needed to describe it is just bootleg c#

uncut viper
tawny ore
#

Well if a standalone mod served as the framework for purely content driven UIs, it should have some abstractions it makes available

#

Whether that framework was StardewUI itself, or something in between

lucid iron
#

Yeah that's why i wanted a widget library basically

#

So people can have skyrim books if they simply put in the text per page

#

Or have a bigger illustrated multi choice dialogue

#

If they gib sprites label action

uncut viper
#

chu just wants more people to add MEEPs tile picture close up thing

tawny ore
#

StardewUI could host a widgets UI library of just shared community code

#

Thinking kind of like how HTML/Javascript has done things like that

brittle pasture
#

SC Guidebooks also does provide a bunch of ready made widgets, even basic "show this widget depending on GSQ"
to do anything more interactive tbh I wonder if it's easier to tell people to just learn C# instead of trying to learn a quasiscripting language

lucid iron
#

I did ask focus about it once and at the time he said it'd be best as an addon mod

brittle pasture
#

(Lua anyone? SDVpufferwoke )

tawny ore
#

How about Rust?

undone hawk
#

SQL anyone?

lucid iron
#

Pls no we need to remain free from that

tawny ore
#

For whatever reason, isn't Lua one of if not the most popular language for embedding into applications?

lucid iron
#

SQL item query...

#

It has a WHERE already

tawny ore
#

Can we just bring back VBA, the one language to rule them all?

lucid iron
#

Need joins obviously

undone hawk
#

The triangle of Database optimization makes my brain go fuzzy every time I think about it

tawny ore
undone hawk
#

TBF it's hard not to

lucid iron
#

Join Data/Objects with Data/Machines

uncut viper
#

just need someone to make a visual scripting language editor thingy for content pack authors that will spit out a valid content patcher json for you with all the required scripting stuff you implement on the C# side. easy

brittle pasture
undone hawk
#

Factorio my beloved

tawny ore
#

A sample size of two, I'm convinced

undone hawk
#

At least it's not Skyrim

brittle pasture
#

and Hades but I dont mod that one

tidal stone
#

i think im gonna have to redo my main map

uncut viper
#

Balatro also uses Lua

calm nebula
#

My fucking god you guys

lucid iron
#

Lua is in wiki stuff

calm nebula
#

Okay let's go back to modding

#

And by that I mean you guys

#

Not me

uncut viper
#

atra, this is more modding related than half the stuff you say in this channel

brittle pasture
#

anyway, re: widgets
I can contribute my fancy thin progress bar from Fresh Farm Produce

hard fern
#

I shal go back to modding - i mean taking a nap

lucid iron
#

Looking forward to atra's slightly more dehardcoding

rancid musk
brittle pasture
#

that's like the one unique widget I made

calm nebula
#

Something something freedom

#

Something something joy

#

I wish dotnet had good trimming

undone hawk
#

I wish ItemQueryResolver had better documentation so I didn't have to look at the decompiled source code to realize what order to put my string arguments in

lucid iron
#

It's a Data model

undone hawk
#

I figured it out to be clear, I'm just annoyed

brittle pasture
#

I mean is there any documentation for any code aside from the source

undone hawk
lucid iron
#

I documented temporary animated sprites definition kyuuchan_run

uncut viper
#

i believe selph meant specifically for stardew

undone hawk
lucid iron
#

It's too nested in machines so wiki doesn't rly talk about it

undone hawk
uncut viper
#

i mean, if you would like to start documenting all its functions, you can feel free to start /lh

calm nebula
#

C# has great docs

#

Python docs are amazing

lucid iron
#

I mean we have a lot but sdv isn't a software library

uncut viper
#

its not something id expect CA to do bc its, a game

lucid iron
#

We r breaking in and doing crimes to a standalone app

undone hawk
#

It's all fine and dandy when you're doing simple stuff or content patcher, but as soon as you step into something like TAS or Queries, suddenly nothing makes sense

lucid iron
#

Sometimes ppl write down the crimes

uncut viper
#

yeah we arent really intended to see this stuff

#

im just thankful it at least has the xmldocs

calm nebula
#

You can thank Pathos for xml

lucid iron
#

Yeah bless

undone hawk
brittle pasture
#

I'm thankful if ILSpy even gave me the unminimized variable name

uncut viper
#

it was, but that was also, what, 8 years after the game came out?

lucid iron
#

Item queries do have docs tho

undone hawk
#

Is wildly unhelpful

#

I read it

lucid iron
#

Because the content stuff applies equally to c#

uncut viper
#

a lot of the games code was never written with the intent that anyone but one of the devs would see it. which, for a lot of it, was just CA alone

lucid iron
#

It is a data model

undone hawk
#

Yes but it doesn't explain what it needs in regards to FLAVORED_ITEM for example

#

Flavored Item needs a key, arguments, context, boolean, HashSet<String>, and an Action

#

None of which is described what those are, even with the data stuff

uncut viper
#

i dont think you're meant to use the resolvers directly?

lucid iron
#

None of those are used...

undone hawk
#

I figured it out, but ONLY by decompiling source

undone hawk
#

All I got was a method asking for a bunch of variables that didn't say what they were
Which, to be clear, not a HUGE deal, just a minor irk

lucid iron
#

I feel like you are complaining about needing to do normal c# modding step of look at decompile to do c# modding

undone hawk
#

Yes, again, minor irk

lucid iron
#

Goes back to "not technically a public api"

undone hawk
#

I mean, the technically in that sentence has like a dozen asterisks, but I understand your point

lucid iron
#

C# intellisense is stronk and will literally decompile for u anyways

undone hawk
#

Oh yea

#

I use Rider

#

It's easy as heck

tawny ore
#

I miss Rider. It refuses to work for me.

undone hawk
#

I just personally like when stuff is documented more, and especially for C# modding there's not a ton and most of the time the answer is "decompile and look at source", which again, is not a huge issue, just a minor "I wish it didn't have to be this way"

uncut viper
#

nothin stopping anyone from taking the task of documenting everything unto themselves and putting it up somewhere

tawny ore
#

Thankfully you join mod development post 1.6 where so much was reworked, we have the best documentation that we have ever had

undone hawk
#

Yus. I might document ItemQueryResolver with my findings, but I'd definitely want to ensure I got everything correctly

undone hawk
tawny ore
#

Like, rewind back to year ago and the documentation for modding was way worse than it is now

#

*Year or two

undone hawk
#

I made an entire Twitch Extension with databases and server integration w/ Stardew that I just... never released

uncut viper
#

that will be one function documented out of like, thousands then. one step at a time etc etc

undone hawk
#

Because I'm a monkey

#

The Twitch Documentation makes me so angry. So much of it references a program as a mandatory step to use that got sunsetted four years ago

tidal stone
#

does anyone know whwat map is where the bathhouse is

hard fern
#

Bathhouse

old edge
#

do the parrots talk in stardew valley?

tawny ore
#

All of the documentation is a community-supported effort, we just happened to have a short window of opportunity where part of the modding community was part of SDV developers

brittle pasture
undone hawk
#

All Parrots talk, silly :3 /lh

uncut viper
#

that said, the xmldocs for ItemQueryResolver.TryResolve do say what the parameters are

old edge
#

oh yeah huh

#

so if a parrot wanted a cactus fruit..

lucid iron
#

They squawk but it's treated like a language u can learn

#

Leo knows how to speak birb

uncut viper
#

xmldocs are those like /// <summary>bla bla</summary> comments you sometimes see in source code

lucid iron
#

Unclear if farmer knows birb, potentially

undone hawk
#

OH

#

Yea no it does

uncut viper
#

Stardew comes with xmldocs and TryResolve is documented with them

undone hawk
#

Once I decompiled into source I had no issues

uncut viper
#

you shouldnt have to decompile to see them

undone hawk
#

Sorry, I'm Java brained, in Java those are called JavaDocs

uncut viper
#

they show up in Rider for me

tawny ore
#

XMLDocs are good for parameters and such, but decompile is still necessary for the initial discovery of said methods

undone hawk
uncut viper
#

this goes back to "you're not intended to use the resolver directly"

brittle pasture
#

(as mentioned you shouldnt-yeah)

undone hawk
#

Yea but I didn't know that until now

brittle pasture
#

the item query page gives you a function to do so

uncut viper
#

well. thats why it isnt documented.

undone hawk
#

Unless I'm explicitly told I wouldn't know not to use it

lucid iron
#

Don't use the handler directly

undone hawk
#

Is there a particular reason I shouldn't use this

tawny ore
#

I mostly learn what to do or not by studying the game code or other mods, and trying to use things in a consistent way

#

Like, if you use things the same way the game uses them, then it's unlikely to break since changes to those would also break the game

brittle pasture
#

it's documented on the Item queries wiki page that you can use ItemQueryResolver.TryResolve to resolve item queries

lucid iron
#

If you want explicitly only flavor item there's a more direct way iirc

#

Which is what this item query calls in the end

undone hawk
#

Like I understand them NOW, but what was written did not make sense to me in the present moment

lucid iron
#

But the wiki is actually targeted at ppl making use of arbitrary item queries they are source from content pack i think

brittle pasture
#

Yeah I will agree that that doc can be better

lucid iron
#

In that case the correct code path is tryresolve because you don't know what the handler will be

undone hawk
tawny ore
#

It's also hard for me to know what would make the docs better because I'm coming from a position of having the knowledge already rather than those who would need it the most

lucid iron
#

And u can register custom item query too

undone hawk
#

I saw the custom item query but I assumed that was for custom queries and not for vanilla ones (mine is vanilla)

lucid iron
#

Since fish ponds do indeed take a generic item spawn data model

#

I would actually go through there

#

Then u can cover not roe pond outputs ez

undone hawk
#

Tbf I don't even query it, I just give the flat sale price for all non-roe items

brittle pasture
#

(roe actually has a hardcoded special case in fish ponds so that wouldn't 100% work)

#

(re: chu's comment)

lucid iron
#

Sdv not following coding standards more at 11

undone hawk
lucid iron
#

Yeah that is also a thing about modding, just because game did it doesn't mean it's good

tawny ore
#

Time to make a Better Fish Ponds mod

undone hawk
#

My code works and that's all I care about! It's even short and easy to modify

lucid iron
#

Too late it's taken

tawny ore
#

Yet Another Better Fish Ponds Redux Expanded - Continued 1.6

lucid iron
#

It just came out last month

tawny ore
#

But since that title is too long, you can just call it YABFPREC

uncut viper
brittle pasture
#

wait wrong comment to reply to

#

(Aquarism did... too much, tbh)

lucid iron
#

But selph what of the plant crops on pond

brittle pasture
#

oh that's still in the works

#

(got sidetracked by ten thousand different things tho)

old edge
#

parrots!

lucid iron
#

!!!

hard fern
#

You know i always wondered, why are parrots so skilled at construction

uncut viper
#

why shouldn't they be?

old edge
#

they remind me of squawk from DK

hard fern
#

I mean normally i don't think of parrots at being able to refurbish homes

#

But hey you never know, maybe these parrots on ginger island are expertly trained

candid stratus
#

There just used to be a very good construction worker on ginger island, and the parrots are just parroting him

rancid musk
tidal spade
#

hi, i'm trying to create a mod (never did before) via content patcher to add a hat, but i'm having trouble placing the correct sprite. I think i need to reference my image on the 7th field "texture name", but i don't know how to do this, how to reference my .png inside the assets folder? (sorry for my bad english)

rotund elm
#

Heyooo, if I wanted to add a non physical object like a recipe to a shop but not have it be a recipe, could I just leave the recipe info blank and use the purchase to set a mail flag to trigger the intended patch? Or is there a better way of doing that? I want a deed to be purchasable for a home on a custom map basically

calm nebula
#

You'll need to Load it

hallow prism
hallow prism
#

you may want to see if you can do that with a dialogue with action or something instead

#

no idea if it's doable yet or need a future framework for that

rotund elm
#

Ah ok! I am sure there is a good work around, I will keep looking, thank ya SDVpufferheart

uncut viper
#

itd be very easy to make as far as frameworks go though very niche

#

on its own

rotund elm
#

I use a few already, including Spacecore and IE, so I'll relook into their docs and see if something I can utilize catches my eye

#

If not I am sure I can do what Lumina suggested and figure something out that'll work similar to purchasing something in a shop

#

I also do have recipes for machine input and output rules that unlock them when right clicked, I did want to avoid doing that but honestly that could work as a last resort too

hallow prism
#

(which would be more generic)

uncut viper
#

oh i thought you meant a framework for doing it in a shop

#

seems like in dialogue it should already be doable with questions and gsqs maybe. idk much about dialogue though

#

(gsqs for checking money. and ofc actions for giving the flag)

calm nebula
#

I mean you could make an item with an action to remoce the item from the players inventory

uncut viper
#

dont think that would work as it would be in your menu heldItem and not your inventory

calm nebula
#

Good point!

#

Atra is silly

uncut viper
#

it was my first thought too tbf

#

maybe could do it with BETAS MenuChanged trigger to detect the shop closing but idk if that trigger happens before or after the item is put into your inventory proper

lucid iron
#

you can get a bogus shop entry that does not give you any item

#

and then u put action on it to actually give you recipe

rotund elm
#

I am so fortunate SDVpufferwow

uncut viper
#

oh ezpz i didnt realize you actually already implemented it

lucid iron
#

dw i wanted the exact thing for trinkets so here's the generic version for objects

rotund elm
#

You are the GOAT, I need to change my username now

lucid iron
#

the icon has to come from a real Data/Objects though, even if it's unobtainable otherwise

rotund elm
#

No issues there

lucid iron
#

and u should be able to modify the display name

hallow prism
#

you can use stuff as secret note i assume?

uncut viper
#

wheres my overload to take any asset name for the texture sheet

lucid iron
#

see the example that give u money

hallow prism
#

like secret note

uncut viper
#

there is already a SECRET_NOTE_OR_ITEM item query too

hallow prism
#

i mean for icon

uncut viper
#

ahh

lucid iron
#

yea up to what goat wants

hallow prism
#

you can just use the secret note or whatever as the sprite and have a "permit for construction" or whatever

lucid iron
uncut viper
#

ok SDVpufferthumbsup

rotund elm
#

Yea that seems like a good idea Lumina!

uncut viper
#

its already less hardcoded than PurchaseableKeyItem so thats nice

#

which is limited to whichever sheet the town key is on

rotund elm
#

I can't thank you all enough, you guys have all helped me so much SDVpufferheart

uncut viper
#
public PurchaseableKeyItem(string display_name, string display_description, int parent_sheet_index, Action<Farmer> on_purchase = null)
{
    this._id = parent_sheet_index;
    this._name = display_name;
    this._displayName = display_name;
    this._description = display_description;
    this._onPurchase = on_purchase;
}

parent_sheet_index..... disgusting

gentle rose
lucid iron
#

i officially do not understand how to reverse patch sleep

gentle rose
uncut viper
#

in the interest of fairness, there isnt even a CP way to create extra special items i think? maybe?

#

and if you're in C# you can make your own subclass

#

but still

#

or not subclass but your own class that inherits ISalable

uncut viper
lucid iron
#

i think my problem might be that im being stubborn and trying to od it manual

#

while docs only has annotation version

uncut viper
gentle rose
#

what was I even doing which led me to know about parent sheet index back in 1.5 Squint maybe the "needed ingredients" helper? SDVpufferthinkblob

uncut viper
#

i dont think theres anything special going on in the annotations for reverse patch docs?

gentle rose
hard fern
#

I crocheted some squares and made two little dolls and then i decided i was tired and my hands hurt

#

Atm i don't have any fun thing to work on

#

Except maybe i could make some junimos out of leftover yarn

uncut viper
#

Harmony.Patch(original: AccessTools.Method(typeof(OriginalCode), "Test"), reversepatch: AccessTools.Method(typeof(Patch), "MyTest"))

#

using the first example snippet in the docs

#

tho the second one should be wrapped in a new HarmonyMethod ofc

lucid iron
#

theres no reversepatch argument

uncut viper
#

ah, well

lucid iron
#

i got as far as

#
  1. get a MethodInfo (?) from reversepatcher
  2. attempt to invoke that
uncut viper
#

Harmony.ReversePatch()

lucid iron
#

it doesnt seem to do anything

gentle rose
#

I wonder if people would want a mod like that. It gave me a list of ingredients and the quantity I needed to complete all cooking recipes (so if there were still two recipes I haven't cooked which each require one mango, then I'd need two mangoes) with an optional toggle to only count recipes I already knew

uncut viper
#

harmony.ReversePatch(MethodBase original, HarmonyMethod standin, MethodInfo transpiler = null) should be what you want

#

i imagine

lucid iron
#

ah i see

#

i was calling CreateReversePatcher

#

which is secretly what the annotation version is using LilyDerp

uncut viper
#

well

#

idk what the difference is

lucid iron
#

i wonder if the issue is that

#

im trying to call a Woods instance method with GameLocation

#

can i even do that

calm nebula
#

No

lucid iron
#

darn guess i give up

uncut viper
#

do not underestimate just how little i understand reverse patches. if atra wasnt here you would not be getting an answer

calm nebula
#

What are you trying to do

lucid iron
#

truly it is never the right usecase for reverse patch

#

im trying to call a modified version of Woods._updateWoodsLighting for any random location

#

i can copy the code obviously but i wanted to not copy it 3sSmolMiku

calm nebula
#

Well you need to edit it to point to local fields anywyas

#

Which you could do out of a reverse trnaspiler

#

I see your gumption

lucid iron
#

yea that was the plan, swap out _ambientLightColor

#

hmmm i managed to call it

uncut viper
#

just put a transpiler inside the original Woods function but all it does is store the IL inside some cache
then in your custom function just read the IL f rom that cache and construct a dynamic method (after you edit the il to point to local fields like a local transpiler)
and then invoke it
very easy

lucid iron
#

when its my own IL yggy

#

button isnt that just

#

what reverse patch does...

uncut viper
gentle rose
#

I have read the explanation of what reverse patches are several times. I still have absolutely no idea

uncut viper
#

if harmony wont let you reverse patch this i see no reason why you cant do it yourself against all odds and recommendations

lucid iron
#

well, it let me do it actually

#

only in the swap out whole method y r u even here case tho

uncut viper
#

well, have you answered the "why are you even here" part yet

lucid iron
#

no but check back in 4hrs

calm nebula
#

This is promising

uncut viper
#

also question is that actually literally what a reverse patch does or is that more of a half joke

#

bc if thats what it does it increases my understanding like 100 fold

#

not to 100% but 100 fold

gentle rose
#

oh, I'm kind of getting it now having read the docs once again

#

and yeah I'm pretty sure it is from what I understand?

uncut viper
#

i just dont trusst the harmony docs bc one of the first lines is "Creating a reverse patch is easy."

lucid iron
#

well yea my understanding is just u copy the original method's il and optionally do some transpiler things on it

gentle rose
#

think about it like atra is saying it's easy. take with pinch of salt /lh

lucid iron
#

to ur new stub

calm nebula
#

What you're doing makes sense

#

I watch with baited breath

lucid iron
#

fear

uncut viper
#

okay i think i actually understand them completely now

calm nebula
#

Wonder if changing the method sig works

uncut viper
#

harmony wont let you

#

at best you can swap between static and non static as long as you account for the this parameter

gentle rose
#

sounds like we need a new, more polite library. I nominate atra

uncut viper
#

instead of harmony we can call it Discord

calm nebula
gentle rose
#

which will cause an appropriate level of confusion

#

I like it

calm nebula
#

You have to march the sig exactly?

uncut viper
#

thats what the docs say

#

"The method signature must match the original. This includes static/non static but in the example, we use the fact that an instance method gets the instance in an extra argument at position 0.

note While it is tempting to define a stub as an instance method, one has to be very careful with that. The IL code that is copied from the original expects this to be pointing to the original class type. This obviously won't work if your instance stub is in a class that is not the original."

calm nebula
#

Hmmmmm

ornate locust
#

Sooo question: I have written an event. The event works. But there's one line of dialog where the little portrait jiggle that happens once at the start of dialog just keeps happening. So it looks like he's just BOILING WITH RAGE or something. Anyone offhand know why that would happen
/speak SheriffBill \"Morris, then.$u#$b#I'm surprised to see the Jojamart manager in a local place.$0\"/

calm nebula
#

What if it is a superclass

cyan venture
#

guys is there any mod that can change interface ingame from other interface mod?

uncut viper
#

i dont know, what if

ornate locust
#

like I'm going for a subtly annoyed change of expression not ANGRY JIGGLEMAN

#

"Morris, then" is where it gets The Jiggles. The rest is fine

uncut viper
cyan venture
#

oh yea wrong channel again

calm nebula
#

Let's make chue do the experiment

calm nebula
ornate locust
#

That isn't upset, it's unique

calm nebula
#

Right. Hmm

ornate locust
#

for Alex, that portrait slot holds a football

calm nebula
#

Remind me to look info the portrait code

lucid iron
#

well i seemed to have called it yggy

#

but again, only the bogus il i am write myself

gentle rose
ornate locust
#

It... does not. Why does slot 3 vibrate for my NPC??

gentle rose
calm nebula
#

Does that happen if you replace it with a different npc

#

Iro, can you go look at the portrait shake code

gentle rose
#

stole my next question lmao

calm nebula
#

I'm not going to be home for two more hours

gentle rose
#

can do, though I want to rule out a different suspicion first

hard fern
#

Wait why are the npcs jiggling

ornate locust
#

Horizontal

gentle rose
#

can you send your portrait sheet here?

uncut viper
#
private bool shouldPortraitShake(Dialogue d)
{
    if (this.newPortaitShakeTimer > 0)
    {
        return true;
    }
    List<int> shakePortraits = d.speaker.GetData()?.ShakePortraits;
    if (shakePortraits != null && shakePortraits.Count > 0)
    {
        return shakePortraits.Contains(d.getPortraitIndex());
    }
    return false;
}
#

so, check your ShakePortraits field in your Data/Characters entry i guess

gentle rose
#

(ty button! I only just got back to my computer haha)

ornate locust
#

Oh there's a Shake Portraits entry! That must be it

#

Thanks, I see it. Whew, thought I was losing it

calm nebula
#

Who did you copy, Pam?

gentle rose
#

when do portraits shake in vanilla, anyway? is it when lewis is frazzled?

uncut viper
#

usually when they are angery

#

haley shakes when angery anyway

calm nebula
#

Pam's $u

ornate locust
#

I wrote this a while before a surgery so... let me think. Ah, I think I intended a portrait to shake but I miscounted

calm nebula
#

(Her "upset")

ornate locust
#

Or I forgot to change the number.

#

oof, remembering stuff I did before that isn't easy on the brain

gentle rose
#

(do you guys know where that's set in the content files off the top of your heads? if not I'll go hunting)

uncut viper
#

where whats set

gentle rose
#

the ShakePortraits field

uncut viper
#

CharacterData

#

Data/Characters entries

gentle rose
#

wait, you already said Data/Characters. I was looking in just Characters 💀

ornate locust
#

I love that I accidentally made just a vaguely serious expression wiggle. The change between his normal face is so subtle in the art, but making it WIGGLE AGGRESSIVELY really changed the vibe

lucid iron
#

i did it gang

#

this is very silly

hard fern
ornate locust
#

pictured: a lack of wiggling

uncut viper
#

chu is now the first person ive personally seen use a reverse patch

ornate locust
#

not that you could see it in a still, but I promise there's no wiggling

mighty swallow
#

can someone tell me how to make a mod on nexus mods?

ornate locust
#

and the animation works aaaaaa

#

the whole event works, I have successfully done event from scratch

mighty swallow
#

nice

brittle pasture
mighty swallow
#

a new custom npc

brittle pasture
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

lucid iron
#

reverse patch likes to silently fail instead of angrily fail which is succ

brittle pasture
#

!startmodding also this for a more general guide to content patcher

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.

mighty swallow
#

brb

lucid iron
#

and HarmonyReversePatchType.Snapshot gives me NRE

uncut viper
#

chu gets ever closer to answering the "why are you here"

brittle pasture
#

I'm glad someone not me is figuring how reverse patches work

lucid iron
tidal stone
#

is anyone familiar with those crystal gems and what tilesheet their on

#

i can get a picture from my other map hold on

#

i lost them 😭

mighty swallow
#

yeah i am

#

oh nvm

hard fern
#

Those look like the rocks on Emily's spouse patio

mighty swallow
#

yeah

gentle rose
#

update: Abigail, Haley, Maru and Pam all have shaking portraits, and I just got a brief refresher in using jq lmao

uncut viper
#

jq?

tidal stone
#

tyyyy

gentle rose
#

it's a json processor/filtering cli tool

uncut viper
#

ah

mighty swallow
#

correct

gentle rose
#

it's pretty powerful but like all powerful cli tools it has some very specific syntax haha

#

(in this case, .[] | values | select(.ShakePortraits | length > 0) | .DisplayName can get you the display names of all characters that have shakey portraits)

uncut viper
#

i think you need more of a refresher in jq then, because you missed Haley

#

er wait

#

i missed haley

#

in your message

gentle rose
uncut viper
#

i need a refresher in words

gentle rose
#

I need a refresher in reading comprehension because she's in the list lmao

#

wait no. Haley is in my message KEK

uncut viper
#

we're meant to share one brain cell but unfortunately neither of us can find it

gentle rose
#

I saw chue typing. maybe she has it

uncut viper
#

?

lucid iron
#

the brain cell is a social construct

mighty swallow
#

my man

gentle rose
#

lizard, please stop spamming random gifs?

uncut viper
#

spamming for server levels is not going to get you the results you want

lucid iron
#

sir/ma'am are you making a mod

gentle rose
#

atra nooo mum said it was my turn on the braincell

mighty swallow
#

anyone have sugestions on what type of mod i should make

brittle pasture
#

you did say you want an NPC?

gentle rose
#

try the mod ideas repo

mighty swallow
gentle rose
#

!modideas

ocean sailBOT
#

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

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

mighty swallow
#

thanks

gentle rose
#

leave a comment on an issue if you release it as a mod

mighty swallow
#

okay

lucid iron
reef kiln
#

Where on the wiki is how to make a custom building have season exteriors? For example I make a custom coop type. How do I get the exterior to change each season like other farm buildings.

mighty swallow
#

hey guy

#

s

lucid iron
#

so the ez way is {{Season}}

#

simply load over coop with different tokens

#

the annoying way is SeasonOffset

#

make 1 png with 4 seasons

#

and then put a season offset value

mighty swallow
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

lucid iron
#

if it is a whole new building it is similar idea, just have these 2 fields

#

oh and SourceRect

#

that one is required if u use SeasonOffset

#

SourceRect should point to the spring tx

reef kiln
#

Ok. Let me mess around with that and see if I can get it to work.

lucid iron
#

u can look at nano's country side buildings cp version for actual example

reef kiln
#

Oh that will help a lot

lucid iron
#

but that pack is all existing buildings

#

i will one day finish me guide trust

calm nebula
#

Another example is the junimo hit in vanilla

#

Or one of the pet bowls

lucid iron
#

junimo huts are hardcoded

#

the pet bowl does use this yea

#

what is diff between Game1.temporaryContent and Game1.content

calm nebula
#

Temporary content is dumped at various points

lucid iron
#

isnt that bad

calm nebula
#

Ie, when player moves maps

tidal stone
#

if i wanted specifically animated items like the fountain on my map do i have to make a map from the vanilla map with liek the town map so i have the moving water?

#

because when i use another vanilla map like say the busstop the town map doesnt show movement tiles

#

liek te tilesheet

reef kiln
tidal stone
#

XD

#

i get really motivated when its a interest of mine :3c

latent mauve
#

I'd suggest starting from the town map for the most animated tiles, yeah.

tidal stone
#

ok then thank you

#

:3c

ornate locust
#

You can basically just open the town map, select the fountain, hit copy, paste it into your map. If you do this, it'll copy over all the animations into a new tilesheet.

#

and there's a relatively simple way to make the old copy of the tilesheet on the map into the new one

mighty swallow
#

any suggesting for mods?

ornate locust
#

Go to the one with the animations: hit Export Tileset As, save it. Go to the old tileset. Hit Replace Tileset. Select the export. It'll merge them without damaging your map. Then you can hit "embed tileset" and delete the exported file

#

Found that useful when I was doing festival patches for mods, some of them were from older game versions and had just SLIGHTLY different animations on the sheet, so they'd copy over and do another copy of the tileset

hot gale
#

Anyone know what mod Im thinking of? I think it was primarily chinese - it allowed you to travel to other farms via minecart

lucid iron
#

stardew realty?

#

or maybe that one lnh mod

dusk mulch
hot gale
#

Found it from the lnh reference ty!

#

Hmm can't tell if it is just their maps that are included

dusk mulch
brittle pasture
ornate locust
#

beat me to it

dusk mulch
#

Oh, I will try that then

#

Ty!

uncut viper
#

i didnt think the space mattered?

dusk mulch
#

Yeah it doesnt

brittle ledge
#

Weird, I think that's how I do mine and I don't have any issues.

dusk mulch
#

I just tried it

#

Same issue

uncut viper
#

the i18n token in fact cannot handle i18n that does have spaces in the key in default.json

ornate locust
#

Well that's one guess down

brittle pasture
#

(ah I see, noted for future reference)

dusk mulch
#

The commas are fine because even the "Introduction" one isn't working

uncut viper
#

this is in default.json and not en.json, yeah?

dusk mulch
#

Yeah

#

I will check the trace log

#

Nothing

ornate locust
#

I have another idea, but it is also space related and may be nothing

#

{{Range: 1,3}}

I have seen ranges in this context before and there was a space after the comma

dusk mulch
#

I will take any ideas

uncut viper
#

id double check you're actually editing the right folder

dusk mulch
#

I am editing the right one

dusk mulch
ornate locust
#

Ah, well, as I said. Could be (was) nothing.

#

I was just looking at one that I know worked for possibilities

rigid musk
#

so... there's a lot more foliage and trees in this game than I originally thought ...

ornate locust
#

you sound like someone regretting a foliage mod idea

ornate trellis
#

qi trees?

rigid musk
#

SCWLSD pixelated hell

#

i had to organize all of that...

ornate trellis
#

what happened there

rigid musk
ornate trellis
#

lily

rigid musk
#

its pixelated bc im zoomed out

ornate trellis
#

did i ever tell you i started to Qi-fy random shit

hard fern
#

Trees happened

brittle pasture
#

anyone here familiar with spacecore's custom properties? there's RegisterCustomProperty but I was wondering how/whether those custom properties actually get serialized to the save alongside the object. I'm guessing I also need to AddField but I still don't see the relation between that and the data I'm saving into the ConditionalWeakTable for the getters/setters

rigid musk
ornate trellis
#

yeah

#

but i have so much other stuff on my palette i never did anything with it

rigid musk
ornate trellis
#

I was gonna name the mod Qinsanity

rigid musk
#

Qizz heh

#

I love this

#

I want qi chickens so bad now

ornate trellis
rigid musk
#

absolutely awful I love it

ornate trellis
#

the MrQi in the folder btw was meant to be a barn animal

rigid musk
#

horrifying

#

ill take 30

ornate locust
#

cursed

ornate trellis
#

it all started with the Qi cow but now I dont know what to do with those assets

rigid musk
#

i could figure out how to turn them into custom animals...

ornate trellis
#

he's t-posing

rigid musk
#

oh absolutely awful /pos

ornate trellis
#

this is the qi chicken btw

rigid musk
#

oh ... oh my god I love it

#

did you finish the qi cow too?

ornate trellis
#

look at the baby tho

ornate locust
#

he glasses too big for he face

ornate trellis
urban patrol
#

baby qicken is making me feel things

ornate trellis
#

i REALLY wanted to do a Qi set but....im too busy

rigid musk
#

oh my god

#

I want them, i want them deeply

dusk mulch
ornate trellis
#

i even got some produce and other random items...

rigid musk
#

@vale stream I will be posting the 1.0.5 update in a moment, I will write a note about the i18n file on there but I just wanted to let you know that a few sections have been changed significantly (for translation compatibility and some other things) - each change is marked with "1.0.5" so it's pretty easy to search

ornate trellis
#

but jsut like GiantCrop Carrot it never came to be

rigid musk
#

iblinks you know

#

Once I finish this furniture mod..

#

I wouldn't mind another coding project perhaps

ornate trellis
#

take it, in my hands itll probs never happen

rigid musk
#

Do you have a Nexus profile? you could technically post it yourself if youd like

ornate trellis
#

I do but nahh

rigid musk
#

at the very least I can split the DP with you for it

ornate trellis
#

my profile is a hodgepodge of random shit already anyway fdsg

#

its same as my discordname tho if you wanna find me lol

dusk mulch
tiny zealot
dusk mulch
#

OHHH I FORGOT ABOUT THAT COMMAND

#

god i feel so dumb now lol

#

ty 😅

tiny zealot
#

(also, reload i18n first. then patch reload)

dusk mulch
#

and in the process of doing all that i found like 5 more bugs

rigid musk
#

ah.. misc bugs my beloved

#

sorry let me correct that: Beloathed*

dusk mulch
#

god gift tastes are the bane of my existance

tiny zealot
#

context tags may make your life easier, if you aren't already using them

#

(context tags my beloved)

urban patrol
#

what are context tags?

dusk mulch
#

Anybody have any idea why this schedule won't work?

(snippit)

            "Action": "EditData",
            "Target": "Characters/schedules/{{ModId}}_Willow",
            "Entries": {
                "spring": "830 {{ModId}}_TownHall 11 10 2/900 {{ModId}}_TownHall 11 10 2"
            }
        },```
#

(I have 2 of the same one for testing)

urban patrol
#

and also make sure you're sleeping or starting a new save before testing schedules

rigid musk
#

I know I typed all of mine out pondering

dusk mulch
tidal stone
#

is there a way to see what number a tile is in tiled

dusk mulch
#

Coordinate? Tile index?

tidal stone
#

12 0, 14 5, 16, 32

#

coordinates ye

dusk mulch
#

Ah, it is on the bottom left of the tiled window

tidal stone
#

oooh

dusk mulch
tidal stone
#

ty ty

final folio
#

Hi, maybe it's just a silly thing but does anyone know why the Sprite doesn't work and looks like this, but the Portrait works?

hard fern
#

Err

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.

dusk mulch
#

Screenshots don't work as well

uncut viper
#

also, NSFW mods are not allowed to be shown here

hard fern
#

Yeah i was about to say something about that

#

Since 😅 i was trying to read the screenshots

uncut viper
#

we are allowed to help with the technical aspects at our own discretion but any mention or visuals of the aspects that break server rules arent allowed

dusk mulch
#

what is NSFW? i feel like i am being blind

uncut viper
#

also, if i recall correctly you are trying to mod for the Switch? very very few people will be able to help you here

sour sleet
#

Funny thing is, I know how to run mods on the Switch, but there’s no way I’m helping to get gross mods working lmao

ornate locust