#making-mods-general

1 messages · Page 319 of 1

cinder talon
#

thank you!! i will keep that in mind, i appreciate you! ❤️

lime seal
#

With CP, is it possible to have 2 machine rules that make the same item but with different ingredients for the "additional consumed item"? I don't see a way to do an or on the wiki page (https://wiki.stardewvalley.net/Modding:Machines), so I assume you need 2 patches. When I tried this out, the second rule is overwriting the first.

woeful lintel
#

Is it not possible to simly make 2 OutputRules with different IDs? Shouldn't talk out of my ass

golden basin
#

so....I made craft recipes

#

how do i fix this??

drowsy pewter
#

Every machine only has one consumed item/fuel for the whole machine

#

cornucopia has many examples if you need a link

lime seal
lime seal
golden basin
#

fixed it with better crafting cool

merry rampart
#

anyone know where the slingshot minigame backdrop is located? i can say it's not in cursors....

violet grotto
#

I'll have a look at it later. Thank you!

violet grotto
merry rampart
#

oh there it is

#

thanks!

woeful lintel
#

If I have a JObject that can contain either

{"X": 1, "Y": 2}

or

{
  "key_1": {"X": 1, "Y": 2},
  "key_2": {"X": 2, "Y": 1},
  //...
}

where key_1 and key_2 are not known, how can I know which one it is? I'd like to have a general solution where what's inside can be a Rectangle or a Point without having to list all their fields

#

from some testing I did, it seemed like JObject.ToObject<Point> would return Point.Zero in the second case, so I'm pretty sure I can't use that

old edge
#

what are some good area's that'd be handy to warp too from underground?

fossil osprey
#

I'd say areas that aren't easily accessible otherwise
Like Cindersap, the secret woods, the railway, maybe the sewers

royal agate
#

Hello, I'm trying my hand at making a farm map, and I want to put the pet bowl a few tiles higher than it appears ingame, but I don't know how to do it. I looked at the wiki, but I don't know what to do with this "PetBowlLocation <x> <y>". Can I just load the "Pet Bowl" tilesheet and place it where I want and the pet will spawn there?

last arch
#

Hi! I'm currently editing character dialogues using my mod's content.json, but I'm unsure whether I should use a single file for all the edits or if I can have one content file per character 🤔

drowsy pewter
#

You can organize it however you find the most helpful for yourself!

#

You would use the "Include" function listed in Content Patcher's documentation. For example you can have a file called dialogue1.json, dialogue2.json, etc. Or have another folder inside your mod with something like sam.json, jenny.json, etc and write the filepath in the Include function

last arch
drowsy pewter
#

Yes exactly

last arch
#

Awesome, thanks! I'll go check that out ✨

drowsy pewter
#

The sub-files will not have some stuff that goes in the content.json, such as the configschema and dynamictokens section, and the CP format. But other than that, the format is the same for them

hasty notch
last arch
#

@drowsy pewter Hi again! Sorry to bother but I'm left with this error in the console :

#

Is there something wrong with my code?

drowsy pewter
#

is that your entire subfile

#

Btw make your format 2.6.0, CP 1.26 is from several years ago

last arch
#

(I closed the brackets correctly, if that's what you're wondering haha)

drowsy pewter
#

That is what I'm wondering

last arch
drowsy pewter
#

