#making-mods-general

1 messages · Page 471 of 1

uncut viper
#

it was just an aside and nothing that was specifically lookin for a response anyway, since i figured you were already mostly through the aforementioned folder bs

urban patrol
#

nah the stupid folder bullshit was me not wanting to include DBD or other mods so i moved them all out of Mods but then BETAS was missing its dll blah blah

uncut viper
#

yeah thats what i figured you meant

urban patrol
#

anyway assuming i ran debugging correctly, it still doesn't hit the breakpoint

brave fable
#

betas causing issues SDVpufferpensive

uncut viper
#

betas has never had a single bug report, ever

urban patrol
#

betas can do no wrong

brave fable
#

you'll know if you ran debugging correctly because the colour scheme will change, several new panels will open, and others will be replaced

urban patrol
#

yeah i see graphs n shit. fun

brave fable
#

you can ignore the graphs 😌 the important n shit is at the bottom

#

diagnostics is for memory geeks

#

just as a sanity check, if you breakpoint your Entry method does that pause?

urban patrol
#

let me check. although worth noting that it does log the "successfully registered" message in trace

brave fable
#

reopening the game as well, of course, since the breakpoint is only hit when that line is about to execute

urban patrol
#

it did hit that one!

brave fable
#

if nothing else we've learned a lot about breakpoints 🙂‍↕️

urban patrol
#

no for real

brave fable
#

perusing the local & watch & call stack panels is an exercise left to the reader

urban patrol
#

sooo much better than trying to write to console lol

lucid mulch
#

sometimes log based debugging is the only viable option

#

but when breakpoint is an option its great

urban patrol
#

yeah i had no idea anything else existed

brave fable
#

well in any case if your entry method breakpoint is hit but not the tile-action-method-open breakpoint, my only reasonable guess would be that you need to wait for GameLaunched before you can register tile actions

#

assuming your tile action itself is added to the map correctly, which it appears to be, even if we can't confirm the name is an exact match

lucid mulch
#

