#making-mods-general

1 messages · Page 206 of 1

rare orbit
#

but i prob gotta check via cjb cheats menu since to test that i guess it requires marriage

#

to multiple characters

#

wanna take this to dms? so we aren't flooding this chat??

spice inlet
#

sure

delicate jewel
#

hi a question, how do i fix this with tiled

final arch
#

what is "this" exactly?

lusty elm
#

Standing in water I assume

#

Also, Pretty Sure thats Everfarm rooThink

teal bridge
#

I thought the purpose of play testing was to get bug reports. If it has no bugs, doesn't need to be tested, right?

#

At least you get the reports, I've heard nothing since alpha 2.

lucid iron
#

i may have more now that i am finally resume playing game

lusty elm
blissful apex
#

Is there any way to log the player's current (not max) stamina with SMAPI? Trying to do this without writing C#. I see player_setstamina, but not get?? 🤔

lucid iron
#

if you hover over the stamina bar, the number is displayed

blissful apex
lucid iron
#

if you want it to happen automatically, then u probably need C#

#

im not too clear on what the goal here is

teal bridge
#

"With SMAPI" and "Without writing C#" sounds contradictory to me.

#

SMAPI is literally a C# modding framework.

blissful apex
#

Thanks for the advice. The goal is to log changes in player resources once per day automatically, upon save. I've gotten pretty far with just python parsing and diffing the {save} and {save}_old xml files

lucid iron
#

F# mods

#

well if u know how to do that much i think C# will be ez

#

and nicer bc u just have direct access to gamestate on all these things

teal bridge
#

Ok, but... why? It's way less work to write a 10-line C# mod than to write a bunch of python to parse XML files.

#

Maybe you really like XML, I dunno, personally I try to stay as far away as possible.

blissful apex
#

I don't enjoy xml, but it's json-like enough, and doesn't require compiling any new DLL. Granted, actually learning how to write a mod makes a lot of sense for having this higher degree of control

lucid iron
#

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

lucid iron
#

!decompile

ocean sailBOT
teal bridge
#

Helper.Events.GameLoop.DayEnding = (_, _) => File.WriteAllText("Path/To/File", $"Stamina at end of day: {Game1.player.Stamina}");

#

Literally a 1-line mod

lucid iron
#

few more for the ModEntry boilerplate around yet but yep

#

u can log other stuff here too

teal bridge
#

(Change WriteAllText to AppendAllText if you want to append rather than overwrite.)

blissful apex
#

Thanks so much for the help!

next plaza
#

(To be fair, looking back he said it was about the farmer animation part, which, like, true enough)

calm nebula
#

What farmer animation part lol

lucid iron
#

it'd be pretty hard to make modern AAA parkour happen in stardew

#

with the frames we got

next plaza
#

I didn't do any animation for my impl

calm nebula
#

Dude, chue, I could not reasonably get the gd farmed jump to not just randomly clip shit

#

And i did "watering can frame, hoe frame, different hoe frame"

#

It's surprisingly frog like!

lusty elm
#

I wish I had an example of "How to patch Data/Buildings to remove the Default_Mailbox entries from ActionTiles and DrawLayers" slams face into desk I'm not great at editing fields, and the Buildings one is particularly difficult to process for me.

calm nebula
lusty elm
#

I made it crash without redtext, which is kinda impressive to me rooBlank

calm nebula
#

So you can do a teensy jump fine but if you do a big one you get weird layering issues

lucid iron
#

the reason why i said 1x2 is cus

#

i remember mailbox cursed

#

the 2 is for mailbox

#

house go in 1

calm nebula
#

Those of you who know how long it took me to get frog jump to layer that stupid tree in Forest correctly

next plaza
#

Yeah, interacting with the layer/depth stuff in stardew can be a pain

calm nebula
#

If we're ever both active again I still want lower gravity on the moon lol

#

But yeah, dunno why he thought you needed new animations, composition of current frames works well enough

next plaza
#

I didn't even change current frames

lucid iron
#

what inspired u to do angry seagulls

#

did a gull steal ur lunch

next plaza
#

The player just stops walking in wahtever frame they were while in air

calm nebula
next plaza
fathom hound
#

what does Fragility mean? i tried to find it in objects.json and modding wiki but didnt find anything SDVpetcatsad

next plaza
old edge
#

Welp my ssd with my mods and games has been corrupted. Thankfully I was able to retrieve my wip version of my mod.

next plaza
calm nebula
#

1 means it breaks when you try to pick ot up

lusty elm
#

I got IT!

calm nebula
#

2 is unmoveable after you place it

#

Tl;dr use 0

old edge
#

Thankfully I update frequently so all other mods had been uploaded to nexus

fathom hound
calm nebula
brave fable
#

unless you mean literally a mini map, like a very small map

#

you know what, you probably do mean that

lusty elm
#

yuup

brave fable
#

SDVitemcoffee.SDVdemetriums

calm nebula
#

Coffee dot demetrius

#

That is a weird url

brave fable
#

mailto:

#

now that i think about it some, isn't there a mod that makes a minimap for any old map?

#

ah a casey mod. was a cointoss whether or not it was from aedenthorn

teal bridge
#

You're talking about the one that sorta draws the actual map at really tiny scale?

#

I think yours actually looks a little more minimappish, reducing it to coarse tiles and POIs. The golden middle would be one that does that, but also has very rough terrain indicators and obstacles.

#

(Which I know makes the scope literally 20x larger but whatever)

brave fable
#

i suppose it depends how detailed you want it, mine's just 1px per tile and baked into a single texture, and creating the texture just sets colours by (collidable ? white : black), so no usable info other than walls (which is all it needed for a maze really)

#

terrain markers would be pretty cool, little trees on the map.

teal bridge
#

Yeah, it's simple, but reading from the map data rather than the map texture is the right idea. Expand it to understand machines, trees, etc. and it's a full-fledged framework.

brave fable
#

honestly of all the dumb hacky solutions in the maze mod my favourite is probably right below the minimap create method

