#making-mods-general

1 messages ยท Page 122 of 1

uncut viper
#

(i always confuse backwoods with secret woods when it comes to blacklisting...)

rigid musk
#

as far as I can tell yes? Unless I made my schedule string wrong... which is entirely possible AND probable

brittle ledge
#

yeah, I was considering having Wren have a schedule to inspect the sewers but I did not want to open that can of worms of making the sewers pathable

brittle ledge
rigid musk
#

Again I really appreciate all of the help

rancid temple
#

I'm guessing SandyHouse is fine, since Sandy has schedule points there

rigid musk
#

Making things is both incredibly fun and also hard to do because there's just so much to think about :]

brittle ledge
#

(I assume the reason those locations don't have NPC warps available currently is because 1. they're not needed in vanilla and 2. CA probably didn't want characters wandering in there when he was undoubtedly having to troubleshoot his pathing SBVLmaoDog )

rigid musk
ornate locust
#

I appreciate it! Especially since that sounds like a neat mod

rancid temple
#

Looks like she does yeah

rigid musk
#

boy im not looking forward to making events. Out of everything ive learned to do so far that's the thing i dislike the most

velvet narwhal
#

SBVPensiveButt why everyone hate events, it's my favorite part of npcs

uncut viper
#

if it helps, there's a lot more you might potentially hate more when you learn them later on /lh

velvet narwhal
#

war flashbacks of marriageDuties

floral copper
#

any of you guys know how to verify if SMAPI has achievements enabled? i put the launch args into steam

uncut viper
#

i dont know what you mean since smapi doesnt disable achievements but i dont think this is the right channel either way?

rigid musk
#

I refuse to make Qi marriable ... refuse (mostly because I don't wanna deal with all that)

tiny zealot
rigid musk
floral copper
uncut viper
#

when do achievements get disabled? ive never seen that happen

floral copper
#

๐Ÿ‘Ž

velvet narwhal
#

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

uncut viper
#

well, the description of this one says its for help creating custom content

tiny zealot
calm nebula
#

annnnny ways

brittle ledge
calm nebula
#

event tester new build is up

uncut viper
velvet narwhal
#

retired
are you sure about that

tiny zealot
uncut viper
#

didnt you just say earlier you were done maintaining mods

#

like for realsies

brittle ledge
#

atra will work on any mod that isn't theirs (which tbh I can see the logic in, it's a lot less work to send a PR vs. maintaining a page and dealing with bug reports, etc.)

uncut viper
#

but atra maintains this page

calm nebula
#

with dialogue checker (sinz.check_dialogue and sinz.check_special_orders

#

this is a mod that only modders will use, it has a small green light

uncut viper
#

so you are keeping the lights on for your mods

calm nebula
#

I mean, I'm not?

rancid temple
#

Eventually we will annoy atra to the point of stopping support for even us

tender bloom
#

Only the green ones

uncut viper
#

(/j. small green light)

calm nebula
#

check_dialogue with no arguments has you warp around to every npc talking to them once

#

check_dialogue <NPC> will run through that npc's entire dialogue file, loading and parsing each line of dialogue

#

check_special_orders just loads the special orders to make sure they're valid and the tags are sensible, etc

brittle ledge
#

ooooooooh

brittle ledge
calm nebula
#

....just the dialogue.json sorry!

#

And it zips through

#

I could make it a pause and click

brittle ledge
#

if you're so inclined! It looks super useful though!

light bramble
#

Guess who's back into working on her NPC mod after months of not wanting to do it? THis girrrrrl

modest dagger
#

npcs hard

light bramble
#

Guess who forgot how to make her mod work for tanslations? THIS GIRL!

#

Maybe I won't add translations...

light bramble
#

Speaking of, @brittle ledge, this needs to be added to make the files for me to edit?

            "LogName": "Blank JSON load", //The logline is not required, but it's useful down the road for labeling your patches so you can tell your problem is, say "NPC Dialogue Patch" and not "NPC Patch #14"
            "Action": "Load",
            "Target": "Characters/Dialogue/NPCName, Characters/schedules/NPCName, Strings/schedules/NPCName",
            "FromFile": "assets/data/blank.json", //this should be wherever you put it in your assets folder - put it in a subfolder if you want.
        },```
brittle ledge
#

Correct

#

Think of it like putting a folder in the game's filing cabinet, so you have somewhere to put your files (edits).

light bramble
#

so like, I need to run the mod with this first before I can make/edit the dialouge?

#

XD

uncut viper
#

(if that analogy doesnt help, we have 20 others we could try too)

light bramble
#

Brain not braining

brittle ledge
uncut viper
#

you need that stuff in your content.json permanently

tiny zealot
modest dagger
uncut viper
#

it doesnt create literal files in your folder

#

it creates fake files that content patcher can edit

#

no fake files = no editdata

light bramble
#

Ok

#

That's what I was wondering

uncut viper
#

(for these things specifically)

light bramble
#

XD

brittle ledge
light bramble
#

Rn I'm just trying to finish the dispos

tiny zealot
#

and the reason to use EditData is it allows you to use content patcher's tokens. they won't be parsed in a Load action

light bramble
#

but I have to relearn....

brittle ledge
light bramble
#

Saving!

modest dagger
#

I've made the small success of getting the husk of my NPC in the game so i'm vibin there

#

just gotta y'know...write her now

light bramble
hard fern
#

im redoing portraits (again)

teal bridge
#

Any of you Linux users have debugging from VSCode working and remember how you got there? I get a pretty unhelpful "No launchable target" message and don't know if that's a ModBuildConfig thing or a VSCode thing or just a non-Windows thing.

#

My mod productivity is at about 8% right now, that could probably double it.

mossy terrace
ornate locust
#

I could probably mess with portraits forever, but the coding stuff SDVpufferdizzy

mossy terrace
#

programming is easy tho

ornate locust
#

I've never done pixel art before Stardew, but I seem to be addicted to it now

mossy terrace
#

thats great!

teal bridge
#

I have the C# Dev Kit installed. The project builds fine, Solution Explorer appears, etc. It's just the debug command that's not doing much.

mossy terrace
#

art looks fun, i just have no talent for it

lucid iron
#

need this in csproj (or maybe targets?)

teal bridge
#

I thought that ModBuildConfig put that stuff into targets automatically. I'll try anyway though.

lucid iron
#

this setup is in modbuildconfig but it's disabled for linux

#

i will try harder at making case to enable it for everyone hokuhands

teal bridge
#

It's weird that ModBuildConfig has no trouble finding the directory and copying/deploying the mod... but just doesn't want to start the debugger for SMAPI.

light bramble
#

random Q...Can you make a list of wanted quest items for the item delivery quests for custom NPCs?

lucid iron
#

i think it was like, straight up broken before maybe

#

but its not broken anymore

light bramble
#

Hey so I have slight confusion. I want to make my NPC good friends with Shane and Haley...what would the i18n relationship translation be? or would I just put "Shane" : "friend"

tiny zealot
light bramble
tiny zealot
brave fable
#

if you include a value, it'll use that value in place of the NPC's name. if you leave the value blank ("") instead of null, it'll use their name

light bramble
#

heh?!

brave fable
#

e.g. my grandpa hates, Shane loves, my "Daddy" loves

light bramble
#

O_o

#

XD

#

IMAGINE

#

Oh god...

brave fable
#

don't make me post the image again. i swear i'll do it

light bramble
#

I need to see it PLEASE

tiny zealot
#

why can't we make you post the image again as a treat

teal bridge
brave fable
#

you devils

lucid iron
#

I never noticed anything weird for debugging but admittedly all I ever do is plonk down a breakpoint and step through

#

What happens on mac monS

light bramble
light bramble
rigid musk
#

is this the proper format for this? I know the warp itself is right I just don't know if that's how you put it into the tile properties

rigid musk
mossy terrace
#

are there any good resources for writing mods for smapi?

tiny zealot
rigid musk
#

The wiki is pretty helpful -

teal bridge
#

I'm starting to wonder if it'd be less effort just to install the entire friggin' thing - Stardew, SMAPI, Visual Studio, and everything else - on Parallels.

light bramble
#

So for setting the home does the ID relate to the map name?

brave fable
#

location name specifically, not necessarily the map name (given that map usually refers to the .tmx file asset)

lucid iron
brave fable
#

in short, match your entry key in Data/Locations

lucid iron
#

at one point i did this to get the smite unit thing to work

teal bridge
#

By randomly smashing on different settings, I actually got the game to start, though it crashed almost immediately.

light bramble
#

Like the name of the map is {{ModID}}_GlitchHouse

brave fable
#

map or location? again, important distinction hahah

light bramble
# brave fable map or location? again, important distinction hahah
            "Target": "Data/Locations",
            "Entries": {
                "{{ModID}}_GlitchArea": {
                    "DisplayName": "Glitch's Area",
                    "DefaultArrivalTile": {
                        "X": 51,
                        "Y": 23
                    },
                    "CreateOnLoad": {
                        "MapPath": "Maps\\{{ModID}}_GlitchArea"
                    }
                },
                "{{ModID}}_GlitchHouse": {
                    "DisplayName": "Main Floor Glitch's house",
                    "DefaultArrivalTile": {
                        "X": 7,
                        "Y": 8
                    },
                    "CreateOnLoad": {
                        "MapPath": "Maps\\{{ModID}}_GlitchHouse"
                    }```
brave fable
#

yep, use the key for your location entry ("{{ModID}}_GlitchArea")

light bramble
#

Awesome thanks

light bramble
teal bridge
#

(I actually got it to work. Mostly. I think it's doing some kind of x64 emulation so it's super slow, but it basically runs.)

light bramble
#

another question, NPC warping, would I need to manually add it in for areas being patched over other areas? Like I had to add the warps for my railroad patch like so:

                "-1 53 n3rdgirl.GlitchFarmer_GlitchArea 51 24",
                "-1 52 n3rdgirl.GlitchFarmer_GlitchArea 51 23"
            ]```
#

Would I need to add some for NPCs? Or can I just put it in the map properties itself?

#

would it be MapProperties?

gaunt orbit
#

if you are in full control of the map, yes you can put it directly into the map properties when you make it in Tiled

#

otherwise you want to use AddWarps to make sure you don't delete warps from other mods

light bramble
#

Ok, but like what if I need to it be an NPC warp?

gaunt orbit
#

NPCs can use regular warps. if you want it to be npc-only, you need to use NPCWarp

light bramble
#

Also I had a random property added to my map... @TileBrush@Tile Brush 1@

#

What is this?!

gaunt orbit
#

stuff with @ is metadata though, which can be ignored

light bramble
#

ok, so don't remove it

#

got it

gaunt orbit
#

it's probably fine to remove it but it doesn't hurt to leave it either

light bramble
#

Also, for more info on the warp thingy, this is the patch I am making to the railroad (Have one for SVE) and I use AddWarps in the json for the patch. I don't need to worry about NPC warps here?

gaunt orbit
#

I think they won't path there if it's blocked? not sure though

light bramble
#

Well I'm gonna hope and pray that things won't break...I'm just doing the dispos before trying to get the NPC in the game lol

#

and, tiledata I have this for a player warp...I need to remember is this the correct formatting for a click warp?

#

Like I want them to warp to another map but like almost a door warp?

rancid temple
#

Format looks good for door-like warp

light bramble
#

ok

rancid temple
#

There is the LockedDoorWarp too if you want an actual door warp with time limits and optional friendship requirements

light bramble
#

idk how it would work for custom NPC relationships?

#

Like I'm just curious about that...and I don't want a time limit if the player is in the house?

#

idk how to do that

tiny zealot
#

it works the same for any NPC, custom or otherwise

rancid temple
#

Time limit doesn't affect player if they're already in the house, would just keep them from going back in if they leave

light bramble
rancid temple
#

LockedDoorWarp <destinationX> <destinationY> <destinationName> <openTime> <closeTime> <NPCname> <friendshipRequirement>
So if you want it friendship locked but not time locked you could do
LockedDoorWarp 8 5 n3rdgirl.GlitchFarmer_GlitchAttic 600 2600 <npcName> 500
Which would make it available from 6 am to 2 am and starting at 2 hearts

#

Otherwise, just leaving it a regular Warp is fine

light bramble
#

And the NPC name, that's the internal name not display right?

rancid temple
#

Correct

#

Fun fact, houses do have time limits on them, I had to check because I cheat lmao

light bramble
#

I knew trhat becuase i make map mods mainly XD

mossy terrace
light bramble
#

ok another question. TextureName the wiki says The last segment of the NPC's portrait and sprite asset names. For example, set to Abigail to use Portraits/Abigail and Characters/Abigail respectively. Defaults to the internal NPC name. So my sprites are named Glitch_Sprite and portraits are named Glitch_portrait_hands and Glitch_portrait_no_hands I want sometimes for the two varients in portraits to be used...how do?

tiny zealot
#

there are several ways to go about it. you can find the way that works best for you or meets your specific requirements

#
  • use CP When conditions to change TextureName as needed
  • use the same conditions to load the appropriate image into the default target asset as needed and don't bother with TextureName
  • load the different sprites to different targets and use Appearance to switch between them as needed
#

and probably more i can't think of offhand

rancid temple
#

My first thought was something along the lines of the first one you suggested, using Dynamic Tokens to keep from making a bunch of edits

light bramble
#

my issue is I want the portraits to be chosen at random... can I have the game give me a one or zero to be the deciding factor? And, would I need to rename the file names? Or would I use internal names?

latent mauve
#

If you Load the portraits to a Target that ends with Glitch (assuming your NPC is named Glitch internally), you could do an EditImage to conditionally change the portrait loaded to it, I think?

#

If you want it chosen at random, I wonder if you could combine that with the i18n random trick or not

rancid temple
#

I wouldn't do an i18n for that, be a problem if someone translated that lol

#

You can random other stuff, doesn't have to be i18n

light bramble
#

I think i might just merge the portraits instead of doing randoms

devout otter
#

For this specific need, I think a simple EditImage with Random in the FromFile would be the simplest.

snow heron
#

hiii im having trouble with a time based boolean for furniture framework, specifically "When a Furniture is Time Based, every sprite in its sprite-sheet needs to be duplicated: for every "Source Rect" you defined (for the base sprite or for Layers), the Height of the Rectangle will be added to its horizontal position when it's dark outside, this way, your Furniture can change how it looks." (in the image above).
- Would this sprite not be correct? Cause when i add it to my game it doesnt properly update and leads to a blank sprite

light bramble
#

so I'll just make an amalgamation of the portraits and make only certain ones have the hand...or I will just not use one...idk yet.

#

OOO MAYBE I COULD MAKE IT CONFIGURABLE?!

latent mauve
#

Oh yeah, I almost forgot we did this with my desynced seasonal TARDIS code

#
    "Action": "EditImage",
    "PatchMode": "Replace",
    "Target": "Buildings/Big Shed",
    "FromFile": "assets/{{Random: spring, summer, fall, winter |key=tardis-season}}/Tardis Big Shed.png",
    "When": { "TARDIS Big Shed": true }
       },```