It should be Entries: { not Entries: [ {

lucid mulch
#

Entries in content patcher an object not array

drowsy pewter
last arch
#

The error is gone, you were right! Thank you so much

past knot
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 4 C# mods and 1 content packs.

trail bison
#

did you use a fill tool (idk i don't make mods)

frosty hull
#

Yo guy!, how can i get method full name string
for .MapMethod("Banana.Eat()", bananaEatMethodInfo) in InstructionMetadata.cs?

#

like this

lucid iron
#

Is that just the literal names as they are in IL

frosty hull
#

is have method helper for convert MethodInfo to Method Full Name IL String?

royal marlin
#

Quick FS question, what do I do for an accessory to be drawn beneath hair?

royal marlin
gaunt orbit
frosty hull
#

yes sir, i want to remap some method

gaunt orbit
#

Remap how, in what context?

#

Unless you're making a pr to smapi this is not the thing you want

#

There is probably another tool to do whatever it is you're trying to do

frosty hull
#

i'm try to remap some method for android

gaunt orbit
#

Aaaah android modding, that makes sense

#

In that case, what you want is ToString I think

#

Possibly FullName?

frosty hull
#

nvm, i fixed

frosty hull
gaunt orbit
#

Oh, I'm thinking of Type

lime seal
#

@woeful lintel and @drowsy pewter to close the loop, I decided to use PFM instead of Extra Machine Configs to make the second rule for the machine to make the same item but with different "additional consumed item", or fuel. Much neater code too, 20 lines instead of 65 z_foxgiggle Thanks for your help! It's good to know there is technically A Way to do it using CP and EMC

brittle pasture
#

that'd be worse for compat, but if it works for your case

lime seal
#

It's a personal mod, the only one impacted is me SDVpuffersmile

fathom hound
#

I love your new pfp aSDVpuffercute @drowsy pewter

sturdy dome
#

Hello again, is there a template for making marriable npc's or a video or something? I'm pretty basic at coding and new at it. I know about the wiki but I need something that can explain it like I'm 5 years old.

brittle pasture
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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

uncut viper
#

not likely to be any video tutorials that are up to date enough to not be detrimental to use

sturdy dome
jaunty shuttle
#

How do you guys remember all these ! links AMfloffwhat

rigid oriole
#

You watch other people use the commands a lot

#

Theres a lot of super common questions so you see the commands to answer them all the time

jaunty shuttle
#

Impressive, I don’t think I could remember the right prefixes lol

gaunt orbit
#

There's also a list of all of them somewhere

#

If you do /list gov will give you a link

#

There's a lot though and I don't know what most of them do

#

Just the most useful ones

#

Like !stone

jaunty shuttle
#

Ooo thanks

orchid acorn
#

Hello! I'm trying to debug this error for Clara and I'm kind of stumped. Could someone perhaps lend me their eyes?

Basically Ripley is not saying saying anything in the place in her schedule where she's supposed to be saying Paddock1 and Paddock2.

Tried checking if she maybe didn't have enough time to perform the schedule (she does), she is in the correct tile where she's supposed to be, and the i18n keys match and the other schedule dialogue works so it's not a matter of anything being broken in the file... me

Heres the json with her schedule https://smapi.io/json/none/aff59a946bbf4eb0a46f99fa9d643616

and the json with the strings https://smapi.io/json/none/b7cc354ce7e7421da3297fe0a6f7a1ee

calm nebula
#

Pst you have two of same link

pine elbow
#

Where do I start making a Mod for Stardew Valley?

#

I want to make a mod that adds the ability to make meat by putting the animal's produce into a Machine and getting the animal's respective Meat out of it

brittle pasture
#

!startmodding check the content patcher guide

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

brittle pasture
#

content patcher allows you to modify game data to add your own stuff; in this case you want to add a new big craftable (if you're not using an existing machine) to Data/BigCraftable, and then new machine rules to Data/Machines

#

[[Modding:Index]] has an index which points to craftable/machine data

brittle pasture
#

(optionally you can edit shops or recipes to make your machine sellable/craftable)

rich seal
#

Question; I made a custom coop animal whose sprite needed to be bigger than 16x16 for details, but it won't leave the coop. Going behind the coop to get a transparent view lets me see that they did spawn outside, but they're stuck inside the coop. Any way to work around that, or do I take the easy route and make them barn animals? They're still fairly small in size, but they just keep getting stuck in the coop door.

rigid oriole
#

sound like a case for squeeze thru, selph?

latent mauve
#

I'd also be curious as to if anything is popping up in your error log

orchid acorn
# latent mauve I'd also be curious as to if anything is popping up in your error log

Nothing in the error log. I’m doing some finessing and it’s definitely an rrror in the schedule (something similar happened to me with sterling when I made it so he had an entry in thr schedule of an earlier timestamp than the last entry) because after the schedule entry where she’s not saying her line (paddock) she just goes to sleep outside instead of heading inside

#

Let me try patch parse

#

It’s not upset 🤔

#

``[Content Patcher]
Metadata

raw value: fall
ready: True
mutable: False
has tokens: False

Diagnostic state

valid: True
in scope: True
ready: True

Result

The token string is valid and ready. Parsed value: "fall"``

rigid musk
#

#making-mods-art message

I don't know if there is anything unless someone writes a C# component to overwrite Polysweet's C# component

@merry rampart

#

Other than the when condition of.. you know... removing the entire NPC/etc from existing if polysweet is installed

merry rampart
#

That's my workaround rn

#

She just won't exist

rigid oriole
#

Its possible to write the c# but I fear the drama you'd be subject to if you publish the anti polysweet

visual dirge
#

tbf a mod can always patch out your patch

rigid oriole
#

Like an explicit anti polysweet

rigid musk
#

I could make it REALLY not fun for the player by doing the same mail flag work around I did to make a similar event to the cheating one in vanilla

visual dirge
rigid musk
rigid oriole
rigid musk
#

It wouldn't even be a published mod because I know no one would install it (unless people made it a req for their mods)

#

I meant more as adding a C# component to your NPC mod

tawny ore
#

Worth noting that mods which intentionally break other mods can be banned from SMAPI

visual dirge
merry rampart
#

As someone making an NPC who isn't poly it annoys me greatly theres a mod that refuses to respect my wishes and then ppl will come to me and complain about it

rigid musk
#

It wouldn't be to break the entirety of polysweet, my idea is specifically to make it so that MY NPC (or whoever has that C# component WITH thier npc) cannot be patched by polysweet. wouldn't affect anything else it does, just doesn't let it touch my stuff

#

if that makes sense

turbid grotto
#

If you figure that out that’d be so cool

latent mauve
turbid grotto
#

The npc I’m working on isn’t poly either

tawny ore
#

I guess technically it's not mods that break other mods, but mods that intentionally break the game in the presence of other mods, which has only happened once as far as I'm aware

latent mauve
#

(I love y'all, but you were burying poor Hime's issue)

merry rampart
#

I got other things I gotta do today so I gotta duck out

brittle pasture
#

until it is fixed you can make it 32x32 but add whitespace around it

rich seal
#

Conveniently I am using 32x32 already, so that works. Nice, thanks.

rough lintel
visual dirge
tawny ore
#

The previous example was much more malicious

#

It was "mod is installed so crash the game"

visual dirge
#

ah 😨

golden basin
#

I remember the incident matt

rigid musk
#

Why even

golden basin
#

Ppl got way to petty let's just say that

visual dirge
tawny ore
#

That's the only time I've ever seen it be stated that the consequence is for the mod to be banned by smapi

golden basin
#

Made this is a very back in my day war story xD

rigid musk
#

Also sorry Hime I did take a look but I cannot figure out why the string wouldn't be working - especially if the other ones in your other schedules are working just fine too

tawny ore
#

I think the solution is a mod needs to be created called MonogamySour, whose sole purpose is to ensure that NPCs are monogamous

rigid oriole
#

Why sour 😔

tawny ore
#

Sweet and Sour are like Yin and Yang

#

Aw man, I wasn't the first person to make that joke

calm nebula
#

We nerdsnipe....uh

#

Who do we nerdsnipe

#

Matt, are you available for nerdsnipe

tawny ore
calm nebula
#

Got it

#

You're doing an adventure game for asexuals now

balmy venture
tawny ore
iron ridge
balmy venture
#

oh rip

#

I wont bother them then ,if they left means they don't wanna be bothered about it

serene moat
#

They are in the Stardew Valley Expanded mod, so maybe you could message them there?

balmy venture
#

oh! I might, if I can't figure it out myself. I'm burning my braincells trying to figure out on my own

brittle pasture
#

You can also ask here, it's not like they alone hold the knowledge to custom paths

calm nebula
#

No

#

The secret to cusrom pathos is yarizen's alone

#

.... I'm leaving the typi

#

Pathos where do I get pathos llvm

tawny ore
#

We have custom Pathos now? Oh how far AI has come.

balmy venture
#

o.O

tawny ore
#

Is that like CustomGPT?

lucid iron
#

llvm-pathos-dotnet

#

It compiles only sdv c# mods i guess

rancid musk
#

(But in all seriousness, lots of people here know lots about the game, so you don't necessarily need to go find one specific person to get answers about something.)

balmy venture
#

It's just that I'm so into the newbie level that I feel bad for asking the channel very dumb questions XD

#

I'm reading the documentations but sometimes it goes over my head on what they mean

tawny ore
#

Anyone who hangs around here is typically willing to help

lucid iron
#

You should just ask yeah

#

If no one answered it's fine to ask again too

balmy venture
#

🥹 Thank you. I'm trying to understand the logic of adding an item id.

inner harbor
#

So Claras Ripley strings aren't working? But they are loaded, right?

balmy venture
#

The mod wiki seems to suggest you better name it unique like the mod name but I'm checking moar paths as a guide and they seta number instead. I'm trying to figure it out

uncut viper
#

it uses strings for the ones at the bottom

#

the mod mightve initially been created before strings were allowed

balmy venture
#

ooh

lucid iron
#

The recommendation is {{ModID}}_ItemName

balmy venture
#

how do you define modID?

#

like

#

this is their file

rigid musk
#

literally just {{ModId}}

balmy venture
#

but I have no idea where the 13 and 936 came from lol

uncut viper
#

modid is a content patcher token

#

they made up the 13 bc vanilla only goes up to 12

#

and so 13 was next back when you presumably had to use numbers

balmy venture
#

so this?

uncut viper
#

now you can make the 13 into whatever string you want

balmy venture
#

oh makes sense

uncut viper
#

Content Patcher will turn {{ModId}} into that UniqueID yes

#

whatever is in your manifest.json

#

its basically a shortcut so you dont have to keep writing out the whole UniqueID every time

rigid musk
#

^

balmy venture
#

k let me try to take that in so I figure out both id and itemid fields

rough lintel
#

i have once again returned to try c# again

rigid oriole
#

Tell us of your journey lani

rough lintel
#

its everyone giving me the answers and me not knowing enough to do anything with them

#

thats the journey

#

i try and write a check to see if the player has enough money, my entire visual studio breaks down in tears /j

rigid oriole
#

Surely its game1.player.money

rough lintel
#

no i know that

calm nebula
#

I really love a chue's idea

#

To directly edit the blueprint

#

To remoce the items

rough lintel
#

but comparing it against... what... blueprint.BuildCost + requiredCount??

calm nebula
#

And add stone

#

Cost to the monaies

rough lintel
uncut viper
rough lintel
#

oh, so we're not adding it to the cost of the blueprint? because what if you cant even afford the blueprint BEFORE buying the resources?

balmy venture
#

so...am I too far from the right thing?

lucid iron
#

There's 2 ways to do it Lani

uncut viper
#

i dont know if i remember correctly but i thought you were adding a button to click thatll give them the materials they need

lucid iron
#
  1. Alter the blueprint entry to include wood stone cost in the price
  2. Give player required wood and stone then take away the money
rough lintel
#

no, it was a toggle to add the missing resource cost of a building on top of the building cost

#

hm

lucid iron
#

I think 2 is easier to conceptualize and test while 1 is more integrated

rough lintel
#

with option 2, do i still follow through with the building purchase?

uncut viper
# balmy venture so...am I too far from the right thing?

i dont know what C_Paths is but if thats something custom you'll need to Load it, and it doesnt have to go in TileSheets, and it also needs a ModId
otherwise you're missing a Format line but everything else looks tentatively correct at a glance

lucid iron
#

Yeah cus player now has enough wood

uncut viper
#

!json use this too in the future

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.

balmy venture
#

it's where the tilesheets are spread between seasons

#

I'm just following the structure of the other mod haha

uncut viper
#

are there no other more up to date/recent paths mods to look at /gen

balmy venture
#

not that I found

#

maybe I missed some?

#

all the others I found are substituting paths

#

my goal is to create new ones instead

#

many great paths out there but all the ones I use are either substitute cp or AT

uncut viper
#

unfortunately i am a bit too preoccupied to be able to explain like. the process of Loading things and spriteindexes and what targets are and whatnot but if you arent supplementing your learning with the wiki documentation for paths (i hope it exists? idak) i would defer to that instead of the mod

#

as it is not using the most up to date practices

balmy venture
#

I'm trying to use wiki knowledge but it's all a bit hard to understand to me. Like I said I'm super newbie

uncut viper
#

if a different paths mod just replaces the vanilla ones with custom textures but is made more recently thatll actually probably be better to follow

#

bc you can just do the same thing but with a different Entry key and path ID i.e. not use a vanilla, existing one

balmy venture
#

Hmmm I will try to check some then!

rigid musk
#

the archeology skill mod adds paths

#

using CP

rough lintel
lucid iron
#

Yeah

rough lintel
#

which one. lmao

lucid iron
#

Ppl can just do it themselves

rough lintel
#

oh okay

#

cool beans

lucid iron
#

But that's also why 1 is more integrated

#

It should be possible and safe bc blueprint entry is not the direct data entry

rough lintel
#

but you said 2 was better for testing(?)

calm nebula
#

I think 1 would feel better

#

Chue I really love that idea

balmy venture
tawny ore
#

Have you unpacked the game files and looked at Data/FloorsAndPaths already? @balmy venture

#

Everything you're doing is basically trying to add to that file by matching that file's format

rough lintel
#

lmao so i tried out the mod in game, it does NOT grab the stone at all

balmy venture
#

Nope, I was under the impression that custom paths would be different from the core game method

rough lintel
#

but it DOES buy the wood

#

and it lets me keep. buying it. even if i have the mats now

tawny ore
uncut viper
#

99% of things will be added to data the same exact way the vanilla game does it, practically speaking

balmy venture
#

I'm gonna check then

#

I know vanilla has tilesheets with many different paths, I was trying to add singular paths tilesheets instead as it's easier for me to edit

tawny ore
#

Yes, you can provide a custom texture with only your sprites, and the index refers to where on the sprite is your path

#

Or rather, X and Y

balmy venture
#

ya, 0 in this case right

tawny ore
#

Yes, 0 would be starting from the top-left of the image

balmy venture
#

yup

#

since it's only one path per template I left it as 0

#

at least that logic I understand well haha

#

I'm checking vanilla files, only thing I dont get is id and itemid, from the wiki it sounded like the same thing but maybe my newbiness and non native english knowledge let me lose something

tawny ore
#

ItemId I believe refers to Data/Objects. It just has to match.

rough lintel
# lucid iron But that's also why 1 is more integrated

question(?): so it's only letting me purchase for wood mats, and not stone. i just added in a new check for if you already have the required amount, then to ... i think it'd be continue and not return, so im gonna try that now ^^;

tawny ore
#

And you can use a friendly name now instead of a number

tawny ore
rough lintel
#

YES IT GRABS BOTH NOW

#

WOO

balmy venture
#

That helps, I'm trying to understand how vanilla does seasons so I can match my paths

rough lintel
#

ok im feeling rejuvenated

uncut viper
balmy venture
#

so much to learn my head is going into haywire haha

lucid iron
#

Since it is learning project too it's good to explore different approaches

balmy venture
uncut viper
#

(also re: Id, typically it matches the key you used for your entry too)

#

you make both of them whatever you want, but they dont need to be the same as each other

#

when you add your path item to Data/Objects you are giving it an item id that you create, typically something like {{ModId}}_MyCoolPath

balmy venture
#

but they can right? Since I'm making one solo path template

uncut viper
#

then when you add to Data/FloorsAndPaths, you'd put {{ModId}}_MyCoolPath as the ItemId

#

you can make the Id also {{ModId}}_MyCoolPath but you could also make it {{ModId}}_MyFloorsAndPathsEntry
the point is just that they dont have to be the same because they are used for completely different purposes, so dont confuse them, and make sure you include both

balmy venture
#

got it

#

ya I will search and check other custom paths and compare to vanilla to help me understand other stuff on how to organize the mod better. After I manage these basics I can just go from there for other creations as well

twin wadi
#

does anyone know how to add a seed item for a fruit? have all the sprites for the crop and the seed packet, but the seed item comes up with an error sprite. also, all the tutorials I found about adding crops seemed outdated

#

sorry new at modding

balmy venture
#

welcome to my club

rough lintel
#

@lucid mulch did that smapi thing with content loading ever get pushed to the main branch?

twin wadi
rough lintel
#

i am so cheesed this is finally working and doing what i want it to

#

time to unfortunately get into HUD messages

balmy venture
#

Grats, I hope I get there too 🥹

rough lintel
#

does anyone remember/have the link to the sdv audio cue list or whatever

#

i cant seem to find it on google

#

aaand i found it.

#

of course.

rigid oriole
#

[[Modding:Audio]] it's linked here but I've also been doing a lot of documenting on this page as well

rough lintel
#

sweet

#

omg it has sound effects and hud now when you already have stuff ahhh

#

i am cheesed!

#

now my only gripe is that my log prints twice if it goes to grab wood AND stone, instead of just printing once

#

idk if there's a way for it to guarantee it runs once per purchase, and to treat the purchase as like... one. thing. but that requires making seperate variables for wood and stone, and i dont wanna do that, so i wont

#

but its WORKING so im happy

#

now, to make it a toggle on the screen that you click rather than a button press... the real challenge time

rigid oriole
#

Draw code SDVpufferyoba

rough lintel
#

honestly draw code does not scare me as much as getting the thing to work does

#

but im past the hard part... nyehe...

rigid oriole
#

Sometimes I write draw code by just modifying something CA already did but truly I could not say why it works

rough lintel
#

nodnod

rigid oriole
#

like what even is this

#

i'm afraid to touch it ever again and i hope it never breaks

lucid iron
#

Maffs

#

Tbh im sure mr ape feels same way

rough lintel
#

ClickableTextureButton ExcitedCatBlob

#

awoopa awoopa

rigid oriole
#

i kept messing up the math to center things by forgetting to divide stuff by 2 lol

lucid iron
#

Lani the modify blueprint option won't actually require you to make any draw code

#

Bc u just modify the actual valves and let normal draw code do its thing

rough lintel
#

oh!

#

ok yayyy

#

but i did want to make it a checkbox to add the price, so i still dont use draw code?

#

like a lil checkbox in the menu thats like. "Buy missing resources?" and if u click the checkbox, it recalcs the price and yadda yadda new price

lucid iron
#

if u want to add that u need to at least call the draw somewhere yea

rough lintel
#

hmm ok

#

i just want a shrimple checkbox and then text next to it, like in gmcm

lucid iron
#

but u can make it a button rn

rough lintel
#

so i guess ill go look at that

#

oo ok

lucid iron
#

like a keypress to toggle between original price and adjusted price perhaps

#

hook up to ui later

rough lintel
#

ok!

#

alright lets rewrite to make it a bloopy adjusted price

#

thats where the struggles started, really 😔 involving the bloopies...

gaunt orbit
rough lintel
#

alright, things are starting to go wrong i think

patent lanceBOT
lean verge
#

is there a step by step tut on how to make skirts & shirts?

i want to recreate this outfit but i dont know anything about pixel art & coding 😭

~ found it idk why that took so long to find, hopefully the wiki is helpful 😭

faint ingot
#

can you not set the description of an item to use something with [farmerStat MyStat] ? It always shows 0 when hovering the item even when I can check via debug that the stat is not 0.

dusk mulch
#

hi hi

#

how are we

#

i gtg in 4 minutes so…

rough lintel
#

alright, some questions for the csharpers.....

  1. how do i show the new value of the blueprint? if i set totalPrice = blueprint.BuildCost after calc'ing the new cost
int basePrice = blueprint.BuildCost;
int totalPrice = basePrice + (requiredCount * item.salePrice());
totalPrice = blueprint.BuildCost;

do i need to do anything else, or does the buildcost magically change upon me editing the value?

  1. i'm assuming i need to do a new function entirely if i want to start calling spritebatch stuff, since i can't do it in my ever-growing foreach statement? like display_renderingactivemenu or whatever it is
dusk mulch
#

bye

rigid musk
lucid iron
#

You can check what happens if you switch language perhaps

faint ingot
#

Yeah when I switch language the number gets updated

#

any way to force it to update?

#

like could I set the object description to something else and then back?

trim bane
#

Hi, anyone in here know a bit about resource clumps? (like boulders and stumps)

#

My mod is having trouble with them

rough lintel
trim bane
#

The game registers the first hit, with axe.doFunction, but ignores any more hits, even though I'm calling axe.doFunction on it again

#

vanilla

#

I'm working on MultitoolMod

brittle pasture
rough lintel
#

oh........ (crying)

rigid musk
#

oh no what's up with item extensions rn?

faint ingot
uncut viper
#

that is what caching is

#

BETAS has an action that can refresh any field on all of a single item id in the world

#

by setting it to what it would be if you spawned a new, fresh item

faint ingot
#

OK, thank you for the explanation

brittle pasture
#

actually

royal stump
brittle pasture
#

can you manually construct a blueprint entry object that references a manually created building data object

rough lintel
trim bane
trim bane
gloomy hemlock
#

Hey guys, is there a way to add a custom stat with ContentPatcher??

uncut viper
#

use the trigger action action IncrementStat

#

stat doesnt need to exist to increment it

#

itll be created

#

if it goes back down to 0 it'll be deleted

gloomy hemlock
#

Okay I thought so. I've been having one hell of a headache trying to make what I'm working on work. Thank you!

uncut viper
#

im just gonna edit the trigger actions page to say that

#

(nvm ignore me if you saw that msg i deleted, i misread smth)

brittle pasture
gloomy hemlock
#

SMAPI tells me this: [Content Patcher] Can't apply data patch "Romance Expanded > Include Assets/Data/TriggerActions.json > CustomTriggerEvents > entry #1" to Data/TriggerActions: failed converting entry to the expected type 'StardewValley.GameData.TriggerActionData': Error reading string. Unexpected token: StartArray. Path 'Action'..

brittle pasture
#

post your json at the usual site

gloomy hemlock
#

This is what the code looks like:

#

What's the usual site???

brittle pasture
gloomy hemlock
#

Will do

brittle pasture
#

though that screenshot works too

calm nebula
#

That should be correct

brittle pasture
#

that looks fine to me, hmm
can you post the code using the site then

calm nebula
#

Are you sure that is the version the game is loading

brittle pasture
#

and/or did you save

gloomy hemlock
#

{
"Changes": [
{
"LogName": "CustomTriggerEvents",
"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
"ReputationTracker_Length": {
"Id": "ReputationTracker_Length",
"Trigger": "DayEnding",
"Condition": "PLAYER_NPC_RELATIONSHIP Current Any Dating Engaged Married",
"HostOnly": false,
"Action": "IncrementStat RomLength 1",
"MarkActionApplied": false
}
}
}
]
}

#

Did I do that correctly, like the pasting? It told me I'm missing Format but I'm confused bc it's a file from an Include Action

#

Maybe I didn't save correctly?? I'm going to try and see if I'm missing something

uncut viper
#

(if its in an Included file, ignore the warning about Format)

gloomy hemlock
#

Ahhh okay so this should work correctly. I'll fiddle about some more and see

#

IT WORKS. No idea why suddenly. But victory is victory

uncut viper
#

question for the C# people or people who know a lot about the multiplayer shadow realm:

for this mod im making i have a Manager class and inside that class i have a field that references a GameLocation. this has worked perfectly fine for both singleplayer and multiplayer up until now. i have code that will add some data to the modData of the GameLocation referenced in this Manager class. it only runs on the host that way i can be sure its added to the non-shadowrealm version of the location. that works fine on the host ofc and when I'm on the farmhand and check Game1.currentLocation.modData when inside that GameLocation, the mod data is there ofc even if I wasnt present with the farmhand when it was added. so its getting synced to the farmhand fine.
however, if instead of using Game1.currentLocation.modData on the farmhand, I instead look at Manager.LocationReference.modData, the mod data is not synced to that GameLocation, even though i previously thought it'd be referencing the same thing. i assumed that when things like modData and such were synced over, that it would like, overwrite stuff in the original GameLocation? is it actually creating a whole new GameLocation? is it very bad for me to be storing GameLocation references like this without requiring people use AlwaysActive? (bc it works perfectly fine if the location is AlwaysActive)

twin wadi
#

im kind of stumped while making seeds for a custom crop; i was looking at the blueberry seeds code as an example, but why is the texture set to null? also i noticed that the crop and the seed id's are the same.

    "Name": "Blueberry Seeds",
    "DisplayName": "[LocalizedText Strings\\Objects:BlueberrySeeds_Name]",
    "Description": "[LocalizedText Strings\\Objects:BlueberrySeeds_Description]",
    "Type": "Seeds",
    "Category": -74,
    "Price": 40,
    "Texture": null,
    "SpriteIndex": 481,
    "ColorOverlayFromNextIndex": false,
    "Edibility": -300,
    "IsDrink": false,
    "Buffs": null,
    "GeodeDropsDefaultItems": false,
    "GeodeDrops": null,
    "ArtifactSpotChances": null,
    "CanBeGivenAsGift": true,
    "CanBeTrashed": true,
    "ExcludeFromFishingCollection": false,
    "ExcludeFromShippingCollection": false,
    "ExcludeFromRandomSale": false,
    "ContextTags": null,
    "CustomFields": null
  },```
brittle pasture
#

The texture field defaults so maps/springobjects if not set

#

also yes, they are meant to be the same

gaunt orbit
brittle pasture
#

The key of a Data/Crops entry must be the id of the seed item associated with that crop

gaunt orbit
#

(unless you're host or same computer)

twin wadi
#

ohhh okay

uncut viper
calm nebula
gaunt orbit
#

Oh, that is strange

calm nebula
#

Can you look at the memory location of each

uncut viper
#

uh

#

how

calm nebula
#

Actually just object.referenceequals them

uncut viper
#

i will report back

gaunt orbit
uncut viper
#

dont really know what that means, to be perfectly honest!

gaunt orbit
#

Locations all have their own root, so if you put it inside something else it might break the tree

gaunt orbit
uncut viper
#

its just a public GameLocation location field, so nothin net

gaunt orbit
#

No idea then

uncut viper
#

ill try the referenceequals thing first after the million years it takes to launch both my main instance and my farmhand instance

#

(it would help if i didnt forget to turn off AlwaysActive first...)

#

they are indeed not equal references

gaunt orbit
#

Oh dear

uncut viper
#

well, a quick fix of just changing that field into a property that calls Game1.requireLocation works, i suppose... i guess its not the worst when most of the time thats checked, it will be the current location

twin wadi
#

how do you add something like a random, small chance for you to get something when you do an action? like a treasure chest, or harvesting a specific crop

lucid mulch
#

And yes non-active locations create new GameLocation references every time when doing warps

twin wadi
#

sorry im asking so many questions! just really new at this stuff

uncut viper
#

at least i found that out before publishing 8')

uncut viper
lucid mulch
#

There is a multiplayer map cache functionality that preserves some stuff locally, like the xtile map itself, tracked map modifications and one or two other items

uncut viper
#

(i am jus glad i can get away withchanging that field into a computed property that easily and dont need to refactor Everything right at the finish line)

umbral plume
#

hallo

#

just a few mini issues before my farmhouse mod is 100%

#

I've got the modding wiki open and im trying to make some walls and floors able to have changeable wallpaper and flooring but one/two of the rooms arents changeable

gaunt orbit
#

You need the tile properties

umbral plume
#

The wallID and FloorID?

gaunt orbit
#

Since you mentioned that you have some working rooms, you can copy the tile data from those and just change the id

#

Yeah

umbral plume
#

They have them

gaunt orbit
#

And they're on the right layer?

umbral plume
#

maybe i spelt it differently one secon

gaunt orbit
#

Make sure the capitalization matches, too. Tile props are typically case-sensitive

umbral plume
#

nope

#

still cant

#

Also a bit annoyed that....

#

the kitchen counter decided not to shorten like i have it in tiled

gloomy hemlock
#

Is there a handy token from ContentPatcher that will place the name of person you're with romantically? They have one for spouse but my understanding is that it only covers if you're married. Essentially a version of {{spouse}} that shows the name whether dating, engaged, OR married.

#

To be clear I've been reading the tokens and conditions guide top to bottom and unless I'm totally missing it there isn't one that does that. Relationship places the type of relationship, not the name of the person you're dating/engaged/married to

tiny zealot
#

one problem is that the game expects you to have only one spouse, but you can be dating as many people as you like

rigid oriole
#

Tokens are already sets right

tiny zealot
#

yes but if your goal is to sub in the squeeze's name in dialogue then it isn't helpful to be a set

calm nebula
#

The {{spouse}} token also covers engagement

#

Although it would be nice if there was a token that told me if the player was a two timing old fool

tiny zealot
lean verge
#

are there any step by step guides with pics for making shirts or furniture??

im reading the modding wiki but none of it makes sense and imo isnt that beginner friendly, or stupid friendly bc im lost 💀

gloomy hemlock
#

Essentially I'm trying to get an action to fire when breaking up with somebody and I was hoping by using TextOperation, Append, and tokens I could squeeze in having an action fire within the BreakUp dialogue. My mod is trying to expand romance by adding a reputation system and one of the metrics tracked is the length of your current relationship. I want the stat to reset to 0 by having the action set a different stat (BrokenUp) to 1 and then using a TriggerAction that fires on DayEnding it can fire bc the stat is above 0 and reset the RomLength to 0. The reason I'm not just having it be a TriggerAction that fires at DayEnding if the person is single bc they could theoretically break up and get with another person on the same day. But as I'm having this convo I'm realizing the multi dating means it still won't necessarily be accurate.

#

The reason I was hoping to use tokens was so it could be easily slotted in with modded characters and so on

#

Back to the drawing board. I need to think of a modular way to track RomLength as well....

#

Can stats have a token attached to them?

calm nebula
gloomy hemlock
#

Okay second question now: "A query expression is an arbitrary set of arithmetic and logical expressions which can be evaluated into a number, true/false value, or text."
Does this mean a query expression could be used to output an NPC's name? Like would this PLAYER_NPC_RELATIONSHIP ever be able to output a name or is it only a True/False kind of situation?

uncut viper
#

you cannot use GSQs in a token

#

unless that token is Esca's Modding Plugins's GSQ token

#

and all GSQs are only ever true/false

#

they do not evero utput anything that is not true or false

#

or error

faint ingot
#

any way to display a short little message in the corner of the screen when the player exits the farmhouse, without fading into a whole event? would rather not use mail for this but maybe that's the only option

uncut viper
#

stats cannot have a token "attached" to them because the game has no idea what a token is and never will. it has no way of knowing you are using tokens ever

#

you can use tokens in your patches like you can anywhere else, and theres nothing stopping you from using a token in your Action in a Data/TriggerActions patch

uncut viper
lucid mulch
#

with C# you could make a token that has stats in them, but stats are a very fluid value which makes it a non-ideal fit for a token due to update rate

uncut viper
#

Esca's Modding Plugins also has a Stats token

#

if thats what you meant bittersweets then it can help you there too

gloomy hemlock
#

That's good to know. Thank you both, I'm going to look into the Modding Plugin

uncut viper
faint ingot
uncut viper
#

many people ask many questions so theres no worry about asking too many

#

if you're using Fashion Sense help is a lil more limited and the guides even less existant but there are still people who could help if theyre around

#

if you're using content patcher for your shirts then the content patcher basics will be the most helpful to learn as adding shirts is little different than adding anything else
same for furniture

lucid mulch
#

SpaceCore is one of the safest dependencies due to how prevelant is anyway

uncut viper
#

approximately 262 mods depending on it, so you'd be in good company

faint ingot
#

yeah I almost did add spacecore for something else in this patch but ended up going another direction. May end up using it eventually but this is a very minor thing.

uncut viper
#

you could always put it as an optional dependency

#

if someone has spacecore installed, they get a hud message, if they dont, then they get nothing

fluid marsh
#

Hey! I'm looking for some advice. I've been working on a series of mods that improve/polish the vanilla portraits and overworld sprites. I've finished six so far, but I'm planning on doing all of the NPCs eventually. I've been trying to decide if it would be smarter to upload each character as an individual mod, or hold off and upload them as one big mod (where you can configure which ones you want to use). I'm not sure what people would prefer, or what would have better reach. If anyone has any input, it would be much appreciated!! Thank you :3

uncut viper
#

just going off myself, i would be more likely to click on a mod that had a whole pack of NPCs available

tiny zealot
#

i think users get a better experience if there's just one mod and they can configure it

uncut viper
#

but also, nexus might not like you doing one at a time either

#

they might also not give a shit, or they might think you're DP farming

brave fable
#

single mod with config options, personally it always leaves a bad taste to me seeing a dozen individual pages for what's essentially the same mod

#

just think of the nexus hosting costs. unbelievable

tiny zealot
#

if you want to build hype before release you can upload previews/teasers to the media section

brave fable
#

SDV mods are generally pretty lightweight in filesize so you likely won't even need to separate it into optional files, there won't be much bloat from a couple of extra PNG images and text files

uncut viper
#

(do people look in there? /gen)

brave fable
#

(nope)

uncut viper
#

tbh, i had to think for a second to remember what media section you even meant

tiny zealot
#

someone must. whenever i look at it (QED, i guess) the posts have numbies

uncut viper
#

numbies...

brave fable
#

simply use the Articles tab to build up hype for your mod with bespoke blog posts

calm nebula
#

Got it. Doing YouTube previews

uncut viper
#

(you'd probably get better reach using the mod showcase in here to build hype. as long as you arent spamming it, ofc)

calm nebula
#

||preview is just some random snippet of a visual studio window||

#

God I hate YouTube premeurs

umbral plume
#

HALP

#

i have 6 miniproblems that i cant solve by randomly placing black tiles

#

lol

#

i even made myself a list

#
  1. Walk-through Walls: Bottom left of second nursery, Left side of staircase to LargeRoom, both staircase walls to Bathroom
  2. LargeRoom's Front layer won't show
  3. Kitchen counter isn't shortened like it is in Tiled
  4. Staircase to LargeRoom still has room divide and shading
  5. Room border tiles still have notches
  6. Wallpaper/Flooring won't change: MainBedroom, to tiles at base of MainBedroom staircase, lower wallpaper behind crib
#

theyre in order of most important (i think?)

#

i just need help tackling them

#

....anybody?

rigid musk
#

Unfortunately i dont know nothing about farmhouses so I can't help

umbral plume
#

maybe some of the issue is the tilesheet order, i just noticed the wiki has a little note about it

#

maybe ill solve my own problems?

lean verge
#

what does it mean by unpack

#

and what even is this 😭

umbral plume
#

it solved nothing SDVpufferwaaah

brittle pasture
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!

rare perch
#

is there a modders resource that shows all the event names that each character appears in? im changing a characters pronouns (i am trans, its tasteful) and going thru each event file is gonna take awhile

lean verge
rigid musk
woeful lintel
rigid musk
#

idk how you do it in anything other than notepad ++ but if you look that up you can probalby figure that out

rare perch
#

ive alr got notepad++

rigid musk
rare perch
#

tysm!!!

rigid musk
#

for example :3

#

and then it should pop up a window with all instances of that character being referenced

lean verge
#

ok back to reading 🫡

latent mauve
#

If a FloorID tiledata object is on the same tile as your Front-layer wall, then the back tile will draw on top instead, so check that you didn't have a TileData object extending on those sections with the missing Front tiles in game

lucid mulch
latent mauve
latent mauve
latent mauve
# umbral plume

Ok, you need to move your walls to AlwaysFront on the bottom

umbral plume
latent mauve
#

Because you do have tile data objects there

umbral plume
latent mauve
#

Yes

umbral plume
#

im getting annoyed that i suddenly start clipping through some walls and black boxes arent fixing it

latent mauve
#

Make sure they are on the Buildings layer

#

And not Buildings2 or something

#

The boxes, that is

umbral plume
#

oh does there always have to be an objects layer for each tile layer

latent mauve
#

No

#

For the primary layers, you might(?), but I don't think you need to for numbered layers

#

If that was the issue you would probably have an error in the log though

umbral plume
#

should i make an alwaysfront object layer for that bottom row?

latent mauve
#

When in doubt, check against the default farmhouse map

#

You typically never want less layers than the map you are replacing.

woeful lintel
#

I'm never getting into mapping

latent mauve
#

It's not that bad if you always work from a vanilla map as a base xD

#

That solves most of the common issues

umbral plume
umbral plume
rough lintel
#

its great otherwise! lol

latent mauve
#

I had zero issues with floorid after we figured out that my only issue was that it was broken in custom renovations at the time I tried it

umbral plume
#

welp it almoost worked

#

for some reason, its meshed both the vanilla map and mine?

#

Like its mine except for a few vanilla things like the room border notches and the kitchen counter is still extended

latent mauve
#

The kitchen might be hardcoded to draw a certain size based on the tilesheet but I am unsure.

umbral plume
#

ive seen mods where the counter is toggleable but i wonder if they made the map from scratch because i built off the vanilla so it might be hardcoded on vanilla

latent mauve
#

Making it from scratch wouldn't change that effect

umbral plume
#

damn

latent mauve
#

When something's hardcoded in the farmhouse, it's not tied to the Tiled file so much as the actual game asset at that path

#

Which you have to inject your map into the same path in order to have it even show up there, sooooo

umbral plume
#

as far as changing to wallpaper and flooring....

#

but where do i check if its "decoratable location"

latent mauve
#

Custom renovations are automatically decoratable locations now. Farmhouse is also decoratable by default, as are sheds.

umbral plume
#

but then why isnt the attic i adjusted customizable

#

it wont let me change the wallpaper and flooring

#

maybe its the wallpaper and flooring i used to make it?

#

the darker version

latent mauve
#

Are the tiles you are using for the default wall and floor from a tileset with "walls_and_floors" in the name?

#

that's required

umbral plume
#

i thought so but i can redo them to be sure

latent mauve
#

by default Tiled makes new added tilesets named "untitled tile sheet" which won't work here.

alpine mauve
#

Is it possible to get mods on switch?

latent mauve
#

example from my bathroom reno

lean verge
#

it’s fine for my to go into the files of the mods i have downloaded right?

i think it’ll help me figure out wtf im doing but i dont want to mess anything up

woeful lintel
alpine mauve
#

K

#

I just asked the modded farmers channel

latent mauve
#

Not possible without hacking your Switch at least, which we cannot and will not discuss in this server.

latent mauve
#

(if you make changes, you need to save it as a copy or an entirely different file to prevent accidentally messing up the existing mod files)

umbral plume
latent mauve
umbral plume
#

it still not working SDVpufferwaaah SDVpufferwaaah

#

its not unplayable, just annoying

latent mauve
#

I promise the renovations can use changeable walls and flooring. xD

#

something is set wrong

umbral plume
#

lmao

#

i renamed the room? But i also renamed the other rooms and they can be customized?

latent mauve
#

trying to think if there's another step you might be missing

#

Did you include the FloorID and WallID for your attic in the Map properties?

umbral plume
#

yep, but idk what the numbers after the names refer to?

latent mauve
#

the numbers are the spriteIndex on the sheet used for the default wallpaper or floor

#

the numbers are optional

umbral plume
#

ah so its probably not them

latent mauve
#

Lemme see something, I bet you need to add them to the Farmhouse itself still

umbral plume
#

i copy pasted the map property Floor and Wall IDs to each map though T_T

latent mauve
#

code block too long, one moment while I put it on the JSON parser

woeful lintel
latent mauve
#

I did mine via code so I didn't have to fight with the fact that map properties do not transfer when you do EditMap actions.

umbral plume
#

would you just add that into the json?

latent mauve
#

yep

umbral plume
#

id have to figure out what to put in the values though

latent mauve
#

I only target Farmhouse2 because my renovation goes off the hallway.

umbral plume
#

i used the vanillas

latent mauve
#

The MoreWalls:0 and MoreWalls:1 thing were for my custom tilesets

#

again, those values are optional

umbral plume
#

what would i put in values if i was using vanilla?

#

walls_and_floors

latent mauve
#
  "LogName": "Add FloorID for Ginger Island Bathroom",
              "Action": "EditMap",
              "Target": "Maps/IslandFarmHouse",
              "TextOperations": [
                  {
                      "Operation": "Append",
                      "Target": [ "MapProperties", "FloorIDs" ],
                      "Value": "Fireredlily.IslandBathroom 23, Fireredlily.IslandSERoom 23",
                      "Delimiter": "," // if there are already floor IDs, add a comma before this one
                  }
              ]
          },``` this uses the default walls_and_floors set to match the Ginger Island farmhouse floor and walls
#

So there's just a number with no texture name

#

(23)

lean verge
#

i can make mods on my steam deck with just the on screen keyboard?

brittle pasture
#

sure
if you hate yourself

calm nebula
#

Why not get a proper keyboard and moise

#

You can grab a USB unit from the thrift store for a few bucks

vernal crest
#

I've gotten fast enough at typing json on my phone for example on discord that I could make mods just using my phone lol

lean verge
#

im very much broke rn SDVpufferchicknight

umbral plume
#

my json is missing an end piece and i cant fiigure out what it is lol

lean verge
umbral plume
#

what am i missing help

#

its an end piece right?

#

what end piece T_T

vernal crest
#

You haven't closed your changes block or the whole field

#

File, I mean

#

You can click on each bracket and it will show you which one it's paired with

umbral plume
#

:0

#

parser still doesnt like it

frosty hull
#

Hello World, anyone can tell me
what is menu "public class LetterViewerMenu : IClickableMenu"
and how can i open this menu

latent mauve
umbral plume
brittle pasture
brittle pasture
#

yes

frosty hull
#

ok, one sec

#

on android

#

thanks 👍, i just try to add missing method for OnPageChange() on class LetterViewerMenu

umbral plume
#

@latent mauve it didnt work SDVpufferwaaah

#

fk it ill worry about it another time i just wanna play now

latent mauve
#

Also I feel like your value is wrong

#

(it should match the FloorID or WallID you use in your TileData object)

frosty hull
ocean sailBOT
#

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

rigid oriole
#

if you JUST installed smapi, I've found windows (maybe microsoft defender?) is a hater of new smapi installs. if you wait a day or two it should speed up again

frosty hull
#

huh

calm topaz
frosty hull
#

sorry, i mean it's slow from starting
09:58:13 to 09:58:18 DEBUG SMAPI Loading mods...

brittle pasture
#

@brave fable I got a couple issues with LOC's integration with Better Crafting:

  1. The custom seasonings don't work because of a strange issue where the dynamic token isn't filled in somehow? https://smapi.io/log/cee8e29ed8df4837ab44ca1f3dc0c86d
  2. Qi Seasoning do work, but each cook eats 4-5 seasoning item instead of 1, and gives an iridium quality item instead of gold. Strange part is, if you have less than 4 in the inventory they get consumed correctly. They don't cause any errors though.
    Both tested with just LOC and BC. Let me know if I should post this somewhere on the mod page
    (posting in here as well because that dynamic token error is fascinating. I'd look into this myself but the public repo's definitely out of date)
ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.14.7.1, with 9 C# mods and 2 content packs.

brittle pasture
#

(are you perchance loading the tokens too early?)

#

(no idea what's up with 2, since as I said the source's outdated SDVpufferlurk )

finite sequoia
#

So, my NPC Kenzie lives in the second floor of Lewis's house with an office. I want to encourage players to visit her more, and I'm curious if it'd break anything hardcoded other than their introductory events if I were to move the prize ticket machine, and maybe the divorce, multiplayer funds and lost and found tables too? I can't see many downsides, so I'm curious if anyone else recognises them

calm topaz
brave fable
#

dynamic tokens my loved and loathed

finite sequoia
#

Hoping that editing the event is the only signifigant change, and I can just search for instances of the others being named and replace

lucid mulch
lean verge
#

it took me an embarrassingly long time to figure out how to use stardewxnbhack but i finally did it SDVpufferyoba

#

wait this is so fun i can see all the image files

brittle pasture
#

LOC likely cached it earlier?

brittle pasture
#

still dunno what's up with qi seasoning quadruple consume though

lucid mulch
#

LOC has nothing to cache, the computed value is in content patcher not LOC

uncut viper
#

blueberry IS the number one source of all things dynamic token errors

lucid mulch
#

Dynamic tokens are very basic though, particularly ones that don't have tokens in them themselves or any conditions

#

Which would give them the same characteristics as config

cinder talon
#

so... i'm working on the bare bones concept for my mods before i start writing them [just so i can prepare a script and have it follow the lines smoothly]

#

scale 1-10, how nightmareish do you guys think this'll be to code the logic for? xD

#

its got a painful amount of particulars

uncut viper
brittle pasture
lucid mulch
#

And most of those cases would use modid, which is immutable and so avoids this problem all together

brittle pasture
#

that leaves the quadruple qi seasoning eating

lucid mulch
cinder talon
#

thank youuu :D

brittle pasture
#

though LOC doesn't touch qi seasoning logic right

#

I wonder if BC is triple firing because of the extra handler...

lucid mulch
#

doesn't loc replace qi seasoning with its own mechanic for the +1 quality or something

brittle pasture
#

it does, but with better crafting qi seasoning is usable (likely because BC has the logic built in)

brave fable
#

LOC changes it for the base and LOC cooking menu instances, but registers a handler to BC's seasoning seek/use events

#

more accurately, BC has the logic built in because LOC uses custom seasonings

brittle pasture
#

yeah, I think(?) it's because BC's built in Qi handler is stacking on top of LOC's own handler, so it's being double applied

#

when I changed LOC's BetterCrafting_ApplySeasoning to exit if it's Qi Seasoning it works

rancid musk
#

Might be a bc bug too

brittle pasture
#

(well it only goes to gold like vanilla, while LOC presumably wants it iridium while leaving gold to the super seasoning)

brave fable
#

is BC's handler called for base and LOC menus SDVpufferthinkblob i wouldn't have thought so

#

likewise i don't think LOC's handler can be called unless BC calls the base method

uncut viper
#

is there a way to use the debug warp command to warp the second player in a splitscreen instance for me to test my mod or am i gonna have to actually add in a warp to a map somewhere to actually reach my location

lucid mulch
#

can splitscreen users use chat?

uncut viper
#

never mind i forgot hot reload works with splitscreen so i can just warp myself with a buttonpressed event

#

they can! apparently

lucid mulch
#

if so, turn on the vanilla cheat commands and do the debug warp commands in splitscreen chat

uncut viper
#

i will do that if i need any other commands SDVpufferthumbsup forgot i could do that, thank you

brave fable
#

is there an issue with the screen=1 parameter?

uncut viper
#

where would i put that parameter when putting a console command into the console

brave fable
#

debug warp farm 10 1 screen=1 ?

uncut viper
#

well whaddya know

#

i had no idea that was a thing at all so i cant even say i forgot

brave fable
#

quote help:

When playing in split-screen
mode, you can add screen=X to send the command to a specific screen instance.

uncut viper
#

you think i actually use the help command

brave fable
#

it's okay to need help

lucid mulch
uncut viper
#

im part user so i cant read part-time

calm nebula
#

Please, the cdsnhelp command is the most useful one

uncut viper
#

on the bright side i dont think i need to do any more splitscreen testing anyway since everything seems to work fine SDVpuffersmile

lucid mulch
#

I can't even defend myself with it being new, the help text and split screen parameter goes back to Jan 2021

uncut viper
#

i wouldnt ever blame anybody for not knowing something about split screen

#

its split screen

brave fable
#

quickly finding out who tests their mods in splitscreen 📝

lucid mulch
#

if I do multiplayer I do multiple instances with localhost / blank ip

uncut viper
#

thats what i usually do, but i wanted to cover all my bases here

brave fable
#

multiplayer in a single instance is preferable imo since it gets both out of the way and you can apply code changes

uncut viper
#

didnt wanna somehow muck up a mutex bc of splitscreen weirdness

lucid mulch
#

does split screen multiplayer use the netcode?

uncut viper
#

¯_(ツ)_/¯

brave fable
#

🤷‍♂️

uncut viper
#

i dont know what good testing on splitscreen versus two instances does. but i know it will let me say "Multiplayer compatible (split screen included)!" on my mod showcase post

lucid mulch
#

I know it does ungodly things with its InstancedStatic crap, but I assumed it didn't use netcode, which is why I test with instances

uncut viper
#

ill be honest if there was anybody i was going to ask about how split screen or split screen netcode worked it would have been you

lucid mulch
#

but I don't respect split screen enough to actually go down that rabbit hole

#

I care about real multiplayer and have good knowledge as to how it works

calm nebula
calm nebula
uncut viper
#

i wonder if split screen multiplayer would have that GameLocation problem i had

lucid mulch
#

that I can answer yes

uncut viper
#

myuu is the person i thought did netcode stuff too but theyre not a person i would feel comfortable pinging out of nowhere to ask a netcode question

lucid mulch
#

I've had profiler logs from split screen users where they get the stutter when the other players warp

uncut viper
#

an odd beast split screen is

calm nebula
#

Well yes

lucid mulch
#

the smapi asset pipeline and all of content patcher runs twice on split screen users, its fun

calm nebula
#

Stardew is still single theeaded

#

Yup. Also why does it run twice...

#

I thought game1.content was shared

#

Tl;dr for the love of God do not play mooded splitscreen

lucid mulch
#

maps don't use Game1.content they use the xtileContent one or whatever, but all of Content Patcher is PerScreen<>

calm nebula
#

Or moody splitscreen

#

All of content patcher is but iirc most of the content managers are NOT instancedStatic

lucid mulch
#

the xTileContent isn't a static, its an instance value of game1 and doesn't have the attributes content has

calm nebula
#

The game locations themselves are separated yeah

lucid mulch
#

but how does a shared game1.content work if CP is splitbrain and doing edits separately

calm nebula
#

Shrug emoji

#

Not an atra problem

#

An atra has different fishies to fry

twin wadi
#

i just made a custom crop just for practice and my end goal is making an npc but it's really hard, is there any middle/intermediate thing to do before that to practice?

final arch
#

a very very basic npc isnt that hard, I think you can just start and flesh it out as you go SBVHappyRose

cinder talon
#

with sprites, does it start a an index of 0 or 1 to count down?

uncut viper
#

0

cinder talon
#

thank u! i thought so but wanted to make sure

#

when youre using move for the farmer, you're good to just put move farmer x y whatever right?

#

or do i have to use another placeholder to refer to farmer?

cinder talon
#

with all the portraits, how do i call upon a specific portrait - for example, sam's pleased one?

#

beyond the given $0-4 for the basics

unreal spoke
#

That "dollar designation" works for all portraits, not only the first five. You can just count the portraits (zero indexed) and use the corresponding number.

lean verge
#

is there a stardew style pixel art guide

unreal spoke
#

!pixelart

ocean sailBOT
#

Where to Start With SDV-Style Pixel Art
If you've never done pixel art before, don't stress! It's easy to pick up the basics - the key is to start small, ask for feedback, and incorporate that into your work.

To start, you'll want an art program. See a list of recommended programs in the !software command.

Here's some good beginner tutorials!
http://pixeljoint.com/forum/forum_posts.asp?TID=11299&PID=139322
https://medium.com/pixel-grimoire/how-to-start-making-pixel-art-2d1e31a5ceab

To start off, try opening an existing portrait and changing the outfit. Start small: edit a shirt pattern, change a jacket collar, or remove a scarf and draw the clothes underneath. Ask for feedback too! The best way to improve is learning how to identify what's wrong and why, so then you can work out how to fix it.

Here's more good tips from the artist of "Celeste":
General pixel art 1: https://www.patreon.com/posts/pixel-art-1-6971422
General pixel art 2: https://www.patreon.com/posts/pixel-art-part-2-11225146
Outlines: https://www.patreon.com/posts/outlines-14106192
Shading: https://www.patreon.com/posts/shading-13869731
Portraits: https://www.patreon.com/posts/portraits-8693396

SDV has a few quirks to remember too:

  • Colour limits: Limit the number of shades you use - stick to six including the outline.
  • Hue shifts: Rather than making shadows and highlights lighter or darker versions of the base tone, SDV shifts the hue too. Eg. a base orange will have yellow highlights and red shadows. This goes for skintones too!
  • Light source: SDV uses a top-right & slightly forward light source - check the vanilla art for reference.
    Most importantly, don't hesitate to ask questions and get advice from people. Have fun!
lean verge
#

ty :)

unreal spoke
#

!pixelartinfo

ocean sailBOT
lean verge
#

thanks again!!

i have so many ideas i’m just scared my brain is unknowingly stealing something i’ve seen on nexus 😭

unreal spoke
#

!twocakes :)

ocean sailBOT
#

If you discover that someone has made or is making a mod with a similar concept to yours, don't stress! Our community promotes the idea of "two cakes", where two versions of the same idea can peacefully co-exist. Your mod will have your own unique stamp on it that makes it special.

rigid oriole
#

am I right in interpreting this as an 11% chance rather than a 1.1% chance? I think there might be a wiki typo

unreal spoke
#

That aside, as long as you don’t directly copy someone’s art against their permissions, I doubt you’ll run into trouble.

rigid oriole
#

it is late for me and i have done a lot of math today so forgive me if i am fully mistaken

lean verge
# ocean sail

omg there quite literally is a command for everything
okok i’ll see if my art skills r even high enough to do what i want to & go through with it SDVpufferheart

lean verge
uncut viper
#

NextDouble returns between 0.0 and 1.0 so yeah 11% id assume, unless there was other math being done outside the screenshot

lean verge
rigid oriole
#

no other math, it's just part of a conditional

unreal spoke
uncut viper
#

like compounding random checks

rigid oriole
uncut viper
#

theres another random check above it that would cause that random to not even be checked

#

you have to pass a 10% chance and then another 11% chance after that 10% chance

rigid oriole
#

oh i missed that

#

ok good call thanks button

cinder talon
#

how does question fork work? the wiki doesn't go into a lot of details - with the answers, how do i label what the answers are and how do i proceed the script, and define the line between the scripts for each answer?

uncut viper
#

unrelated cp question that i probably should know the answer too but its late and im also tired: if i have an asset that is a Dictionary<string, List<Thing>>, and i want to EditData a new item into that List for a specific entry, will Content Patcher create that string key in the dictionary if it doesnt already exist if I use TargetField?

#

like if i wanna do "TargetField": [ "someKey" ] before the Entries, so i dont overwrite the whole list, but someKey may or may not exist

vernal crest
cinder talon
#

doesn't quick question only work if the behavior of the rest of the event isn't dependent on the answer?

vernal crest
rancid musk
# brave fable is BC's handler called for base and LOC menus <:SDVpufferthinkblob:958634925639...

Sorry, got preoccupied with stuff.

BC's handler is only called for the BC menu implementation, it doesn't patch its way into anything. Next time you update, you might want to set cs e.AllowQiSeasoning = false; in your seasoning handler? Just to make sure the vanilla logic never runs, though it shouldn't do anything as long as your seasoning has already affected the quality.

I'll try to do some proper testing of this tomorrow. I really have no idea why things would result in iridium quality unless it's something coming from your seasoning data model.

lucid mulch
# lucid mulch afaik yes
// apply target field
if (this.TargetField.Any())
{
    var path = new List<string>(this.TargetField.Length);

    foreach (IManagedTokenString fieldName in this.TargetField)
    {
        path.Add(fieldName.Value!);
        IKeyValueEditor parentEditor = editor;

        object key = parentEditor.ParseKey(fieldName.Value!);
        object? data = parentEditor.GetEntry(key);

        if (data is null)
        {
            // if we're targeting a null list or dictionary, create it
            Type? type = parentEditor.GetEntryType(key);
            if (type?.IsGenericType is true)
            {
                Type genericType = type.GetGenericTypeDefinition();
                if (genericType == typeof(List<>) || genericType == typeof(Dictionary<,>))
                {
                    object newData = Activator.CreateInstance(type!)!;
                    parentEditor.SetEntry(key, newData);
                    data = parentEditor.GetEntry(key);
                }
            }
        }
        ...
    }
}
uncut viper
#

oh lovely, i will give my plans a shot then. thank you SDVpufferheart

lucid mulch
#

(its mainly this bit of code that limits CP to only respect Concrete List<> and Dictionary<> rather than IList<> or IDictionary<>)

woeful lintel
#

Is there a class to inherit when making a custom data model for CP to properly find the "ID" when doing an EditData on elements in a List? Or does it just search for a field/property called ID in the data model class?

brittle pasture
#

Yeah just having Id is fine

lucid mulch
#

Id or ID in either property or field

faint ingot
#

anyone happen to know how many ms a globalfade takes at default speed?

woeful lintel
#

thanks!

lean verge
# ocean sail

everytime i think my idea is too similar to something i think back on this SDVpufferheart

#

love this community

vernal crest
faint ingot
#

I did some experimenting and found something that seems to work, thanks

vernal crest
#

The first time I experimented I set it to 6 places after the decimal and it took YEARS to fade. I sat there for ages before I remembered the debug endevent console command lol

faint ingot
#

speaking of experimenting with events, I've been restarting my client every time I test a new iteration (using a mod that speeds up the game intro menu). is there a better way that still loads any changes I make to the event?

vernal crest
#

Yes, patch reload works for events

faint ingot
#

thanks I'll try that next time

#

does it get i18n changes as well?

vernal crest
#

Nope but using reload_i18n first does

faint ingot
#

OK that's maybe the piece I was missing before because I thought I ran into trouble there in the past

vernal crest
#

Yeah it has to specifically be in that order, I've found. reload_i18n, then patch reload.

woeful lintel
#

WHY IS THERE NO TRACEBACK?
Technical details: Exception has been thrown by the target of an invocation.

#

I put specific error types to make it easier to see where they happen, but noooooo, it's just "Exception" now

vernal crest
#

SDVpufferthinkblob Do I even want to bother experimenting with question fork? quickQuestion seems superior in every way to me.

proud wyvern
woeful lintel
#

I have the developper version of SMAPI, so I can see [Trace] if that's what you're refering to.
Here's the log for illustration purposes: https://smapi.io/log/c977dde2e283436c8c34e521ca769a49
My gripe is that when there's an error/exception/crash in a JsonConverter, it won't tell me anything about it

ocean sailBOT
#

Log Info: SMAPI 4.2.1 with SDV 1.6.15 build 24356 on Unix 6.14.5.200, with 6 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

woeful lintel
#

I figured out the issue in this case, but this lack of information is really annoying in general

serene moat
#

Anyone who knows what I'm doing wrong or if it's not possible to hide shadows when showing speficic frames?

/move farmer 0 -3 0/showFrame farmer 113/hideShadow farmer true/

vernal crest
serene moat
#

No, only error I got was because I forgot to write showFrame for something else

vernal crest
#

The method for hideShadow doesn't have the code for handling the farmer like the other methods do. And I just tested an event that did nothing but hide the shadow for the farmer and an NPC and it only worked for the NPC.

#

Unfortunately I can't find a command that hides the farmer's shadow, either.

serene moat
#

Thank you for checking as well. I have been going nuts over it. No clue why I haven’t gotten an error, even restarted smapi and tested it with a simple event too like you.

I’ll just have to figure something else out

rigid musk
#

Is there a difference between how Random and Range are pulled for things?

#

(ping me for this cause im gonna head to bed now)

lean verge
#

Ain’t much but it’s honest work SDVgunther

i finally got this dumb outline in the game idk why i was over complicating it 😭 this is actually p easy

#

now comes the hard part (actually doing the pixel art 😞)

hard fern
#

What is it...

lean verge
#

it’s a bed

hard fern
#

Oh

vernal crest
vernal crest
devout otter
vernal crest
inner harbor
#

is it possible to add a specific type of juice or wine to a shop? ie; pumpkin juice? Or just generic juice?

vernal crest
#

I think so, with FLAVORED_ITEM.

royal stump
devout otter
vernal crest
inner harbor
#

awesome thanks Esca

#

wowo pumpkin juice is expensive

lucid mulch
#

though it would be Random: {{Range: 1,3 }}

thin lake
#

I have a question, does it matter how the sprite sheet is specifically set up? Most sprite sheets I see extending from right to left, however I have one sheet that goes from top to bottom.

Also, since it's been awhile since I've worked on my mod. Do I need to update CP and tiled? As well as SMAPI?

crimson kettle
#

is there any guide about animating custom furniture, custom furniture is broken so i have to change some old mods into CP but it has animation and idk how to convert them

vernal crest
thin lake
vernal crest
#

Sorry I always default to NPCs lol

vernal crest
#

Okay it is an NPC. In that case, yes, you definitely need to change that so it's left to right.

vernal crest
#

It's helpful to use vanilla images as a base for what you do, by the way.

thin lake
vernal crest
#

That way you can be sure you're doing things at the right size and position.

#

But Abigail's sheet doesn't look anything like that?

#

I mean literally open the vanilla images and draw yours on a layer above them.

thin lake
vernal crest
#

Yeah I was meaning actually draw inside the vanilla images themselves.

whole raptor
crimson kettle
#

there is content patcher animation so i think it's possible to turn CF into CP then animate it, i have been searching everywhere in google and theres nothingseizure my last attempt is here

#

is it not possible?

#

the mods i want to convert is very old (from 2020) so i doubt the author is active now, it's cute so i don't want to abandon it

vernal crest
#

If you're referring to the mod called Content Patcher Animations, that mod does not work anymore.

#

CP alone does not do animated furniture. Furniture Framework does, I believe, and so does SpaceCore.

crimson kettle
calm nebula
#

It works but the spacecore animation method (same author) is significantly more performant

whole raptor
#

Also I'd say it's always better to use something that's up to date, than something outdated on life support

drowsy pewter
#

i would also recommend spacecore, its the newer version for handling animations

crimson kettle
drowsy pewter
#

Just read the documentation about animations on the spacecore author guide

#

It works the same for furniture as it does for any image

#

You'll need to be somewhat OK with the CP format in order to understand things

calm nebula
#

Good morning, 6480!!

drowsy pewter
#

Good evening!

calm nebula
#

I hope you have a nice evening

crimson kettle
drowsy pewter
rich seal
#

Friend and I had a discussion last night about seaweed. He said "it'd be funny if you could put that in the fish smoker. Smoked Seaweed lol". How would I go about editing the vanilla data for Seaweed so that it can be placed into a fish smoker and produce the "Smoked Seaweed" he joked about? Figured this would give him a good chuckle, but I'm at a total loss as to how I'd go about doing this.

drowsy pewter
#

Have you made any mod before?

rich seal
#

I've just started. Only made custom coop animals and textures so far.

drowsy pewter
#

You'd want to make a content patcher mod that edits machine data. It's straight forward, but being OK reading CP format will be helpful since there's a lot of bracketing

#

Oh good! Animals also have a lot of bracket nesting so you should have some idea of what its like

#

One second

rich seal
#

Yeah, bracket nesting was a hurdle for me to start with lol. Took a while to get my first coop animal. Too many commas missing/added here and there lol

calm nebula
#

!vsc

ocean sailBOT
calm nebula
#

Strongly, strong recommendation to use vsc or notepad++ with json highlight

drowsy pewter
#

You just have to add that one machine rule and it'll work

#

Do you want it to produce the "smoked fish" item or a custom Smoked Seaweed item?

#

One would have the smokey particle effect and one wouldnt

#

if you want to make it be the same as a vanilla smoke fish then theres a second approach

rich seal
#

Yeah, I'm aiming for the smoked effect like vanilla smoked fish

drowsy pewter
#

Okay then, another second lol

drowsy pewter
#

It's more complicated so I just wrote it for you

#

This adds seaweed as a possible input to the existing smoked fish machine rule

#

The third option is to fully copy the existing smoked fish rule and make a second version just for seaweed

#

pretty much the same result tho

thin lake
#

I want to ask, what's the different between drawing over vanilla sheets vs using the farmer sprite as a base?

rich seal
#

I'll gladly take the simpler approach lol. For {{ModID}}_Seaweed, what does this cover? Is it like the ID for the game to reference later? Not that I plan to, but if I were to say change it, would that mess anything up? Or does the game only look for the ItemID in the recipe?

drowsy pewter
vernal crest
drowsy pewter
#

I just put your mod id in there so that if anyone has issues using the mod, people will be able to look at their machine code and figure out what mod the additional patch came from (its more polite)

thin lake
drowsy pewter
#

(for clarification it would LITERALLY be {{ModId}}, CP automatically fills that in with your mod data)

vernal crest
rich seal
#

Oh, I was about to ask if I SHOULD replace it with my mod's ID, but that answers that lol. I appreciate the detailed explanation and clarifications! Time to go metaphorically smoke some seaweed lol

thin lake
vernal crest
thin lake
drowsy pewter
#

Hylia, you really need to be following exactly what the vanilla npcs look like

vernal crest
vernal crest
#

Are you finding it difficult to find the NPC spritesheets?

thin lake
vernal crest
thin lake
rich seal
#

@drowsy pewter So, I think I already messed up. Just to be sure, what file should that code be placed in? I put a "Machines.json" file into my mod's data folder (path "modname/Data/"), and that didn't seem to do anything.

drowsy pewter
#

If you make a new file, you have to Include it in the content.json

vernal crest
# thin lake Not really

!unpack If you unpack the game files you will be able to actually access all the spritesheets and portrait images I have been talking about.

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!

drowsy pewter
#

it doesnt matter WHAT file it goes in, it can just be in your content.json if you want

rich seal
#

... Well that's egg on my face. I totally forgot about the content.json lol

drowsy pewter
#

but unless the content.json refers to a specific file, CP doesnt know about any other files inside your mod basically

rich seal
#

This whole time I've been messing around and completely forgot about the content file. I should've known better since I keep editing it for my custom farm animals lol

#

Trying it out now

drowsy pewter
#

hopefully it works lol I didnt double check my code

rich seal
#

"Hold my beer" moment

#

ayyy, that worked. Friend's in for a treat later. Thanks for holding my hand through that ordeal!

drowsy pewter
#

Sweet!

rich seal
#

I'd say it's probably salty rather than sweet :^)

drowsy pewter
#

Sorry for taking the journey away from your by just giving you the code lol, normally I wouldnt but targeting nesting fields is something that new modders struggle a lot with so I didnt want to put you through that

#

But if you want to make new machine rules I recommend it, it's fun

rich seal
#

Hey, I am absolutely grateful. You gave me a template I can work with rather than throwing me down a cliff like a lion cub. I'll gladly take it lol

#

Had a teacher back in 2005 who was an absolute jerk, yelling at me for making mistakes he never taught the class to avoid, so this is a very welcome learning experience.

drowsy pewter
#

We try and be really supportive here

rich seal
#

Well when I finally choose to dip my toes in deeper water, I'll definitely come ringing here again. Feels good to make new progress.

thin lake
#

I don't need Microsoft visual studies when creating a CP mod, do I?

vernal crest
rich seal
#

My curiosity got the better of me, and I tried making it so Smoked Fish could be further Smoked, hoping I'd get a recurring chain name like "Smoked Smoked Smoked Smoked Smoked Smoked Salmon" or something. That wasn't what happened unfortunately 😦

drowsy pewter
#

Hahahaha

#

You might need to fiddle with a few other fields for that but I'm not sure at this exact moment

#

I've done it accidentally

rich seal
#

If you manage to remember how you did it, I'll gladly take that knowledge lol. Right now though, I'm just being a kid in a candy shop, smoking all sorts of things. New toy syndrome and all that.

rigid musk
#

(and Dolphin!)

#

I wish you could edit the prices for the Joja development forms...

#

perhaps i'll add that to my c# in the future list

thin lake
vernal crest