(or it optimized enough that "just my code" meant the breakpoint didn't trigger)

brave fable
#

which again we assume it is, but you know

#

ah, the memory geeks have arrived

urban patrol
lucid mulch
#

was the breakpoint icon bright red or hollow

gentle rose
urban patrol
#

red with an orangeish arrow in it after being hit

lucid mulch
#

and for the breakpoint on your tile action method?

urban patrol
#

plain red circle

#

never hit

brave fable
gentle rose
lucid mulch
#

when you started the mod, was it in Release or Debug?

urban patrol
#

debug

brave fable
#

in which case we're running out of guesses

urban patrol
#

ough screaming

#

that's fair though

gentle rose
#

are you willing to send/DM your map? I might see if I can try to replicate your issue

urban patrol
#

for sure! do you want me to send the whole mod? it's a festival

brave fable
#

for legal reasons i have to state i also have a festival with a bonfire you can burn shit on, just to avoid any conflict of interest here

#

but you're a step ahead in that you've actually drawn the fire SDVdemetriums

urban patrol
#

skdjfhsd do you really lmao

urban patrol
tight rivet
#
   at Shockah.SeasonAffixes.OvergrowthAffix.GetPossibleForage(GameLocation location, Random random) in C:\Users\mateu\Source\Repos\Stardew-Valley-Mods\SeasonAffixes\Affixes\Positive\OvergrowthAffix.cs:line 97
   at Shockah.SeasonAffixes.OvergrowthAffix.GetForageToSpawn(GameLocation location) in C:\Users\mateu\Source\Repos\Stardew-Valley-Mods\SeasonAffixes\Affixes\Positive\OvergrowthAffix.cs:line 78
   at Shockah.SeasonAffixes.OvergrowthAffix.Crop_harvest_Postfix(Int32 xTile, Int32 yTile, HoeDirt soil, Boolean& __result) in C:\Users\mateu\Source\Repos\Stardew-Valley-Mods\SeasonAffixes\Affixes\Positive\OvergrowthAffix.cs:line 60
   at StardewValley.Crop.harvest_PatchedBy<aedenthorn.CropVariation__aedenthorn.Wildflowers__bcmpinc.HarvestWithScythe__Cherry.MultiYieldCrops__selph.CustomTapperFramework__shekurika.MagicalCropsCode__Shockah.SeasonAffixes__spacechase0.SpaceCore__Spiderbuttons.BETAS>(Crop this, Int32 xTile, Int32 yTile, HoeDirt soil, JunimoHarvester junimoHarvester, Boolean isForcedScytheHarvest)
   at Wildflowers.ModEntry.TerrainFeature_performUseAction_Patch.Postfix(TerrainFeature __instance, Vector2 tileLocation, Boolean& __result)
   at StardewValley.TerrainFeatures.TerrainFeature.performUseAction_PatchedBy<aedenthorn.Wildflowers>(TerrainFeature this, Vector2 tileLocation)
   at ```
#

I feel the profusion of harmony patches has become a real problem.

#

(the missing bit because I ran out of discord text)

#
   at StardewValley.Game1.<>c__DisplayClass925_0.<tryToCheckAt>b__0()
   at StardewValley.Game1.tryToCheckAt(Vector2 grabTile, Farmer who)
   at StardewValley.Game1.pressActionButton_PatchedBy<mistyspring.ItemExtensions>(KeyboardState currentKBState, MouseState currentMouseState, GamePadState currentPadState)
   at StardewValley.Game1.<>c__DisplayClass978_0.<UpdateControlInput>b__0()
   at StardewValley.Game1.UpdateControlInput(GameTime time)
   at StardewValley.Game1._update(GameTime gameTime)
   at StardewValley.Game1.Update(GameTime gameTime)
   at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)```
uncut viper
tight rivet
#

just sometimes I htink harmony was a mistake

#

Anyway, I'm off to report the error.

brave fable
#

now as is traditional, pick one mod at random from that harmony method signature to send the bug report to 🙂‍↕️

uncut viper
#

i meam its just showing everyone thats touched that method. to me that looks like a whole bunch of mods being completely harmless and one throwing an error

brave fable
tight rivet
tight rivet
lucid mulch
gentle rose
urban patrol
#

i'm headed to bed, but if anyone backreads and has a brain blast, ping me

#

and thank you all for your help

lucid mulch
#

my theories are the tileaction isnt being applied at all, or it is on the wrong layer or for whatever reason the callback method being static is being an issue (but I feel like it would be a compiler error if this was a failure case)

gentle rose
#

I just checked the second (it isn’t, a different tile action on that layer works), and I had the same thoughts about the third

uncut viper
#

static isnt an issue

shut edge
hard fern
#

🤔 ok.. Uh so do i really want to make an item for every single fruit in the game

#

for context im making candy

gray bear
#

are you counting only tree fruit or also crops

hard fern
#

just Fruit

#

like

#

anything tagged fruit

#

the Fruit Category

gray bear
#

there are 26 of those in vanilla

#

27 if you count qi fruit

#

you don't need to obviously, but are you willing to do that much

uncut viper
#

not only should you make an item for each but you should make a custom museum for the collection too SDVdemetriums

hard fern
gray bear
#

button no!!!

uncut viper
#

yep

hard fern
#

i mean if i want to give npcs gift tastes i would have to make them custom items 🤔

#

for each one

gray bear
#

you can local token it

#

actually dunno if that'll be less work Shruge

#

also u mentioned cursed recipes in modded so i say tomato candy

hard fern
#

i have the colors of the rainbow and i'll just assign colors randomly i guess

#

wait no not randomly

#

obviously fruit is pink

#

wait i have no pink

gray bear
#

peach

hard fern
#

oh my god im making no sense

gray bear
#

colors of the rainbow thonk

#

if you want you can make it so there's like multiple options for one candy but you'd need spacecore

#

do u also have indigo

hard fern
#

yep

#

red orang yellow green blue indigo violet pink and white (coconut is real and dear to me)

gray bear
#

indigo is troublesome, there's no fruit for it really

hard fern
#

blackberry?

gray bear
#

close enough

#

are grapes okay for violet

hard fern
#

yeah what other color would they be

gray bear
#

is violet tech a specific shade of ourple or just ourple

hard fern
#

i mean it is technically a specific shade but for the purposes of

#

mod

#

it's just one of each color

gray bear
#

mm candy

hard fern
#

🤔 great. now the question of "do i make melon candy pink or green"

#

i know pink cake is pink but who says it's not just bc of the frosting

dusky sail
#

Randomize it each day

hard fern
#

evil idea

hallow prism
#

Make a twirl of color

vernal crest
#

Indigo and blue are both blue

uncut viper
#

indigo is a much darker blue though

dusky sail
#

Think about it backwards actually. If not melon, what fruit could be the green candy

vernal crest
#

Yeah but Forsy said one of each colour

uncut viper
#

oh i didnt realize thats what you were responding to

dusky sail
#

Yeah so if theres no other green then melon has to be green

vernal crest
#

But I am merely being pedantic, I actually do not want indigo to be disqualified because it's a very nice family of hues

uncut viper
#

also itd ruin the ROY G. BIV if you removed it

dusky sail
#

Wait i confused myself. Ignore that last message

vernal crest
#

Most of my favourite blues are indigo

dusky sail
#

There's no sour apple in (vanilla) stardew :(

vernal crest
#

I think melon candy makes sense as pink because Stardew melons are pink on the outside (what type of melon is that?) and watermelon is pink on the inside

hard fern
vernal crest
#

I still think I would be more surprised at green candy being melon than pink

hard fern
#

the bigger problem is what color is an apricot SDVdemetriums orange? Yellow?

dusky sail
#

Its apricot

#

Also why not just look at the vanilla color context tags

vernal crest
#

Usually orange by the time they're ripe (not my preferred way to eat them) imo

hard fern
#

hm. orang

#

this feels too bright for apricot though

vernal crest
#

Doesn't to me

#

Apricot jam is more vibrant than the fruit

dusky sail
#

I mean its candy its gonna be brighter than the fruit

hard fern
#

hmm. pomegranate can be pink ig

#

i have no dark pink

dusky sail
#

Invent a dark pink. For him (elliott)

gentle rose
#

@urban patrol I have good news and bad news

the good news: the issue doesn't seem to be with your code
the bad news: there seems to be a bug(?) that prevents custom tile actions from working in temporary maps right now. if you load your map as a regular map, it works just fine

#

(well, there's an error, but it does run your code)

gentle rose
#

possibly not a bug, since special festival behaviour seems to be intentional

#

yup, festival tile actions are hardcoded and don't accept custom tile actions

brave fable
#

oh. you're in a festival map

#

i should've noticed that sooner hahah

hard fern
#

"th

#

ok

brave fable
#

tile actions and warps are generally ignored for temporary event locations, i ran into that with halloween 2024

gentle rose
hard fern
#

🤔 i think i answered my own question already but I want to make a recipe book that lets the player learn recipes by reading it. but i want to exclude two recipes that are obtained via other means. what ive come up with is to just prefix the recipes I do want to be available via the book with something specific and just use the prefix that wau

drowsy pewter
#

guys

#

cactus fruit is green

hard fern
#

i would at least assume stardew cactus fruit is the same as real ones

drowsy pewter
#

not green ones

hard fern
#

oh yeah the green ones are like. white or yellow-green

#

hooray, i have a green something now

drowsy pewter
#

im of the personal opinion that melon being green inside is not canon, but its a cute idea if you do want to do it

brave fable
#

whether or not green-inside melons are in the game, they're in the game assets, ca drew them, and that's good enough for me 😌

hard fern
#

eh i'll make it a config why not XD

#

...how the hell did i typo this

drowsy pewter
#

mod that changes the unused green melon asset to pink

indigo yoke
#

does the "equipment" tag actually affect anything? (vanilla or mod wise) I kind of want to give some stuff the equipment tag for better crafting sorting but at the same time don't since I want to avoid breaking stuff by giving non-equipment the equipment tag.

brave fable
#

it doesn't appear to, though the equipment category (-29) would omit it from the shipping collection

indigo yoke
#

I am okay with it not being shippable. Most of the spell scrolls (which I want to show up in the combat tab for better crafting) are money negative for crafting.

#

ty for the info

toxic valley
#

Quick question so I’m recoloring a mod and when I went to save the edited png it got reduced by a kb is that normal?

tiny zealot
#

png is a (lossless) compressed format, so yes it's normal for the file size to fluctuate when making edits

obtuse wigeon
#

I was just searching to see if a png was compressed or not, beat me to it

tiny zealot
#

there are also different levels of color depth that png supports, so your program might also detect that a smaller one is suitable and save you a lot of space (but for stardew you should keep your images as 8-bit rgba to avoid weird problems)

toxic valley
tiny zealot
#

if your images are looking okay when they get into the game, you don't need to worry about it 😅

hard fern
#

if only we could make portraits as jpegs...

obtuse wigeon
#

plz no jpegs I beg

tiny zealot
#

jpeg
no

#

(in the interest of clarity and fairness, i have no objection to the jpeg format overall, but for pixel art it is Not Good)

obtuse wigeon
#

(I have every objection to jpeg, in the interest of obscurity and unfairness)

calm nebula
#

Please

#

Tiff or dearh

#

I say "or death" because I suspect ichor WILL kill me

#

Oh no what about

#

Heif

hard fern
#

what about webP

obtuse wigeon
#

I had no idea about tiff, tiff seems great!

tiny zealot
#

please hold

blissful panther
#

No TARGA love?

obtuse wigeon
# hard fern what about webP

even worse than jpeg, was supposed to be the new web image format, but failed, miserably, and its unsupported by almost everything I use, webp isn't even worth a mention from myself XD

tiny zealot
tiny zealot
obtuse wigeon
#

Oh webp does work in browsers well, it's just the off browser support is lacking tremendously

tiny zealot
#

nexus having cranked the compression up to insane levels does cause the toothpaste problem, but that's not webp's fault

hard fern
#

Toothpaste problem..?

obtuse wigeon
#

It's where images look like they have been smothered in a layer of toothpaste

hard fern
#

Ah

#

Of course

obtuse wigeon
#

looking all blury and and not very pleasant XD

#

very apt name for it for sure

tiny zealot
#

much less noticeable for e.g. skyrim (nexus's main audience), but makes pixel art look super bad, like using a jpeg

calm nebula
#

I wonder how much space they use on the images

#

And how much they use in the mods

obtuse wigeon
#

We have a rough estimate of the amount for stardew thanks to the mod dumps, but for Skyrim where some mods can take up like 5gb easily, it must be a massive amount

tiny zealot
#

i haven't taken anything resembling a wide sample, but from my limited observation, nexus's webp encoding has saved 30% file size on even small stardew pngs (which i would expect png to perform well on), so at scale i imagine it has saved them considerable bandwidth

lucid iron
#

Just gotta counter em by making my images 3 times bigger

calm nebula
#

4k

hard fern
brittle ledge
#

Atra why are you a tax bill

#

Are you specifically taunting me

hard fern
#

do you have to file taxes

gentle rose
#

they were an inaccurate tax bill for halloween and then despookified

brittle pasture
brittle ledge
#

I mean, most people have to file taxes SBVLmaoDog but I work in tax

obtuse wigeon
#

hmmm taxes yummy

brittle pasture
#

ingredient count ingredient count

brittle ledge
brittle pasture
#

right now it's ingredient ingredient count

gentle rose
hard fern
#

the other cooking recipes work

#

just not the ones i have in local tokens

brittle pasture
#

ah yeah I misread it, oops

#

how did you verify it's (not) working

hard fern
#

it wont show up in the cooking menu at all

#

the two that show up are the not local tokened ones

#

smapi isnt throwing any errors either

#

and i read my cookbook

brittle pasture
#

and what's the code for that

#

your tokened recipes start with "Abby_" which may be related

hard fern
#

ah.. hm

#

yeah i did wonder about that

#

for that matter none of my tokened items are showing up

#

my object jsons

calm nebula
#

Patch export the data file

#

Also

#

!patchsummary

ocean sailBOT
#

Can you do these steps to provide more info?

  1. Load your save and view the content that should be patched.
  2. Type patch summary directly into the SMAPI window and press enter.
  3. Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
  4. Post the log link here.
calm nebula
hard fern
#

uh ok wait i figured something out. an oopsie of sorts if you will

#

ahahahaa

#

i fixed it

#

(i made a typo)

indigo yoke
#

is it possible (with example please! the wiki is kind of bare T_T) to make a machine give a random output of a thing based on a tag?
I might just give in and go with making a custom output rule T_T

hard fern
#

and the mod silently died on me

brittle pasture
#

read through the page for a full understanding of the universe

hard fern
#

yahoo

#

shane also gave it a taste.

indigo yoke
#

also asked for examples since examples help me learn a lot better than any page with text

subtle condor
#

Does anyone know where I can change the perfection tracker's maximum walnuts of 130 to like 140 or something? I extended ginger Island a little bit and I am able to place new golden walnuts via the paths tilesheet, but it seems like any golden walnuts going over the 130 aren't really counted normally (and therefore also not exchangable at the Qi shop with Qi gems). I just cannot find where to change the perfection tracker's stats (if this is even the thing that causes that issue)

lucid iron
#

Do you need something more specific

indigo yoke
lucid iron
#

Then u want ALL_ITEMS peritemcondition

tiny zealot
lucid iron
#

This is just in the output too

subtle condor
gentle rose
#

question to the other nerds, if you’re randomising an animation length do you go for uniform distribution or normal

obtuse wigeon
#

Is normal the bell curve like way?

gentle rose
#

yup

tiny zealot
#

in my two mods that allow random delays (only one of which made it to 1.0), the user gives an array and i choose uniformly between the values

#

if they need weights they can specify a single value multiple times

gentle rose
#

if anyone says something like poisson you’re getting blocked /j

obtuse wigeon
#

I usually do uniform because it's easier to code however if I had a nice method of normal set out, I would use that more often I think

gentle rose
#

there are ways to convert between distributions

obtuse wigeon
#

good to know! I shall have to check them out

urban patrol
undone narwhal
#

So, in Tiled I have apparently 20+ copies of the same tilesheet open in the bottom right hand corner. If I try to close any of them it gives me a warning about deleting assets on the map. Any tips/help?

#

Everything still works, it's just slow to navigate through tilesheets.

tiny zealot
#

were you copy-pasting from other maps?

hard fern
tiny zealot
#

(i've never been in this situation, but i can imagine that a copy-paste like that would automatically add a new tilesheet for the referenced tiles)

hard fern
#

(it does. i had the misfortune of doing it)

oblique meadow
#

There are a couple ways to consolidate the tile sheets. Most of which are a pain and may be time consuming

undone narwhal
#

I did not copy from other maps, but I've copied a lot from this map onto itself.

hard fern
#

hm

oblique meadow
undone narwhal
#

... I am using Iro's plugin 🙂

oblique meadow
#

oh. Whelp

#

weird

hard fern
#

sigh time to wait like 10-15 mins for nexus to upload my file

urban patrol
#

check if your tile sheets are embedded

undone narwhal
#

Could you give me a hint as to what that means? Or a place to start?

urban patrol
#

thanks forsy

hard fern
#

embed tileset (the one next to the new tileset)

#

it embeds them to the map so.. uh. idk it does things.

#

i dont actually know the details

#

(but you should do it)

undone narwhal
#

hm, I think they probably are because it won't let me click that option (the other ones are clickable)

hard fern
#

...then i uh.uh

#

maybe have bad news

#

(you might have to remove the tilesets and just redraw the parts)

undone narwhal
#

Or I can just suffer through having too many tilesets, because I'm nearly done.

#

Which is probably what I'll do.

urban patrol
#

i think there’s supposed to be a way to export as a tsx and then re-embed

#

no copies of tilesheets will cause errors

oblique meadow
#

It’s a pain though. Better to just live with it unless it’s problematic

undone narwhal
#

If I edit another map, or make another, I'll look for this problem early.

urban patrol
#

excellent i know zero ways but i’ve seen it talked about before

undone narwhal
#

Seems to work fine in game without errors.

oblique meadow
#

Yeah. Then you should be fine.

#

Especially since it’s just a personal edit

undone narwhal
#

Yeah, I just tested and it seems like whenever I'm cutting-pasting within the same map it's creating a new tileset.

#

Bizarre. I'll live with it for this, but would be intolerable if I decide to actually make a map for release. I'll have to come back to it then.

gentle rose
undone narwhal
#

I'm not sure. I definitely have your plugin, and am using it's features. (Thanks for it, btw!)

#

I do have to select Fix Stardew Tilesheets each time I load the map, but I think that's normal

#

Ok. Well, the map is 8x larger in filesize than the original. I opened it up in notepad and it's completely duplicating all the tiles from one tilesheet into the other. So the same tile seems to be replicated many, many times.

gentle rose
#

hmm, can you either send or dm me the map? I’ll make sure it isn’t my extension’s doing

oblique meadow
#

Even if it isn't...can we still blame you?

gentle rose
#

no 😇

oblique meadow
#

dang

undone narwhal
#

(I did send iro the file: thanks for that)

#

Though, yeah, I still can't use copy-paste within the same map or it duplicates. So weird!

#

How can you select a tile on a layer, and then get pointed to the location of that tile in the tilesheet? I assume there's an easy way to do it, and if I can't copy-paste, I'll have to do that for now.

torn beacon
#

right mouse click over the tile

tiny zealot
#

if you're using the stamp tool, it's like right-click or something to pick the tile

#

which selects it in the tilesheet as well

undone narwhal
#

Great, thank you.

undone narwhal
#

Ok, so DO NOT use that deduplicator. It doesn't preserve TileData objects.

#

(I made a backup, obviously, so I'm fine)

patent lanceBOT
#

@hallow prism: play with that, uber pls (18h ago)

brittle ledge
tender bloom
#

it's still october in my heart

rigid musk
#

is it possible to have quality items sold in shops?

tender bloom
calm nebula
#

I was WhatDidYouForget last year

#

And LayoffsAtIntel

undone narwhal
#

@gentle rose If it helps when you look at it, I narrowed down what precisely causes the duplication of the entire sheet. It's when I use rectangular select to select more than one tile at the same time, use Ctrl-C to copy that, and then paste it somewhere else in the map. When I paste it, it create a duplicate of what seems to be the ENTIRE sheet and all tile commands related to it.

inner harbor
#

@royal stump why is my smapi log (https://smapi.io/log/57dd097b9a1348da8d1c706c17d47b42) showing like this: [07:32:42 TRACE Farm Type Manager (FTM)] Checking forage settings for this area: "ESOrchard Beach_Nova" (EastScarp_Orchard) [07:32:42 TRACE Farm Type Manager (FTM)] Checking extra conditions for this area... [07:32:42 TRACE Farm Type Manager (FTM)] CP conditions found. Checking... [07:32:42 TRACE Farm Type Manager (FTM)] At least one CP condition does not currently match: "conditions don't match: HasMod". Spawn disabled. (Correctly)
When someone else's is this: https://smapi.io/log/57dd097b9a1348da8d1c706c17d47b42 (incorrectly) with the HasMod conditions.
Interestingly, their Farm Type Manager is up to date and mine is 1 update behind. So new verbose logging?

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26200.0, with 77 C# mods and 80 content packs.

undone narwhal
#

Ok, but then if I UNDO, and paste it again, it does not duplicate the tile sheet. Truly this is deep arcana.

urban patrol
undone narwhal
#

That's what I'll do from now on, certainly.

ornate locust
#

I've had it duplicate tilesheets when I pasted from other maps, but not the same one

#

I swear sometimes Tiled comes up with new oddities just for fun

patent lanceBOT
#

@hallow prism: look at association xp/theme. Synced random? (20h ago)

uncut viper
sturdy quail
#

Thank yall so much!! I used Sublime and now everything is working as it should SDVpufferheart

royal stump
inner harbor
#

Lol i probably forgot to cut and just pasted

#

Thanks for answering!

uncut viper
fervent horizon
#

WebP is great. I convert all of my digital comics to use it over png and it drops them to about 10 to 20% the size

ornate locust
#

half of my beef with webp is when images online show a different extension at the end but it's actually a webp

#

quit lying!

#

I lie, it's all my beef, I have a program that can support it now :V

fervent horizon
#

The worst is heic

ornate locust
#

but when I didn't, it was always like SURPRISE

obtuse wigeon
#

This is my main specfic qualm aswell, especially given browsers are fully (and easily) capable of converting webp to png when you want to download it but being forced to use an extention or external site/program, my second even more specific qualm is the lack of support for anything over 8 bit colour depth, I hate banding, I use 10 -16 bit depth so very often to avoid this annoyance, other than that it's a great idea, just wuite poor execution BOTH on browsers and external software's part

#

(I did just learn aseprite supports webp so my qualms are like very much nullifed quite a decent amount)

uncut viper
#

use avif then SDVpufferthumbsup /lh
(The saving thing is annoying but also not a problem inherent to webp itself)

obtuse wigeon
#

it's certainly not webp's fault at all, just the implimention of external factors miss classified by me as webp's fault

uncut viper
#

you were the one misclassifying it!!

obtuse wigeon
#

I miss typed! I put 2 "as" instead of "me as" sorry ! XD

uncut viper
#

(i don't wanna delve further off topic though I just couldn't stand file type slander. go back to making mods or whatever it is people do here)

fervent horizon
#

anyone know of any other frameworks that have schema created already?

#

I found furniture frameworks schema, plus the CP and Smapi Manifest. Just curious if any others exist before I start jumping in to make more.

quick sand
fervent horizon
#

I mean they all have rules and what is allowed in what spots, but not all of them have schema.json files

quick sand
#

oh i see

lucid iron
fervent horizon
#

right

lucid iron
#

Normally newtonsoft json has export for that

#

But it gets complicated if you have a framework where the main mode to do stuff is by content patcher

#

That's why i didn't bother making any schemas tbh blobcatgooglyblep

#

Usually it's better to implement more checks about illegal data given to my mod at runtime

fervent horizon
#

yeah, that is why I am making the extension, so that I can have the extension handle any logic needed to determine which schema to use

lucid iron
#

No i mean inside the mod itself

#

As for usage in vscode i just put a $schema field one time at the top n not worry about it

#

It is content patcher 99% of the time kyuuchan_run

tight rivet
#

Hm.. One of my mods is spawning forage every time I harvest a crop. 🤔

#

it does this by destroying garden beds too, so it's a harmony patch

fervent horizon
lucid iron
fervent horizon
#

main use for me is just not having to jump back and forth to the docs to make sure my formatting is correct

lucid iron
#

It doesn't have to be harmony i feel

tight rivet
#

I am more poking fun at how a debug trace had like one function patched by five mods. 😄

uncut viper
obtuse wigeon
#

I think (iirc) the aim was to use schema that the mod authors have made themselves?

#

putting the effort (and blame when it breaks) on the author, which is a decent idea if the mod author makes a schema

uncut viper
obtuse wigeon
#

Ohh I missed that message good point

fervent horizon
#

I plan on keeping it updated for any that require a fully written one. I am am also going to share with the authors so if they want to host the schema and keep it updated as they make changes

gentle rose
undone narwhal
#

Sorry 🙁 I know what a pain squashing bugs can be.

lucid iron
#

Atm it only really checks for stuff above Fields/Entries and you are on your own after that

#

Tokens do make this extremely complicated though

fervent horizon
#

do you mean like auto completes for item names and such

uncut viper
#

does it? cant you make the schema only apply rules if one of the fields is set to a certain value?

#

no i think chu means like if you write "Data/Buildings" then the schema knows what fields are in Buildingdata

fervent horizon
#

yeah, you can do that

uncut viper
#

tokens shouldnt complicate that bc most things would just be strings anyway

lucid iron
#

Well i mean if ur field key is a token

fervent horizon
#

It is also a public github, and anyone is fully welcome to submit changes or improvements

narrow owl
#

i hate it so fucking much

lucid iron
#

Then it's no longer a thing u can statically determine right

uncut viper
#

just let the field key be an arbitrary string

#

itd be the stuff inside the object of that field that matters anyway

fervent horizon
#

yeah, most CP fields are strings, so the best you get is the little hover description of what the field is looking for

#

which I personally find very helpful

#

I would also like to figure out a way to offer a list of item ids with names when a field needs one, but that is for later me to worry about

lucid iron
#

Mods could be adding items tho, not sure what u can do about that

#

You could consider recommending the qualified item id form tho

#

(O)modid_thing

fervent horizon
#

yeah, it would mainly be for vanilla items

lucid mulch
#

though there are other .net libraries that have no such restriction, as OpenAPI specs are json schema

#

though purely in json schema I don't know how viable typing the entries/field would be when TargetField starts going deeper

gentle rose
#

one of the struggles with the current content patcher schema is that I had to PR it to remove some of the asset specific validation it did have because as soon as you added tokens to the mix you couldn't be sure of anything any more

lucid mulch
#

my debugger mod has the chance to do more, but vscode is somewhat protective of the schema registration process

fervent horizon
#

Should we make a thread for this discussion

lucid mulch
#

and can only have static declarative schema registrations, when I would be wanting to mint a json schema on the fly for every individual json file based on what its touching

gentle rose
autumn tide
#

hellooo back with more questions, is there a way to set a GMCM thing where the value one enters is saved as a token? with a default for that value ofc

obtuse wigeon
#

if you're using Content Patcher, config tokens may satisfy your needs

#

It's just the regular config but it can be used as tokens too

autumn tide
#

hmm okay, thanks :)

worldly wadi
#

Heyyy I've been trying to mod a custom npc and I've been dealing with some issues. She appears on the map, I can gift her things, but won't move and won't show her dialogue. I'm not comfortable sending my mod's file, but I can screenshot if needed. I checked, like, millions of times to see if the pronunciations are correct and they are, I followed the wiki's tutorial and tried my best to do it identical but yeah can someone help me?SDVpufferwaaah Is this normal? SDVpufferwaaah Has anyone faced that before? SDVpufferwaaah I already included the dialogue and schedules files on the content file

calm nebula
#

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

lucid iron
#

what does 'pronunciations' mean

vernal crest
autumn tide
vernal crest
#

Ok let me show you a little example

vernal crest
# autumn tide uh, I'm still a little bit confused, my goal is basically to have the player be ...
"ConfigSchema": {
  "CT_Nickname": {
    "Default": "shmoopie" // player will be able to type whatever they want in but if they don't put anything in the default will be shmoopie
  },
}
"Changes": [
  {
    "LogName": "Dialogue edit",
    "Action": "EditData",
    "Target": "Characters/Dialogue/Krobus",
    "Entries": {
      "Mon": "{{i18n: dialogue.krobus.mon |nickname={{CT_Nickname}} }}"
    }
]

// i18n
{
  "dialogue.krobus.mon": "Hello {{nickname}}! You're lookin' mighty fine today!"
}
autumn tide
#

'shmoopie' will now be my test NPC's name

vernal crest
#

My favourite part of writing examples is finding silly things to put in them xD

autumn tide
#

i am planning on adding some joke/easter egg stuffs anyways so that line is def making it into that category LOL

wise needle
#

I was thinking about something, growing fruit trees in winter all use the same sprites, to be able to make unique winter sprites for growing fruit trees, you would need a C# mod wouldn't you?

tiny zealot
#

afaik fruit trees use a data asset so i presume you can point them to a new texture/index

royal stump
#

editing their sprite with a basic "when" check for winter in CP should also work, if I understand the idea

tiny zealot
#

that would edit all of them at the same time, though, yes?

royal stump
#

not any more than the editing the texture field would, afaik?

#

whether it's switching texture or editing it, they should be able to get the same effect

tiny zealot
#

oh i see what you mean. i thought you meant editing the shared sprite with EditImage

royal stump
#

I do, but I'm not sure what the distinction would be SDVpufferdizzy

tiny zealot
#

i believe they want the different trees to have different winter sprites, instead of sharing one

royal stump
#

each fruit tree uses a separate row of that, afaict? but if the goal was to have them only look different from each other in winter, then the data edit would be necessary, yeah

#

...unless they share a sprite in winter because hardcoded stuff? I'm not familiar SDVpuffersquint

hard fern
#

all the winter ones are on their own row

calm nebula
#

No, each tree has its own winter

hard fern
#

oh really?

royal stump
hard fern
#

wait

#

how the fuck did i forget

royal stump
#

idk if they use them since I don't actually play, but they do exist now(?)

calm nebula
#

Btw you should wrap up that banana

royal stump
#

and cover them in hay ig, haven't seen the practice before

calm nebula
#

A banana tree is a

#

Um

#

How do I put it

#

Overrated grass

hard fern
#

mmm grass

lucid iron
#

i think the only note is that when in a greenhouse the summer one is always used

#

should otherwise work as expect

wise needle
#

I only mean the growing ones, not the fully grown trees, since they all seem to use the sprites above the banana tree row

#

Since it bugs me when I'm trying to make a evergreen fruit tree, or just unique ones for each tree

#

Even though it is only used for one season until it's fully grown, so it's only a little annoyance

shut edge
#

i don't suppose anyone here happens to be proficient at Japanese? looking to do a quick check at something that might be a pun

calm nebula
#

Leroy iirc

tiny zealot
#

i know only enough to be dangerous

shut edge
#

lol right

wise needle
#

I only know kindy level jp

lucid iron
#

if its important maybe go ask some jp translators on nexus?

shut edge
#

it's not important really no

hard fern
shut edge
#

was just looking at the japanese name for this dinosaur

#

カニメザウルス Kanimezaurusu

#

which appears to be some kind of crab reference

lucid iron
#

wow i love him

tiny zealot
#

kani is crab so that checks out so far

shut edge
#

i'm gonna add him to my dino mod at some point here

lucid iron
#

蟹+目+ザウルス(ラテン語でトカゲを意味する「Saurus」のなまり)

hard fern
#

🤔 maybe something like "crab eyed-

lucid iron
#

at least one jp person is on ur side

hard fern
#

ok

lucid iron
#

but wouldnt u just use the official eng name

shut edge
#

this guy too maybe

#

i would just use the english name, i was just trying to understand like uh the design principles i guess?

hard fern
#

hungrysaurus

shut edge
#

like is the dark ridge just like a blunt horn or is it meant to actually be a big wet nose

hard fern
#

looks more like a horn

shut edge
#

i suppose that's probably a localization invention then

#

maybe they're trying to say it's like a big dumb dog or somethin

#

chomposaur seems a bit more direct, cool

indigo yoke
#

so my machine is acting a bit weird compared to vanilla machines. is that just because there is a lot of things for it to sort through so it takes time to accept the input?
it takes like 3 to 20 clicks for it to take the clay.
First is a video of the the issue compared to a vanilla machine, second is the code

shut edge
#

well then i'll just call it wetnosaur and give it a crab themed color palette option

#

thanks

lucid iron
#

that seems odd, is ur game that laggy

#

anything in the logs?

indigo yoke
#

(give me a moment, going to post a log)

autumn tide
#

hellooo is there a GSQ for having a dyamic token set to a specific value?

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 16 C# mods and 7 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

lucid iron
uncut viper
lucid iron
#

use mailflag

autumn tide
#

ohh okay, thanks :)

#

or would a 'when' thing work?

indigo yoke
#

like other machines from the mod I am able to insert instantly / first click. Just this new machine is taking 4-10

lucid iron
#

that is why i mentioned ALL_ITEMS with PerItemCondition

#

the cond is ITEM_CATEGORY Target <whatever category number arch is>

indigo yoke
lucid iron
#

sure then use ITEM_TYPE (this is a game state query)

#

and u can use ALL_ITEMS (O) cus it'll only be an object

lucid iron
#

otherwise we doing a x y problem

autumn tide
#

gotcha

indigo yoke
# lucid iron you have to be more specific about what you want to do

thank you for the help but i sitll don't understand. I'm a type of person who learns best with actual examples. give me a book on how to take apart an engine and I won't learn much. give me an engine to take apart and put back together along with the book and I can learn it.

I'm just going to make a custom output method. Since I can also limit the artifacts by area they are meant to drop from.

autumn tide
# lucid iron you have to be more specific about what you want to do

I'm trying to have an item be randomly a universally loved or hated gift, and to have unique gift dialog that also depended on whether that item was hated or loved. my current set up is a dynamic token that's either love or hate so i can do the taste entry for the item like this:Universal_{{fishe_taste}}

#

I wanted to use the same token to determine which gift dialog will show

#

..this is all for a joke item btw- going a little overboard

lucid iron
#

yea just use the token in a when

autumn tide
#

awesomee

lucid iron
#

and edit the item dialogue according to the value

lucid iron
#

give me like 5-10min ill make exactly what i described

autumn tide
lucid iron
#

u can just do "fishe_taste": "love" in the When block

#

if its a truthy check

autumn tide
royal stump
lucid iron
calm nebula
#

Hey chue

#

Do you know what would be nice?

lucid iron
#

the reason why i care about this is cus machine control panel gets much better results when it is just a normal item query

calm nebula
#

Fallback in Item Query

lucid iron
#

i think that's up to each individual item query to implement ygghappy

calm nebula
#

RandomArtifact | DifferentQuery

lucid iron
#

and in machines, u can do that by having a second output item for when the first one doesn't work out

autumn tide
#

helloo is there a way for one to make fake NPCs, similar to birdie with their own schedules but not really social?

indigo yoke
brittle pasture
#

they're just regular NPCs butr with CanSocialize to false (I think that's the right name)

lucid iron
#

it's part of the standard item spawn fields

lucid iron
#

personally i also don't look at wiki much when i gotta write cp stuff

#

usually start by copying a block from the unpacked content

brittle pasture
#

it is listed, just might be confusing for beginners

indigo yoke
brittle pasture
#

once you get a handle of how item queries work and how prevalent they are in the codebase your power will only grow

#

you don't want to be the nth C# mod that implodes because they didn't know how item queries work and how content modders can abuse them

lucid iron
#

if you want to extend this in C# somehow there's a few ways

  • add custom GSQ to use in the per item condition
  • add custom item query that just gives back list of all possible outputs (machines always pick random one)
#

custom output method is ok if you really need access to the exact input item instance

#

which i have needed b4 so yknow it is a tool Dokkan

royal stump
#

using spawn fields in FTM 2.0 stuff and just hoping it all works

lucid iron
#

if u didnt use at least genericitemspawnwithcondition then the world will end

royal stump
#

also that it performs well, idk how much logic goes into all_item or w/e

#

i subclassed that to add other stuff, but I did get the condition part SDVkrobusgiggle

lucid iron
#

the world is safe for now

#

i have like, used it, then forgor to actually do the condition check lol

indigo yoke
#

add custom item query that just gives back list of all possible outputs (machines always pick random one)

is custom item query similar to GSQ? I used spacecore as an example on how to add some to the mana bar api. I could add a custom item query to get the item I want based on item tags then.

lucid iron
#

since item query resolver doesn't auto do it monS

#

well if item tags r just context tags then that is a vanilla gsq (ITEM_CONTEXT_TAG)

calm nebula
lucid iron
#

u can add that to the PerItemCondition in my example

lucid iron
#

and just get one when cond actually match

royal stump
#

https://github.com/Esca-MMC/FarmTypeManager/blob/wip-2.0-code/FarmTypeManager/V2 Code/CustomActions/Handlers/Settings/Components/FTMSpawnItemData.cs
stapled randomization weights & some misc spawn settings on here, then used it in Item/ItemList like this

"ExampleEntry_SpawnObject": {
    "ActionType": "SpawnObject",
    "Condition": "PLAYER_HAS_MAIL Current TEST_FLAG Received",
    "Weight": 1,
    "Settings": {
        "Location": "Farm",
        "TileCondition": "AREA_CIRCLE 30 30 20, ANY \"!AREA_CIRCLE 30 30 17\" \"AREA_CIRCLE 30 30 14\", ANY \"!AREA_DIAMOND 30 30 11\" \"AREA_DIAMOND 30 30 8\", ANY \"!AREA_DIAMOND 30 30 5\" \"AREA_CIRCLE 30 30 2\"",
        "ItemList": [
            {
                "RandomItemId": [
                    "(O)93",
                    "(BC)143",
                    "(BC)37"
                ]
            }
        ],
        "MinTimes": 10000,
        "MaxTimes": 10000
    }
},```
#

I keep forgetting I have that set to make a weird eyeball shape in the tile conditions

lucid iron
#

esca can i give u OOXXXOO form spawn map

calm nebula
#

(Yes.)

royal stump
lucid iron
#

oh i mean wouldnt AREA_COLLISION_MAP OOOXXX/XXXOOO be ok

#

its the same kinda syntax buildings use

#

tho i forgor if / is valid or if u had to use \n

royal stump
#

SDVpufferthink I guess that might work as like a wrapper query

calm nebula
#

Let me just xo my way to the entire farm map

royal stump
#

or ig it could be like COLLISION_MAP startingX startingY XXX/XOX/XXX

indigo yoke
#
[20:58:22 ERROR game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
   at ArchaeologySkill.Core.PerformOrePanTenMinuteUpdate_Patch.TryToSpawnMorePanPoints(GameLocation __instance, Boolean __result, Random& r) in D:\Users\Beatrix\Source\Repos\StardewValley\ArchaeologySkill\Core\HarmonyPatches.cs:line 375
   at StardewValley.GameLocation.performOrePanTenMinuteUpdate_PatchedBy<moonslime.ArchaeologySkill>(GameLocation this, Random r)
   at StardewValley.GameLocation.performTenMinuteUpdate(Int32 timeOfDay)
   at StardewValley.Farm.performTenMinuteUpdate(Int32 timeOfDay)
   at StardewValley.Game1.<>c.<performTenMinuteClockUpdate>b__738_0()
   at StardewValley.Game1.UpdateGameClock(GameTime time)
   at StardewValley.Game1._update(GameTime gameTime)
   at StardewValley.Game1.Update(GameTime gameTime)
   at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)

I didnt touch my panning code at all, I just been messing with Content patcher data. WHY IS IT BREAKING SUDDENLY

SDVpuffercry

calm nebula
#

(Cough)

#

(nullable)

indigo yoke
#

I know why it's breaking, the confusing part is why it's breaking now all of a sudden

patent lanceBOT
calm nebula
#

The | is unused

lucid iron
#

nou

#

but also this seems much better as a vanilla feature

calm nebula
#

You know I'm kidding right

indigo yoke
#

figured it out, when I started making a new output method, I copied my existing output method and changed the name. visual studio went and changed all refrences to the new class that was a copy

lucid iron
#

atra is always serious

calm nebula
#

I dont actually expect anyone to do anything I wouldn't do

royal stump
#

(okay I think this format fits, noted for later SDVkrobusgiggle)

[_] 2.0: add collision map tile query/queries
      look up how it's formatted for vanilla buildings again (XXX/XOX/XXX or w/e) and match that
    COLLISION_MAP <mapString> [startingX startingY] [sub-condition]```
#

curious how discord parsed 1 tab into 6 and then 4 spaces

lucid iron
#

i looked it up n collision maps (buildings) are just split on \n

#
string[] array = CollisionMap.Trim().Split('\n');
for (int i = 0; i < array.Length; i++)
{
    string text = array[i].Trim();
    for (int j = 0; j < text.Length; j++)
    {
        _collisionMap[new Point(j, i)] = text[j] == 'X';
    }
}
#

since that'd be annoying for gsq i would accept another char of ur choice

#

it also dun care about O hrm

#

only X

royal stump
#

might just go with slashes anyway then SDVpufferthinkblob
"anything but X or linebreak = O" is probably fine, I tend to draw like X__X in my own notes for game maps

indigo yoke
gentle rose
lucid iron
indigo yoke
#

Even made the item query check the player's archaeology level to increase chances of not arrowheads. Top is level 0, bottom is level 10.

indigo yoke
lucid iron
#

hm this is mostly just RANDOM_ARTIFACT_FOR_DIG_SPOT right bolbthinking

#

i think u could do it all in content if you want

indigo yoke
lucid iron
#

yea i mean if u had a fallback output item that would also work

#

the chance multiplier is hard to do in just content though

#

so it is kinda shrug up to you deal Dokkan

indigo yoke
#

I'll leave it as is for now.

that said, I think I can convert the water sifter into an item query as well instead of a custom output like it is

#

mainly since I plan to eventually add VPP... VVP support to archaeology. I can have a perk being like the item qeury can output a random quality too if you have the right perk

lucid iron
#

the nice thing about item query is that u can use them outside of machines too

#

for example shop

indigo yoke
#

that is good to know. I ... actually have a use case for that atm.

#

that just reminded me to adjust the shop data in wizardry to this

                    "ItemId": "ALL_ITEMS (O)",
                    "PerItemCondition": "ITEM_OBJECT_TYPE Target Basic ITEM_CONTEXT_TAG moonslime_spellscroll",
                    "AvailableStock": "{{Random: 1, 1, 1, 1, 1, 2, 2, 3, 4, 5}}",

So I no longer have to manually add spell scrolls to the random item list.

heavy pewter
#

Guys, is the "Data/AudioChanges" supposed to be blank when unpacked?

lucid mulch
#

Yes

#

It is for changes to the audio, which vanilla doesn't have any

heavy pewter
#

Ohhh, I thought thats the issue, Im trying to add a custom weapon swing audio in the android version, but it just doesn't work. I've made custom machines, crops, weapons, and furnitures in android version and all worked properly. I guess editing audios in mobile is different

heavy pewter
gray bear
#

i'm trying to add custom gift responses but i feel i don't know what's the best way sweats

#

assuming there's a way to use one append to do it?

hard fern
#

since you're targeting different things

gray bear
#

do i need the / actually

hard fern
#

but wait

#

bea

gray bear
#

yes

hard fern
#

by changing the response

#

she's gonna say that for every hated item

#

just give her an accept gift dialogue

#

not in the gift tastes themselves

gray bear
#

doesn't this just add a special item responce? thonk

hard fern
#

ur changing her basic gift taste dialogue

gray bear
#

o

#

i see

#

so do i add AcceptGift_(O)mylongassitemid ?

#

wait no

#

i want her to respond according to context tag, not one item

hard fern
#

🤔 uhh is this several items?

gray bear
#

yesm

hard fern
#

think it's different

gray bear
#

ah ok

hard fern
#

i think you have to like... do... tag_something

gray bear
hard fern
#

(dont lisren to me)

gray bear
#

that's accept bday gift but i think same idea

#

AcceptGift_category_{{ModId}}_seafood ?

hard fern
#

nope

#

not a category

#

should just be the second one down

gray bear
#

am lost in the sauce

hard fern
#

AcceptGift_{{ModId}}_seafood

#

if thats your context tag

gray bear
hard fern
#

the "category_fish" is the context tag

#

given to fish items

#

you could also do AcceptGift_Hated_{{ModId}}_seafood ig

gray bear
#

would that work?

hard fern
#

probably

#

?

gray bear
#

i check

#

how do i , add dialouge

hard fern
#

since ur giving evelyn a new dialogue

#

target Characters/Dialogue/Evelyn

#

and that acceptgift thing is the new key

gray bear
#

do i use entries

hard fern
#

yeh

gray bear
#

i once again fight with brackets

hard fern
#

yeah looks about right

gray bear
#

i see. thank you Forsy t_pray i love ur new rock candy mod

blissful berry
#

im looking at RSV's C# code as a reference for making larger animations, and just noticed that they use __instance.Sprite.currentFrame = ...; in their entries.

does it just define which sprite that the animation starts on? should i be using it? SDVpufferthinkblob

#

oh, wait, i think i see how it is. the entries that use it aren't defined in their Animations.json, so i guess that they're just special cases. nvm!

woeful lintel
boreal cliff
#

classic coding blunder committed today: forgetting a bracket

lucid mulch
boreal cliff
#

hey gng need help i copied a seasonal building code but it doesnt seasonal like their mod did 💔

vernal crest
# boreal cliff hey gng need help i copied a seasonal building code but it doesnt seasonal like ...

They're using the season token inside the FromFile field of one patch, so Content Patcher swaps which tilesheet it's using in each season. You're using four patches with no season token to try to edit the same tilesheet, but you have nothing to tell CP when to apply them so it's just applying all four one after each other all the time, resulting in you always getting the winter version since that's last.

boreal cliff
#

so,,,,,, what do i add,,? bc it didnt even replace the buildings SDVpufferchickcry

vernal crest
vocal osprey
#

Oh hi, you're the author of DDFC? such a coincidence because I actually got inspired to make RTL4SDV after seeing your mod!

Yeah I do have a working solution it's mostly harmony transpilers (honestly not sure if done in a way that makes it easier for other mods/transpilers to work with), and prefixes to shape languages (like Arabic) that has connected letters, Diacritics.

There's also partial bidi support in my version, so English and Arabic work together but unfortunately that only applies to dialogueFont render using StardewValley.BellsAndWhistles:drawString.

I'm in the process to also translate the game to Arabic but if you need more insights about how I've done things, I can happily answer your questions (preferably here https://discord.com/channels/137344473976799233/1398131594073477235) and as soon as I refactor my code and fix what's remaining to be aligned correctly I'll publish my repo to GitHub

#

I can give you access to the private repo too....

vernal crest
# boreal cliff yah <:SDVpetcatsad:632494267134377998>

!log Then we'd better check what's happening. Can you load a save, type patch summary full <mod id> (replace <mod id> with your mod's unique ID from the manifest) and once it's printed out all the info, go the website linked below and upload your log and then send me the URL?

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.

boreal cliff
#

gonna be a bit my game takes its sweet time

gentle rose
boreal cliff
ocean sailBOT
#

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

gentle rose
gentle rose
boreal cliff
gentle rose
#

oh I nearly missed it, your comment slashes are the wrong way around

you need // not \\

boreal cliff
#

nyani, they gotta be specific slashes?? okay ill post the results

gentle rose
#

yup, have to be forward slashes. in code everything has to be pretty much exactly as expected, there’s very little room for changing up things like that

fervent horizon
#

So like for furniture framework, if it detects "Furniture" as an object, it loads your schema, if it doesn't, it defaults to content patcher.

ocean sailBOT
#

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

gentle rose
#

if you read the full thing, it actually has different details part of the way through. in this case, you’re missing a comma at the end of every one of your “FromFile” lines

boreal cliff
#

hwat

#

im gonna tweak like bad

woeful lintel
#

is that new?

dire kestrel
#

outage

woeful lintel
#

oh

dire kestrel
rocky chasm
gentle rose
boreal cliff
#

im a compsci student this is an embarrassment

#

OH MY GOD SHES WORKING NOW SDVpufferwaaah

gentle rose
boreal cliff
#

python, but on my first year we used c# and javascript

gentle rose
#

oh you may be interested to know that stardew uses c# for more complex mods that can’t be done via content packs then

golden basin
#

are we unable to make custom bombs?

boreal cliff
#

u trust too well of my memory but thank u iro /lh

gentle rose
golden basin
#

dang it

gentle rose
#

someone may have frameworked it?

lucid iron
#

Bombs r awful special case temp animated sprites

golden basin
#

rip

#

i wanted to make a pipe bomb for mining

fast plaza
#

grargh. finally get the motivation to go check out some stuff on my mod with profiler but nexusmods is down cuz of cloudflare

drowsy pewter
#

@hard fern forsy i formally apologize, I do think stardew melon is green and clearly me from two years ago agrees because he drew this green melon wine already

fast plaza
#

whuh. its clearly pink though?

calm nebula
#

The inner might be green

#

Like a reverse watermelon

obtuse wigeon
#

What on earth is this first result, I was tryna find a veriaty of pink melon and them sthing was the first result XD

dire kestrel
fast plaza
#

huh. someone reuploaded my mod to some chinese website modding website. seems like some kinda scam website though cuz the mod has like 8x the downloads and like 20x the views on this website.

obtuse wigeon
#

If the site is called Never, it's not a scam site tmk, it is very popular

vernal crest
#

Naver and isn't that Korean?

fast plaza
#

and google translate auto detected it as chinese so I'm assuming its chinese from that

obtuse wigeon
vernal crest
#

I know that there is a whole Chinese modding community outside of Nexus but I can't remember what site they use

vernal crest
gentle rose
#

the wanglia??? website has reuploaded mods before so we know that's a thing

fast plaza
#

dont think its that either

#

doing some brief googling on the website it seems to suggest its a scam website

gentle rose
#

ah, looks like it's a chinese game piracy group maybe

fast plaza
#

seems like it

vernal crest
boreal cliff
vernal crest
# boreal cliff okay so its still shite, someone tell me what im doing wrong bc its apparently s...

When you say "into {{Season}} folders", you mean like assets/spring/z_ghost_farm_picture.png, assets/summer/z_ghost_farm_picture.png etc, right?

You appear to have changed your Targets so they are now incorrect. There should never be an Assets/ inside a Target. It should just be "Target": "Maps/z_ghost_farm_picture_spring",. Although, have you checked that the original mod did actually Load to those Targets?

boreal cliff
#

first part yes

i see SDVpufferpensive

boreal cliff
autumn tide
#

hey! can NPCs walking speed for schedules be changed?

obtuse wigeon
#

I don't think so, but you can add NPC only warps as like a "shortcut" for them so they get to where you want quicker

brittle ledge
#

Sadly, no. If you want them to get somewhere faster, start them closer with a zero schedule.

#

(I wouldn't really recommend adding NPC warps to vanilla maps until we (hopefully) get NPC-specific ones in 1.7)

obtuse wigeon
#

NPC-specific warps you say 👀

brittle ledge
#

It's been brought up, though I don't think it's a solid yes yet 👀

vernal crest
brittle ledge
#

But currently NPC warps can be used by any NPC, so it'll be real easy to mess up pathing, either with loops or with unintended NPCs wandering into your warps

vernal crest
#

Yeah currently adding NPC only warps as shortcuts is a guaranteed way to cause havoc for all the NPCs in somebody's game lol

hard fern
#

SDVpuffersweats so like i shouldnt put an npcwarp in a character's house to make them appear places out of view from the player

#

(a custom npc's house)

boreal cliff
#

ouh if only i have a bit of disposable cash to have someone make it for me

vernal crest
tiny zealot
#

you can use npc warps on your own maps, but it is best to be judicious so that other NPCs don't try to use them

vernal crest
tiny zealot
#

like tia recommended, it is much less likely to cause havoc if you use zero schedules to start your NPC's day somewhere distant, and let them walk home

vernal crest
hard fern
#

SDVpuffersweats well i hopefully won't do that

obtuse wigeon
#

I'm going to add NPC warps everywhere that randomise every day just for fun

boreal cliff
undone narwhal
#

This is probably a stupid question, but if a mod is encoded into a dll, there's basically no way to "open it up", right?

tiny zealot
#

nah, you can decompile it with ILSpy just like the game

calm nebula
#

I'm gonna obfuscate my dolls just to spite you

undone narwhal
dusk terrace
#

What if instead of having my framework's api try to share a complicated interface composed of foreign types, I just exposed a dictionary of objects with string keys that the API user would just cast back to a shared type? Are dictionaries handled well at all? then i could possibly supply a class that fetches the known keys so the api user has some validation

#

Seems so simple compared to all the trouble i went through that I'm upset i hadn't thought of it before... Unless I did and it just doesnt work

timid summit
#

hello! can someone help me, how to start making a mod? first steps, what i must have.. etc. i want to try this as a game developer, but the c# code lang and with this smapi resource its a bit messy as a new developer in stardew valley world

gentle rose
#

what are you trying to do, can we see your code, and what error are you getting?

timid summit
#

for now, nothing that i made that could be unique, for now i just want to make a null mod that is loaded by the game without error message

gentle rose
#

I'm not worried about how unique it is right now, just trying to help you get it working

#

!log can you share your log please?

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.

timid summit
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26200.0, with 7 C# mods and 7 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

gentle rose
#

there's no actual compiled dll in your mod folder?

timid summit
#

well, no.
guide writed down i have to make 2 file, and then build the projekt, but i got no dll

gentle rose
#

what happened when you built the project then?

timid summit
#

visual studio cmd said it builded successfuly and showed a location to inside the debug folder

#

can i send pictures in this channel?

gentle rose
#

I'm not sure, worth a try

#

did you add the ModBuildConfig nuget package?

timid summit
#

no, is it a visual studio package?

gentle rose
#

it's a nuget package. it's one of the steps in the page you linked.

timid summit
#

oh, then i skipped it

gentle rose
#

please try not to skip steps, they're there for a reason. that package is what allows mods to compile correctly.

timid summit
#

I got it, thanks for pointing it out

timid summit
#

it works and is built well now! i didn't know a small flaw in the structure would matter so much

dusk terrace
#

the package does a lot of the automation for you, without it you'd need to know what you're doing and do it manually

lucid iron
brittle pasture
#

flashback to AI trying to make manual binary references to the SDV exe

hard fern
#

😅

#

On a scale of "oh no" to "oh god" how badly did that work

lucid iron
#

For example I added something that takes 1, "1,2,3" etc on cp side and turns em into List<int> internally

obtuse wigeon
dusk terrace
#

lmao not sure if we're thinking about the same thing but... taking some time away from SDV and doing some Unity coding had me thinking a lot in terms of serialization when I got back to SDV

lucid iron
#

Yeah ig im not really sure what's meant by API and foreign types in ur original ask

dusk terrace
#

internal framework class structure -> serialize to json -> expose api -> deserialize back into foreign mod structure

lucid iron
#

My thought was data model in context of expose a target for content edits

#

As for C# side API this is the kinda thing pintail is for

tiny zealot
#

i just added an endpoint that returns my internal implementation of the interface the client would need to implement

lucid iron
#

As long as i have a compatible copy of your interface you can use custom types and pintail does the duckStackEnd

dusk terrace
#

pintail was the name I was looking for SDVkrobushappy
I was having a hard time back then making pintail work because of some older bug that may or may not be fixed now

brittle pasture
dusk terrace
#

so my current API supports the same foreign type I have exposed for CP edits, but lists would break when I tried adding them to the api interface so those are out

lucid iron
#

Hm if it's content edits then that never goes through pintail does it?

dusk terrace
#

but new idea is instead of relying on pintail, I just "serialize" everything in a dictionary<string, Object> and "deserialize" it by casting back the fields you know of

lucid iron
#

plus i can just edit ur things with dynamic on my end i think

dusk terrace
#

iirc content edits through content loader wasn't supported with custom foreign types, maybe that changed?
dynamic was working with some success but I think it leads to the same issue with the dictionary approach, being that you throw some validation out the window

lucid iron
#

Well yeah that is kind of the point right it is a "trust me bro" keyword Dokkan

dusk terrace
lucid iron
#

I don't have a working example but in the past what ive done is

dusk terrace
#

I guess the piece of glue I wish I had thought of sooner is that I can add some (or all) of that validation back into the api you'd copy from my docs

lucid iron
#
  1. Have a shared library built into 2 different mods
  2. Make sure to load them using their own helper.GameContent instead of Game1.content
dusk terrace
#

that works with foreign types?

lucid iron
#

After doing this, I am actually able to load the asset at the target created by mod B using mod A's GameContent

#

It's just weird cus I end up with another copy of the same data so ultimately i never did anything

#

Perhaps what you can do for C# mods is to ask for their GameContent to keep their stuff out of Game1.content NotteThink

lucid iron
#

Even if it technically came from B

#

I feel like i did need to do dynamic or something in the Load impl, but i honestly don't remember

dusk terrace
#

ah, yea, you probably did

calm nebula
#

I'm not in a ducking duck type language I'm not ducking gonna program like that

lucid iron
#

Something pathos did in central station is

#

Make cp load a blank json to the asset that would contain custom types

calm nebula
#

hides the gettattr mess I'm writing under the table

lucid iron
#

Apparently that works approximately like dynamic

calm nebula
#

It's because each copy of helper.GameContent is individual

#

That said I'm very loath to give up good typing

#

And while I dont matter I also hate it so

lucid iron
#

I personally think content patcher is ubiquitous enough that it's usually fine with me if u don't provide a non content patcher means of putting data in ur mod

#

In a case where you actually expect a decent amount of C# integration consider letting ppl register delegates with you instead

#

Much like how u can register new map tile actions on vanilla

dusk terrace
#

in the case of Farmer Portraits, I do expose delegates to the different draw calls, but their mod also needs to know the display data so they can render properly

lucid iron
#

Well just eat farmer portraits then

#

I think this is honestly more optimal for you

dusk terrace
#

honestly... SDVconcernedCA

#

but oh boy does Farmer Portraits have a lot under the hood that you wouldn't think of

lucid iron
#

Just gotta like

  1. Open ur own way of defining space and texture for farmer portraits
  2. If farmer portraits not installed load their data at their target and transform to whatever u prefer
#

So u can just tell ppl "hey my mod has farmer portrait support just go change manifest a lil"

dusk terrace
#

tbh you can already have your own pseudo Farmer Portraits using DDFC alone

#

it lets you add custom textures so... just build it yourself lol

lucid iron
#

Yeah so it's more of the become compat with existing packs bit

dusk terrace
#

it's also funny considering both mods are adopted from aedenthorn

lucid iron
#

There r many strange divides in aeden mods that always confused me

dusk terrace
#

fairly sure FF is way older than DDF so it makes somewhat sense to start it as its own separate mod

#

FF also used to be more popular than DDF but um... I'm shocked to learn that's no longer true

dusk terrace
#

like if Farmer Portraits wants to expose the variables it uses for rendering, DDFC pack authors could edit those variables in the same patches

#

the potential compatibilities are endless

fervent horizon
#

I am drawing a blank, is there a way to negate in a when statement? Like when this flag is not active?

dusk terrace
#

depends on the statement, some you can put on the lefthand operator and have false on the righthand
some you can do using queries, etc

hard fern
#

If it's a condition (like a gsq) you can just put ! In front of it i think

fervent horizon
#

so how would this one be "When": { "DLX.Bundles/Purchased": "{{ModId}}_HatShop.RestoreExterior" }

hard fern
#

🤔

#

Hh

fervent horizon
#

I may just have the patch not have a when, and then do another patch when the bundle is complete to blank out what I need

tiny zealot
#

use |contains and check for false

#
"When": {
  "DLX.Bundles/Purchased |contains={{ModId}}_HatShop.RestoreExterior": false
}```
fervent horizon
#

Cool, I bet that will work. Thank you

timid summit
#

uhm.. guys?
can someone please tell me, where can i find the sve route to pierre shop? SeedShop or how does it named?

tiny zealot
#

SeedShop is the name of the location, yes, and afaik SVE does not move it at all. go in the door marked "Pierre's" in town

autumn tide
#

hellooo do you guys know of any other in-universe human languages? or is it just like the irl ones like english, french, spanish, etc.

tiny zealot
#

i'm not sure vanilla ever mentions language at all, except dwarvish and junimo script

#

english could just be a language of convention and they're all speaking ferngillian or something

autumn tide
calm nebula
#

Standard tongue

autumn tide
#

as opposed to non-standard tongues ig

#

i want a character to refernce another human language in an event

tiny zealot
#

you might be able to get around it by just being slightly vague

obtuse wigeon
#

I think theres references to people from gotoro speaking the same language as ferngil, would describing it as a dialect be a better idea if you go for the idea

tiny zealot
#

"oh, see, in my native language we would say something like..."

autumn tide
#

hmmm not really, lemme send the dialog line

#

the context is dwarf is visiting krobus,they're near the sewers, and they hear human voices and they think that some humans found krobus and are attacking them, they jump in, bombs at the ready, and sees krobus playing with jas and vincent

Jas overhead speech bubble 'What language are they speaking?'
Vincent overhead speech bubble: 'Maybe Gotoroian?'
#

OR maybe:

Jas overhead speech bubble: 'What language are they speaking?'
Vincent overhead speech bubble: 'Maybe Gotoroian?'
Jas overhead speech bubble: 'That's a dialect.'
Vincent overhead speech bubble: 'You're a dialect!!'
golden basin
#

i wanted to make a bigger fish tank and something weird has happened?

#

so when placing it looks liek this

#

but when i place it

lucid iron
#

Did you draw the second sprite

#

The one with the glass

golden basin
#

second?

#

ill...look at the vanilla sheet

lucid iron
#

So if u look at the first 2 tile wide tank

#

There's a second sprite with the water right after it

#

That's what draws over fishies

latent mauve
#

The second sprite is the one used for the front draw layer, yes?

golden basin
#

when i i placed mine like that it does something weird

lucid iron
#

Show us what ur png looks like? It is progress tho

golden basin
obtuse wigeon
#

It looks like a very cool bar and aquarium combo, i'd love to sit at it watching fish while I have something to eat

lucid iron
#

Hm that does look right at a glance

#

I guess you can try

  1. Patch export this png
  2. Reload game entirely and spawn new tank after
latent mauve
#

What's your furniture data entry look like?

#

I'm guessing your sprite index might be slightly off, but unsure

golden basin
lucid iron
#

patch export <your loaded texture asset>

golden basin
#

i load it into this Mods/{{ModID}}/Furniture

#

so how do i patch export that?

latent mauve
#

patch export "Mods/yourModIDspelledout/Furniture"

#

just replace the {{ModID}} token with your mod's unique ID

golden basin
#

looks liek this

latent mauve
#

Got your JSON for the furniture data entry anywhere?

golden basin
#

its at the bottom

latent mauve
#

Why is your sprite index 70? It looks like it should be 60

#

your furniture sprite index needs to start at the image with the sand in it.

golden basin
#

I struggle with counting sometimes

latent mauve
#

Right now it's starting on the front layer

#

Me too, it's why I just counted five times to make sure I was right xD

golden basin
#

my sand dissapears

#

nevermind i fixed it

autumn tide
#

is there a way to make multiple i18n files for the same language? i have too many entries to easily keep track of-

tiny zealot
#

yes, make a folder and put multiple files in them

golden basin
tiny zealot
#

so instead of i18n/default.json you have i18n/default/whatever.json and i18n/default/whatever-2.json

golden basin
#

they live!!!

autumn tide
autumn tide
#

or like, they just exist as per ususal

tiny zealot
#

nah it's automatic. just make sure you don't recycle keys between them

#

and i vaguely recall some kind of weirdness that i expect button is about to explain

uncut viper
#

also, you must be consistent across every language

#

that's about it

#

no mixing and matching folders vs single files

autumn tide
uncut viper
#

the file names don't actually matter in the folder version I think

#

Just as long as every language does use folders

#

The FOLDER name does matter of course

autumn tide
#

good to know, thanks button!!

soft lance
#

Heyy question, how can you make it so a letter gets sent (next day) once a drop box quest is completed?

brittle pasture
#

you can have a mail flag as reward, and a trigger action to send another mail on day start conditioned on having that mail flag

#

the reason I suggest two flags is because I think the reward flag gets sent immediately

#

also side note but you most likely don't need Update OnLocationChange

soft lance
#

Okii, now is there any documentation or any page that contains mail conditions and triggering? Also not entirely thr best with flags but I dont mind if the mail is sent nrxt day if its easier

mortal hatch
#

i am trying to repalce a texture on Maps/springobjects, but the console tells me it doesnt exist, why?

brittle pasture
#

woops that doesnt work

soft lance
brittle pasture
#

very useful reference

#

both those pages are in the index below

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.

mortal hatch
#
      "Action": "EditImage",
      "Priority": "Late",
      "Target": "Maps/springobjects",
      "FromFile": "assets/{{Iridium Sprinkler Skin}}_tools.png",
      "FromArea": { "X": 96, "Y": 208, "Width": 16, "Height": 16 },
      "ToArea": { "X": 336, "Y": 416, "Width": 16, "Height": 16 },
      "PatchMode": "replace",
      "When": { "Iridium Sprinkler Skin|contains=none": false, "Set Override" : false }
    },
brittle pasture
#

code and target looks correct at a glance
what's the error in the console?

mortal hatch
#

[Content Patcher] Can't apply image patch "Tool Variants > EditImage Maps/springobjects #1" to Maps/springobjects: the FromFile file 'assets\none_tools.png' doesn't exist.

brittle pasture
#

hmm I think that when condition isn't quite correct

#

try wrapping the first condition in double brackets

#

{{Iridium Sprinkler Skin |contains=none}}

mortal hatch
#

but it works on the other skin applications with 0 problem

#

why double brackets?