#

There's an example with Random and EditImage for you.

#

I say we because this chat did most of the work on figuring out the random code. >_>

light bramble
#

Could it be made configurable?

#

Also, another question...does TextureName use file names or internal names?

#

or display names

modest dagger
#

how goes your npc progress n3rd

light bramble
#

Like if I loaded my sprites into Characters/{{ModID}}_Glitch would TextureName use {{ModID}}_Glitch?

light bramble
devout otter
light bramble
devout otter
#

So yeah, {{ModID}}_Glitch.

light bramble
#

ok thank you

modest dagger
#

did ye hear dolphin, i managed to get the barebones of an npc into the game

#

and i mean bare bones. she don't even talk yet

latent mauve
devout otter
#

Oh Neith?

modest dagger
#

yeye

#

just chilling at the bus stop doing nothing

devout otter
#

Yey, what's the plan next?

modest dagger
#

well I wanted to give her her own area so figuring out tiled and how to add a map will be next

light bramble
#

Wiz out here already added the character to the game, meanwhile I'm just still doing the backend things...

latent mauve
#

N3rdGirl, for example, you could do a config option that had "hands, no hands, random" as choices, and just have three different EditImage blocks based on which one you're doing.

modest dagger
#

she is little more than a piece of furniture atm n3rd

light bramble
light bramble
devout otter
#

(Also if you make the hands overlay, you can just apply that one hand set to all your portrait sets. Assuming you have more than one set.)

light bramble
#

There, fixed my name too XD I have to have it as N3rdGirl cuz it's my nexus profile, but people can call me Rose XD

devout otter
#

Yar, I just mean that of you have other clothes or something, you can make a hand overlay if you want instead of having two versions of each costume.

modest dagger
#

yea see if i drew that i'd still be working on shading

devout otter
#

(Also I love your art style!)

modest dagger
#

it would've taken me significantly longer than the week-ish it took for neith

light bramble
devout otter
light bramble
#

NOT MY ART

#

I commissioned this

#

I cannot draw to save my life

modest dagger
#

oh i love when people say this hold up

devout otter
light bramble
modest dagger
#

my gorgeous early art

light bramble
#

Still better than mine

light bramble
#

MY DISPOS IS DONE!

modest dagger
light bramble
#

can an NPC's gift tastes override the universal ones?

brittle pasture
#

yeah, remember Haley hates prismatic shards

uncut viper
#

