#making-mods-general

1 messages ยท Page 63 of 1

brittle pasture
#

yes, hence 'unused'

thorny tiger
#

so how does it use everything and not start at 0

thorny tiger
rancid temple
#

Oh it looked like a seed to me, but I still haven't been able to start a playthrough with it lol

thorny tiger
#

doesnt look like it would be unused

#

its a seed

brittle pasture
#

I have never seen that object nor seed appear anywhere in my game

thorny tiger
#

fair enough

rancid temple
#

Anyways, you don't have to use everything on your sheet

thorny tiger
#

well yeah

rancid temple
#

It still messes up your index, but you can just skip those numbers

thorny tiger
#

perfect ive got my potato in game now

#

and it doesnt use the fish texture anymore ๐Ÿ˜†

rancid temple
#

Fish placeholder lol

#

For a test yesterday I made a fish a blue square, good times

thorny tiger
#

yeah i should probably be using placeholders instead of making actual textures that i will never use again

#

ah well

#

oh uh

#

how big are Crops sprites meant to be

velvet narwhal
#

16x16, unless you're making a giant crop

rancid temple
#

I think crops are 16x32 aren't they?

velvet narwhal
#

oh wait, actual crops SDVpufferthinkblob

thorny tiger
#

mixed answers

velvet narwhal
#

these things, squints looks like 16x32

thorny tiger
#

ok makes sense

#

the potato one barely squeezes into 16x16 so the green bean clears it up

chrome mountain
ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 38 C# mods and 35 content packs.

velvet narwhal
#

some portrait somewhere got screwed

#

C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content\Portraits\Aquarium.Curator.xnb is always my first notification that i screwed up my portraits somewhere

hallow prism
#

hmm

#

i am not sure it's different language thing, however?

#

there is a load for
{
"LogName": "NPC Curator",
"Action": "Load",
"Target": "Portraits/Curator, Characters/Curator",
"FromFile": "assets/{{target}}.png"
},

velvet narwhal
#

tis not

hallow prism
#

Aquarium.Curator

velvet narwhal
#

is the folder structured as Assets/Portraits/[Curator].png ?

hallow prism
#

i mean

#

the internal name search for Aquarium.Curator

#

so it should have a bit of code to say to use curator instea

#

d

half tangle
#

Would it be a bug that isTilePassable returns false for a tile that is passable? It returns true for plenty of places where a player actually collides with things like the boulder blocking the mines in the first few days, but that's not an impassable tile per se. Anyway, it checks tile index properties, but makeMapModifications in IslandSouthEast.cs sets the tile properties of the tiles at the "Buildings" layer outside the cave entrance when the pirates are there, but their tile index properties remain without the Passable property, so isTilePassable returns false when those modifications happen.

isTilePassable is definitely of limited scope, but I bring this case up because that implementation of makeMapModifications seems unique. A fix would simply change those tile index properties in the .tmx to have Passable.

hallow prism
#

some bits of sentence were eaten by the fishes

chrome mountain
velvet narwhal
uncut viper
#

(question for the map makers. is it correct that i cant have just loose TileData on my Buildings object layer with nothing on the other Buildings layer beneath, i need to have something placed in the data(?) Buildings layer too for it to actually get loaded in? or am i just doin something wrong)

velvet narwhal
#

invisible tiles count as 'something' being there

rancid temple
#

I'd rather just duplicate whatever is on the Back layer there instead lol

uncut viper
#

yeah, i figured, just wasnt sure if that 'something' was required. woulda saved a lot of frustration had i known, oops orz

#

i was using Buildings bc the TileData i was copying was in Buildings

rancid temple
#

Invisible tiles == hell

velvet narwhal
#

y'know i should probably go back and fix my interior because the entire buildings layer is just invisible tiles

#

hindsight is 20/20

uncut viper
#

in this case it makes sense for me to use Buildings anyway since it shouldnt be the case that theres nothing on the buildings layer in this context anyway where the tiledata is. just my first time in a long time actually doing anything map related and was trying to detect a custom tiledata property for testing and was confused why my game couldnt find it lmao

#