public static NPC CreatePumpkinMan(GameLocation where, Vector2 tile)
{
  NPC npc = new(
  sprite: new AnimatedSprite("Characters\\Monsters\\Wilderness Golem", 0, 16, 24),
  position: tile * Game1.tileSize,
  facingDir: 0,
  name: "AnsweringMachine")

and his name was answering machine.

lusty elm
#

is there a when condition i can setup so that a patch only takes place if they are using my specific farm in their playthrough?

#

Nvm i think I see one

brave fable
#

FarmName token 🙏

#

wait no that's the user-added name isn't it

calm nebula
#

Oui

brave fable
lusty elm
#

The Content Patcher actually took me like twice as long as designing the map space.

lucid iron
#

itlooks kind of nice actually

lusty elm
#

it has 19 farmable tiles, and all but 4 are where you walk. (Well technically those 4 are where your spouse walks)
Ye! I tried to make it aesthetically pleasing.

lucid iron
#

gramps picked a good spot for his grave

merry rampart
#

that has to me the smolest farm ive seen so far

drowsy pewter
#

claustrofarm

#

I'd play that

#

with lnh's mini farmhouse so the vibes match

lusty elm
#

Originally I had the map shorter, but it needs that much height to not cut off the greenhouse when its built rooC

#

now to get back to what i was supposed to be doing today rooKek

brave fable
#

are there mods for smaller greenhouse/other exteriors at all, or would that just explode as soon as a building recolour mod tried to patch the sprite

lucid iron
#

u should be able to just change the size

#

no explode but sprite's gonna be cutoff

#

plus some buildings have doors of some size

brave fable
#

a Very Small Buildings mod would be funny tho

#

for Very Small Farms ofc

wispy bramble
#

lol tiny buildings that are just the size of the doors

#

Imagine a barn that is just the size of animal door and the human door next to it.

rancid musk
#

3x1 barns, 2x1 coops and mills, 1x1 fish ponds, silos, slime hutches, sheds, wells, cabins, and shipping bins

brave fable
#

10x2 shipping bin tho (for Wide Pam and Pam Shipping Bin compat)

rancid musk
#

Shrinking the stable might have issues since it spawns an NPC

#

Just make a shipping bin that runs across the whole top of the farm

wispy bramble
#

a mod already exists to make the obelisks 1x1

gaunt orbit
rancid musk
#

The 1x1 shed mod should also make shed interiors smaller

brave fable
#

pretty sure a 1x1 shed is called a chest

lusty elm
#

Swap Robin with the Dwarf for Construction, all Buildings are now different kinds of holes in the ground.

rancid musk
#

(And every new playthrough I'm like "This time will be different. This time I'll build normal buildings and stuff." but then I hear the call of the mines)

lucid iron
#

a house can be dig 3 tile fill 1

lusty elm
#

Change the interiors too,
Cow's feed trough? a Long narrow Hole
A Chair? a Sitting Hole
Farmhouse Upstairs? PFF, Try Downstairs
your baby's Crib? a Baby Sized Hole.

brave fable
#

there's always someone who looks at a perfectly good idea and decides it needs effort SDVpufferpensive

lucid iron
#

cask of amontillado

teal bridge
lucid mulch
#

me when I made a smapi mod in Lua and Python to prove a point

devout otter
#

Dynamic token in a Condition field seems to apply a day too late. I did this for Central Station tourists: "Action": "EditData", "Target": "Mods/Pathoschild.CentralStation/Tourists", "Entries": { "DolphINaF.VendorPortraits": { "FromMap": "{{InternalAssetKey: assets/LooseSprites/CentralStation.tmx}}", "Tourists": { "Naufal": { "Index": 0, "Condition": "!{{Clerk|contains=Naufal}}", "Dialogue": [ "{{i18n: CentralStation.Naufal.1}}", "{{i18n: CentralStation.Naufal.2}}", "{{i18n: CentralStation.Naufal.3}}" ] }, } } },The dynamic token Clerk has the Naufal value only on Saturday and Sunday, meaning the tourist shouldn't appear on those days. However, they actually disappear on Sunday and Monday instead. It only works correctly on Saturday/Monday if I reload my save on that day.

#

Is this intended/known? and is there anything I can do to make this work?

gentle rose
teal bridge
lucid mulch
#

something along the lines of smapi mods must be in C#

brittle ledge
#

Yeah apparently TMXL supported Lua scripts, which is kind of wild

teal bridge
#

Next up, proving that mods can be written in Fortran and Apple Basic.

#

Which, they totally can - provided you also write the whole interpreter and plugin system.

lucid mulch
teal bridge
#

Heh, and indeed that demonstrates it is possible if you use .NET to instantiate the Python runtime, which uses a Python library to call into .NET...

lucid mulch
#

it required a support mod do some heavy lifting, but it worked and smapis logging will say its a real mod

teal bridge
#

("but the point is, it's possible!")

lucid mulch
#

even if at startup its technically starts its life as a content pack

lucid iron
#

i think that makes it better

gentle rose
#

wasn't pytk also lua? SDVpufferthinkblob

languid aurora
#

I think I have a way to work around this issue that is a better fix for things anyways, but I'd like to see anyone has insight into this anyways:

In an effort to affect as few items as possible, with my Colored Honey Labels mod I left any pre-existing honey items the player had alone. While developing the mod, any of those pre-existing honey items rendered fine, and that only time there was a texture issue it was when I'd test without my mod active, and the issue was with the ColoredObject honey items my mod had created, not with the pre-existing ones.

Now, however, these pre-existing honey items appear with no texture/sprite at all when my mod is active. Just completely transparent, and with a shadow underneath if in an inventory. My ColoredObject honey items appear and create properly, but I'm confused as to why the "vanilla" ones are broken. My mod edits the Texture, SpriteIndex, and ColorOverlayFromNextIndex of the honey object's data definition, but I'm lost as to why this no longer works for the regular honey item, since it should be able to use that texture and sprite index just fine.

There's also the fact that Lookup Anything shows the modified base honey sprite from my custom texture in its info for both normal and ColoredObject honey items.

#

Red one is the colored one

teal bridge
#

What's the alpha value of the ColoredObject's color?

languid aurora
#

I assume 1. I use the base games color-determining function

#

The issue is with the non-colored items, though

lucid iron
#

items generate with a sprite index saved (in parentsheetindex)

teal bridge
#

Are you sure the non-colored items aren't being instantiated as ColoredItems with no color (i.e. transparent)? We don't know much about how you're switching it over.

lucid iron
#

should be able to see what value it's at with lookup anything datamining fields

teal bridge
#

Could also of course be the usual issue of preexisting items having preexisting data, and even if they don't spawn new as ColoredObject, those old items in the inventory are colored when they shouldn't be.

languid aurora
#

The non-colored items would've been created before my mod was even installed.

brittle pasture
#

I believe sprite index is saved

#

welp just saw chu mentioned it above

languid aurora
#

If sprite index is saved, and not pulled from the data definition, then that would explain it

lucid iron
#

i got skem by this very hard in my first mod

#

never forgive

brittle pasture
#

so those honey items are trying to be drawn at sprite index 340 of your new fancy sprite sheet

languid aurora
#

I was temporarily under that impression before, but for some reason thought cache invalidation had fixed things

brittle pasture
#

which I assume is the void

lucid iron
#

theres a way to fix it i suppose

languid aurora
#

Yeah that would explain it, since there's nothing there.

lucid iron
#

if you just detect new install (mailflag or moddata) and then do a pass on every existing honey in the world

#

with utility foreachitem

languid aurora
#

Yeah I actually do the opposite if a console command is run to make all honey non-colored again, currently

lucid iron
#

when i install ur mod i just deleted the honey and spawned new one blobcatgooglyblep

languid aurora
#

But I'm going to avoid this issue completely by converting all honey to colored on save load and back to vanilla in pre-save

#

More uninstall-friendly anyways

#

At least that's my plan now

lucid iron
#

that seems like Effort

languid aurora
#

I don't like that I currently expect users to run a console command to clean up their items before they can uninstall; I'd rather it be easier than that

lucid iron
#

what exactly happen if you don't do anything?

brittle pasture
#

they become weedses

#

assuming index 0

languid aurora
#

Currently, pre-existing honey items will have no sprite upon install. The faster method (which doesn't address my uninstall stuff I mentioned) would be to convert all honey upon just first save load.

#

And yeah, upon uninstalled without running the console command, they become weeds and get colored leaves overlaid on to the weeds due to sprite index 1's contents

#

So my proposed fix would address both of those

lucid iron
#

ig my concern is what if lots of items in the world

languid aurora
#

So looks like I'd deal with SaveLoaded and then Saving/Saved for each night's save

#

I only deal with one unique ID of items, so shouldn't be too bad

#

The base game has optimized methods for going through items that I'd use (like I do in my console command [which won't be necessary anymore now])

winter dust
#

What happened to all the PPJA mods? I see they haven't been updated since 2021.

brittle pasture
#

ded

weak pulsar
#

I'm not sure where to ask this or if it's worth asking but!!

I'm using Yri's Recolor bc I adore it. Some tiles aren't colored and I figured it was due to lack of updates--but then I saw a reddit post (picture is from there) that had my same issue despite being updated with a diff. color set and now I gotta ask...is there something else going on?

Tldr; does anyone recognize this as an issue beyond "recolor needs updating"?

brittle pasture
#

!recolor

ocean sailBOT
reef kiln
weak pulsar
#

that bot is glorious

brittle pasture
#

(you're right)

winter dust
brittle pasture
#

and as mentioned PPJA is kill

winter dust
#

PPJA = Project Populate JsonAssets.

reef kiln
#

it used JA didn't it

brittle pasture
#

Cornucopia is the "successor" made by several of its former artists

winter dust
#

It did, but JA still works for 1.6, but there's no reason to use it anymore.

#

But PPJA was popular because it added custom fruit trees, artisanry goods, foods, flowers etc.

brittle pasture
#

(also these questions are rather not related to making mods lol)

winter dust
winter dust
reef kiln
#

Yup,I have personal conversations of all the 1.6 mods I use that still used JA.

brittle pasture
#

you can presumably just remove those, or swap them to Cornucopia variants

hard fern
#

I think that would be best, yeah

winter dust
#

Yeah, I'm gonna swap them to Cornucopia. Thanks.

reef kiln
winter dust
#

Tarniyar definitely knew what people wanted with this mod, I just hope I can keep improving it.

winter dust
#

I'm trying to load a custom portrait for a non-interactable NPC, but it doesn't seem to be working, I'm loading it to "Portraits/Tarniyar.CP.GardenVillage_Rose" and I'm putting "Portrait": "Portraits/Tarniyar.CP.GardenVillage_Rose" in an object inside the Shops Owner model. But it doesn't seem to want to load it?

#

When I patch export the portrait, it does exist.

devout otter
#

Does the shop dialogue appear?

winter dust
#

Yeah.

brave fable
#

to be clear, the shop attempts to load Portraits/{{Portrait}} with your Portrait value

winter dust
#

So, I remove Portraits/ from the shop Owner entries?

devout otter
#

But texture asset key should also work! All my portraits in Portraits for Vendors use asset key.

brave fable
#

is that so

calm nebula
#

correct

#

texture asset key should work

brave fable
#

then am i the one who's doing it wrong...

winter dust
#

I did a patch reload and it didn't show up.

brave fable
#

and if it should work, why isn't it

brittle pasture
calm nebula
#

name can't be none

#

literally do anything else

brave fable
#

wonder if the "Name": "None", "Id": "{{ModId}}_Florist_Open", is the issue then

devout otter
#

Aah. Do AnyorNone then.

brave fable
#

ah there it is

winter dust
#

Reloading did nothing, so I guess I'll relaunch the game.

reef kiln
winter dust
#

Yeah, the portraits still aren't showing up.

devout otter
#

Have you changed back to "Portrait": "Portraits/Tarniyar.CP.GardenVillage_Rose"?

winter dust
#

No....

#

Okay, thankfull they work now, thanks.

devout otter
#

To clarify a bit, "Portrait": "Tarniyar.CP.GardenVillage_Rose" would work, if you have an NPC with the internal name of Tarniyar.CP.GardenVillage_Rose.

winter dust
#

Yeah, I figured it would.

stoic galleon
#

Hey, would this be a good place to ask about updating a mod to 1.6 when the permissions are murky?

lucid iron
#

sure

stoic galleon
#

Ok, thanks.

reef kiln
#

Define murky? Or what mod? Is probably the better question.

stoic galleon
#

So, there's a mod called Animated Medieval Well that was published 5 years ago. It used Gweniaczek's assets from the Medieval Buildings mod with permission and animated them through Content Patcher Animations. Now that Content Patcher Animations is deprecated, I used SpaceCore to make the mod compatible with 1.6, and wrote to the author asking for permission to update the mod. But they haven't been on Nexus since 2021.

#

Their permissions make me hesitate about what to do: they say that some assets aren't theirs and permissions should be sought from these authors, but there is permission to modify and convert the file, and they say that assets can be used as long as they are credited.

#

So what is the respectful thing to do in this case? Publish the update on Nexus as is while saying I'll take the mod down if the author contacts me? Is publishing an unofficial update acceptable? Or should I try to ask for Gweniaczek's permission?

lucid iron
#

i believe you need gwen's permission

shut edge
#

anyone know how to make an item bought from a store have like a small chance to instead give a different item?

#

i know there's the random query but i don't know if i can give them weights

lucid iron
#

an alternative is to publish your mod as only the json files, and make ppl go download Animated Medieval Well for sprites

#

semi-related but i think you can do this without any dependencies

#

it's possible to animate buildings using draw layers, a vanilla feature

stoic galleon
#

If I understood correctly the author's description, they used the original Gwen's asset, but then to animate it they transformed it extensively themselves.

#

Would it still make sense to seek Gwen's permission then?

lucid iron
#

you have Modification permission from Animated Medieval Well to modify their changes, but the original art is gwen's

#

its well no 3 here right

calm nebula
#

yeah, at some point of time you kinda just have to accept that some mods won't get updates anymore

stoic galleon
#

Yes, it's 3.

#

Ok, thank you for the explanation and for entertaining my query.

lucid iron
#

man i should like

#

make a guide to do animated buildings with draw layers blobcatgooglyblep

#

so that ppl can just do this instead of defaulting to spacecore

lusty elm
#

One of the features of a QoL mod i really liked was you could hold space and drag select over tiles, and it would select that area, and as long as you were in the selected area with a tool out, it would automate use of that tool on valid targets.

#

So I could select an area, walk around with a pick and autohit the rocks, then autoclear weeds with scythe, then branches with axe, then auto hoe the dirt, and then auto water, all without clicking.

#

was very nice rooComfy

#

Had a few Config options, like whether the axe would target trees as well, and if they would target Large Debris Objects, Kinda Like how the Tractor Mod works in an odd way.

hard fern
calm nebula
#

chue do you have trinket with big hammer and trinket with axe yet

lucid iron
#

what does that mean atra

reef kiln
calm nebula
#

and a trinket with an axe that can cut down trees

lucid iron
#

rocks yea, the dust spirit do that (though not super loudly)

uncut viper
#

how can i make them louder

lucid iron
#

trees i had issues with performToolUse my behated

reef kiln
#

The opossums are a step in the direction.

lucid iron
#

give them a different proc sound

vernal crest
#

Gil in his chair as a building... He can be a mill and he grinds the grains by rocking back and forth on them.

shut edge
#

animating tiles is done in TiledED i think

#

or at least it can be

lucid iron
#

but hm i guess i should look at it again

#

my prev attempt was like

#

create bogus axe

#

attempt to use bogus axe on tree

#

tree was unharmed, i lost stamina for some reason

shut edge
#

prank axe

lucid iron
#

wait could i just performTreeFall

#

or instantDestroy

brave fable
#

merely location.explodeAt(here)

reef kiln
#

I dont think the dust sprite are using a pick axe in their code so you could probably do something similar

lucid iron
#

thats already solved its just destroy breakable rock

brave fable
#

merely OneSecondUpdateTicked() { here.characters.Add(new DustSprite(here)) }

lucid iron
#

wow yes

brave fable
#

not sure why you'd go to all the effort of having a flying axe when u could instead have a rotund beaver following you around gnawing all your trees into dust

calm nebula
#

yes

#

please

#

I beg of you

#

I need a beaver.

lucid iron
#

sometimes the beaver gets bonked by his own tree

#

goes away for rest of day

dreamy cedar
#

I'm creating a bit of animation - NPC Junimos that show up and play with player children. The code looks like:

farmhouse.characters.add(new MyPlaymateNpcClass(...));

Works a treat - until the player leaves the house and comes back. Then, in most cases, one or both of those added characters gets gone. I'd like to understand how that happens (and why it seems to be inconsistent). Anybody know where to look?

shut edge
#

anyone know a way to make a shop listing actually give you different items sometimes if you buy it multiple times in a row?

#

the randomitemID will make it equal chance to be a diff item per day

#

i'd like to have one listing that can always potentially hand out two items, if that makes sense

lucid iron
uncut viper
#

hm.

brave fable
#

i see.

lucid iron
#

i guess you can do a action on buy additem?

calm nebula
shut edge
#

haha

#

i was wanting a way to make the player big as a buff recently...

lucid iron
#

forgor if u could have conditional actiononbuy though, maybe not

shut edge
#

hmm

uncut viper
#

you have If for a conditional action

lucid iron
#

ah yes, DokkanStare

#

but then u always have to buy the original item

brave fable
shut edge
#

i'll try and explain what i want to happen

lucid iron
#

i wonder if this tree.instantDestroy will get the town trees though

#

might be bad without more checks

shut edge
#

i want players to go to the hat mouse and buy a hat. i want there to be like a 10% chance or something that sometimes the hat is a different one.

lucid iron
#

a problem for chu in a day or week

brave fable
#

i'm pretty sure the town trees specifically check for takedamage/onaction

#

ah it's in performToolAction

lucid iron
#

instantDestroy goes right to performTreeFall which doesnt seem to do any check for whether tree is choppable

#

this is why i was originally hoping to use performToolAction

brave fable
#

so does this mean we can bomb town trees already

shut edge
#

could you make the effect of the ring not work if you're in town?

#

that's a dodge at best tho

dreamy cedar
brave fable
#

see if i were you i'd just duplicate the check for whether it's a town tree, because if you use performToolAction then you'll just be flooded with popups about breaking trees

lucid iron
#

yea prob for the best

teal bridge
#

And tools have a whole "use lifecycle" that has to be manually driven in exactly the right order through the "state machine" in Game1.pressUseToolButton or whatever it's called.

shut edge
#

hmmmm is it more player friendly to just have a 50/50 chance to get either hat available to buy per day? that's what it's doing now

lucid iron
#

i think yes

shut edge
#

the joke here is that one version is a prank hat with a custom debuff

#

and they are incredibly similar

lucid iron
#

if u want to make it RANDOM 0.1 for the rare hat i'd like to have a pity for it

teal bridge
#

Personally, I gave up trying to be clever and just called pressUseToolButton at various points, but this might be a valid case for a Harmony reverse patch if you want to be cleverer.

uncut viper
#

you will get bug reports about the shop giving the wrong item

lucid iron
#

like it always appears on the 14th of the month

uncut viper
#

you can use the RANDOM_SUMMER_RAIN or w/e it is for that

brave fable
#

sadly, there's never a use case for a reverse-patch

uncut viper
#

SYNCED_SUMMER_RAIN_RANDOM

shut edge
#

what's that do?

uncut viper
#

increases the odds every day

shut edge
#

hmmm

lucid iron
#

wow gacha mechanics

uncut viper
#

used to make sure you get a summer rain

lucid iron
#

is it sync'd to summer rain itself

#

or merely legacy name

calm nebula
#

yes

teal bridge
# brave fable sadly, there's never a use case for a reverse-patch

There kind of is here, I seriously thought about doing it myself, fortunately in my case I could let it go with all the static references but this is a real case where you need to invoke a game method from a different context and you want to invoke only parts of it and with slightly different logic. And it is really, really hard to recreate the logic any other way.

calm nebula
#

it;s because summer rain is Fun TM

uncut viper
#
Random random = Utility.CreateDaySaveRandom(Game1.hash.GetDeterministicHashCode("summer_rain_chance"));
float chanceToRain = 0.12f + (float)Game1.dayOfMonth * 0.003f;
return random.NextBool(chanceToRain);
#

thats the entire function

#

the entire GSQ

gentle rose
shut edge
#

how would one use that in a shop data patch then?

uncut viper
#

so i actually dont know why the wiki says there are arguments for base chance and day multiplier

gentle rose
#

that’s my usecase for most things tbh

shut edge
#

use case FAFO

lucid iron
#

i dunno i think the problem with reverse patch as i understand is how it only gives you vanilla logic

uncut viper
#

its just a condition on the shop entry

brave fable
lucid iron
#

u cant obtain the after all other patches logic right

shut edge
#
                    "Id": "{{ModId}}_MushroomizedHat",
                    "ItemId": "{{ModId}}_MushroomizedHat",
                    "RandomItemId": [ "(H){{ModId}}_MushroomizedHat", "(H){{ModId}}_MushroomieHat" ],
                    "Price": "500",
                    "AvailableStock": -1
                },```
#

this is my current entry

uncut viper
#

you could fudge it a little to not make it exactly align with rain in the summer by doing like SYNCED_SUMMER_RAIN_RANDOM, RANDOM 0.7 or w/e

shut edge
#

so i'd dupe this and add conditions to both copies?

gentle rose
shut edge
#
                    "Id": "{{ModId}}_MushroomizedHat",
                    "ItemId": "{{ModId}}_MushroomizedHat",
                    "Condition": "SYNCED_SUMMER_RAIN_RANDOM, RANDOM 0.7",
                    "Price": "500",
                    "AvailableStock": -1
                },
                "{{ModId}}_MushroomieHat": {
                    "Id": "{{ModId}}_MushroomieHat",
                    "ItemId": "{{ModId}}_MushroomieHat",
                    "Condition": null,
                    "Price": "500",
                    "AvailableStock": -1
                },```
#

like this?

brave fable
uncut viper
#

also you can probably also do this with CP's random and query tokens too

shut edge
#

didnt' even think of that

#

i'll read some dox

#

yeah that might be the simplest way here, thanks

wanton pebble
#

how would I go about checking which mod is forcing adoption rather than bio kids?

shut edge
#
                    "Id": "{{ModId}}_MushroomizedHat",
                    "ItemId": "{{ModId}}_MushroomieHat",
                    "ActionsOnPurchase": [ "AddItem {{ModId}}{{Random:_MushroomieHat, _MushroomizedHat}}" ],
                    "Price": "500",
                    "AvailableStock": -1
                },```
#

well this kinda sorta works, lol

#

gives me the regular hat and then a bonus one randomly

brave fable
wanton pebble
#

Unfortunate, because one of the problems right now (playing MP) is that whenever I get multi-marriaged, everyone else crashes out

#

which means my log is way too big right now to parse

#

I can fix it later, but it means not fixing it this session. Oh well!

gentle rose
#

other than that, 50/50

wanton pebble
#

Nope. I'll have to do some heavy testing later

gentle rose
#

!5050

ocean sailBOT
#
The 50/50 Method

This method involves splitting up your mods into two halves and testing each set individually. Required mods must be included in each test.

If your issue does not resolve with the first set, then you know two things:

  1. The problem is in that section of your modlist;
  2. The other set is good. Don't worry about testing those.

The next step is to start the split again with only the set of mods where the problem occurs. Keep splitting until you can narrow down the source of the problem.

wanton pebble
#

Yeah I know what the 50/50 is SweatSmileIan

gentle rose
#

habit from mh, sorry haha

shut edge
#

yeah i think maybe i just will make this a daily chance for simplicity

#

how often do people go look at the hat store anyway i suppose

#

unless they've got lacey of course

tiny zealot
#

or dora's friend mice! another great reason to go visit the mouse house

shut edge
#

guess i'll get this update out shortly here then

brave fable
#

sailor styles hat cat sorely overlooked

lusty elm
#

Basic Date related Mails get send regardless of online status correct?

shut edge
dusk mulch
#

Are there any community made tilesheets that have all the buildings on it?

lusty elm
#

If i set a mail to send on spring 1 year 1, will someone who joins the file on say day 3 have that mail?
What about if its sent to arrive spring 6, year 1 and they are offline those days. and rejoin back on the 10th? will they have it?

brave fable
#

it's best that you check if the host has mail if it's something expected to change the world

#

i know this doesn't strictly answer the question tho

#

and that's because i don't know

lusty elm
#

i'm just sending out the "Wand Farm" Via a mail atm, and wondering if everyone will get one.

#

Technically I can just add a trigger to send it out based on a very basic condition anyone should meet, but just wondering if anyone knew

vernal crest
#

If you send it via trigger action without a condition it will arrive on the first day that anyone loads a save upon installing the mod. I haven't checked it in MP though.

lucid mulch
#

In general having checks for exact days is asking for trouble.

#

Even vanilla does stuff like >4 days played rather than spring5 y1

vernal crest
lusty elm
#

its more im just wondering if the syntax on the mail data of <season><day of month><year> works as like an always gained if past X date (Its used as instead of a unique ID reference, which means it cant be targeted by event scripts.)

#

cuz it would be simpler if it does indeed work that way

vernal crest
#

Can't be targeted by event scripts?

lusty elm
#

cuz it doesnt have a unique Identifier

brittle pasture
#

out of the loop, why are you not using unique IDs for your mail again

vernal crest
#

I would've thought you could use (e.g.,) LocalMail spring_2_3 as an event precondition but I can't say I've tried.

lusty elm
brittle pasture
#

ah yeah, didn't know that's a thing
though I would recommend just using trigger actions

#

what if some other mod decides it also wants to send a mail on spring_2_3

uncut viper
#

it is an option but its not an option you should use

#

for that reason

vernal crest
#

Yeah that's why I don't recommend it

brittle pasture
#

then you have to fist fight the other mod author

#

figuratively

lusty elm
#

ah, I assumed that it would just send them all, otherwise it would have a note saying Dont do this.

brittle pasture
#

we should add that

vernal crest
#

There wouldn't be an "all" though because the last mod to load would just overwrite the value from the earlier one.

#

Wouldn't it?

brittle pasture
#

yeah

#

data/mail is a dictionary, and you can only have one value per dict key

dusk mulch
#

@uncut viper Is there any way to use "Arbitrary Tilesheet Access" without editing the TMX file in notepad and just using tiled?

uncut viper
#

its the same reason there isnt a note saying "dont add another Data/Objects item called "(O)14"

#

yes, just recreate the required folder structure inside the folder of your tmx before adding the tilesheet

#

i.e put a "Content" folder inside the same folder of your tmx and go from there

brittle pasture
#

(I'll add a note to the wiki anyway, how does this sound:
"It's not recommended to use the date-based format for compatibility reasons, because if multiple mods add mail with the same key only one will get sent")

lusty elm
uncut viper
#

it does work, and it is functional

lusty elm
#

You know exactly what I mean, if it causes incompatibilities then we shouldn't be putting it as a primary option.

uncut viper
#

it causes incompatibilities the same way adding two items with the same item ID causes incompatibilities. its also not being put forth as a primary option, its on a wiki page explaining how the game handles mail code

brittle pasture
#

done

vernal crest
#

The wiki is a reference for how the data in Stardew functions, not a step-by-step guide or, in many cases, a guide to best practice (though sometimes there is stuff about best practice as a little treat).

#

But it is cool that we all have access to editing the wiki and can update it to add useful stuff like that when we come across it. Rokugin and I reworked some of the Data/Shops page info the other day because the information about dialogue randomisation was wrong (I assume it was correct when it was written but then the game changed and the page didn't).

woeful lintel
#

"Hmmm, I wonder why the animation doesn't work..."
My brand new, handy debug print command: "Animation Data TODO"

lusty elm
#

They are intended as guides though (even if not step-by-step ones), it IS used and has pretty much always been used for guidance, because for the longest time, there were no step-by-step guides, no templates. When people don't know how to do something or how something works that is where they checked to try to learn, most of the pages even have working examples to mirror and adapt off of, Even the Modding:Mail data page says "This is an advanced guide."
I do agree with it being Data forward, but I believe it should also warn of pitfalls and limitations of usages, as people do reference it a lot to learn.

I'm also pushing on it because I'm kind of annoyed by the "its the same reason there isnt a note saying "dont add another Data/Objects item called "(O)14"." I realize it was probably intended as a joke, but you're is basically saying, "Its common sense if you know how the structure of this works, so there isn't a need to warn anyone in documentation." By opposing the note, when people don't know how the structure works exactly, I see it as setting them up for failure, when its avoidable.

lusty elm
#

In an attempt to get it back to something more light-hearted, Here have a Tiled Image of the Beach Cave I added to the map i'm working on.

winter dust
#

oooh, that's really coool.

fathom hound
#

This is my first time making an artisan machine mod, and I referenced a couple other modders' code to help me finish this.. when I try to put clothes into this machine it won't work, what can i do? also, what does this mean? please ping thank you! https://smapi.io/json/none/1afeb27853ce4cc381995e81450c1944

dusk mulch
#

What tilesheet/map would blue grass be in?

lusty elm
#

its spawned using Paths, the same way normal grass and Debris is. Its the Blue tile at the bottom.

brave fable
#

(if you need the spritesheet of the grass itself, it's in terrainfeatures/grass)

remote radish
#

What is the required/ appropriate resolution for map overlay of farm?

lusty elm
#

for the Worldmap?

remote radish
lusty elm
#

I'm not sure the exact dimensions but i know the base game versions are in LooseSprites Folder under the names "map" "{{season}}_map" Where {{season}} is used for summer, fall, and winter respecively.

unique sigil
remote radish
#

Thank you

unique sigil
#

it's listed in the assets tab

fathom hound
#

Are clothes not able to go in machines?

lusty elm
#

I am not sure as I've never worked with machines, Just wanted to make it clear we aren't ignoring you, its just we tend to stay silent when we can't provide help or knowledge. Maybe https://stardewvalleywiki.com/Modding:Machines can help in the meantime, until someone knowledgable responds?

latent mauve
# fathom hound

I tried this a few days ago for my recycling machine modification to try to turn clothing into cloth, clothing cannot currently be used as a machine input.

#

See my science on this a few weeks ago.

fathom hound
#

RIP 8 hours of my life SDVpetcatsad

latent mauve
#

Well, on the upside, Selph said maybe they might be willing to make clothing able to be input through EMC at some point?

#

so could shelve it for later

brave fable
#

really can be narrowed down to (O) qualified items

fathom hound
#

I asked Pathos if there’s maybe possibility of adding it to CP SDVpufferwaaah I am so sad I worked on this all day

#

But I’ll keep it tucked away in meantime thank you

latent mauve
#

I haven't been around, but I guess nobody else that was around for my science was around to inform you either. Sorry you spent all that time on it!

fathom hound
#

It’s okay, I just thought I coded it wrong, silly me ):

uncut viper
latent mauve
#

Furniture does work. I scienced that at the same time!

uncut viper
#

trinkets, too

#

BCs are also just Objects under the hood too, arent they

latent mauve
#

The things I listed in that message should be ones that aren't subclass-objects

lusty elm
#

I am assuming those are also Invalid for stuff like Recipes as well, so you can't do a conversion step to make it usable as a custom object for machine input?

uncut viper
#

recipes should be able to do any qualifier now i believe, for machines theres just specifically a statement inside a function that says if (not an object) return

brave fable
#

and they'd just be B if they weren't craftable

fathom hound
# latent mauve

If @ivory plume could add all of these as inputs, I’d be so excited to see what mods would come out of them SDVpufferwowSDVpufferheart

uncut viper
#

it is only because all of those things lily listed are not the same C# class or a subclass of Object

latent mauve
#

So, yeah, I suppose a workaround could be making a crafting recipe to turn clothing into cloth if they do any qualifier, but that's less fun than having a machine do it with animations and stuff. >_>

#

Also I'd be terrified that it might grab the clothes you're wearing to convert.

fathom hound
#

Plus I don’t use cloth for all of them

lusty elm
#

Speaking of Pathos, I noticed the other day that the FarmHouseFurniture Property for maps Requires a Numerical ID (Which they used to be exclusively), where many of the Furniture added in 1.6 has a name ID, so they become invalid targets by default. I'm unsure if this is a Base Game or Smapi processing thing, If I wanted to ask about getting that patched/looked at, should I be poking Pathos? or is that like a bug report thing? I'm unsure.

uncut viper
#

that is a base game thing and if i had to guess probably something thatd be put in an eventual 1.6.16+ (or maybe not even maybe we're done until 1.7 now or something) but probably worth bringing up to put it on the list, though i dont know if someone else already has

lusty elm
#

Is there a place/person/method that is recommended for reporting it, or a request list somewhere?

uncut viper
#

i do not know

#

i just usually wait until pathos is already here and then say "oh by the way, Pathos"

#

i know there is a forum for reporting vanilla bugs, but its not really a bug per se

#

just something that was not unhardcoded

latent mauve
fathom hound
#

!officialbug

ocean sailBOT
lusty elm
uncut viper
#

it isnt a bug, though, and it doesnt come up outside of a modding context, so i dont think theyd want it there

#

like it does work perfectly, just... unfortunately overlooked during the 1.6 alpha

lusty elm
#

Pathos always says Pings are Fine, But it always makes me nervous to Ping Anyone. SDVpufferchicksweatsip

dusk mulch
#

oml mapping is FUCKING KILLING ME I HAVE BEEN ON THIS 1 BIT FOR 4 HOURS AND I KEEP MISPLACING IT AND NOT REALISING

weak pulsar
#

Do some mods not work on Steam deck vs PC? Probably a dumb question but I'm pushing my Steam deck to it's limits and what works on PC comes with weird bugs on the deck woop

weak pulsar
#

I'll head there next if I can't figure it out--I didn't want to make a whole post when I know I'm pushing it atm wheeze I mostly wanted to see if people went "oh gosh yeah steam deck is weird"

dusk mulch
#

Fair enough, srry!

gentle rose
dusk mulch
#

finally... i have gotten half of it done...

#

wait, half? ONLY HALF? AHHHHHHHHHHHHH

lusty elm
#

Minor note, you may want to make that bridge 2 wide so you can go over it with a horse.

dusk mulch
#

That would be a game suggestion, not something for me. (This is an original farm map I am editing for my mod) /nbr

#

!officialsuggestion

#

.

#

!suggestion

#

!bug

#

BRO WHAT IS IT

covert river
#

idk if this is the right chanel to ask but:
im editing a building mod in photoshop right now, do i need to change any coordinates when i want to change the roof? id like to make it a bit bigger but i will keep the door position
thanks!

dusk mulch
#

I did it.. I FINALLY FUCKING DID IT! HA HAAAAAA YESSSSS

dusk mulch
covert river
#

ill leave the door where it was

dusk mulch
#

(someone corect me if im wrong)

covert river
#

thank u so much!!:)

fathom rapids
#

can someone please remind me what the fuck this

      loaded  | conditions | applied | priority | name + details
      ------- | ---------- | ------- | -------- | --------------
      [X]     | [X]        | [ ]     | High     | Loading Seasonal Looks farmer's portrait (Load aedenthorn.FarmerPortraits/portrait)``` can mean