(unless its stardrop tea)

hard fern
#

๐Ÿ˜” my npc's walking sprites are absolute jank

rancid temple
#

Is this based on seeing it in game or just in the sheet?

woeful lintel
hard fern
#

just looking at the sheet, as i havent had a chance to see it in-game yet

rancid temple
#

You should wait to see how it looks in game, if you zoom in enough on any sprite sheet you'll see a lot of jank

#

It's an unfortunate side-effect of working in any aspect of game dev

hard fern
#

ah true

light bramble
#

trying to figure out how to make checkbox config option ๐Ÿ˜ญ

#

I only know dropdown

uncut viper
#

if you use true and false as the allowed values it just does it

hard fern
#

checkboxes are-

#

yeah

light bramble
#

oh I feel dum

#

ok ok what about trying to give it a description?

woeful lintel
#

you can use FF in the current version (what you'll find on Nexus), this is just a comment for me (sometimes I forget where I left off) because I'm in the middle of the update. When I finish the update, I'll share a python script to automatically update existing packs, and I'll be here to help with any issues that might appear.

Long story short, you can use it without any issue (there's only a minor feature broken in 1.6.9: disabling fish tank light source)

light bramble
#

like this V

brittle ledge
#
    {
        "LinusEventTweak":
        {
            "AllowValues": "true, false",
            "Default": "true",
            "AllowBlank": false,
            "Description": "{{i18n:LinusEventTweak.Description}}",
        },```
#

example

woeful lintel
#

I went with Computer Graphics conventions, it makes sense for the context

uncut viper
#

that is also technically the wrong way to do config i18n (though its what i do too anyway)

light bramble
#

ok

rancid temple
#

Oh yeah, config i18n has like special keys baked in for CP

brittle ledge
#

yeah it's like a specific k... yeah that

rancid temple
#

You can find it on the page Button linked

brittle ledge
#

I did that config a looong time before it was i18n'd SBVLmaoDog

light bramble
#

I mean once I get back end stuff done I can try to put the NPC in the game XD Or should I try that first?

uncut viper
#

i dont actually know what the functional difference is between regular i18n tokens and the special cp config tokens for i18n bc ive never noticed any difference

#

if it aint broke and all that

brittle ledge
light bramble
brittle ledge
#

ohhh, I thought you just meant testing-wise

uncut viper
#

what you are doing in your content.json is the process of adding them to the game

brittle ledge
#

so to spawn in an NPC, you need at bare minimum sprites, portrait, and disposition

light bramble
#

ok. I may need to take a break for the night XD It's almost 11

brittle ledge
#

They should spawn in with just that (although they won't talk or move anywhere because you haven't added a schedule or dialogue yet)

light bramble
#

Honestly I think dialogue, gift taste, and schedule is gonna be easy

#

Events is where I'm scared

#

XD

brave fable
#

gift taste is the easiest thing after name and birthday lol

#

it's exponentially worse from there

light bramble
#

Well I'm hitting the hay for now, I need to be up early early tomorrow

brittle ledge
#

there's a ton of event guides to get you started, and a handful of basic commands (move, speak, warp, emote, etc) will get you through most events

brave fable
#

yep, for the most part you can draft a skeleton of an event with just move and speak. from there it's all flair

brittle ledge
#

I think having fancy commands is less important than having something interesting to say.

brave fable
#

lordy wildflour goods has a lot of dependencies. maybe i can do without testing it lol

light bramble
#

100% using the NPC Builder for my scheduel and gift tastes...seeing as I did the dispo and winterstar gifts already

brittle pasture
uncut viper
brittle ledge
#

I don't think it's a required field, is it? [goes to look]

uncut viper
#

tbh, ive never checked. i just kinda assumed it was and never bothered to look

brittle pasture
#

a few modded NPCs dont have barfdays

#

(glares at Apples)

hard fern
#

barfay

uncut viper
#

but part of that "dont know what to do" is also deciding "do i really want to put none or do i want to put one so people dont complain abt them not having one or wondering why"

brave fable
#

vanilla npcs don't either, such as Marlon. but he's also marked as CanSocialize: false

brittle ledge
#

ah nope, it's one of the few required fields

#

but looks like it has a default none/0 value?

brittle pasture
#

huh, I wonder how Apples/that other fruit thing from RSV did it then

brittle ledge
#

you can hide their birthday

uncut viper
#

it would still give the friendship though, right?

velvet narwhal
brittle ledge
#

I assume so, button

brittle pasture
#

if I'm not 5 minutes away from the sweet oblivion of sleep I'd look up SVE/RSV's files

brittle pasture
#

ah, Kiwi, that's what its name was

uncut viper
#

so is my npc tbf

#

theyre already gonna need a C# component for things anyway so i guess any trouble i run across i can just harmony my way out of

brittle pasture
#

I was guessing in my head before. "Peaches? No that's the other fruit creature in SVE. Oranges? Cherries? Are they named after a vanilla fruit...?"

velvet narwhal
#

i now have a stronge urge to make a pomegranate follow claire's npc around

uncut viper
brave fable
#

i'm not sure if birthday/season are actually required for social charas, i've just marked one of mine as null/0 and it works fine with lookup anything, no errors on gifting

#

obviously your charas will generally have one if they're sociable, but ignoring it seems fine. even the calendar doesn't error out

uncut viper
#

oh yeah CharacterData does just say its optional. guess thats intentional then

#

tho i forgor already the wiki already says that for non socialables

#

so thats probably why instead actually

#

i dunno what the intent is then

#

but i will be sure to abuse it either way

brave fable
#

yeah it seems completely optional. it'd make more sense reversed, 'useless for non-social npcs'

#

i'm excited to see how you abuse not having a birthday lol

#

it'd be funny to have a character with a birthday set but hidden on the calendar. give them a unique birthday dialogue that gives you some secret bullshit item

uncut viper
#

oh i just meant abuse being able to make it null. i dont want any deal to be made about a birthday at all for them

brittle ledge
#

if you set the accept gift birthday dialogue to match your regular gift taste dialogues, the friendship bonus alone would be pretty hard to notice SDVpufferthinkblob

#

bonus: give them a spring 1 birthday, spawn them in on spring 2 SBVLmaoDog

brave fable
#

unrelated, honestly surprised anyone can even run out of space in the LOC cookbook menu for their recipe and ingredients. my biggest recipe with flavour text and a buff description doesn't even run out of space when i duplicate lines in the flavour text SDVpufferfush

uncut viper
#

i want absolutely no concept of a birthday whatsoever. i do not wish to have hidden birthday conceptps

brittle ledge
#

I mean, wouldn't hurt to try it and see

uncut viper
#

if it doesnt work the way i want it i will harmony patch whatever i need to in order to get there

brittle ledge
#

if the game accepts null 0 as a birthday, problem solved

#

I just went and looked at Kiwi's dispo out of curiosity and she has no birthday at all, so presumably the default of null 0 works

uncut viper
#

one more lil tidbit to add to my pile of notes

hard fern
#

๐Ÿ™ƒ i forgot a sleeping sprite for my npc loll

rancid temple
#

So realistic experience of climbing into bed and staring into the distance

#

Until 2 am

hard fern
#

honk shoo mimimi

inner harbor
#

Several of mine have no birthday and there's no errors

royal stump
#

SDVpufferthinkblob yeah, as far as I can tell, null birthday season is safe whether an NPC is social or not
(in base game code, at least, since mods could always make bad assumptions)

rigid musk
rigid musk
slender badger
#

Config options have their own specific structure they need to use in the default.json and you don't swap the name, values, or description with a regular i18n key like you would with dialogue and such

#

If you check the CP docs, there's an example of the structure, but Nomori's i18n-ifier app also has a section to do config i18ns

rigid musk
#

Thank you :]

pine elbow
#

Hi! I'm working on translating the game from english to swedish. i've never used SMAPI or content patcher, all im doing is converting the files from XNB to JSON and then editing those files in notepad. Am I doing it right or am I missing something? Just wondering so I'm not wasting a few months doing this hehe :p

slender badger
#

You're close - you'll want to use CP to patch the files so that there's less risk of breaking things. Check out the CP documentation, particularly the EditData section, and have a look at the code for some existing translation mods for an idea of how it should be laid out

pine elbow
slender badger
#

I'd prefer not to, sorry. You can ask here, that way if I don't have an answer or if I'm not around, others can help as well

pine elbow
#

Alright no worries. So basically, ive downloaded CP and all it has is contentpatcher.dll and a manifest file. How do I use it?

slender badger
#

CP itself just gets dropped into your Mods folder same as any other mod, you don't need to do anything with it itself when creating a CP content pack

pine elbow
#

Oh shoot, I guess ill have to extract it to the correct folder then (I extracted it to downloads)

slender badger
#

Nah, you can just move it over there after extracting. Have you not used mods before?

pine elbow
#

Not for stardew valley, no. Thats why im not very familiar with SMAPI either

slender badger
#

!gs I'd recommend playing a little while with some basic mods, that way you'll get to know how they work. Download a few simple dialogue mods in particular, since their coding will be similar to what you'll need for a translation mod

ocean sailBOT
pine elbow
#

Thanks!

woeful lintel
ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

pine elbow
brave fable
#

sometimes i wonder about vs. i really do

calm nebula
#

Lil

#

(That line hasn't been run yet. Step past ut.)

proud wyvern
#

nonetheless, it shows this as null

raw oxide
#

Hi working on mapping again is there any mod that unharcode the crib position in map or do i have to make the map around the crib ?

frozen elm
#

As far as I'm aware there isn't. But since you can now move both spouse room and entrance quite easily you still have a fair amount of freedom

fossil osprey
#

Oooh you know what mod can be cool? Advanced winemaking
Mix-matching fruits, adjusting yeast, choosing fermenting methods... And depending on how good it is, it could sell for more or even give boosts
That would be a good way to push players to not just throw starfruits into a keg

drowsy pewter
#

Go for it!

lucid iron
#

What are you hoping to achieve here?

#

The convention for sdv is to use mod unique ID as the harmony id

#

In your case I would probably want to use HarmonyPriority(int)

#

To make it generally go first or generally go last

#

But you should probably copy the modData when you replace the items

#

If you want this form instead it's just bzp allergies's mod id I believe

#

No specification on postfix since priority on considered for 1 method anyways

#

Are you sure

#

This is an instance method so you also have Object __instance

#

For the actual object the machine rule is associated with

calm nebula
#

happy thanksgiving, americans

pine elbow
#

Noob question here: how do people update the mods they've created? Do you have to copy paste everything in your files to the new updated files or is there a smoother way?

#

Just curious about the process in general

lucid iron
#

I use version control

#

git AquaThumbsup

woeful lintel
#

I'm so used to version control, such a question seems outlandish to me...

pine elbow
#

But once you have located the new code, you still have to integrate your stuff into it right?

#

I was hoping for a program that could mesh both versions together hehe seamlessly...in my dreams prob

woeful lintel
#

I have no idea what you mean, did you re-write your mod from nothing?

drowsy pewter
#

Are you talking about updating C# mods for new game versions ?

pine elbow
#

Well im working on a language translation mod, so the only files im changing is really the dialogue. I just wanted to know if there's a way to locate any new things that need translating and how people go about it really

woeful lintel
#

oh, localize

drowsy pewter
#

A language translation mod for the game or for someone elses mod?

pine elbow
drowsy pewter
#

Typically for the game we have version update pages on the wiki that state everything new/changed

snow heron
drowsy pewter
#

For translation files specifically, there's also a github available to mod authors that has version control/changes on every game file. You can also unpack and diff the 1.6.8 and 1.6.14 files against each other

woeful lintel
snow heron
#

i just dont really understand what im doing wrong

#

i think maybe its the directional field for the source image

#

this is what i have right now (i tried to copy an example lamp post mod) but it isnt working

woeful lintel
#

well, first it's "Light Sources", not "Light Source", and it must be a list of light sources, even if there's only one

lucid iron
#

Is space delim list of qualified item id valid for item query

#

Like "ItemId": "(O)123 (O)124 (O)125"

brittle pasture
#

no dont think so

calm nebula
#

No

lucid iron
#

Was syntax like this valid in prev versions of location data

#

Yesterday I tracked down mystery null fish problem to an item query like this in the farm mod's fish data blobcatgooglyblep

brittle pasture
#

probably an undetected bug

calm nebula
#

Never valid

#

Use randomitemids if you want that

#

Is there a way to know what reminders I have open

#

I vaguely recall some

brittle ledge
#

You had one about learning to dance in under two weeks

warm wyvern
#

hello.

#

I'm new here and I'm currently working on my own mod. I'm using content patcher. does anyone know the command for editing dialogue?? I tried "EditFile" and it doesn't work.

wanton pebble
#

EditData

#

!cp

ocean sailBOT
wanton pebble
#

You may find the docs useful

warm wyvern
#

oh thanks!!

#

let me check.

#

I tried editdata and it didn't worjk either.

wanton pebble
#

!log

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didnโ€™t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

wanton pebble
#

Wait

#

Pingu are you trying to edit in marriage dialogue to the regular dialogue file?

warm wyvern
#

whoops,

#

u r right!

#

no wonder it didn't work lol.

#

thankssss.

wanton pebble
#

I re-read the patch and was like "waaaaaaaait a minute....."

warm wyvern
#

hahahah my bad.

brittle ledge
#

pretty sure that's not the right format for editdata, and also dialogue and marriage dialogue are two separate files

#

...thanks for not scrolling, discord!

warm wyvern
#

what's the right format??

brittle ledge
#

EditData is just the changes, it shouldn't be loading in an actual file

warm wyvern
#

seems like it still not working. I think @brittle ledge is right.

warm wyvern
brittle ledge
#

Yes

blissful saddle
#

tiakall is right. you need to provide the entries changes as a dictionary, as in their example

warm wyvern
#

I'm confused ๐Ÿ˜ฆ

blissful saddle
#

also neat to see how one edits lines through i18n

brittle ledge
#

(I converted my NPCs and RWE over using nomori's converter, I skaiLove it)

blissful saddle
#

!json

warm wyvern
#

I thought it gonna be as easy as editimage, lol. I guess not.

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.

blissful saddle
#

put your changes json on the parse above and let me take a look to what you are trying to do

warm wyvern
#

ok wait.

brittle ledge
#

here's a smaller example, this is me editing five lines of Elliott's vanilla dialogue { "Action": "EditData", "Target": "Characters/Dialogue/Elliott", "Entries": { // Vanilla tweaks "Thu2": "{{i18n:elliott.Thu2}}", "summer_Tue6": "{{i18n:elliott.summer_Tue6}}", "event_toast1": "{{i18n:elliott.event_toast1}}", "event_toast2": "{{i18n:elliott.event_toast2}}", "event_toast3": "{{i18n:elliott.event_toast3}}", }, },

blissful saddle
brittle ledge
#

(just pretend the fancy i18n stuff is just lines of dialogue SDVpuffersquee )

blissful saddle
#

for stance and to make it easy for possible translators, I would recommend you to go through the fancy i18n method

warm wyvern
warm wyvern
blissful saddle
warm wyvern
blissful saddle
#

need to see which entries you are trying to change

blissful saddle
warm wyvern
blissful saddle
#

but change fields as you see fit. in your case, changing Elliot by Sam

warm wyvern
#

I'm also trying to change the NPC name.

#

that's why I'm changing the characters name on the dialogue.

blissful saddle
#

the data is written in an easy-but-not-so-much lists and dictionaries form. the "Thu2" for example is the key that identifies the dialogue in the base file

#

so in the Tiakall example, they are changing the original Elliot's "Thu2" line for whatever is in i18n:elliott.Thu2

warm wyvern
#

ah I see...

blissful saddle
#

to use the i18n location system, you just need to write a default.json with the keys and lines you want to import and put this json in a i18n folder

#

not sure if the i18n folder can be placed in the assets one right now. can't verify

warm wyvern
#

the vanilla tweaks is just a documentation note, right?? so I can just remove it??

blissful saddle
#

in the Tiakall example, his mod should have at least a i18n\default.json with the key elliot.Thu2 with a line in there

warm wyvern
#

ok, let me try to figure this out haha.

#

thank u!!

blissful saddle
#

just do it without the i18n thing. see if you can make it work

#

but before you go down the dialogue mods rabbit hole I would recommend you to read the translation page in the modding wiki

#

anything that add/change text ingame (evem GMCM text) will be better and easier to everyone if they use i18n

icy viper
#

Hi, sorry for asking again. Can I use i18n keys from other mods? Do I have to add them in my own i18n?

calm nebula
#

Button has a mod for that

blissful saddle
#

you can. You shouldn't. It is under the 'crimes' tag

#

I would add them in your own i18n

icy viper
#

Why is that? I'm adding them for compatibility reasons.

blissful saddle
#

define your compatibility reasons

uncut viper
#

theres no real reason why you "shouldnt" if you can. especially when depending on the amount of i18n you need to use you might not have permission/an open enough license to redistribute their text in your own mod

icy viper
#

So basically I'm adding compatibility with other mods like Cornucorpia for my custom machines. Cornucorpia uses i18n in machine rule which I think my own mod can't use.

uncut viper
#

can you give an example?

icy viper
#

Sure, wait.

tender bloom
#

You might ask 6480 directly as well, since they're around and active

#

They might have good ideas as I know that many people have interest in Cornucopia compat type stuff

blissful saddle
#

adding possible dependency issues over multiple mods that wouldn't need that

blissful saddle
uncut viper
#

in this case though if the compatibility is optional i would not recommend my mod for it, as it requires the dependencies to be required if you intend to use them

icy viper
#

I can't seem to send the code here. Got message from Clyde that I can't lol.

drowsy pewter
#

Hi

blissful saddle
#

I can't see how using other mods i18n would be optional requirement though

uncut viper
#

(though im not sure you might need to here anyway, pending wwhat exactly you mean by i18n in a machine rule)

blissful saddle
#

(wait, I can see it. I was being dumb for a moment)

uncut viper
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.

drowsy pewter
#

just duplicate the text tbh. It cant be that much

blissful saddle
#

I mean, it would be possible to a c# mod to check if a mod is installed and load it's i18n keys to use

#

CP would be harder to do

drowsy pewter
#

I feel like it's confusing for people when they ask a question and get various hypotheticals discussed

uncut viper
#

well, the suggestion to use my mod for it wasnt a hypothetical

icy viper
#

https://smapi.io/json/content-patcher/bf9817aa56c24aac9530b812c9193a41

Sorry, does this work? Object display name and invalid count message are the ones I'm referring to. And I know I can just copy paste from og mod to my own mod. But I'm kinda not willing to copy paste a lot of i18n keys from all the mods I'm planning to add compat for. Sorry it sounds rude, but I hope you understand.

blissful saddle
drowsy pewter
#

Ok

#

Object display name: personally I would just copy it. Or you can do what they were talking about to take the i18n keys, I wasn't following it closely
Invalid count string: 1.6.9 added a multi-purpose invalid count string to vanilla that can be used for any number of missing items. So you can use the vanilla string there

#

I'll grab the example

#

From vanilla dehydrator:
"InvalidCountMessage": "[LocalizedText Strings\\Objects:Machine_NeedsInputCount 5]",
This outputs a message with the string like "Requires (X number) pieces."

#

Number defined at the end of that localized text block

uncut viper
#

personally i also think if the stuff you need to copy is like... item names/IDs, thats also just fine to copy. though i imagine you'd need to copy the i18n for every language to make sure the resulting item still stacks? or does displayname not matter for stacking? (im not familiar with the ObjectDisplayName stuff so idk the intricacies there)

drowsy pewter
#

Displayname doesnt matter! Only internal name

#

There are not very many situations in our machines where theres a specific displayname set in the resulting item. Like maybe 4 or 5 total (this is aside from the flavored name items, which have displaynames passed into the String files, so can be accessed by any mod)

uncut viper
#

then yeah i think people using identifiers like that for things is like, normal and expected for compatibility purposes

drowsy pewter
#

Like if I was making this mod, I wouldnt even care about copying all the translated strings over because it's so minor

uncut viper
#

(but if you're still not comfortable doing it then thinking about it a bit more then my mod might work if you lock everything behind HasMod patches, maybe. no guarantees there, i dont think content patcher would complain about your output rules with null i18n if th patch itself wasnt supposed to be loaded yet? dunno tho. but yeah for this purpose i do agree with 6480 that its just fine)

icy viper
#

Guess it's the way then. Thanks!

frozen elm
#

In AT, are there any performance differences between using one combined texture or a bunch of split textures (when adding a LOT of textures), or is one preferable in any way?

crystal hornet
#

how do i make a mod

#

for stardew valley im new to modding

frozen elm
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

brittle pasture
frozen elm
#

they always have to be lined up vertically right, there's no way to change that?

crystal hornet
#

how do i download smapi

#

witch version

brittle pasture
#

I'm not personally familiar with AT, but I thought you can lay them out however you want and you can specify coords freely?

crystal hornet
#

curseforge nexus or github witch one

brittle pasture
ocean sailBOT
brittle pasture
frozen elm
#

I don't see a way to specify coords in the properties for the texture.json, and the examples that I looked at where aligned vertically so I assumed it has to be like that

crystal hornet
#

you dont need the preiumin nexus right

frozen elm
#

It just makes for a very weird looking spritesheet

brittle pasture
crystal hornet
#

ok

crystal hornet
#

questions

brittle pasture
#

this is for if you want to make mods

uncut viper
#

if it's questions about making mods it's here, just not questions about how to use SMAPI and such

#

or how to install SMAPI I mean

crystal hornet
blissful saddle
#

I appreciate the enthusiasm of someone that never played modded SDV before and wants to jump straight to making mods

crystal hornet
#

ok so my question is how do i make my first mod now that i installed contant patcher and smapi

teal bridge
#

!startmodding (you were already pointed to that)

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.

crystal hornet
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

brittle pasture
#

(ah I didnt see your earlier messages, I thought you were just a mod user)

crystal hornet
#

it says the contant files are all jsons but mine are all .xnb

brittle pasture
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

crystal hornet
uncut viper
#

SDVpufferthinkblob i never noticed that the startmodding command does not actually link to the "Get Started" page

#

which might be the only place it says how to unpack or decompile?

#

oh no there is a link to unpacking on the CP one, thats fine then i guess

#

(ium also dumb and didnt realize the getting started page is linked and that it is actually only for C#, i thought it was for both so i didnt look at that one,. oops)

teal bridge
#

I sense another XNB mod in progress. Making a Content Patcher mod does not require unpacking XNBs.

uncut viper
#

i mean, it doesnt require it, no, but unpacking your xnbs is going to be much better than fumbling around trying to figure out what to edit blindly

teal bridge
#

Content Patcher mods are JSON. Yes, the game's content is XNB. The reason you don't see any JSON files for Content Patcher is that you haven't started making the mod yet and haven't installed any other mods.

fading walrus
#

unpacking the game's files is still helpful for making the assets, if the mod in question has art!

#

you need to be able to see the vanilla pngs to see the layout and such

uncut viper
#

or if you're trying to edit Data models that dont have their vanilla contents on the wiki

fading walrus
#

ye

uncut viper
#

or if you need tilesheets for a map

teal bridge
#

All true, but we haven't established any of that, the OP has not gotten to that stage yet.

fading walrus
#

having the content folder unpacked is essential for content patcher mod making imo

uncut viper
#

i would say unpacking is practically required for any mod making

brittle pasture
#

I think you're fundamentally misunderstanding what unpacking does

teal bridge
fading walrus
#

We don't really know what they're doing, true, but they should still get under the hood and see how things work as a new modder
and since they've started poking around the content folder, it's safe to assume they want to see something that's packed in one of the XNBs

uncut viper
#

they did get to that point. i assume they just misunderstood the page saying that mods are formatted as json

patent atlas
#

( meaningless quabble)

#

(quibble)

#

(squabble)

#

(whatever the word is)

fading walrus
#

quibble indeed

brittle pasture
#

yeah let's stop

fading walrus
#

I need to use that word more often

#

in any case, yeah

#

no point in speculating

patent atlas
#

quibble does not sound like what it should sound

#

surely squable also shares this meaning I must have heard that somewhere

fading walrus
#

squabble is also correct!

#

quibble is just
cuter

uncut viper
#

i always thought a squabble was a lil fight

patent atlas
#

and ain't a quibble that as well?

#

both words are very similar in vibe and construction

brittle pasture
#

sounds like arguing over valid words in scrabble

uncut viper
#

quibble is more like nattering to me SDVpuffersquee

patent atlas
#

googling nattering

uncut viper
#

vocab lessons in making-mods

patent atlas
#

quibble: slight objection about a trivial matter
squabble: an argument over trivial matters
nattering: to talk about trivial matters

#

wonderful

fading walrus
#

hope it gives someone an idea for an event mod for Penny and the kids kek

#

spelling bee event at the library?

uncut viper
#

that would be very cute actually

#

it would be amusing to have the farmer join in with a custom lil textbox to put in the answers and potentially lose to Jas

patent atlas
#

if you win she cries and you feel like a monster

brittle pasture
#

Good, the children must learn that the world is unfair and cruel

uncut viper
#

as long as you ignore our free house, loving and supportive community, easy source of income, a wizard who builds our magical buildings for us...

patent atlas
#

i was thinking about giving Jas easy words like bottle and the and the player confusing words like idk catastrophe but the words are literally written on screen...

uncut viper
#

thats. a good point lmao

brittle pasture
#

just give the IPA pronunciation

#

can SDV even render those

uncut viper
#

i was gonna say you could leave the actual word unsaid but have the farmer overhear Jas trying to pronoiunce it to herself

#

or Vincent

#

so you'd get the general sound of the word but not the spelling

#

i dont think SDV can render much of anything outside of the standard alphabet

#

it cant even render some diacritics

patent atlas
#

you'd probably need to import a custom font into monogame for anything else

#

or maybe we hire voice actors and dub the entire game easy

uncut viper
#

someone is already trying to

blissful saddle
#

I would be prone to a 'words meanings' contest event where the farmer would need to select the correct meaning from 5 options

#

one of them could be 'quibble' and giving the other ones definitions among the options

#

that's if we decide that an young adult participating in a words meaning contest with children would be cute and fair at all

uncut viper
#

basically stardew "are you smarter than a 5th grader" innit

rancid temple
#

Egg hunt is just are you faster than a 5th grader

uncut viper
#

"are you faster than a 5th grader or abigail"

calm nebula
#

5th graders can be fast

uncut viper
#

smaller strides tho

calm nebula
#

No endurance

uncut viper
#

are we talking about me or the fifth grader here

rancid temple
#

Sounds like me

modest dagger
#

tiled makin me lose my mind tbh

old edge
#

Why

tardy adder
#

Hewo I am slightly confused by the spacecore spawns but if I am braining correctly ...

Make the spawn definitions which then go to spawngroups which those are called by a trigger action.
๐Ÿค”
How do I target map?

brittle pasture
#

if my knees work properly I'm faster than any damn 5th graders

modest dagger
# old edge Why

keeps saying my tilesheet paths are invalid when i've replaced them several times like i have no idea what to do at this rate.

rancid temple
#

Make sure your tilesheets are in the same folder as your map when editing

#

Only move them out when testing/releasing

modest dagger
#

that's what i'm confused about i'm just using vanilla tilesheets what the hell do i do then?

rancid temple
#

Same thing

#

Keep them with your map when editing, remove them from your mods folders when you're done

#

If you move your map into your unpacked Content folder then you only need to move your map back to your mods folder

#

Or copy is what I do

modest dagger
#

yea i think i figured it out thanks

#

yup got it to work thank ye again

faint junco
#

I got a weird bug for a mod I'm trying to install, let me know if this is the wrong place to ask about it, but I'm also interested in the bug itself because I don't want to have to run into it.

I'm getting the SMAPI error of X mod was skipped because "it's DLL couldn't be loaded", without any stack trace. The weird part is it seems to load the dll on some environments but not other, for example it loads fine on my window but fails to load on my steam deck.

Anyone know what would cause this?

uncut viper
eternal mortar
#

can someone give me an example for this? unfortunately im slow, is the sheet ID just the name of the sheet, and is the tile id just the regular door bottom tile? Also do i have to set this up for the other tiles of the door? This is how i have it set up: 25 16 TownInterior 120 (Also happy thanksgiving to the Americans!)

rancid temple
#

Honestly for doors, I find one of the vanilla ones I want to use and copy them

#

Because they're hardcoded as hell

hard fern
#

doors cursed

rancid temple
#

AnimalShop for example 15 12 1 120 is the set for Marnie's door

#

So that's tile X of 15, tile Y of 12, Tileset 1 in the Tilesets pane, and tile ID 120 for the bottom of the door

#

Pretty sure there's only 3 swinging doors, the ones everyone uses for their bedrooms, the ones Harvey's clinic uses and the Saloon doors

calm nebula
#

No home depot in a small town

#

Robin made the saloon doors special for gus

rancid temple
#

Robin only knows how to make 3 doors lmao

hard fern
#

robin can do almost everything except make more than 3 doors

tardy adder
blissful saddle
#

if someone can reach there

#

I tested on my set and it loads properly, but SMAPI seems to refuse to read the dll on macOS

#

I have windows btw

brave fable
#

hi @tardy adder , just mentioning that the PDW mod page doesn't say anywhere that both Main and FTM files are required, and currently 4x as many people have downloaded the Main pack as the FTM pack

#

you might want to merge both files again, or make it very very very very very very very clear and impossible to ignore that both are required

#

also important: anyone downloading your mod from the button on the main page header won't even see the FTM pack, and will instead just get the Main pack instantly

#

same probably goes for mod manager updates and downloads, e.g. Stardrop

modest dagger
#

Have a custom map, trying to get a custom character to spawn there. Their schedule, disposition, and the content all list the same location but she keeps spawning at the bus stop

devout otter
#

If you changed the home schedule in an ongoing save, there's a possibility the change wouldn't take until you sleep once.

modest dagger
#

yea just found that out via void ๐Ÿ˜ญ

#

it's working fine now

old edge
#

Has anyone else figured out how to add stops to the busstop yet?

coarse pasture
#

Hello,
I created a custom event using Content Patcher using the conditions wizard_invitation/f Wizard 500/n LazyMugElementalForce_MagnusInvitationId/t 0900 2000/d Mon Tue Wed Thu Fri Sat Sun/p Wizard/F... do I need to trigger the event on SMAPI?

old edge
#

Debug ebi wizard_invitation do it before the black screen fades out when loading the save.

#

I've been able to bypass my preconditions like this but not sure if it will work for you

blissful saddle
#

if failed to do it before the black screen fades, one could just sleep and it would be set next morning, right?

coarse pasture
#

Apparentely, I couldn't use the conditions /d Mon Tue Wed Thu Fri Sat Sun
This was causing not to play the event

dreamy cedar
#

I'm putting the polish on some new code for Junimatic to allow Junimos to water plants in indoor pots. I'm cribbing the code to show the water splash animation from the game code, and well, the game code is a little less than awesome. Notice how the water splash animation for the pot is apparently drawn underneath the pot (you can just see splooshes at the lower edge of the pot). Here's the game code:

                Game1.Multiplayer.broadcastSprites(this.Machine.Location, new TemporaryAnimatedSprite(13, new Vector2(item.X * 64f, item.Y * 64f + 1), Color.White, 10, Game1.random.NextBool(), 70f, 0, 64, (item.Y * 64f + 32f) / 10000f - 0.01f)
                {
                    delayBeforeAnimationStart = 200
                });

The last parameter (the (item.Y * 64f + 32f... bit) is named layerDepth and that's my guess as to what needs tweaking. Can anyone confirm or deny and suggest what to do?

calm nebula
#

Yes

#

Remove the -0.01f lol

drowsy pewter
#

(can't help with the coding bit, but that's awesome!)

latent mauve
dreamy cedar
#

Alas, no joy on removing -0.01f

lucid iron
#

Is item the pot

dreamy cedar
#

Item is the tile location of the pot... (Perhaps the wonky name is a relic of the decompilation)

calm nebula
#

You're gonna have to add more fudge factor based on lime

#

How the actual pot draws

lucid iron
#

Just add more float until it looks right AquaThumbsup

blissful saddle
lucid iron
#

In layer depth higher number draws above

#

Game uses Y because Y is higher the "lower" you are in screen

#

Which theoretically is closer to "camera"

#

But it is not all that consistent so I wouldn't worry too much

uncut viper
blissful saddle
#

as a physicist this bugs me everytime

lucid iron
#

opengl

#

and also scanlines go l->r u->d

calm nebula
#

That's also how all rendering is done lol

blissful saddle
#

I am just astounished my instinct was right in a CP thing after all

dreamy cedar
lucid iron
#

atra do u want to move to the universe where scanlines are vertical and d->u r->l

blissful saddle
lucid iron
#

isnt +10000f like, draw on top of everything blobcatgooglyblep

calm nebula
#

So don't do that either

blissful saddle
#

but I understand it because crt monitors back then.

It was better to make sure the upper-left pixels where right because that's where most people eyes go first when looking at a screen/text in western world. So making the image form there first was easier to calibrate them

#

it was just a matter of keeping the standard go on from there

lucid iron
#

hm so this is the pot's layer depth
Math.Max(0f, (float)((y + 1) * 64 - 24) / 10000f) + (float)x * 1E-05f

#

why does it have x blobcatgooglyblep

dreamy cedar
#

Puttered around a little more and found that -0.01f causes it to not draw, so does 0, but + .01f and above causes it to draw above the pot.

calm nebula
#

Also we use teensy mirrors

lucid iron
#

since u know x and y in ur method u can just take this whole thing and add another 1E-05f PecoSmile

#

i dunno if 10000f has any significance, only that u typically divide pixel Y value by it to get layer depth

calm nebula
#

A lot of game is just weird

#

Like, using vector2 to index a grid of int

lucid iron
#

whyca.png

calm nebula
#

Because CA made a game, is my suspicion

#

Like, instead of doing a bunch of stuff to make programmer happy, he made game

weary oyster
#

Does anyone know where I can get started on adding a custom building option to robin's shop? I'm trying to make use of the Framework Solid Foundations

brittle pasture
#

CP supports custom buildings now, you don't need SF

weary oyster
#

oo so we can just us cp to create interactive buildings?

brittle pasture
#

what functionality do you want?

weary oyster
#

a new type of building that acts as a storage system

#

with a custom gui

uncut viper
#

i dont think you can do custom GUIs even with solid foundations

brave fable
#

yep, custom ui is always C# territory, even with frameworks to assemble the visuals.

brittle pasture
#

right, the building is the easy part

weary oyster
#

ya im cool with working with C#, i just do not know where to get started

brave fable
#

speaking of, i've already wasted a day trying to align cookbook menu slices over the cookbook menu animation which is a completely different class rendered in some stupid way elsewhere. god i hate matching coordinates

#

made both components about 2 years apart from one another and i dont remember how anything works or interacts ๐Ÿ˜Œ

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.

brave fable
#

menu code is absolutely the worst thing i've ever seen in my life

#

why did i do this

brittle pasture
#

so you can add the building itself, and the interaction action with Content Patcher (and the guide above), and do C# for the rest

uncut viper
#

hippo..

brave fable
#

only 2 hippos if text scale is less than 1. otherwise 3 hippos

uncut viper
#

i hope theyre house hippos

brittle pasture
#

but are they hungry hungry

brave fable
#

naturally, it's a cooking mod

weary oyster
uncut viper
#

a cooking mod sans salt albeit

weary oyster
#

then anything after the interaction is C#

brittle pasture
#

yeah
building data supports triggering a tile action on click, so you can register a custom action that brings up your custom UI

weary oyster
#

thank you :D

blissful saddle
latent mauve
#

And Maximillian has the official author's blessing to make the unofficial update work, just for those curious

blissful saddle
#

I just doesn't have a macOS to reproduce and test it SDVpufferchickcry

latent mauve
#

I'm not a C# modder, so I can't help much, unfortunately. D:

blissful saddle
#

long story short, SMAPI can't load the dll on macOS, but opens normally in windows...

obsidian ibex
#

hello everyone, (i'm brazilian, so, my english is a failure)
There is a mod called Archery that apparently was abandoned by the owner, i wanted to see if anyone would have enough knowledge to update it for SV 1.6.14, pls :( my mod need this mod to work
(https://www.curseforge.com/stardewvalley/mods/archery)

CurseForge

A framework which allows mod authors to create custom range weapons, ammo and related recipes.
4.0K Downloads | Mods

calm nebula
#

So on that mac you're loading before them which ofc doesn't work

blissful saddle
#

ok, adding dependancy

#

just learned that adding dependancy can solve load order issues

#

you are awesome, Atra

fair kernel
#

Okay so im trying to make a npc who spawns later in the game, would this code work?

fair kernel
uncut viper
#

well, first, i didnt think about it immediately but the way you're trying to do it will also mean they are only ever unlocked on a single specific day

#

like, they will only exist on Fall 12, Year 2+

fair kernel
#

oh

#

how do i avoid that

tiny zealot
#

you can use DAYS_PLAYED, i expect

uncut viper
#

do you want them to appear on that day and exist every day after that?

#

days_played wont work with multiplayer well

fair kernel
#

i want it to exist every day after that

#

like kent

uncut viper
#

i mean, it can work if all players have playued the same number of days

woeful lintel
uncut viper
#

but thats not guaranteed

tiny zealot
fair kernel
uncut viper
#

you want "UnlockedConditions": "DATE_RANGE Fall 12 2"

uncut viper
tiny zealot
#

(that means it doesn't account for false gameplay and broken mods, so i don't consider that a defect)

fair kernel
blissful saddle
uncut viper
#

i would consider it a defect if it kept an NPC from spawning after i skipped x amount of days

tiny zealot
#

surprised about MP though. the wiki says it is days played in the save file. i guess each farmer stores their own value?

uncut viper
#

hm

uncut viper
#

i might be wrong, i thought i tested it at one point but it may have been something else admittedly

#

either way DATE_RANGE is still better here

tiny zealot
#

is that one on a migration page?

uncut viper
#

its a 1.6.9 thing so probably

calm nebula
#

The host yells the clients into submission

#

It's on networldstate lolz

uncut viper
#

i wonder what i was gettin it confused iwth then

calm nebula
#

I'll go run a fever somewhere else now

#

Common sense probably haha

uncut viper
#

you should try not running a fever instead (feel better soon!)

rigid musk
#

If I want to make a warp be friendship-level specific (not a door just like, walking into an area/tile) would it generally read like this 30 10 Mrqifriendable_QiHouse 23 9 TheMrQi 1000 with the property tag being "Warp"

latent mauve
#

I think only LockedDoorWarp can take those arguments

#

But it doesn't HAVE to be a door AFAIK

rigid musk
#

O:

#

Okay! thank you

tiny zealot
#

LockedDoorWarp is a type of Action so i believe it requires interaction and not just touching, but it can be any tile on the Buildings layer

latent mauve
#

Alternatively, you could make a conditional patch for the warp that checks the friendship values, if you wanted it on the back layer?

tiny zealot
#

it might also... play the door sound? i'm not sure what handles that

rigid musk
#

I don't mind if it plays a door sound or anything - the door isnt technically visible (i do not want to texture a new door... or new wall tiles) but it would be fine - i was asking specifically about the warp thing because of the door not being there but if it still works with the other property then im fine with that

#

not particular about layers or anything with it

brave fable
#

tentative fix for obnoxious recipes with long descriptions and too many ingredients

rigid musk
#

everything's inside.. (this is very impressive)

blissful saddle
#

looks nice

#

I bet putting a scroll bar to the text would require more mechanics than would be sanely doable right now

brave fable
#

this isn't a sane project

brittle pasture
#

the best thing about stardewui is that the scrollbars are already written by someone else

drowsy pewter
#

blueberry, the loc gmcm menu is so extra and I love it

brittle pasture
#

I've seen no less than 3 separate UI modders having their sanity taken away by scrollbars

drowsy pewter
#

(playing the game for the first time in months)

lucid iron
#

Just get infinitely big monitors

ivory plume
#

@proud wyvern FYI the release notes are missing for Pintail 2.6.1 (it's linked from the SMAPI 4.1.8 release notes).

blissful saddle
blissful saddle
#

but if you can make them infinite and spherical at the same time would be awesome...

teal bridge
#

By the way, if anyone is already using the quasi-public GitHub-only release of Pen Pals, I'm looking for a guinea pig valued partner to test the version that's been converted to the Framework. I think all the work is done, but it's really difficult to do thorough testing or e-patches over the next several days.

shut grove
#

for a custom tileset to have seasonal variants, do I just need to have a file named like "Spring_name" "Summer_samename"?

lucid iron
#

oh i wanted pen pals DokkanStare

hard fern
#

how do you make the fridge behave as a fridge? is it a tile property?

brittle pasture
hard fern
#

ah

#

i forgot it then

brittle pasture
#

a hardcoded property, I should clarify, not anything in tiled

hard fern
#

oh

#

๐Ÿ˜” hmm

#

so is it not possible to give something the fridge property?

shut grove
#

I honestly can't find info on doing seasonal tilesheets on the wiki.

brittle pasture
#

so looking at the code, if it's tile no 173 of a tilesheet named "untitled tile sheet" then it will be treated as a fridge

hard fern
#

Huh...

brave fable
#

(and it has to be in the farmhouse)

hard fern
#

fascinating

patent atlas
hard fern
#

does the same thing apply to the mini-fridge

patent atlas
#

using direct ui monogame drawing for the ENTIRE ui of the game

#

crazy

tender bloom
#

dev singular for a lot of the time

#

when it's just you and your own head...

patent atlas
#

yup

blissful saddle
tender bloom
#

I definitely get into some weird code noodles when it's just me

patent atlas
#

honestly if it was me I'd probably begin writing the UI methods and not get any game done

#

just

brittle pasture
patent atlas
#

boilerplate and utilities forever

blissful saddle
#

aww

patent atlas
#

forever and ever

uncut viper
#

(with the disclaimer of "im not a map making person)

brittle pasture
#

wait, wrong reply

brittle pasture
hard fern
#

๐Ÿค”

shut grove
blissful saddle
#

I was ready to reping it to Shrimply, but you are good to go

shut grove
#

right now I only have spring and summer ready to go

blissful saddle
#

I will need to work it around for my spoilage mod

uncut viper
#

though seasonal tilesheets only happen in Outdoor locations though iirc if that matters to you

shut grove
#

I think the part that's confusing me most is the lack of info on this specific aspect of making tilesheets on the wiki

brittle pasture
blissful saddle
#

I will need to make a fridge-like chest container

#

but right now I need to get ready to sleep

#

good night everyone

hard fern
#

guess who forgot to make their walls behave like wall

woeful lintel
#

k, I'm adding fridge to the FF todo list

hard fern
#

well, good news is that the mini fridge does indeed work

#

hooray for functional kitchen!

royal stump
hard fern
#

oh, so i can have just the regular farmhouse fridge in a non-farmhouse map?

royal stump
#

putting Action Kitchen on a fridge sprite or something works, yeah

#

I'm not sure if there's a clean way to add hidden storage for that via CP, though

latent mauve
#

...I will need to see if that is true in the Community Center tomorrow after some sleep

hard fern
#

hm, well i need to fix things on my map anyways SDVpufferdead i'll try adding a proper fridge

latent mauve
#

Because that fridge being valid would be another update to my mod that needs to happen LOL

royal stump
#

(between this and AllowBeds, I'm not sure if EMP does anything important anymore SDVpufferthink)

rigid musk
#

If I wanted to use the SDV tilesheets from the tilesheets folder and not the maps folder how would I go about doing that in a way that also allows for recolor compatibility?

uncut viper
#

doesnt that have the GSQ token

royal stump
rigid musk
#

ah... how agonizing

#

I shall figure something out then

hard fern
#

your best bet would be to just provide recolors of the specific parts you used (ex: craftables) to match other recolors out there

uncut viper
#

at least one mod uses the gsq token!

#

it also has the PlayerStat token

hard fern
#

๐Ÿค” still not sure if i like the regular farmhouse kitchen or the island kitchen more.. island kitchen is only 3 tiles long so it doesn't get cut off weird with retextures for the kitchen

#

hm

#

action kitchen just makes the fridge be a kitchen, not fridge

royal stump
#

oh, sorry, I misinterpreted earlier SDVpufferdizzy
that kitchen menu works everywhere in 1.6, but yeah, I think you still need to physically add a mini-fridge somewhere
(or with C#, a container with fridge set to true)

#

looks like the built-in fridge is still limited to farmhouses

latent mauve
#

Oh good, that means I don't have to release another update two days after my last one

hard fern
#

๐Ÿ˜” i dont wanna touch C# just yet

#

i can have the mini-fridge thing work though

languid aurora
#

For those familiar with using netfields, is one of these methods better than the other?
My main concern is the Name in the NetFields list not always being the one I observed and recreated as netCropNetFieldName.

const string netCropPropertyName = "netCrop";

// Via NetFields collection on HoeDirt
const string netCropNetFieldName = $"{nameof(TerrainFeature)} ({nameof(HoeDirt)}): {netCropPropertyName}";
NetRef<Crop> dirtNetCrop1 = dirt.NetFields.GetFields().FirstOrDefault(x => x.Name == netCropNetFieldName) as NetRef<Crop>;

// Via reflection on HoeDirt
FieldInfo dirtNetCropFieldInfo = typeof(HoeDirt).GetField(netCropPropertyName, BindingFlags.NonPublic | BindingFlags.Instance);
NetRef<Crop> dirtNetCrop2 = dirtNetCropFieldInfo.GetValue(dirt) as NetRef<Crop>;
#

This is to get access to a HoeDirt instances's netCrop field directly since it's private

tiny zealot
#

reflection is famously slow, so i assume the other is more performant. but it may not matter unless you're doing it a lot (say, every tick)

languid aurora
#

Namely so I can rig up to its fieldChangeVisibleEvent in case you're curious

#

Nope, should ideally happen once at the start of a day

#

Might happen occasionally when the player harvests things

tiny zealot
#

in that case i would do whichever one will give you less maintenance burden; or if that's not obvious, whichever one you like better ๐Ÿ˜„

languid aurora
#

Reassurance that the calculated Name for the field won't change would make me happy. I'd love to see a resource on how it's calculated so I can determine how likely it is to ever change

#

Not sure net fields are something that has any doc anywhere

#

Ok, I just looked through the NetFields class (in my SDV decompile) and it spells out how Name is built up, so I think I'll just stick with that over reflection

brave fable
#

technically compatible...

#

omg no it can't scroll the entire description

#

1 line isnt enough..

rancid musk
#

Building UIs at 720p is so rough

brittle pasture
#

gotta capture that future mobile market

rigid musk
#

When doing Dialogue prompts with tile properties - do the i18n tokens work the same? if I just put Dialogue {{i18n:Aos.qigoldkey.desc}} would that work or would I have to do something else

brave fable
#

if you add the tile properties with CP, yes

#

properties in Tiled aren't parsed by CP, so i18n and CP tokens alike won't be resolved

#

alternatively, you can load your translated dialogues into a strings asset, and reference the asset name and string key in your tile property

rigid musk
#

I see I see
I'd have to learn how to do... both of those things although I think I have some experience with strings so I will try that first thank you

#

as always the help is very appreciated

sinful trail
#

Is there a stardew valley mod with more in depth combat/extended mines?

brittle pasture
#

probably a better question for #modded-stardew , unless you're looking to make one

young saddle
#

hello, I'm trying to make a mod that replaces the default farmers undershirt, ect. with the textures from when the farmer is in the spa and I don't really know where to start. I have a lil experience with cp but that's about it. if anyone could point me in the right direction or know of a similar mod that already exists, it would be greatly appreciated

#

I would preferably want to use vanilla stuff because I'm using fashion sense with furry farmer and would like it to be compatible

#

im just not sure what triggers the change

proud wyvern
#

Iโ€™ll fix it in a bit

proud wyvern
#

and done

pine elbow
#

Hi! What should the number on "format" be in a contents file? I thought it was the game version but different contents files have different numbers for their mods. Can someone help?

hard fern
#

it's based on content patcher format

pine elbow
#

So whichever template im using is the number I should go with?

hard fern
#

what's on the template?

uncut viper
#

it should match the version number of the content patcher version you are using

hard fern
#

yep

#

the latest version of content patcher is... 2.4.4 (?) correct me if i'm wrong

uncut viper
#

older mods used older versions of content patcher naturally, so they have smaller version numbers

pine elbow
#

Well im doing a translation mod to Swedish and im using the contents file from another mod called stardew Finnish, which is a Finnish translation mod

#

Alright I see, so as long as I put the latest version in there im good then?

uncut viper
#

yep

pine elbow
#

Thanks!!:)

hard fern
#

older format versions will probably still work, but it's best to use the latest

#

but it depends on the mod

uncut viper
#

if nothing else it makes the monthly stats look nicer

pine elbow
uncut viper
#

lest we wonder why a years old content patcher version got another new mod again

hard fern
#

XD

deep cypress
#

Some disambiguation, if I may therein dabble and thusly request: Trigger Actions are like Smapi Events for Content Patcher (for the most part), right? I have not used them, but I was looking into one (I think about spawning maybe), and I saw that the triggers are like the SMAPI events.

brittle pasture
deep cypress
#

Thanks! That's where I was reading!

#

My mind has throughout struggled to fully grasp them, though I know not why.

#

"Also note that when making a map edit or adding a custom map, sizes bigger than 155 for height and 199 for width will break the layering."

#

Saw this in the wiki about maps, is this still a thing? (That being said, a map any larger than that seems likely to take too long to get across.)

royal stump
#

I don't think any attempt to fix those limits was made, and a lot of the vertical sprite-layering math still assumes the map is 10000 pixels or less (so ~156 vertical tiles)
I'm not familiar with the horizontal bug details myself, though

hard fern
#

I always forget just how small the farmer actually is...

rancid temple
#

Height should be fine now, I made a massive map to test the size limits

hard fern
#

I see a big map on tiled and don't think too much of it

rancid temple
#

But if you make a map that's wider than 199 tiles tree layering breaks

hard fern
#

But when i load it in, it's huge ๐Ÿ˜”

rancid temple
#

Specifically breaks at positions beyond the 199 X

#

So the stump renders above the rest of the tree

#

I didn't notice any issues making the map 5000 tiles tall lmao

royal stump
#

I'm still seeing a lot of layering that divides by 10k, so I'm not sure how that works out, but maybe the vertical bugs were more* complicated than that SDVpufferdizzy

rancid temple
#

I couldn't ever find any definitive explanations of what broke on tall maps

hard fern
#

Huh. Why do trees break?

royal stump
#

maybe the draw method just accepts/clamps/ignores layer depth over 1 now

rancid temple
#

Ultimately, making a map bigger than 200 tiles wide is also bad because walking that distance sucks

lucid mulch
royal stump
#

okay, here's what an >156y map supposedly looked like in 2019 when I first heard about it SDVkrobusgiggle

#

if it doesn't obviously wall things off like that, I imagine something was fixed

rancid temple
#

Oh wow, yeah that's terrible, definitely doesn't do that

deep cypress
#

Thanks loves!!!

rigid musk
#

"Aos.QiRoomString9": "An odd looking, unfamiliar stone. What's Mr.Qi doing with it?",
"QiRoomFarStoneDesc": "{{i18n.Aos.QiRoomString9}}",
Is there any reason why this would be considered a token that isn't found? (the first one is the name of the entry in the default file and the other one is the actual line in the String json)
the others are working and the'yre all formatted the same

hallow prism
#

stuff is usually i18n : not i18n. is the dot and lack of space intented?

rigid musk