(trying to detect it in C# i mean)

rancid temple
#

I thought SMAPI would cry about it, but I can't remember

uncut viper
#

as far as i could tell it was completely silent about it

velvet narwhal
#

it just straight up ignores it, like "object? what object, i don't see a tile there"

#

tbh it might be a Tiled thing

severe wren
#

Guys can someone send haley spritesheet for sdv 1.5.6

#

I wanna use it as template

pine elbow
#

!unpack

ocean sailBOT
#

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

uncut viper
#

(just make sure you get the version of xnbhack for 1.5.6, though)

severe wren
#

Can you unpack sdv on mobile?

uncut viper
#

not a clue slash probably not? mobile modding in general is weird and not many people here will be able to help you with it

velvet narwhal
#

what's the other xnbhack? it might but that's like, a shot in the dark

rancid temple
#

Yeah having to have a version of the game you can't legally acquire makes it kind of hard to get into lmao

velvet narwhal
#

(i just looked at it, it's windows only)

uncut viper
#

i mean some people might just not have updated their mobile versions, thats a legal acquisition of it

rancid temple
#

Right, I mean for the rest of us SDVkrobusgiggle

velvet narwhal
#

(i'm dumb and my apps auto-update, but i also have a phone that becomes the sun when i just wanna gacha roll)

tender bloom
#

i thought steam has a beta branch that's old

uncut viper
#

this is mobile

drowsy pewter
#

the sprite is from my mouse-ear cress crop mod

tender bloom
uncut viper
#

i suppose if the spritesheet is the same between mobile and PC it would still work

velvet narwhal
#

can you even selectively pick versions of sdv mobile when you purchase it?

rancid temple
#

No, you would have had to have owned it before it updated

#

And then refused to update it

velvet narwhal
#

beyond that, we don't supply actual game assets because that's taboo and we support purchasing the game SDVkrobusgiggle

teal bridge
drowsy pewter
#

on a side note, for some reason theres a subset of players who like to look at mod spritesheets and assume that if they cant find one of the images ingame that there must be a bug making the item unobtainable

velvet narwhal
#

(my 103rd portrait is never called in game, it's an inside joke)

rancid temple
#

Like Avi's

half tangle
#

speaking of unused sprites, I think it'd be funny if someone made the Angry Roger monster into reality... I was surprised to come across that sprite and it has at least a bit of code in the game

velvet narwhal
#

oh true, i kept glancing at it when i was making my FTM monster and was like, "am i crazy? have i never seen this?"

teal bridge
#

I don't recall ever seeing the Shadow Girl monster in game either.

half tangle
#

at a glance (at the images and the code) it seems like a ghost variant more or less, though who knows what the idea of it was

tender bloom
#

a bunch of the monsters are unused

#

cat, crow, frog

#

to be clear there are cats, crows, and frogs in the game

#

just not using the monsters spritesheets

velvet narwhal
#

this is definitely tempting to make as a monster for like, a "transitionary" map

half tangle
#

oh, huh, I just ignored them because of their names - figured they were the ones in game

teal bridge
#

And the crow, for some reason, is 64x64.

velvet narwhal
#

oh no, the demons in the brain are coming 'round, i want a timed active map with monster spawns, much like waiting on a boat to actually move

#

this man on a mission

lucid iron
#

strut

teal bridge
#

The aesthetic is more cutesy than demonic, though.

#

Also, fireball is a monster. Just because. (Did I mention that I hate the monster data? I think I may have mentioned that.)

lucid iron
#

spiker variants 2 and 3 when

thorny tiger
#

unrelated to current conversation but when youre makign a crop where do you define which seeds are used

#

{
"Action": "EditData",
"Target": "Data/Crops",
"Entries": {
"Test_GreenPotatoSeeds": {
"Seasons": [ "spring" ],
"DaysInPhase": [ 1, 1, 1, 2, 2 ],
"HarvestItemId": "Test_GreenPotato",
"Texture": "Test/Crops",
"SpriteIndex": 0
}
}
}

#

thats my action

brittle pasture
#

the key is the seed item

#

in this case it would be Test_GreenPotato

thorny tiger
#

so change the first one to Test_GreenPotatoSeeds

#

like that

#

?

brittle pasture
#

if that's your seed item id, then yes

thorny tiger
#

tis

#

tyvm

#

the wiki is useful to some extent but when Pufferchick is both the seed and the product it doesnt exactly help me tell the difference

teal bridge
#

Pufferchick is neither a seed nor a product, it's a meme.

thorny tiger
#

check the examples used for making a contentpatcher crop then get back to me

velvet narwhal
#

dammit i need claire's pafferchuck

#

oh it's RSV SMCKekLmaoDog

rancid temple
#

I mean, if you match the consistency that the examples have you wouldn't need to make the distinction either, it's just kind of a problem with examples vs actual practice

chrome mountain
# velvet narwhal yeah your internal name is looking for a portrait named Aquarium.Curator.png

okay so that's weird, so my NPCDispositions in the content.json looks like this:

                "Aquarium.Curator": {
                    "DisplayName": "Curator",
                    ...```
The translation files just needs to change the display name, so my thinking was that I need to target the entry ``Aquarium.Curator``, but when I changed it to ```"Entries": {
                "Curator": {
                    "DisplayName": "ํ๋ ˆ์ดํ„ฐ",```
it worked?! ![SDVpufferdizzy](https://cdn.discordapp.com/emojis/720705708005261322.webp?size=128 "SDVpufferdizzy")
velvet narwhal
chrome mountain
thorny tiger
#

{
"Action": "Load",
"Target": "Test/Objects, Test/Crops",
"FromFile": "assets/Objects.png, assets/Crops.png"
}

teal bridge
#

A translation file wouldn't have an "Entries" in it?

thorny tiger
#

but its pretty much a 1:1 copy of what the wiki uses

#

the issue is having two things

#

works fine with just objects

chrome mountain
velvet narwhal
teal bridge
#

Right, but translating an entire content.json isn't so great these days, it's better to switch to the i18n syntax and provide an actual translation file.

velvet narwhal
#

(it'll be much easier for you in the long run, i promise for turning everything into an i18n key)

teal bridge
#

Of course you can just hardcode a different language in the content.json and tell the user to replace the whole thing, it's just... not a great design.

rancid temple
#

I appreciate that you can Target multiple things, but it does bother me that it's Target {} and not Targets []

thorny tiger
#

mfw betrayed by the spritesheet website

rancid temple
#

Spritesheet website?

velvet narwhal
#

i think piskel just scooched everything

rancid temple
#

I mean, it looks kind of like the wrong size lol

velvet narwhal
#

oh true

thorny tiger
rancid temple
#

Ah

thorny tiger
#

using piskel to make the sprites though

#

THAT IS NOT BETTER

velvet narwhal
thorny tiger
#

"padding: 0 pixels" mhm sure you are

brittle pasture
#

I don't know how that tool works, but you picked 16x16 as the size right

thorny tiger
half tangle
#

it kinda looks like it's adding an extra pixel between the 16x16 so they're now 17 wide

rancid temple
#

Each tile in the sheet is 16x16 but the sprites inside usually don't take up that full space

thorny tiger
#

yeah its automatically padding my sprites by 1 pixel in either direction when it adds them it turns out

chrome mountain
drowsy pewter
#

you should just make your spritesheet directly in your drawing program

half tangle
#

...or I guess removing a pixel so they're 15 wide and the game grabbing the 16 pixel width shifts it right

rancid temple
#

I suggest GIMP, paint.net or Libresprite over a web program

brittle ledge
#

Also Gervig there's an i18n converter!

#

!converters

rancid temple
#

Took me a minute to spot it lmao

brittle ledge
#

I don't think we have an i18n command by itself

velvet narwhal
#

i reference it in the reload command but, uh, y'know hindsight i probably should've specified what i18n even is

brittle ledge
#

!i18n

#

Nope, confirmed

velvet narwhal
#

i can go fix that SMCKekLmaoDog

brittle ledge
#

It'd be nice to have a command that explains it + links to the modding wiki page/converter

velvet narwhal
#

i added it into the regular reload, lemme go make the i18n one

#

!reload

ocean sailBOT
#
How do I reload my changes while I'm still in game?

-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload YourMod.UniqueID
-C# Visual Studio has a feature called Hot Reload
-C# Rider also has Hot Reload
-Generally working in C# it will be called "Hot Reload" (usage may vary)

thorny tiger
#

gimp is so annoying what

#

this is so useless

#

i select a region

#

i use move

#

it moves the whole thing

#

i deselect all

#

cant use move anymore - expected

#

i select region again

#

try to move

#

MOVES EVERYTHING

rancid temple
#

Oh yeah, I had to look up a lot of things for GIMP, it's weird

brittle pasture
#

if you want to move a selection you need the transform tool

thorny tiger
#

good thing theres two things with transform tool in the name and neither are just transform tool

ocean sailBOT
#
Creating Translation Capability

So you'd like to stop writing all of your strings straight in your content.json? Introducing i18n!

  • Lets you put it all in one .json: default.json

  • Capabilities to have easy-access translations

  • Also has a converter

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

velvet narwhal
thorny tiger
#

and now I gotta rs my computer to uninstall

blissful panther
#

Stardew reference assemblies

rancid temple
#

Well that command has personality lmao

velvet narwhal
#

sorry, i'm unprofessional

#

feel free to make it professional, i make everything quick-and-dirty

rancid temple
#

I don't think it has to be professional, I just think it's funny

brittle pasture
#

GIMP is a powerful image editing tool, but you do need to be familiar with it
that goes for most image editors really

rancid temple
#

Yeah I complain about the other editors, but like I didn't pick up Aseprite and know how to use it intuitively, nor Affinity or Photoshop

#

I'm still always learning new things about them, it just sucks to learn a new program lmao

brittle pasture
#

stoopid harmony question: if a code matcher doesn't match IsValid will return false right
and can I reset it by moving to Start()?

uncut viper
#

i think IsValid just checks whether you're still looking within the list of instructions i.e. havent gone index out of bounds

#

so if you dont stop the match early i thiiiink thats correct?

brittle ledge
#

Also I'd make the modding wiki link a little more clearer, like calling it a tutorial or summary?

thorny tiger
#

shockingly using a real tool is better

#

christ Assets/Crops is even worse

uncut viper
#

my turn for a potentially stupid question: if im tryin to use some generic spawn item data to spawn something with the RANDOM_ITEMS query, is it not possible to have it reliably choose the same random item with repeated calls to ItemQueryResolver.TryResolveRandomItem
cause i woulda thought creating a new Random every time with the same seed would've done that but apparently not

#

its not like, the biggest deal since using RandomItemId instead will reliably choose the same item every time, but i was curious

lucid iron
#

why are u using TryResolveRandomItem if you want the same item

uncut viper
#

honestly i was just copying code from other places the game picks random things from a list of GenericSpawnItemData

lucid iron
#

rand: return 4 energy

uncut viper
#

its not so much that i want to use RANDOM_ITEMS but always be the same but rather i just want to support generic item spawn fields and that means someone COULD use RANDOM_ITEMS but it needs to be the same thing every time the menu is opened

lucid iron
#

ItemQuerySearchMode.TryResolve with ItemQuerySearchMode.FirstOfTypeItem maybe?

brittle pasture
#

they all seem to be using context.Random

lucid iron
#

not sure if RANDOM_ITEMS gives u a random order everytime

uncut viper
#

(specifically i was copying GameLocation.TryGetGarbageItem)

brittle pasture
#

or it's pulling a getFish and randomly swapping in game1.random somewhere

uncut viper
#

the fact that it works as id expect when using RandomItemId instead does have me convinced that it is actually using the context.Random im giving it which is why i am confused why the RANDOM_ITEM query itself seemingly does not

#

RANDOM_ITEMS seems to order the list of items it gets based on the random.Next value which i woulda thought would give the same values assuming nothing changes and a fresh seeded random every time

lucid iron
#

yea hm, i did check 1.6.8 vs 1.6.9 and doesnt look like there is change

uncut viper
#

im still on 1.6.8 anyway atm

brittle pasture
#

uuuuuuuuhhhhhhhh post your code where you're calling the query?

#

idk lol, everything should work from what I'm reading

lucid iron
#

oh maybe it's this additiona layer of random TryResolveRandomItem

brittle pasture
#

oh wait yeah

#

I see it

#

ItemQuerySearchMode.RandomOfTypeItem

lucid iron
#

with RANDOM_ITEM or any other item query

uncut viper
#

oh i missed that message originally

brittle pasture
#

me too SDVpufferchickcry

lucid iron
#

see this is we need power to pick our own colors

#

every other person here is orange and its kind of hard to read without icons

thorny tiger
#

Day 1: Sprite 1
Day 2: Sprite 3
Day 3: Sprite 4
Day 4: Sprite 5
Day 5: Sprite 5
Day 6: Sprite 6 (Should be grown at sprite 6)
Day 7: Sprite 6 (still not harvestable)
Day 8: No Sprite (harvest)

#

what is going on with my crop

uncut viper
#

and changing it to FirstOfTypeItem will actually choose a random item still with RANDOM_ITEMS?

#

and not just, like, Weeds

lucid iron
#

well it's still going to like, randomize the list first

#

so the first thing in that list is random

uncut viper
#

i will give it a shot SDVpufferthumbsup

lucid iron
#

u could also do the other way around

drowsy pewter
lucid iron
#

ALL_ITEM query with TryResolveRandomItem

thorny tiger
drowsy pewter
#

crops do not do one sprite per stage, there are seed sprites and specific locations for harvest sprites and sucj

lucid iron
#

this way might be nicer if you want to randomize other item queries

drowsy pewter
#

LIke look at vanilla crop data and compare it to that crops sprite

uncut viper
#

i wouldnt be the one choosing which query to use

thorny tiger
drowsy pewter
#

the first two sprites are both seed sprites for the same stage

#

Hold on i did draw a diagram for someone else

#

Let me find it

thorny tiger
drowsy pewter
#

This is a crop with 5 stages (each number 1 ie 1 day per stage) and 1 more regrowing stage

thorny tiger
#

so this is too many stages for 6 sprites [ 1, 1, 1, 2, 2 ]

drowsy pewter
#

yes

thorny tiger
#

right

#

makes more sense now

drowsy pewter
#

if you compared it to vanilla crop sprites, you could figure it out

uncut viper
#

i was about to say the ItemQuerySearchMode.FirstOfTypeItem didnt seem to work
but no it turns out actually this seed i was using just happens to result in Stone lmao

#

(i figured maybe it skipped weeds for some technical reason. idk out of 900 odd items it just seemed Too Coincidental)

#

it does seem to work otherwise though when choosing different seeds so thank you chu SDVpufferheart

thorny tiger
#

ok the crop has successfully been added to the game

#

but

#

its giving exp

#

and i dont know how that exp is calculated

#

since i havent defined that amount

#

does it default to something that i can change or do i just not know how farming exp works

uncut viper
#

you dont change the experience

#

its calculated based on crop object price

brittle pasture
#

done (rain and winter)
needs a few transpilers to yeet every instance of rain and winter check I can find in FarmAnimal

thorny tiger
#

ty

uncut viper
#

so i guess you could tweak the price of the resulting crop to tweak the calculation but you cant set a value specifically unless you wanna do the formula yourself

thorny tiger
#

less effort right now so its fine

uncut viper
#

(float experience = (float)(16.0 * Math.Log(0.018 * (double)price + 1.0, Math.E)); if you're curious)

thorny tiger
#

ty

#

ok next thing

#

how do you do multidrop

brittle pasture
#

if multiple instances of the harvest item, ExtraHarvestChance
if extra different items (like hay and sunflower seeds), you need SpaceCore

thorny tiger
#

interesting so

#

how would i recreate the potato drop mechanics with cp

brittle pasture
#

(SpaceCore apparently also supports overriding xp gain on harvest)

thorny tiger
#

or can i not

brittle pasture
#

ah if just extra potatoes dropping then ExtraHarvestChance

thorny tiger
#

right so how does it work with the chance to drop more than one extra

brittle pasture
thorny tiger
#

i would figure its like "ExtraHarvestChance": 0.1 then its like a 10% chance for +1

#

ty

brittle pasture
calm nebula
#

(You can eyeball the expected value from the desmos)

#

Or calculate it

#

For small numbers it's about equivalent

thorny tiger
#

i love restarting stardew 365827 times to test tiny changes

#

might need to get that quick start mod

velvet narwhal
#

!reload

ocean sailBOT
#
How do I reload my changes while I'm still in game?

-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload YourMod.UniqueID
-C# Visual Studio has a feature called Hot Reload
-C# Rider also has Hot Reload
-Generally working in C# it will be called "Hot Reload" (usage may vary)

brave fable
#

again, hot/patch reload aee your pals

rancid temple
#

As long as you aren't working on NPC's

velvet narwhal
#

(as long as you're not working on NPC schedules*)

brave fable
#

not that you don't constantly need to reopen the game still, but it saves hours of time and years off your life

velvet narwhal
#

i mean unless you wanna run the npc chainsaw, go ahead

#

i don't specifically remember what for tmx doesn't work with reloading, though

thorny tiger
#

you guys are lifesavers omg

#

"ExtraHarvestChance": 0.1,
is giving +1 consistently

#

whats up with that

hollow hazel
#

Hey is there anyway to change a cutscen depending on the tyoe of pet you have? dif types of cats/dogs, maybe the first pet on the hearts list?

velvet narwhal
#

there's a gsq: PLAYER_PREFERRED_PET <player> <pet type>+
and then there's the event condition: h <pet> Current player does not already have a pet, and their preference matches <pet> ("cat" or "dog").
i don't think you can specify the index of the pet though SDVpufferthinkblob

thorny tiger
#

does it have a minimum of 1 extra drop if extraharvestchance>0?

uncut viper
#

there is also PLAYER_HAS_PET

#

though that only checks the existence of one i guess

#

i dont think theres a vanilla way to detect existence of a specific custom pet though. or anything that isnt a cat or dog

brittle pasture
thorny tiger
#

ill run it back up rq

brittle pasture
#

PLAYER_PREFERRED_PET works with modded pet types, but that's about it. not sure about the event command does the game support a beginning pet choice other than cat or dog actually

uncut viper
#

(BETAS does have a TOTAL_PETS query though if you dont mind a dependency)

thorny tiger
#

omg im so dumb

#

no wonder it was doing the same thing over and over again

#

its based on tile and day

#

thank you BlaDe for this tiny piece of knowledge that i have retained at the last minute

#

yeah ok i moved 1 tile to the right and its 0 extra every time

#

...

#

maybe i should get checked for something

uncut viper
velvet narwhal
#

i didn't realize there's so many more queries in betas, i been sleep

uncut viper
#

as many GSQs as the museum has requirements SDVpufferparty

#

(besides completion)

velvet narwhal
#

i realize now that the betas harmony would definitely confuse me now that i've been reading more harmony

#

SDVpufferthinkblob did you implement a default "Last" priority on BETAS harmony?

uncut viper
#

there is no concept of priority with BETAS harmony

#

the patches run in whatever order Harmony itself placed my functions in

#

if you need a specific priority, you use Harmony. you dont use BETAS

velvet narwhal
#

fair enough

uncut viper
#

priority would require me to make a separate patch for every BETAS patch as opposed to my current system which is one function of all the patches placed in one patch under BETAS's name

thorny tiger
#

"Price": 200

#

hm

uncut viper
#

shops have a 2x modifier by default

calm nebula
#

Pierre's mark up

thorny tiger
velvet narwhal
#

uh, cranberries iirc

uncut viper
#

so you lose money when you buy and resell i suppose

thorny tiger
#

oh like

#

that

velvet narwhal
#

or some other multi-harvestable crop, caused a large discrepancy

thorny tiger
#

the price is 100 on the object

#

i just added it as 200 on the shop edit

uncut viper
#

pierre specifically has a 4x markup on the default object price

thorny tiger
#

are you joking

uncut viper
#

but shops in general are 2x

thorny tiger
#

theres no way

uncut viper
#

you can set a specific entry to ignore price modifiers if you really want

thorny tiger
#

pierre is actually ripping us off so hard

#

so in this

#

"Action": "EditData",
"Target": "Data/Shops",
"TargetField": ["SeedShop", "Items"],
"Entries": {
"Test_GreenPotatoSeeds": {
"Id": "Test_GreenPotatoSeeds",
"ItemId": "(O)Test_GreenPotatoSeeds",
"Price": 200
}
}

#

is "Price" irrelevant

#

Price (Optional) The gold price to purchase the item from the shop. Defaults to the item's normal price, or zero if TradeItemId is specified.

#

i figured it would be the gold price that pierre sells it for?

velvet narwhal
#

IgnoreShopPriceModifiers (Optional) Whether to ignore the shop's PriceModifiers field for this item. This has no effect on the item's equivalent field. Default false.

uncut viper
#

if you set a price in the shop specifically, it will be set to that and ignore the global shop 2x

#

but Pierre has another 2x on top of that

thorny tiger
#

lmao ok

uncut viper
#

if you put that entry in some place other than seed shop it would end up as 200

thorny tiger
#

i see

uncut viper
#

(unless that other shop also had its own modifiers on top)

thorny tiger
#

ive just made it awkward to explain by making my custom value 2x the sell value

#

i see how it is

uncut viper
#

pretty much lol

#

i think the usual thing is for people to just set the price on the object itself and not in the shop entry and just let the shop figure it out

#

or if not usual then at least common

#

up to you

thorny tiger
#

why is vsc showing this overlay thing all of a sudden

uncut viper
#

because your file is long and it's trying to keep you aware of what context you're in re: the indentation/levels. like it doesnt want you to forget that you are inside Changes and insie Entries and inside Test_GreenPotatoSeeds

#

so it sticks to the top

#

dunno how to turn that off i dont use VSC

thorny tiger
#

dang i guess i just reached a threshold

#

its annoying but ig it is what it is

#

ok anyway

#

is there a way to add this item into the shop like directly after potato instead of at the end

brittle pasture
#

Cornucopia also has examples since I heard you mentioned it earlier

thorny tiger
#

oh good point

#

ty both

#

damn i should really unpack this game

#

i dont know the potato seeds id SDVpufferwaaah

#

is it just the numerical id

uncut viper
#

i think most in here would call trying to mod, especially doing stuff with shops like this, without unpacking the game a "(lightheartedly) fools errand"

thorny tiger
#

!unpack

ocean sailBOT
#

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

uncut viper
#

you want the id of the shop entry itself

#

not of potato

thorny tiger
#

right ok

#

is that different

#

should i be using a different id for my shop entry to the object id

#

like i have

#

"Entries": {
"Test_GreenPotatoSeeds": {
"Id": "Test_GreenPotatoSeeds",
"ItemId": "(O)Test_GreenPotatoSeeds"
}
},

uncut viper
#

vanilla likes to use matching item ID and shop IDs a lot so you can do the same if you want but it doesnt really matter as long as its unique

#

but its the Id you want to focus on for MoveEntries, not ItemId

#

so long as you remember that

thorny tiger
#

makes sense yeah

#

perfect its now positioned after potato

chrome mountain
#

I'm having trouble replacing my event entry with a translation I have. My events that I target "Target": "Data/Events/Gervig91.StardewAquariumCP_FishMuseum", works just fine.
But all the others aren't getting translated, they default to english. I've been using debug ebi to trigger my events, sometimes it can glitch out and start the event on a wrong map. But weirdly enough when it did that, the translation worked? But when it plays on the correct map it doesn't? (Screenshots below)
Log: https://smapi.io/log/9604a664135143d8aaebe6d74b291562 (I can see that the patches are loaded, conditions are met and they get applied)
json: https://smapi.io/json/content-patcher/7264c79237e6401aa42bfc72cb759e41

ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 38 C# mods and 35 content packs.

hallow prism
#

is there a reason you don't use i18n? it may be easier on translation stuff

chrome mountain
#

the aquarium was before that, I can't be bothered to change it

hallow prism
#

i believe there's hu, converters

velvet narwhal
#

yeah i just made the new command

hallow prism
#

in case that helps, but i understand it's not the focus

uncut viper
#

is MoreFish actually a uniqueID of a mod you have installed?

chrome mountain
#

yea it's not really gonna help me right now

hallow prism
#

(however i have no clue about what's going on)

chrome mountain
velvet narwhal
hallow prism
#

(so it's not like i can provide a better solution)

uncut viper
#

also unrelated but like the error at the top says too, but your two HasMod conditions on line 62 are not going to work right

heady crest
#

do i need to do somethng for the random pick to work? i tried it out and the character is only saying everything in between quoptes instead of choosing one dialogue to say

hallow prism
# chrome mountain yea it's not really gonna help me right now

(i get that, but hmm, i didn't feel like letting you go on fixing tedious translation related bugs without asking about that first, because it's the kind of stuff you kinda want to know about before deciding what approach you want, if that makes sense)

chrome mountain
thorny tiger
#

thanks everyone for your help today

hallow prism
#

it's a seeded random

thorny tiger
#

heading to sleep now with a successful day

#

cant wait to see my summary screen at 2am

uncut viper
#

(well it might work sometimes but it 100% absolutely will not check for both json assets and SVE. it will check for one or the other. that said i dont really know how to help with the translation stuff, sorry)

heady crest
#

like everythinginput seprator too

#

all at once

uncut viper
heady crest
#

๐Ÿ˜ฎโ€๐Ÿ’จ

hallow prism
#

oh

heady crest
#

i might be

#

wait i have that on every dialogue of her, do i really need to put her whole dialogue on the content json?

uncut viper
#

anything you Load in cannot have tokens in it. they will not work

#

tokens need to be used only in EditData patches

heady crest
#

didnt know that was a token

uncut viper
#

so yeah, you need to move her dialogue to EditData patches

heady crest
#

thought it wasa smapi thing

hallow prism
uncut viper
#

anything within {{ }} is a token

heady crest
#

ohhhhh

uncut viper
#

(minor exception for When conditions where the outermost token will not have braces but dont mind that)

heady crest
#

well thanks that explains a lot

heady crest
#

THANK YOU

uncut viper
#

some C# mods may add custom tokens. dont worry about those unless you know a mod you wanna use adds em and you need em though

heady crest
#

aight

chrome mountain
velvet narwhal
#

speak EdelweissSeung \"{{i18n:Edel.0Heart.1}}\"

chrome mountain
#

so you'd have to save every piece of dialogue as a i18n string?

velvet narwhal
#

yeah but i think the converter covers that

#

wouldn't make sense if it didn't

chrome mountain
#

a lot of 1.6 stuff doesn't make sense to me

heady crest
#

so this will work right (the json loaded is blank)

hallow prism
#

it's not 1.6, but i get it, it's a bit scary at first

#

there's several converters, i don't remember which one is best for events

velvet narwhal
#

does the i18n one not grab from events?

#

i don't really have anything to test on because everything of mine is i18n key'd

hallow prism
#

i mean, there is one from pathos and one from nomori i think?

uncut viper
chrome mountain
#

what's the magic word to find one of these converters?

velvet narwhal
#

!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

velvet narwhal
#

fresh off the define command SMCKekLmaoDog

heady crest
uncut viper
#

yeah, you can load the same blank.json into multiple targets at once

#

it just creates blank templates for your EditDatas to work on

heady crest
#

i see

#

thanks yous

velvet narwhal
#

i guess user discretion for using the converter is advised, i have no idea how it deals with things

chrome mountain
# velvet narwhal !i18n

thanks, not sure if I want to go this route. Will be days of work to convert everything. All I want to know is why one of these works and not the other SDVpufferchickcry

velvet narwhal
chrome mountain
#

right

velvet narwhal
#

all of them?

chrome mountain
#

yup

latent mauve
#

Is MoreFish the actual uniqueID of your dependency mod?

chrome mountain
#

only worked when the event glitched out and started on the wrong map

chrome mountain
uncut viper
#

(i will just warn you, if you're unable to figure it out now and ask for help again later, just know/be prepared to be asked the same questions about MoreFish, about lack of i18n, and about the HasMod error lol)

velvet narwhal
#

i actually have no idea how different language content.json will work in conjunction with the english right next to it, you might have to finagle dependencies?

latent mauve
#

Yeahhhh, the standard ID format is moddername.modname, so that question is gonna happen a lot

velvet narwhal
#

are these two separate mods?

chrome mountain
velvet narwhal
#

like, the english content.json and the korean content.json

chrome mountain
#

not sure which content.json you're talking about. But I do have 2 CP mods

velvet narwhal
#

do you load the maps in both of them?

chrome mountain
#

no, only one

velvet narwhal
#

you'd probably have to finagle dependencies then

#

make the one that doesn't load the maps dependent on the one that does

chrome mountain
#

it already does

#

wouldn't work otherwise

velvet narwhal
#

tbh i don't have the experience/history of understanding how old mods handled other languages, assuming the alt language just quite literally hard loaded everything

#

and set a false dependency on the original or something maybe

chrome mountain
#

the way im doing events right now is just replacing the entire event entry with a new one that has the translated language written directly in it

rancid temple
#

Ah, the salted earth method of modding /lh

chrome mountain
#

yup the dark ages of modding SDVkrobusgiggle

velvet narwhal
#

like true salted earth you can do it the way i did it to SVE

#

silence the original event ID through trigger actions, make the new event a different ID altogether

chrome mountain
#

omg I fixed it...

#

the event checks for donated fish, MNF changed all their fish names. So it's not SmallMantaray it's MNF.MoreNewFish_small_manta_ray now...

brave fable
uncut viper
#

with the events fixed it might be a good time to fix the hasmod thing then as long as you're lookin in the content.json anyway SDVpufferparty

chrome mountain
#

@velvet narwhal thanks for helping ๐Ÿ˜„

rancid temple
#

MNF over here laying the salt first lol

velvet narwhal
#

for a mere $20 i could transition all of your strings to i18n-- /lh

chrome mountain
#

all the work for the aquarium is literally just having to fix all the new names I have to use because it keeps changing lol

lucid iron
#

You gotta treat urself better and ask for $20/hr at least

velvet narwhal
#

but what if i finish in under an hour /s unless

brave fable
#

a mere 3 doller per string..

lucid iron
#

"a"

velvet narwhal
#

new channel meme, it really only hits the best when you experience it first hand

lucid iron
#

You know I did have a i18n that was just " Cave"

rancid temple
#

Most of mine are just things like that lmao

calm nebula
lucid iron
#

So that I can put "ๆดž" in chinese

uncut viper
#

(im still annoyed that theres no existing in-game i18n i can steal for the literal title of the game...)

velvet narwhal
#

literally only, what, stardew rose or something?

chrome mountain
uncut viper
#

thats the only place it seems to exist in text that i could find

lucid iron
#

Just OCR it from the logo ez

brave fable
rancid temple
#

(I think this is why focustense was surprised by your seriousness lmao)

velvet narwhal
#

can i cause chaos with stardewui and put the loosesprite/yellowletterlogo into a menu

lucid iron
#

Yeah sure

velvet narwhal
lucid iron
#

That's what the sprites system is for

rancid temple
#

You can light whatever menus you want on fire

uncut viper
velvet narwhal
#

i've already set up like two different projects for when i'm sober and cognitive

lucid iron
#

U know I vaguely remember someone working on a dialog library/framework

#

That was supposed to let you do fancy dialog

brave fable
#

wow that's actually perfect. it's even localised

lucid iron
#

No idea what became of that

velvet narwhal
#

wdym fancy dialogue

brave fable
#

i often think about making a dialoguebox with waving/shaking/coloured text

#

how come nobody has

rancid temple
#

Oldschool RS style

calm nebula
velvet narwhal
#

no it was directed at bluebs

rancid temple
#

Lmao, no that was for blueberry

lucid iron
#

Was junimo font also involved

#

I forgor

calm nebula
#

Look, a distraction! Did you know that xbox360 is bigendian

#

Because I Did Not

velvet narwhal
#

was it my crack dream of creating junimofont as useable in game?

uncut viper
rancid temple
#

Contrary to gamer boy sweats, xbox 360 can be used by any gender

lucid iron
#

They definitely needed bigendian for big numbers trust

whole raptor
rancid temple
#

Original xbox however was not small hand friendly, regardless of gender

velvet narwhal
#

i had to look that up and saw "little-endian, for storing least-significant byte" and i went "that's me"

brittle pasture
whole raptor
#

Still gotta work on that config i18nifier

chrome mountain
whole raptor
#

You can, but it's really hard to actually make me do something SDVkrobusgiggle

brittle pasture
#

.choose add a global toggle, don't, don't, don't

patent lanceBOT
#

Choose result: don't

brittle pasture
#

thank goodness

lucid iron
velvet narwhal
brittle pasture
#

anyway if anyone wants a global toggle for winter/rainy animals I suppose they can make their own C# asset editing mod

#

hell I'll probably make it myself

#

hmm yak that can go outside in winter...

teal bridge
#

I think my least favorite things to do are error handling, performance analysis, errore handling, dockumentattion, and errrorere hansdrfn g.l

heady crest
#

what is this for??? theres no elaboration on the wiki

rancid temple
#

Delimiter is the character that breaks up the fields

#

Usually it's either a space or a / but it depends on where you're editing

ashen goblet
#

Is there a specific template for a custom NPC's schedule that I'm able to freely use and edit it to my will? I'm new to making mods, and am working on my Custom NPC

#

It would greatly help if so. Is it only done manually otherwise?

pine elbow
#

I'm happy to provide my schedules as a template if needed, but I highly recommend learning it yourself as understanding what your code is doing is crucial.

#

It also helps to learn internal location names and such

ashen goblet
#

In that case, is it okay if I have your template only as a reference and manually write and adjust it down as I learn?

pine elbow
#

Of course! Let me get on my laptop. Do you mind if I dm you?

ashen goblet
#

I've had this part of Tia's wiki to guide me through it a little--though I learn quicker with references and examples^

ashen goblet
pine elbow
#

Also, it's written in military time so if you have trouble reading it, I recommend just pulling up a list of military to analog times SDVpufferthumbsup that was my biggest hurdle tbh

ashen goblet
#

Aha no yeah, I figured it was a bit different to the usual--I study History and soon majoring Law/Criminology so I immediately figured it was military code or equivalent ๐Ÿ˜“

brittle pasture
#

which is part of the !npc command

rancid temple
#

Just remember it doesn't rollover like normal military when you pass 2400, 1 am is 2500, 2 am is 2600

ashen goblet
#

Meaning the maximum is 2600 then

rancid temple
#

Unless someone has a mod to extend it

ashen goblet
#

Got you!

teal bridge
#

(God I hope not)

rancid temple
#

Though I'm not actually sure how well that plays lol

lucid iron
#

i think there's one

ashen goblet
#

Yeahhh.. I don't have plans to use any of that aha

rancid temple
#

I was using a mod that let me go until 6 for a bit lol

lucid iron
calm nebula
#

Tbh that reminds me too much of college

ashen goblet
#

My NPC will only be dependent on Ridgeside whilst the rest run normally--I have my NPC placed here for their spawn location

lucid iron
#

i figured it just doesnt do anything about the npcs so they continue their 2600

rancid temple
#

Well it doesn't change their schedule, but I've never tried to schedule an NPC past 2600 lol

teal bridge
ashen goblet
#

That brings me to another question; do both of these contradict eachother?

pine elbow
#

I don't believe so? I haven't dabbled in HomeRegion but I'd assume it was just an identifier for code divers? (Don't listen to me though I could be 100% wrong)

ashen goblet
#

Aha no worries!

#

And I assume the schedule will dictate whether that is the case or not, correct?

uncut viper
#

no, you determine it

brave fable
#

HomeRegion is mostly used for collecting npcs for notice board quests, village events, etc.

ashen goblet
#

I should jus' keep it at Town then

uncut viper
#

also the socialization quest at the start, if you dont specify IntroductionsQuest

#

winter star as well

uncut viper
#

then yeah thats pretty much everything important

ashen goblet
#

Thank you! ๐Ÿ™

ruby rapids
#

Does anyone know where I can look up CP Precedence? I see the code in some of the mods I am referencing and I am not sure what it means... I looked over the CP read me and can't seem to find it.

rancid temple
#

Precedence is only used in a few specific places, best to just look up the data for wherever you're seeing it

uncut viper
#

do you mean precedence or CP Priority?

#

if you mean the latter, its explained on the Advanced Fields sections for each of the actions readme pages

ruby rapids
#

I trying to understand the code, because someone helped me with it a while back and I figured out everything except the line "Precedence": -100

rancid temple
#

Precedence is like a localized priority, the lower the precedence the sooner a thing will be checked

#

Usually it's used to try to make something more likely to be chosen than another thing with similar conditions

ruby rapids
#

Ah, so it will be chosen first over another CP mod? So "Precedence": -100 will be loaded first over "Precedence": -50? or do I have that backwards?

rancid temple
#

It will be checked first at least, if the other conditions set on it aren't met then it will continue to the next highest precedence

ruby rapids
#

Oooh, okay, that makes a lot more sense. Because I looked over the code for the Seasonal outfits mod and they had a line with "Precedence": -1500 for the Aerobics outfit. I am guessing that's to make sure to check if that condition is satisfied first. Thanks for you help on this btw.

lucid iron
#

.choose colorful lights, canned animation, more docs >:(

patent lanceBOT
#

Choose result: more docs >:(

lucid iron
#

no

#

i think uber knows what hurts

burnt otter
#

Hey guys! Maybe I'm the dumb one here, but I downloaded the mod Scale Up 2, cuz I had an idea for a mod. But the mod simply doesnt seem to work on my end. I have almost no mods that could possibly conflict and I'm running the latest versions (no beta).

rancid temple
#

SU2 is a framework, it doesn't do anything on its own

burnt otter
#

Yeah, the mod description says that. I downloaded and tried installing the exemple pack, no success.

#

It displays the upscaled textures, but not correctly

rancid temple
#

Oh I didn't try the example, dunno if it normally works lol

#

Throws a warning when I try to use it

#

Switched the Format to 2.3.0 and the warning went away

#

Beeg Krob

ashen goblet
#

How are we able to find out the internal names of the Ridgeside locations? Need it for schedule!

brittle pasture
#

open the mod files?

rancid temple
#

Check their manifest

brittle pasture
#

also if you want to check in game (for comparison/verification) mods like Debug Mode can help

rancid temple
#

Oh wait, locations lol

rancid temple
#

Photorealistic plant is too funny

tiny zealot
#

lmao the chunky pixel shadow

brave fable
#

raytracing: off

brittle pasture
#

mod that makes the horse photorealistic if the farmer has low energy

glossy cargo
#

What is the "correct" way to register an _modHelper.Events.Content.AssetRequested += and then make it work for any language for that specific asset?

Specifically, I was doing, inside the Event Handler method, e.NameWithoutLocale.IsEquivalentTo("Data/Bundles"). But this apparently doesn't work if you play in a different language, as the asset is now Data/Bundles-fr or something like that.

Plus, even if the event handler was correct, I also need a way to call modHelper.GameContent.InvalidateCache("Data/Bundles") on it. And I can't find an overload for it that would allow me to catch alternate versions of the same asset

brittle pasture
#

NameWithoutLocale works though? or am I missing something

oak dragon
#

Hiii a question plz๏ผŒWhat should I do if I want to draw something when the mouse is over an area?

brittle pasture
#

can you be more specific? by area do you mean map area, screen area, etc.

oak dragon
#

Menu

#

Iclickablemenu

glossy cargo
ashen goblet
#

Hey! Can dialogues change when an NPC moves to a certain location within schedule?

#

If so, how?

glossy cargo
#

Oh I found it! I can use this! bool InvalidateCache(Func<IAssetInfo, bool> predicate);

#

Time to test modHelper.GameContent.InvalidateCache(x => x.NameWithoutLocale.IsEquivalentTo("Data/Bundles"));

brittle pasture
# oak dragon Iclickablemenu

the people who works with UI can chime in with more (accurate) info, but you probably want to listen for UpdateTicked, check if the mouse is hovering over a screen region and draw the menu if it is

calm nebula
#

Does anyone know if chat messages support tokenized text?

brittle pasture
tiny zealot
# oak dragon Iclickablemenu

IClickableMenu has a virtual void update which you can override to do something when the game updates it, like check where the mouse is and flag your thing to be drawn if it's in the correct area. then you can draw it in virtual void draw.
(you can also be lazy and check inside draw, which i have done at least once)

pine elbow
glossy cargo
brittle pasture
#

wait dang, does the string overload of InvalidateCache not work with the locale-specific versions

#

welp TIL

calm nebula
#

it invalidates THAT EXACT ASSET

#

which is why I made my little extension method

tiny zealot
calm nebula
#

I am Not a Fan TM of just going direct to the delegate

brave fable
#

i was just looknig for your little extension method SDVdemetriums

calm nebula
#

(You need to justify a O(1) -> O(N) in my book.)

brittle pasture
#

yeah to clarify by "not work" I meant "does not also invalidate the localized versions"

#

anyway browsed through my code and I'm only invalidating my own assets so I should be good right SDVpufferclueless

glossy cargo
#

Until you start to localize them LUL

tiny zealot
oak dragon
calm nebula
#

just override performHoverAction

calm nebula
#

also do I have the ability to do text tokens in chat messages?

oak dragon
calm nebula
#

(yes.)

lucid iron
#

is this good desc of spritesheet layout

brittle pasture
#

looks fine to me, though you may want to expand the left column to Down Right Up and Left

teal bridge
#

Is that supposed to be a general arrangement or for NPCs specifically?

lucid iron
#

no this is my framework

#

there's different "direction modes" that control what number of walk cycle sprites you need

#

this is the one that matches what game usually does

#

but u dont actually have to arrange them like this blobcatgooglyblep

#

can have just 1 long row if u want

#

the thing framework cares about is number of sprites (4 * anim length)

#

hrm the theme i used does stretch on tables MitsuYawn

uncut viper
teal bridge
#

I suppose it makes sense, although if it's aimed at artists then a version with actual art would be even better.

#

Doesn't have to be good pixel art, but any demonstration of the actual content that should be in each frame would be vastly better than some letters and numbers.

lucid iron
#

Yeah I do have test sprites

#

Gotta scale it up ig

teal bridge
#

Those cells aren't exactly enormous to start with, what are they, 32x32? It'll scale fine.

kind shell
#

Hello ~ I'm trying to make my first edit/patch to a mod, could someone answer a few Qs I have? The source code for health rework is available on github, it makes it so that food does not restore player health, only life elixirs do, and I want to make it compatible with other mod's health potions. and I see the exact piece of code that checks the player has an elixir of life, it then allows that elixir to restore player health. There's a function in the utilities script that looks for the item ID, the checks if the consumable the player has eaten matches it. I feel like I should just be able to add a few more if statements for item IDs from other mods, but i have no idea how to find an item's ID...

teal bridge
#

Checking for item IDs from other mods is not a great way to go about it. Better to use context tags, maybe custom fields.

tiny zealot
#

context tags are ideal for this, but if other mods haven't set them consistently you might have to do it by ids

#

whichever one you do, you can get the info by looking in the other mods' files or (most likely) with Lookup Anything

teal bridge
#

Yeah, you could hardcode a few IDs but make the long-term implementation based on context tags. Only way you're actually going to find those non-vanilla IDs, though, are to look at the source of the mods.

#

Or actually install the mods and use LA like ichor said.

kind shell
#

Okay, I see the context tags in the mod's json's for each potion, but they are all the same...

tiny zealot
#

that's good, actually

teal bridge
#

Context tags are supposed to all be the same, every item that wants to participate in this behavior adds the same tag.

#

That's what context tags are for, instead of a bunch of unique IDs you have many items all using the same tag.

uncut viper
#

if an item has the "health_potion" context tag (just as an example) then you can just look at whether the item the player ate has the context tag "health_potion" to decide if it should restore health

tiny zealot
#

automatic asynchronous compatibility! (context tags my beloved)

uncut viper
#

so all items with that context tag will work without you needing to add each individual ID

kind shell
#

Okay, so i would hypothetically say if a consumable has a certain tag then it can restore health right? but then would'nt all the potions/posions in the mod now have that extra functonality

uncut viper
#

and consequently if an item does not have that context tag, then you would not add the health

brittle pasture
#

that's when you add a tag only to the items you want that behavior with

#

you can use either C# or another CP edit

kind shell
#

Okay, so could I just edit the mod's context tags? or could that break things?

uncut viper
#

if the context tag is shared between good potions and bad potions/poisons then thats where you'd either want to make your own context tag or hardcode IDs (but ideally just add the context tags)

teal bridge
#

Items have context tags, mods do not have context tags.

oak dragon
# calm nebula (yes.)

Thank you! In fact, the way I did this before was to make a judgment in PHA, and then set up a bool type field to pass the judgment result from PHA to Draw.

teal bridge
#

I would certainly recommend against removing context tags that are already there, but it's normally safe to add more, particularly if they're new tags.

uncut viper
#

i would also recommend not removing the existing ones

kind shell
#

ohhh so I items can have multiple context tags?

uncut viper
#

items can have as many context tags as you want

#

and the context tags can be any string you want

kind shell
#

Then thats great I could make a custom one and use that

uncut viper
#

maybe dont go above the int.MaxValue for context tags but other than that you should be fine

teal bridge
#

Yes, maybe don't add several billion tags.

kind shell
#

Thank you guys! That's seems such a simple solution, yeah I'll just add one more to any potion I want to restore health

teal bridge
#

(You'd probably run out of memory for the strings before you overflowed the counter)

oak dragon
earnest monolith
#

Hey is automate client sided

teal bridge
lucid iron
#

nothing is server sided cus there's no server

teal bridge
#

World of Stardew when

brave fable
#

some things are decided by the host, though, and propagated to clients

#

any mod can arbitrarily choose to do nothing if not the host

brittle pasture
#

for your specific question, I don't believe Automate has any host only or client only logic host only

next plaza
#

I think it doesn't run for farmhands?

#

Like it specifically disables itself

brittle pasture
#

ah whoops does it? I browsed the code only cursory and I cant find any reference
but I may be stupid

next plaza
#

I guess that's not entirely clear on that though

brittle pasture
#

nvm I found it

#

browsing code on mobile sucks lol

next plaza
#

Yeah, it does

fleet crystal
#

@rancid temple sorry if you already said but do you know whatโ€™s wrong with my schedule? I really wanna get it working

rancid temple
#

Your schedule end points were on the warps between maps

calm nebula
rancid temple
#

You need to make sure the coordinates for your schedule points are not on the warp tiles

calm nebula
rancid temple
#

And you can do with less schedule points in general unless you're trying to micro manage your NPC's schedule (which you probably shouldn't)

fleet crystal
#

Alrighty when I get home Iโ€™ll fix it and let you

#

Thank you for the help

uncut viper
#

because i also just added somethin to something im workin on that needs to send messages in chat and itd be very nice to know SDVpuffersquee

calm nebula
#

Check museum donations in 1.6.9 ๐Ÿ˜›

uncut viper
#

gonna make me download the beta again...

calm nebula
#

(That's very close to the context I wanted it for, for Aquarium's fish donated message)

uncut viper
#

(its exactly the context i am using it for)

calm nebula
#

What are you doing with the museum?

uncut viper
#

making a framework to make my own

calm nebula
#

Nice!@!!

uncut viper
#

though, where am i supposed to be looking in 1.6.9 for whatever it is you're talking about SDVpufferthinkblob

calm nebula
#

TokenStringBuilder

uncut viper
#

oh. i thought you just meant you wanted to pass a tokenizable string directly into chat

calm nebula
#

Oh no

uncut viper
#

the tokenstringbuilder thing is there in 1.6.8 too, it just gets shoved into the {1} though

calm nebula
#

Just tokenizing the fishie name

uncut viper
#

whoops
my bad then!

#

you had the misfortune of just something slightly different but similar enough fresh on my mind to be annoyed about to have my brain be too confident it knew what you were talkin about when i answered SDVpuffersquee

#

(that annoyance being man, why cant i just pass an arbitrary string into it? why do i have to add it to Strings/UI)

calm nebula
#

Well, Button

#

Have you ever considered the theory that you should send the minimum possible information for multiplayer

uncut viper
#

in this case, the translation key itself is longer than the translation value

#

so im failing step 1 there

#

(but also, at the very least you could let me specify the translation key! it has to be in specifically Strings/UI, and specifically prefixed with "Chat_")

#

just a few more bytes, please. a crumb of bytes

#

its mostly not my problem though. its a framework. so its the problem of the people who may use it who wanna customize the messages to know they need to shove em into Strings/UI SDVpufferthumbsup

#

(yes the docs will say so)

hot raft
#

Hello, I've been looking for Love of cooking mods, im playing at mobile SDV 1.5 with smapi 3.18.3.3

Apparently it does not compatible with the nexus current version.

Is there anyone that have it work on mobile?

@brave fable also been tracking your attachments history, but cant find the suitable one๐Ÿ˜ญ

zenith robin
#

what kind of software would I use to open the .xwb files that contain the game sounds?

zenith robin
#

ah

#

ty

heady crest
#

does AcceptItem/RejectItem_ works for making specific gift response dialogue?

brittle pasture
#

you want AcceptGift_ and RejectItem_ (plus the item ID)

#

(yes, the ending is different)

heady crest
brittle pasture
#

sorry, I just meant AcceptGift and RejectItem

heady crest
#

oh

#

ohhh

brittle pasture
heady crest
#

im there thats why i asked

#

was kinda confused if those only applied to those billboard quests or to general gifts

brittle pasture
#

billboard quest deliveries will always go through (and IIRC those use generic dialogue)

#

those two are for gifting outside of quests

#

(side note for other C# code divers, but I looked at the switch case for item delivery dialogue, and dang those compiler optimizations hit differentโ„ข)

lucid iron
#

huh no one ever made modding:buffs?

brittle pasture
#

you can be the first to take the bold step

uncut viper
#

it was only really made possible mostly in 1.6 so, it still on the migrate page

lucid iron
#

no i already wrote docs for 12hrs

#

later

uncut viper
#

whats 12 more

lucid iron
#

hm what wiki page documents GenericSpawnItemData

brittle pasture
uncut viper
#

The following describes the upcoming Stardew Valley 1.6, and may change before release.

brittle pasture
#

wdym I don't see that on the page

uncut viper
#

mustve been the wind

inner harbor
#

Fast Animations fucks up Juliet's 14-heart event something wicked. Does anyone know how I can work the event to make this... not happen? I suspect it's because the event is full of warping NPCs here and there and changing viewport regularly, but I've no idea how I can fix it.

uncut viper
latent mauve
#

Today on "Tired mod authors make silly mistakes": I spent over an hour fighting with a conditional patch that would not update correctly for some reason, only to discover that the new condition I added wasn't within my "When": {}, and was just outside of it at the end.

#

It works now, though, so yay

#

I can publish the update to Useable Community Center later this week and finally have true CC Reimagined compatibility with the Override SVE option

brittle pasture
inner harbor
#

okay figured it, lots of advancedMoves

brittle pasture
#

hmm I should rework the framework page to split at least the <100 ones by category; I was thinking of adding a couple more but the list's getting unwieldy lol

#

but then there's stuff like EMP which defies categorization actually this one can go into mapping

uncut viper
#

i support adding a category just for museum frameworks. for the greater good totally not just for me

lucid iron
#

now i pass out bye

#

only runs on 1.6.9 btw

late pewter
#

Is it bad that I have like 4 or 5 different WIP mods on my plate at the moment?

brave fable
#

it's bad, but it's also normal lol

brittle pasture
lucid iron
#

Do u want to dismantle the xxx content pack sections then

uncut viper
#

as they always say: lgtm

lucid iron
#

Seems better to have only 1 paradigm of framework grouping

brittle pasture
#

it was put there before me so I'm keeping it for now

#

I'll ping Pathos later

lucid iron
#

Can't believe selph added my 4 features mod

brittle pasture
#

my criteria is "have at least 1 user"

lucid iron
#

Well, soon to be 5 maybe, I was gonna make hole touch warps

#

For my nauscent farm map idea

brittle pasture
lucid iron
#

It's the spaciest of cores, put it in all 3 categories AquaThumbsup

uncut viper
#

i think spacecore is the exact opposite of specialized

brave fable
#

i wouldn't worry about it, i'm sure spacecore will manage to patch itself into most parts of the wiki anyway

uncut viper
#

though id probably call half the frameworks not in the spceialized section as specialized too anyway

lucid iron
#

There's a secret 4th category actually

#

Infrastructure, for things like spacecores skills and save serialization

#

Stardewui goes there too

uncut viper
#

i dont think id call skills infrastructure personally

brittle pasture
#

that's actually just misc (see BETAS)

teal bridge
# lucid iron now i pass out bye

Writing docs really does take a lot out of a person. I can write a few hundred words in the same amount of time it takes to write several thousand lines of code, and with twice the fatigue.

#

Have to take frequent breaks and alternate with something more hands-on.

uncut viper
#

this is why i think writing the docs as i actually implement the features instead of after everything is done is a good idea

#

i dont actually do it, but i like the idea of doing it

zenith robin
#

Can you check for passive festivals with is festival day?

uncut viper
#

are you looking at the game state queries page on the wiki?

zenith robin
#

yes

#

I would just use is passive festival, but for what I am doing I need that +1 offset

uncut viper
#

in that case no you cannot, unfortunately

zenith robin
#

okay

#

That's what I thought, but I wasn't 100% sure

uncut viper
#

you might be able to just add the passive festival dates to Data/Festivals/FestivalDates

#

iunno if that'd have other consequences tho

zenith robin
#

I'll look at a different way to do what I am looking at, but I'll keep that in mind. TY

quaint wadi
#

i'm trying to make an update to a map after an event has been triggered. is there a way to do that with content patcher?

brave fable
#

it'd be nice if IS_PASSIVE_FESTIVAL had optional fields for day/offset and time SDVpufferthinkblob

uncut viper
zenith robin
uncut viper
#

and you'd get "Festival" weather instead of "Sun" weather

#

which... i think is identical?

uncut viper
#

there is also just a content patcher token for EventsSeen

#

or HasSeenEvent, something like that

quaint wadi
#

oh! that may be easier

zenith robin
#

that's nice. I wish I knew that when I did one of my mods a couple of weeks ago.

zenith robin
#

I actually haven't checked to see if passive events also disable those though.

brave fable
#

the more significant consequence is the weather icon changes from โ˜€๏ธ to ๐Ÿฅณ

teal bridge
uncut viper
#

it IS very strange that IsPassiveFestivalDay(int dayOfMonth, bla bla) just... exists, but isnt used for the GSQ

vernal bone
#

why must C# be so confusing SDVpufferwaaah all I want to do is set the toddlers to a specific sprite when they sleep so they aren't staring straight ahead like they're having an existential crisis on a nightly basis

this is what I get for trying to branch outside of content patcher ig SDVpuffersob

lucid iron
#

But then u gotta rewrite the docs

uncut viper
lucid iron
#

When u come up with better ways to do things

teal bridge
#

I wasn't serious, of course. I left the 50-page requirements binders behind a lifetime ago.

#

But on an actually serious note, spending too much time writing docs concurrently with implementation tends to just drag down the implementation, not vice versa. At least for me.

uncut viper
#

(i would also totally get not wanting a dependency for it regardless tho)

zenith robin
#

I am starting to basically remake UIIS2 from scratch, so I would prefer not having dependencies if I can help it.

#

For almost any other mod I wouldn't mind, but I think that kind of mod should be self contained if at all possible.

uncut viper
#

oh i thought you were just makin a content patcher mod, yeah that makes sense

#

well in that case, Utility.IsPassiveFestivalDay will probably be useful for you

lucid iron
#

What license will you pick this time

zenith robin
#

I will figure that out once I finished writing it.

lucid iron
#

Please pick something now

brittle pasture
#

WTFPL (/s for legal reason)

lucid iron
#

Can't retroactively apply license to code LilyDerp

uncut viper
#

if its all your own code you can change the license on it

zenith robin
#

Wouldn't that just be once I put it out there? If it is only on my pc that shouldn't matter.

uncut viper
#

even once you put it out there, if its all code that you own and wrote, you can re-release it under whatever new license you want, whenever you want

#

it only becomes complicated if someone contributes to the code

zenith robin
#

alright

uncut viper
#

(that said without a license or without an open source license theres much lower odds of someone else contributing in the first place anyway, so its kinda moot, but it'd become complicated for them and you if you let it happen)

lucid iron
#

More about what do if creator of popular thing become inactive

uncut viper
#

i mean the stardew community kinda turns a blind eye to that in such cases anyway..

teal bridge
#

Wouldn't say they turn a blind eye, often there's quite a lot of chatter and complaints about it. Stepping up personally to help revive it, though, well...

#

Whether or not an open source project survives the departure of the BDFL depends a lot on just how popular (thousands vs. millions) and to some extent what the alternatives are and how passionate those users are/were.

brittle pasture
#

I think they were talking about when mods with a closed license gets an unofficial update/revive against the author's will

uncut viper
#

i meant turn a blind eye in regards to abandoned mods having unlicensed/not open source code getting unofficial updates and stuff anyway
not just open source mods being abandoned

teal bridge
#

Oh, well yeah, if it's not even open source then there's not much other choice.

uncut viper
#

case in point, UIIS2

teal bridge
#

I wasn't under the impression that it was abandoned, though, just moving a little slowly.

uncut viper
#

its an unofficial update

#

of a mod without open source permissions

#

(which is itself an unofficial rewrite of a mod without open source permissions, though i dont know the extent of modification vs total rewrite that UIIS1 was)

teal bridge
#

It's not a problem unless the original author decides to make a scene over it.

#

Which does happen sometimes, it happened a couple of times in the Bethesda community. Uncommon, though.

#

I have a hard time imagining it happening with UIIS2. Always good to have alternatives, regardless. Just doesn't look like UIIS2 is about to get shut down or something.

uncut viper
#

i mean i was just saying it in response to chu saying they should pick a license now in case they abandon their new mod later

teal bridge
#

You're definitely right about contributions, though. Highly unlikely any third parties are going to contribute to anything that's not MIT, Apache or GPL.

brittle pasture
#

(I doubt the average game modder cares about license when they're obliged to make a contribution, but I digress)

teal bridge
#

I wonder. Certainly, the average game modder doesn't know or care about licensing. But the average game modder never has and never will make a contribution to another person's project.

#

Obviously some do, but it's got to be 1 out of 100 at best?

teal bridge
#

Plus the default perms on Nexus are in conflict with open source licenses.

pastel dirge
#

So on Nexus there is no GPL license or derivatives?

brittle pasture
#

There's an option to disable Nexus' permission checklist and just type your own notes in the permissions section

pastel dirge
#

Ooh okay

vernal crest
#

I keep being unsure about what to do about permissions/licence for non-code mods so I have just stuck with Nexus permissions for now.

ornate locust
#

It's definitely true that Nexus modders aren't likely to know what those licenses are in general though

brittle pasture
#

Nexus definitely goes the conservative route with perms, since by default unlicensed works are "all rights reserved"

pastel dirge
#

Anyway, does anyone know why the community settled on Nexus and not on Curseforge (for example)?

brittle pasture
#

Curseforge entered the scene only after 1.6 (it has 800 mods compared to Nexus's 18000)

#

also it's earned a kinda scummy reputation from Minecraft

ornate locust
#

man I haven't used Curseforge since like... Minecraft, and didn't much like it

pastel dirge
ornate locust
#

But I've modded ten or so games on Nexus, so what's one more

#

anyway you can definitely use the custom permissions thing to say your license and link to it for people who don't know what it means maybe? It's just not really default knowledge or options

frigid hollow
#

i remember when curseforge was just owned by curse.... then they got bought by amazon and it all went downhill. gamepedia and curseforge used to be good

brittle pasture
vernal crest
#

I avoid CurseForge because of their behaviour. I avoid ModDrop because I'm unfamiliar with it lol

ornate locust
#

I avoid ModDrop because it loads like shit

#

I don't know if my internet hates it or what, always takes so long to load

vernal crest
#

I didn't even know you could get mods on Kofi

ornate locust
#

I've just seen Kofi for tips, Patreon for paywalling

brittle pasture
#

anyway at the end of the day Nexus is popular because that's where most ppl are, and most ppl are on Nexus because it's popular

frigid hollow
#

the kofi ones i've seen have all been "name your price" downloads

ornate locust
#

Had no idea it could do that

uncut viper
#

(tangential fun fact, careful if you ever decide to go the paywall route for any of your mods. if you do, you officially cant put your mod on nexus)

velvet narwhal
#

SDVpufferthinkblob i've never actually used kofi that much, i kind of assumed it was just an author's outside website to be like "unconditional tip if you were so inclined to be nice to me"

pastel dirge
frigid hollow
brittle pasture
pastel dirge
brittle pasture
#

and yeah Modrinth seems to be where the MC folks are heading

pastel dirge
frigid hollow
#

yeah curseforge kinda had minecraft immediately iirc, especially bc the official wiki was hosted on gamepedia (owned by curse)

uncut viper
ornate locust
#

Minecraft's one of those communities that does things in a slightly odd way, sometimes to their detriment (like how at the start everyone used these awful links that would send you to an ad that gave the person who made the link money)

#

that just used to be a thing, if you were downloading a mod, they ran it through a thing that showed you an ad and gave them money

uncut viper
#

i do not miss the ad fly days

frigid hollow
#

adfly... SDVpuffergrimacing always used the mirror link on optifine to avoid it

ornate locust
#

the worst

brave fable
#

god i'm so glad adfly went the way of cursormania banners

ornate locust
#

It is a thing that I am glad has shriveled up into a dead husk

velvet narwhal
#

3 doller for pixel, the games have changed now that those things have died SMCKekLmaoDog

brave fable
#

3 billionths of a cent for a mere minute of your time

#

sometimes u press New Layer on an old file and remember the hard times

brittle pasture
#

every stroke a layer, can't be too careful

velvet narwhal
#

sorry i'm a fiend for that, the different dithering colors are actually linked layers to the base color

brave fable
#

version control for sprites ๐Ÿ™

#

never know when i might need hair copy 15 for something down the line

velvet narwhal
#

i don't actually have the pieces like that separated, just the emotes if that makes sense

#

like i have all of the portraits' hairs on one layer, merged

pastel dirge
brave fable
#

i think that's a fine habit, especially if you're tweaking the colours

pastel dirge
velvet narwhal
#

is it a newage adfly? SMCKekLmaoDog

pastel dirge
ornate locust
#

kill it with fire

velvet narwhal
#

(veering back into mod topic, selph has enabled me to cause problems with this how-to-framework link aSDVpufferrise )

vernal crest
#

I found a mod on Nexus yesterday where the author was very blatantly advertising their patreon with subscriptions to access exclusive content.

#

I wonder if Nexus is (usually) so strict on that because mods are fan content and are therefore technically illegal.

uncut viper
velvet narwhal
#

i've actually had peace of mind for the past like, 5 days cause i haven't gotten an email from nexus to force me to check nexus

vernal crest
#

(I was reading about how fan content is illegal but is covered under fair use and therefore is given a blind eye mostly as long as it's not too monetized which one reason why AO3 doesn't allow monetized fan content)

uncut viper
#

im sure every user-facing financial decision nexus makes has a team of lawyers behind it to figure that all out for them

vernal crest
uncut viper
#

(it was a joke about SVE blatantly advertising 1.15 early access for patreon subscribers)

vernal crest
#

I find early access such a strange idea. I actively do not want to use a buggy, content-incomplete version of something let alone pay for the privilege of it lol

velvet narwhal
#

(y'yknow, i should really make a bookmark folder instead of attempting to type in things to see if i can get back to the damn pages i need, BETAS, stardewui, spacecore, FTM...)

brave fable
#

why do you close your tabs? SDVpufferthinkblob

#

you might need those later

velvet narwhal
#

i am unsure if i have OCD or not, but i actively close my tabs SMCKekLmaoDog

#

it also gets me to stop and take a break because that's my brain going, "i am done"

vernal crest
#

I have so many tabs open I can't find stuff anymore