#

specifically the loaded yes conditions yes applied no part

#

please 🙏

hallow prism
#

usually if it's loaded, has proper condition but isn't applied, either :

  • you have the wrong target
  • you haven't loaded the content yet
fathom rapids
#

the target should be fine, and also, it's working in my game, this is a bug someone else is seeing.
What does "haven't loaded the content yet" mean?

#

I've got HasFile: FromFile: true in the conditions

hallow prism
#

basically

#

in this case i assume, having loaded the save, and spoke to a npc

#

like, typical example would be : you want to see if shane portrait is applied, you need to have spoken to shane

#

otherwise the game will not try to apply that portrait

fathom rapids
#

huh
id assumed they would have done that first but technically i didnt ask and they didnt provide a screenshot
ty

hallow prism
#

farmer portraits i believe are shown when you speak to someone so i assume it's when it's applied

fathom rapids
#

yea

#

im mostly assuming whatevers going on with their situation is a farmer portraits bug and not on my end, but im going to do my best to help anyway (if nothing else if it's a common bug i might want to do a workaround or something)

#

tyvm

covert river
#

where exactly can i change the size of a building? or what would i add to define the size? (id like to make the slime hutch bigger than it is)

unique sigil
covert river
brittle pasture
#

can you clarify - did you mean interior size or external building size

unique sigil
#

!unpack you have to unpack the game first

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!

unique sigil
#

and then use content patcher to edit the building data

covert river
covert river
brittle pasture
#

(then yeah building data is what you want)

covert river
#

great thank u!

covert river
#

okay ive tried for hours now and i just cant seem to find out how to edit the size, so if anyone can give me a bit of an in depth tutorial i would highly appreciate that 😭

ivory plume
ivory plume
brittle pasture
#

(if it's not too much effort)

fathom hound
brittle pasture
#

ok so my workaround idea so far is patch performObjectDropInAction and turn
if (!(dropInItem is Object @object)) return false; into
if (!(dropInItem is Object @object)) @object = MakeWeeds();

#

because interestingly the machine code path doesn't (seem to) care about @object

#

and weedses should fail every other code path that does

#

someone tell me this is a terrible idea quick

acoustic summit
#

Its a beautifully silly idea

brittle pasture
#

welp, ran into the first and likely fatal snag: you can't hold hats and shirts in hand

#

to put them in the machine

#

hmm perhaps I'll just add a button press event for that (if machine is set to allow clothes and active slot is clothes then just drop clothes in)

drowsy pewter
#

Do you guys get random friend requests from people in this server who've never spoken in this server? Because I do occasionally but ignore them because I have DM requests enabled instead. Wondering if they're trying to contact me about comms or mods though SDVpufferdizzy

brittle pasture
#

I occasionally get them, but people who actually need help will just send a DM request

true coyote
#

the times its happened to me (once in here) and in other servers I'm in, they're doing dodgy stuff

brittle pasture
#

I ignore the rest

drowsy pewter
#

Okay good

brittle pasture
#

they're almost always scams from experience

hard fern
#

I get random friend rqs, and usually ignore them if they don't have a message attached

#

Like no dm requests or anything

gentle rose
woeful lintel
#

That's a really cool idea! It would be nice to add a way to make custom furniture displays for mods with custom furniture. I'm thinking about how Funriture work in vanilla (no price, easy to replace), and how custom Funrniture mods often work (many variants of the same item in different colors), and I think it would be nice to have a way to exchange Funriture for their variants, this way, if you buy a yellow couch, you can exchange it for the same couch of any color.
Of course, I would gladly help setup a Framework to help modders do all this custom stuff. Also if you need help with Furniture specific code, you can ping me, I'll do my best to help!

flat sluice
#

Hi,
so, I'm checking all parts of my NPC mod one more time (before its official public-wide release, a few pre-testing versions are available here: https://github.com/DenisSilent/Eleanor/releases), and right now I am stuck at my secret mail. For some reason, I can't quite figure out why the mail doesn't trigger/load into the game, or at least to the farmer's mailbox. However, my debug mail (which is commented out & using the same formatting as the one that doesn't work) was OK.
For comparison, I include both the mail that works and the other one that doesn't.
Is there a kind soul that would help me?

not-working mail: https://smapi.io/json/content-patcher/eb22ec37aab648dba515ccf759672d53#L64
working (commented out) mail: https://smapi.io/json/content-patcher/e79240946d3d46a6a9bb4e9c3167a819
i18n: https://smapi.io/json/i18n/43d34bbb523746cd8dbfbea273108721#L572
log: https://smapi.io/log/72ab7399cf1649669f3f722d925c744a

ocean sailBOT
#

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

brittle pasture
#

you can put hats and shirts into machines just fine

#

the problem was that, drumrolls please, ||Producer Framework Mod has a skipping prefix that blanket banned all non-objects from being put inside machines||

#

anyway this should be in the next version of EMC, with the caveat that it only works if PFM isn't installed

brittle pasture
#

(side note but I got really really lucky lol, I would not have caught this if I didn't have PFM enabled on my test save, and if a user reports that it doesn't work in their personal mod list I probably would have gone insane trying to debug it)

drowsy pewter
#

I usually ask people to test without PFM/PFM-related mods first if they have issues with our machines; its happened a few times

reef kiln
brittle pasture
#

PFM still has many features not supported by vanilla CP machines

lucid iron
#

I have seen logs that have PFM installed with zero packs

brittle pasture
#

but EMC should cover that gap

lucid iron
#

Some people don't remove mods until they explode

drowsy pewter
#

I had someone who reported a bug to me, and they were using PFM, and the only PFM pack they had installed was the template/example pack that had all the vanilla machine rules in it

#

Lol

reef kiln
drowsy pewter
#

(that was somehow preventing our CP-modded rules from working)

brittle pasture
#

the most significant one is fuels on a per-recipe basis instead of per-machine

reef kiln
drowsy pewter
#

That's why EMC covers it

lucid iron
#

I guess there's also stuff that needs digus' other machines framework custom cask mod

#

Emc doesn't do anything there right

brittle pasture
#

no, but my impression is that vanilla cask output works fine

drowsy pewter
#

i thought so too but havent looked into it

lucid iron
#

I thought it's mainly like, controlling the time needed

#

To do the cheese behavior

brittle pasture
#

there's AgingMultiplier

#

which granted is not very flexible

#

just a 1-2-4 ratio for silver-gold-iridium

lucid iron
#

Dokkan need more knobs

brittle pasture
#

I'll add those knobs when there's demand SDVpufferchicknight

lucid iron
#

But yeah there r various bits of logic locked inside outputmethods, but most machines r exposed

#

One thing that i was annoyed with is that ItemQueries don't get input item in context

#

So i had to do outputmethod for trinket upgrade stuff hokuhands

#

This is very much a C# only gripe ofc

brittle pasture
brittle pasture
lucid iron
#

Shame cus gsq do get the real instance lol

brittle pasture
#

hmm makes sense, if you care about the actual item you'd do custom output method anyway

tribal ore
#

Does anyone know if the wedding day counts as a festival day?

#

IS_FESTIVAL_DAY

#

If not, is there any way to ensure that an event won't trigger on the wedding day?

charred plover
#

what coordinates do you guys normally use when testing to see if an npc spawns, im trying to see if my npc will spawn but the coordinates i used @ the bus stop made it so the npc is invisible (orr i messed up!)

ornate trellis
#

what are the coords

charred plover
#

4,5

#

im betting on i messed up

brittle pasture
#

Spiderbuttons.BETAS_PLAYER_WEDDING_TODAY

ornate trellis
#

might be the issue

charred plover
#

ahh

tribal ore
charred plover
#

let me try a diff placement then

ornate trellis
#

try 19,14

charred plover
#

thank you void

tribal ore
#

Trying to avoid extra mods if possible

ornate trellis
#

thats like close to the ticket machine

#

just to see if the coords are the reason

charred plover
#

i was trying to figure it out lol i was so confused

#

yeah will do

#

if its not then i just messed up along the way

charred plover
tribal ore
#

I might be able to make a trigger work off of PLAYER_NPC_RELATIONSHIP... going to try that

charred plover
#

thank you for the help on that one

ornate trellis
#

huh, odd

charred plover
#

its just a me issue

#

im new to modding and set everything up

#

prollly skipped a step along the way or something

#

but no errors pull when it happens so im just crying abt it

ornate trellis
#

you could post your json here if you want someone to check if theres a mistake

charred plover
#

i might

ornate trellis
#

could aslo run a patch summary <modID> command to see if all assets loaded

charred plover
#

smart, i didn't think abt that

#

let me give that a shot if this next test doesn't work

charred plover
#

i believe its a schedule issue but i rlly don't know if the npc is just invisible

covert river
#

and the link seems to work with items

#

and it wont let me unpack the building file now LOL

brittle pasture
#

did you use the unpacker as linked in the command

#

as for the code, do you see how the EditData moss soup example targets Data/Objects, edits a single field on the MossSoup item to change its price

covert river
#

yes, i put it in the folder and ran the unpack command but it just did not do anything

#

i will try it with stardew hack now

brittle pasture
#

you want to do the same but target Data/Buildings, edit a single field on the Slime Hutch entry to change its size

#

ah you want to use StardewXnbHack in most cases, not the other one
StardewXnbHack should just work™️

#

once you unpack Data/Buildings it should be clearer as to what you should edit

covert river
#

ahhh okok i get it

#

yea now there is a size code

#

so now i just turn it pack into a xnb file and it should work?

brittle pasture
#

no, you make a Content Patcher pack

#

!xnb it's not recommended to repack xnbs

ocean sailBOT
#

XNB mods often break the game and are not recommended. See:

For mod creators, see editing XNB files for help unpacking & editing them (including for use with Content Patcher).

brittle pasture
#

follow the guide above to make a basic pack

ornate trellis
#

!json

ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.

When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.

charred plover
#

yeah my jsons are all normal

#

atleast from what the io/json says

#

ill resubmit and let you guys take a look

ornate trellis
#

even if the validator shows no errors you can have something messed up in there that it might not register

#

like when you slightly typo one of your IDs, the validator doesnt know that

charred plover
#

yeah that's what i was thinking

#

i've been regoing through all of it and trying to see what i did wrong

#

this is a very rough draft

#

so excuse how it looks lol

brittle ledge
#

Put in your console debug where yourNPCname

#

If you get an error then they're not spawning at all

charred plover
#

alright one sec

#

gotta run sdv again

covert river
brittle ledge
#

If they're not spawning it's often a problem with your portrait or sprite loads.

ornate trellis
#

you dont need the Format: 1.6 in schedules

charred plover
#

oh thank you

brittle ledge
#

Ah yeah, I see the problem

charred plover
#

.. lol

#

im so new pls forgive this 😭

brittle ledge
#

Your sprites are targeting Sprites/yournpcname but it should be Characters/yournpcname

charred plover
#

ah so that was right originally

#

it errored out when i had that the first time so i changed it

brittle pasture
ornate trellis
#

now i wonder what that error was thonking

charred plover
#

i ran so many tests at this point its exhausting lol, i see why you guys get frustrated sometimes

brittle ledge
#

I would also suggest loading a "default" set of sprites and then making your seasonals conditional Edits

tiny zealot
#

(C#) if i'm using reflection to access a private Func, do i use GetField for that? and how would i then invoke it

charred plover
#

do you mind going into further detail for me? just so i fully understand and don't mess it up

brittle ledge
#
      "Action": "Load",
      "Target": "Sprites/Talysi.Astrid",
      "FromFile": "assets/Sprites/Astrid_Sprite.png",
      "When": {
        "Season": "Spring, Fall, Winter"
      }```

This part, remove the When condition
charred plover
#

this is the current setup

#

kk, thank you

brittle ledge
#

Then on your summer sprites, turn that Action: Load into Action: Edit

#

(Or you can comment it out/remove it if you want to be sure the load works)

charred plover
#

we can try edit for now, when summer hits in game ill know lol

charred plover
#

kk

brittle ledge
#

(It might need to be EditData, I'm on phone so I can't check the syntax in the CP docs`

charred plover
#

{ "Action": "Load", "Target": "Characters/Talysi.Astrid", "FromFile": "assets/Sprites/Astrid_Sprite.png" }, { "Action": "Edit", "Target": "Characters/Talysi.Astrid_Beach", "FromFile": "assets/Sprites/Astrid_Beach.png", "When": { "Season": "Summer" }

#

oopsies

#

that's how it looks rn

charred plover
#

sorry for ping

ornate trellis
charred plover
brittle pasture
#

oh wait I misread

charred plover
#

ill give it another test run

brittle pasture
#

I'm actually not sure now lol

gentle rose
brittle ledge
ornate trellis
covert river
brittle pasture
ornate trellis
brittle pasture
#

note that I use Fields instead of Entries, and specify only the Size field

#

because if I use Entries I'd wipe the other fields

gentle rose
#

_memory conversation topics also aren’t affected by skipping time

covert river
#

my stardew is starting now ill check how it looks like :D

charred plover
#

oh editdata didn't work either

flat sluice
# brittle pasture yeah make sure to use `Fields` so you don't override the other fields of the Sli...

Err... one question - I use "Entries" in patches the whole time, it should always load only one patch? Because in my schedules (not only schedules), I always use "Entries" and the code looks like this: https://smapi.io/json/content-patcher/bdb3c29f5185414c835a261030d532b0; but when I run patch export Characters/schedules/StrojvedouciDenis.Eleanor, I'll get all the patches, like here: https://smapi.io/json/none/0371f4e56c8b49a1a4066e5ce2e46ee3. So is there really something different? Or can I safely use "Entries" everywhere?

(BTW, when you or someone else is done with helping others, could you also help me with this? #making-mods-general message)

brittle ledge
charred plover
#

will give it a shot

brittle ledge
#

(This is why once I get it right once I just copy-paste that next time I need it SBVLmaoDog )

charred plover
#

this is kind of fun to do

brittle pasture
charred plover
#

homescreen acquired

flat sluice
latent mauve
charred plover
#

like just a min ago

latent mauve
#

cool, just got here so I wasn't sure what had already been corrected

charred plover
#

np!!! thanks for the heads up

#

okay so the npc spawned but she's facing the wrong way lol and i can't talk to her

#

this is good progress

brittle ledge
#

That is good progress! It means your disposition and images are loading in properly. Now you can check her dialogue file.

charred plover
#

i only put intro dialogue as a start

#

"Hey, what are your plans today?$0$b$e/That's good, Have a good day then!$h"

#

just some tester stuff

brittle ledge
#

Ah well that's probably why then SDVpuffersquee I'd drop in a set of Mon/Tues/Wed/etc just for a base.

charred plover
#

kk! thank you

brittle ledge
#

Re: facing the wrong way, it could be the facing you spawned her in with, or it could be your spritesheet is out of order -compare with a vanilla sprite sheet to check the latter.

brittle pasture
flat sluice
#

!i18n

ocean sailBOT
#
Creating Translation Capability

So you'd like to stop writing all of \"your strings straight in your content.json?\" and/or you'd like the capability to see all of your strings across all of your .jsons?
Introducing i18n!

  • How to make your mod compatible with other languages: stardewmodding.wiki.gg

  • The file where you can put all of your strings is called default.json, and it sits in a folder at the same level of your assets, named "i18n".

  • If you're converting from an older version of the game, there's a converter for ease-of-access.

Not to be confused with {{DynamicTokens}} since these require the specific {{i18n:<KEY>}} modifier

charred plover
#

prolly skip, this is a personal mod to test and try new things

#

if i want to go public with a mod it'll be a few months

brittle pasture
charred plover
#

i don't want to give out a bad mod to people

tribal ore
# ocean sail

This is helpful to me right now, though, so thank you

flat sluice
charred plover
#

good for you!! good luck :D

brittle ledge
#

My first NPC mod was two weeks, my second one is two years and counting. It takes the time it takes SDVpuffersquee

flat sluice
charred plover
#

bah im stuck on not being able to speak to her

tribal ore
flat sluice
tribal ore
#

Want to be done by the end of this month

charred plover
#

thanks ill take a look

tribal ore
brittle pasture
#

what does debug showmail {{ModId}}_Secret.Mail.Eleanor_warning (change {{ModId}} to your mod ID) do

brittle ledge
tribal ore
#

"Now" will put it in the mailbox right away

flat sluice
charred plover
tribal ore
#

So the letter should show up the day after you sleep

flat sluice
flat sluice
charred plover
#

tyty

brittle pasture
brittle ledge
charred plover
#

i found it

#

gotta love the name i picked

covert river
#

so its just a text file

ocean sailBOT
#

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

calm nebula
brittle pasture
tribal ore
#

Try putting a random string in there

#

Just to confirm mail is being sent

#

My guess is that it doesn't like your |DT_dialogues bit

flat sluice
flat sluice
tribal ore
#

Sure, but this is in a letter

#

If you are trying not to send a letter when a flag is sent, use a When condition

brittle ledge
# charred plover

The target for your dialogue isn't correct...check the wiki to be sure but I think you should target Dialogue/yournpcname

brittle pasture
charred plover
#

i've been staring at the wiki nonstop

ornate trellis
#

Tals have you seen the specific modding wiki

brittle ledge
#

In general, your Target is where in the base game you're putting the data, and you usually have a specific format for where you should be targeting kyuuchan_nod2

charred plover
#

i have

flat sluice
ornate trellis
#

tia got a cool npc tutorial on there

tribal ore
charred plover
#

its what i've been studying nonstop to make sure i get things correct before coming here 😭

brittle pasture
tribal ore
#

Try "test", then try the whole string without the dynamic tokens

flat sluice
brittle pasture
#

did you reload i18n

#

and patch reload

flat sluice
#

Both of it

brittle ledge
#

If you're using the NPC tutorial and find anything confusing, please let me know so I can tweak! SDVpufferheart

tribal ore
charred plover
#

i think i just struggle more than others to understand things since i question everything

brittle pasture
#

maybe patch export Data/mail?

#

and see what it looks like in there

flat sluice
charred plover
ornate trellis
#

this, Tals

flat sluice
#

Here, it's there fully ok...

charred plover
#

ye i have this saved too

flat sluice
charred plover
#

ill rego over the details so i make sure i have my understandings correct

ornate trellis
#

it is! tia is a great tutorial maker, very nice to understand it :3

brittle pasture
#

huh
your json file posted above has your mail as {{ModId}}_Secret.Mail.Eleanor_warning
but your patch export says StrojvedouciDenis.Eleanor_Secret_Mail_Eleanor_warning

brittle pasture
#

did you change something inbetween posting the question

#

anyway make sure your trigger and your mail data match exactly

flat sluice
brittle pasture
#

sure

flat sluice
brittle pasture
#

trigger, mail, i18n

brittle pasture
#

then the debug command that I posted above doesnt work because you changed the name

#

what happens if you use the correct mail name

flat sluice
brittle pasture
#

hmm I don't see any reason why this wouldn't work now
does the debug command show "Test" properly

#

debug showmail StrojvedouciDenis.Eleanor_Secret_Mail_Eleanor_warning

charred plover
#

@brittle ledgesorry for ping tia, to verify, should i 100% make a disposition.json rather than putting it all into content.json? & if so, should i put it into assets

tribal ore
#

FWIW: I'm not seeing anything off, either

tribal ore
brittle pasture
#

now swap back to the old i18n and see what happens

flat sluice
charred plover
#

hmm

latent mauve
ornate trellis
#

you just gotta remember if you do to do an include

tribal ore
charred plover
#

alright that sounds good

ornate trellis
#

oh lol same braincell moment

flat sluice
latent mauve
flat sluice
latent mauve
#

It's now in Data/Characters instead.

tribal ore
brittle pasture
#

now start fresh save and sleep SDVpuffersquee

flat sluice
tribal ore
#

fingers crossed

late dust
#

Good evening everyone!!!
I created three custom map, which connects to two vanilla maps via few tiles with "AddTile", all warps work fine in the game, but the log writes me this:WARN game Failed parsing warp 'Backwoods Custom_Woods Desert' for location 'Custom_VaiAlDeserto'. Warps must have five fields in the form 'fromX fromY toLocationName toX toY', but got insufficient fields.
I think there is something wrong with the map, but I didn't understand where I went wrong what can cause me this warning?

flat sluice
#

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

ornate trellis
#

id start with posting how you did the warps

latent mauve
late dust
latent mauve
#

Whereas for Tile Properties with Action Warp, you don't need the first two coordinates, so the format is different.

ornate trellis
#

theres a link in the command

flat sluice
late dust
flat sluice
brittle pasture
#

Even after sleeping?

tribal ore
#

Because then it should be there once you wake up, without having to sleep to the next day

flat sluice
latent mauve
brittle pasture
#

Yeah AddMail by defaults adds to the tomorrow mailbox

tribal ore
flat sluice
brittle pasture
#

if you want it to be immediate add Now to the trigger action

flat sluice
#

Should I do fully new save again?

tribal ore
covert river
ocean sailBOT
#

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

tribal ore
#

And I think you will see the expected behaviour

flat sluice
# tribal ore Yes. Just have the one trigger action with "Now"

Yeah, OK, having that:

      "LogName": "Eleanor - secret mails - trigger",
      "Action": "EditData",
      "Target": "Data/TriggerActions",
      "Entries": {
        "{{ModId}}_Secret_Mail_Eleanor_warning": {
          "Id": "{{ModId}}_Secret_Mail_Eleanor_warning",
          "Trigger": "DayStarted",
          "Action": "AddMail Current {{ModId}}_Secret_Mail_Eleanor_warning Now"
        }
      }
    },```
covert river
tribal ore
flat sluice
latent mauve
# late dust

okay, and what about the Map Properties when you don't have an object selected?

flat sluice
tribal ore
#

High five!

latent mauve
# late dust

Okay, you see where it says Warp there? That's the one it is complaining about

flat sluice
#

Thanks so much guys for helping me! (Don't worry, you will be mentioned in my changelog!)

tribal ore
#

So thank you for posting the link earlier, too

late dust
latent mauve
flat sluice
brittle pasture
#

you need a Format field in your content.json file

#

something like "Format": "2.5.3" should do it

late dust
tribal ore
#

I don't have one yet

latent mauve
brittle pasture
#

yes, usually the latest version of CP

late dust
flat sluice
tribal ore
#

Nice, thanks! I'm considering whether to put my stuff up on github before release, or just let it live on Nexus

quiet dock
#

can anyone help with making an NPC?

tribal ore
tribal ore
flat sluice
latent mauve
#

Also for NPCs:

#

!npc

ocean sailBOT
#
Creating a Custom NPC

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

latent mauve
#

(my builder sheet is at the bottom, if you use it and have questions, let me know)

rare orbit
#

so... any good programs to translate mods? i am translating this mod but unfortunately the program i am using is giving me hell.

#

it's in korean and normally with the Transtar program it works but nope!

#

don't feel like workin today!

flat sluice
tribal ore
# rare orbit https://www.nexusmods.com/stardewvalley/mods/5934

I don't have any suggestions, but wanted to repeat a small warning: if you use an AI program to translate, sometimes it will hallucinate and add entries that don't exist. So you will have to check the end result over very carefully anyway for extra/missing data

rare orbit
#

ahh

flat sluice
#

BTW, that mod is outdated and might not work in SV 1.6.15!

rare orbit
#

ahh

rare orbit
flat sluice
rare orbit
#

usually older mods work if the framework is updated

#

usually

flat sluice
hard fern
rare orbit
#

so for the mod right? just install the mod like normal and it'll auto translate it?

#

so true. i got joza when i tried to run it through google translate

#

usually it's how i do my translations just run it in a translator and then proofread it

hard fern
#

I was trying to translate cooking instructions and watched it go through 7 variations of the sentence, none of the correct

#

I think what happens is it sees other characters (sometime numbers or units of measurement) and gets confused

rare orbit
#

noted

hard fern
rare orbit
#

ahh ok! any good tools to run it through?? i usually use multiple

flat sluice
rare orbit
#

basically it'll make a copy of it right??

#

i know alot of questions

hard fern
#

Im grabbing that nexus link btw haha, makes my job easier

#

Not like i ever play the game anyways...

covert river
rare orbit
#

hopefully it makes translating korean easier for me ;w;

#

hopefully