#making-mods-general

1 messages · Page 322 of 1

rare orbit
#

so for defining a character range how do i do that??

gaunt orbit
#

Iirc monogame uses angelcode font files

#

So I would look up a tool for making those

rich seal
gaunt orbit
rich seal
#

Oh, I guess I misunderstood what you said earlier then. When I asked if that was correct, you said yes lol

gaunt orbit
#

No, that's my bad, I misunderstood what you were saying

rich seal
#

Ah

#

so, "Id": "Campaigner.newroeSquid" is correct for line 12?

rare orbit
#

now how to do that...

#

any idea if there's a non download version of the program or not really?

rich seal
ocean sailBOT
#

@rich seal You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

rich seal
#

Aw, I miss the green icon 😦

rare orbit
#

ok so im checking the font file and lord... this is gonna be fun ;w;

#

the ui is confusing me...

rich seal
#

No errors are popping up, yet the patch isn't producing the intended Squid Roe. I fast forwarded a whole week, and all my other fish produced, but not the squid.

dusk terrace
#

I'm trying to mod a craftable path floor with a custom light... I thought I'd use Furniture Framework because it supports custom lights while content patcher doesn't afaik
but I only just now realized paths don't act like furniture at all SDVpuffersweats now what?

lucid iron
rare orbit
#

so? what settings are recommended to click for font settings?

lucid iron
#

Im sure furniture framework support such a thing too cus rugs r furniture

dusk terrace
#

the problem is that it's not a rug 😅

rare orbit
#

the setting with 00000 latin

lucid iron
#

Perhaps i can allow paths to grant tile properties

dusk terrace
#

it should be like those stone/wood pathways you place outside for 0.1 speed boost

lucid iron
#

Then u can just do it™️

#

But idk what u r going to do about a light up mode

rare orbit
#

hey? what do i need to click on the right hand side? do i need to select all of em?

gaunt orbit
#

I'll be real, you're in entirely uncharted territory here

#

At least as far as modding goes

lucid iron
#

I thought font settings the mod just let u use any ordinary ttf

gaunt orbit
#

Angelcode fonts are pretty common so you might find a guide on the xna forums or YouTube? But nobody has made an actual new font for stardew before

#

Font settings does let you use arbitrary fonts, but I assumed that wasn't what they wanted since they were asking in #making-mods-general

tiny zealot
#

there's one mod Script Font that replaces the font_bold for dialogues and mail and stuff, and maybe other fonts too, unsure

rare orbit
#

wait this mod can use ttf..... ;-;

gaunt orbit
#

It doesn't replace the font file, though, just the texture

tiny zealot
#

but that's a case of drawing over the png and fitting into the grid and etc

rare orbit
#

just ttff?

lucid iron
#

Yeah like ordinary true type font

rare orbit
#

i need to lie down ;-; i was nearly about to rip my hair out over this ;-;

lucid iron
#

Ik apple uses it for some funky futuristic font

rare orbit
#

so just drop it in? and it should show? or do i need to have it select from a file??

tiny zealot
#

the stardew fonts are a land of contrasts. most of them use texture atlases (especially for other languages) but the english dialogue font is nearly monospaced and read from a strictly gridded .png with (i believe) a few small hardcoded offsets for certain letters

lucid iron
#

I will never stop being annoyed that the other languages have smaller number fonts

#

My shop menu looks ass in 中文 SDVpufferpensive

rare orbit
#

i am this close to cryin ;-; cause i spent at least a few hours on dis..

tiny zealot
fading walrus
#

the guides I linked did mention you can use ordinary font files 😅

gaunt orbit
#

Yeah I use script font

lucid iron
#

The jp font r pixelly

#

The chinese font is like

rare orbit
#

yee but still i wanted some cute lil fancy font ;-; cause i gotta be extra.

lucid iron
#

Equivalent of comic sans

#

Although it does have 2 fonts on offer for reasons

#

One of them is lesser evil

tiny zealot
#

i remember there was some kind of outcry when the font was replaced so CA added the old one back in as a toggle

lucid iron
#

Yeah that was a whole thing

#

Although ppl were more angy about the translation changes

rare orbit
#

never assume a mod will be quick project.... that's how they get you ;w; SDVpufferchickbig1 SDVpufferchickbig2

#

totally not me rn

#

what moment ever got yall feelin like this when it comes to modding?

#

mod makign i mean

rich seal
#

Where you want to just plop down, give up, and cry? Me rn with trying to get squid to produce roe 😦

rare orbit
#

i feel that in my soul.

dusk terrace
rare orbit
#

pat pat

karmic gust
#

Definitely schedule testing. So, so, so tedious

rare orbit
#

im just gonna say mod making is basically black magic

#

let's be fr

#

or magic in general

rich seal
#

Wasn't there a console command to test if a patch was being applied properly?

lucid iron
#

patch summary

#

Or patch export

#

I like patch export personally

tiny zealot
rare orbit
#

pat pat

lucid iron
brave fable
#

no task is harder than starting it

#

except dealing with bundle code

rare orbit
#

also never ever assume a project will be quick and simple

rich seal
#

Alright, patch export was incredibly helpful, thank you. Now I sort of see why what I want to do isn't working

brave fable
#

definitely way easier to start that, even easier to quit

lucid iron
#

Blueberry have you considered delegating some tasks to your evil clone Cranberry

rare orbit
#

cause trust n believe it likely won't be quick and easy

lucid mulch
patent lanceBOT
#

ugh I was about to take a nap. but fine sinz163 I'll stay awake just for you (#6702471) (20h | <t:1748343667>)

calm nebula
#

Blueberry do you want to adopt a few mods

#

(I'm kidding.)

lucid mulch
#

my current problem is I have cool shit but procrastinate on doing proper releases for it and just keep things indefinately in the alpha/beta build phase

#

(see also: SpeedySolutions, schedule debugger and the actual debugger)

brave fable
#

simply far too busy hunting monsters

rare orbit
#

hue hue

#

i'd play monster hunter.... but i kinda suck at the games.

brave fable
#

(luckily we can just catch increasingly rare fish and decorate our houses with stuffed animals and huge chunks of meat)

rare orbit
#

yee

rich seal
#

How it feels when hours of struggling finally pay off

#

Finally got squid, midnight squid, and coral to produce roe in a fish pond 🥲

idle lantern
#

Could someone help me. I messed up the order of my sprites, so a custom character isn't matching the directionals in the code. '3' has it face down instead of '2'. The reference sheet I used must not have been correct.

idle lantern
#

Bookmarking that page

calm nebula
vernal crest
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!

idle lantern
#

I was stupid, and had the walking animations in the correct order, but when I split the sprite sheet, I didn't have the swimming ones correct

shut edge
#

so i'm poking away at another animal mod. am i understanding things correctly that i can use alternate purchase types to have totally different animals under the same store button, and then skins inside those to give them color variants?

lucid iron
#

Yeah

shut edge
#

cool

lucid iron
#

The "totally different" thing is how chickens give different eggs

#

Skins only look different

shut edge
#

yeah cuz they get their own data

#

if i was properly ambitious i'd make some kind of breeding thing but ehhhh effort

#

so [single shop button] -> several different similar animals -> (each animal getting a couple of skins)

#

now if i can just find an actual code example for skins lol

#

oh right i used them in my dinos mod

frosty hull
#

@gaunt orbit hello
i have question about mod HappyHomeDesigner
this code from InventoryCombine.InsertCombineCheck(...)
and code "if (TryCombine(ref slot, ref held, playSound))"
Is will insert like this?
left image: code il patcher
right image: src code + try figout how this work

lucid iron
shut edge
#

that should be fine

lucid iron
#

Unfortunately i made opinionated choice against that in livestock bazaar monS

#

People are also able to change which skin via AT

shut edge
#

bazaar is great imo

#

i suggest it in my mod descs

#

bazaar also helped me find an i18n error lol

tawdry leaf
#

Hey yall. I'm a new modder trying to make a mod that does a MapEdit of a SVE map, but I'm finding difficulty referencing another mod with the target. Can this be done how I want it to be done?

gaunt orbit
#

(slot2 is called slot in the transpiler, but I named it something else in the code mockup because it uses a different local than the slot variable in the decompile.)

faint ingot
violet grotto
#

Got two (hopfully) simple questions. First: Is there a way to create a "pool" of items where one of the items is randomly chosen as a gift? (This is for a pet)

#

Let's say I want to have Desert Artifacts in a pool, so you could either get a golden mask or a golden relic. Not both!

#

Second: Is there a way to give multiple different items at once? As in I could get one Spiceberry and a Grape when I interact with the pet once.

inner harbor
woeful lintel
tiny zealot
violet grotto
#

Wha- HOW DID I MISS THAT?

#

I've been scanning that page for a while now!

#

Well, that solves the randonly chosen item thing.

#

is there something like this example that's like "// wood, stone AND pizza"?

rigid oriole
#

Im glad! I've been working on it sporadically when I have time and I hope eventually we can get it filled out

tiny zealot
violet grotto
#

Hmm, could I make multiple draws from a pool?

#

Like have a bunch of desert artifacts and pull two times from those.

#

Could end up with duplicates, but that isn't too bad.

tiny zealot
#

doesn't look like it, at least with pets:

Notes:
If ItemId or RandomItemId is set to an item query which returns multiple items, one item will be selected at random.

violet grotto
#

Dang...

#

Well, not that big of a loss.

#

Thanks for the help, folks!

rare orbit
#

im sorry to ask but which section of the modding wiki or readme for content patcher includes how to make new recipes?

#

i keep reading but it confuzzles me ;-;

#

it's mainly cause the tutorial on the wiki seems to only apply to existing recipes

brittle pasture
#

what's confusing about it? it describes what a recipe should look like, and you can insert your own following the format

tacit sparrow
#

Not sure if this is channel to get inputs for default values, but a few feedback would be amazing.
When breaking geodes in a game from blacksmith, would you prefer to break all geodes in a stack (extra item falls on ground) or only break the number of geodes based on empty inventory spaces?

I'm trying to get a feel to see what should the be default config value

manic shoal
#

Based on empty inventory space

rare orbit
#

i feel dumb...

tacit sparrow
rare orbit
#

i kept misreading...

#

;-; sorry yall

ornate moon
#

is there a reindeer barn animal mod where you harvest their antlers like in real life? haha

brittle pasture
frosty hull
#

@gaunt orbit Hello World
i have question, how this is work? and how can i test trigger this function

ornate moon
#

ohhh okay, now i am trying to get familiarized with these channels

rare orbit
#

how come all of the fruit tree fruit aren't used in vanilla....

#

i bet i can do it

#

anyone mind testing a mod when i get done?

#

might do a recipe mod

#

imma do 3 extra items

brittle pasture
#

apples, apricots, bananas and mangoes do have recipes

rare orbit
#

yeah but barely in vanilla

#

i just thought a recipe mod expanding on em would be fun

manic shoal
#

Does anyone know whether passive festivals like the Night Market, trout derby, etc will trigger the DayEvent token?

rare orbit
#

i am asking my bf what recipes use those fruits in his culture! his birthday is coming up and i wanna make a mod in his honor

#

his family is mainly from putero rico and he and i went to school together :3

#

i do wanna stick with vanilla ingredients since i need it to be simple enough for me to make

brittle pasture
manic shoal
#

Thanks!

tawdry leaf
rare orbit
#

i know i could google it but some recipes feel more for tourists than locals

brittle pasture
tawdry leaf
uncut viper
manic shoal
brittle pasture
#

tbh I thought about that but the possibility of someone making that mod is probably zero, not zero though yes

#

if you can use game state queries it has one for passive festivals

uncut viper
#

i recall at least One mod editing the desert festival, though i couldnt tell you which mod it was at this point

manic shoal
brittle pasture
#

what's the context of your edit

uncut viper
#

you cant use Game State Queries in a content patcher when condition, importantly

#

unless you use another dependency

manic shoal
#

Ah, then that won't work for this

uncut viper
brittle pasture
#

like if whatever you're changing supports GSQs natively then use that instead

manic shoal
#

I'm making a mod that automatically changes outfits (from Fashion Sense) depending on season, weather, etc

brittle pasture
manic shoal
#

I've got seasons and weather sorted, as well as basic festivals but then I remembered that passive festivals exist.

uncut viper
#

theres anotehr mod making it year round, too, even

#

and thats just from me searching for the desert festival specifically

twin wadi
#

is it possible to make an npc both romanceable and available as a roommate? im thinking 8+ hearts arent locked, but if you give them a bouquet at 8+ hearts you unlock the romantic path and if you reach 10 hearts without bouquet there's a cutscene where the npc suggest becoming roommates or something?

brittle pasture
inner harbor
#

But you get a choice ingame platonic or romantic

manic shoal
twin wadi
twin wadi
faint ingot
#

Can you not have "#$b#" in the i18n for a quickquestion response, because # is a delimiter? I thought I had done it before but maybe I just hadn't properly tested, as I'm now seeing that it doesn't show the second part of the dialogue until talking to the npc after the event is over.

lucid iron
#

The way sen works is that he's initially not romancable but a certain mail flag set as part of his events makes him romancable in the data

#

The player is able to choose whether this flag is set

rare orbit
#

Puerto Rican Food ideas for mod

gaunt orbit
# frosty hull <@91568447212769280> Hello World i have question, how this is work? and how can ...

It does two things:

  • if the held item and hovered item match a known combination it changes the hovered item to the combined result, and empties the held item
  • if there is no held item and the hovered item is the result of a known combination, it sets the slot item to one of the parts and the held item to the other one
  • if neither is true, return false and do nothing

If the transpiler and method both work as intended, plopping a catalogue on a furniture catalogue should produce a happy home catalogue. ("plopping" means doing the same thing you'd do to put bait on a fishing rod. On desktop that's right-click, not sure about android.)

rare orbit
#

i have a new thread!

#

i do need a bit of help since i want this to be a surprise for my bf

tawdry leaf
tawdry leaf
rare orbit
#

definitely gotta use cornucopia as a dependency

#

that's cool to use a crop mod as a dependency right?

lucid iron
#

Yeah usually

#

You can make your own crops if u want but like y tho

rare orbit
#

?

#

is it why im not making my own crop mod?

#

or why make a crop mod if ya can use one as a dependency?

lucid iron
#

Yeah if u want to focus on the recipes using existing popular crop mod is a good idea

rare orbit
#

yee

#

hopefully i can finish a part of it before june 8th

#

that's when my bf's birthday is

idle lantern
#

what program are you using to do your coding?

iron ridge
#

Looks like Monaco of some sort
Edit: yep definitely vscode

rare orbit
#

btw? should desserts have lower edibility? is that typical in vanilla?

#

listen i be chompin on salads and gifting most deserts to npcs

#

salad has yet to fail me

ornate moon
#

do you guys know to make animals in a mod to not be purchasable in marnie's farm? i want to make an a chicken variety of mine to be like maybe a dinosaur egg to be found or like the blue chicken with heart events, or maybe even event related like what if a fairy dropped it or a witch changes the egg. would love to know how!

idle lantern
#

I'm not completely for certain, but you should be able to create it and just not add it to Marnie's Shop

lucid iron
#

So if you want it to be exclusively a thing to hatch, make the price -1

#

See golden chicken in vanilla

#

There's also a GSQ unlock condition if you want the animal to be sold after some event

#

Blue chicken is an alt purchase type that's gated behind seeing the event

#

What you cannot do in vanilla is to make another vendor sell livestock, for that you need either shop tile framework or livestock bazaar

ornate moon
#

unfortunately, i have the livestock bazaar mod already so all the variant for animals i make can be chosen at will

lucid iron
#

No it still respects conditions

#

The only kind of GSQ it ignores is RANDOM

ornate moon
#

what is a gsq sorry if ignorant

ornate moon
lucid iron
rare orbit
#

anyone mind checking out some code im working on?

#

{
"Changes": [
{
"Action": "Load",
"Target": "Mods/{{ModId}}/objects",
"FromFile": "assets/objects.png"
},
{
"Action": "EditData",
"Target": "Data/Objects",
"Entries": {
"{{ModId}}_pastelillos_de_guayaba": {
"Name": "pastelillos de guayaba",
"DisplayName": "pastelillos de guayaba",
"Description": "A baked puff pastry that can have sweet or savory fillings, this recipe contains Guava Paste as it's filling.
Though they've originated from Cuba...they're rather popular in the Dominican Republic, Puerto Rico and even the United States of America. Nothing beats having the real thing though!",
"Type": "Basic",
"Category": -7,
"Price": 750,
"Texture": "Mods/{{ModId}}/objects",
"SpriteIndex": 0,
"Edibility": 35,
"IsDrink": false,
"Buffs": [
{
"Id": "{{ModId}}MatchaBuff",
"Duration": 360,
"IsDebuff": false,
"CustomAttributes": {
"MaxStamina": 30,
"Speed": 1
}
}
]
},

#

it's not complete as i have several recipes to go

lucid iron
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!

lucid iron
#

Did you do this already

ornate moon
#

yep! but the only unpacked contents are assets/sprites, does it usually show content files as well?

lucid iron
#

You should have Data/FarmAnimals.json

#

Assuming you used the recommended stardewxnbhack method

rare orbit
#

it's a w.i.p but here

lucid iron
#

Open it and take a look at "Blue Chicken"

lucid iron
rare orbit
#

i still gotta finish the other recipes but im filling in the object file

ornate moon
rare orbit
lucid iron
#

I mean just test it?

#

Just remember always spawn new copy of item

rare orbit
#

i will i just gotta finish the whole thing

lucid iron
#

I recommend testing it right now

#

Since you asked here i assume you want to know if you are on the right track, and the best way to know this is to simply test incrementally

ornate moon
#

do you guys also need to use a vpn just to open the stardewwiki?

lucid iron
#

No but it could depend on your country's firewalls

ornate moon
#

dang, my country suxxx

rare orbit
#

sorry bout that

lucid iron
#

It's strange to need vpn for the wiki but not for discord though

lucid iron
rare orbit
#

kk

#

now how to edit the gift tastes...

#

it's still giving an error.

#

the other two as well...

lucid iron
#

You need closing }]}

rare orbit
#

i separated the gift taste, object and recipe json.

#

where??

#

if i may ask?

lucid iron
#

At the end

#

Hence "closing"

#

You should use some editor with json validation tbh

idle lantern
#

Trailing comma after the CustomAttributes block inside Buffs.

lucid iron
#

Trailing comma unimportant

#

Newtonsoft.JSON lenient about that

idle lantern
#

unrelated, because some people like to nitpick other people, meanly. "it's filling → its filling"

lucid iron
#

I don't think you are wrong but I do think you are distracting from the actual blocking problem SDVpuffersquee

idle lantern
#

The only thing I see is that comma, I can't help anyway else 😦 sorry

gentle rose
rare orbit
#

i did change it

rare orbit
#

ok i got the asset done enough to test! but i gotta change the ingredients

#

so since it has guava filling and bonster's crops has two guava items how do i go about allowing the ingredient to be similar to how ya can use any egg in recipes. im asking since i dug into bonster's files and the guava context tags for the two fruit available are essentially different

#

how do i set it where you can pick between the two?

brittle pasture
twin wadi
#

how do you add a question in an event? it doesn't change the rest of the event, but has a special answer for each option.

rare orbit
#

i just made the manifest and so far it's giving me hell

brittle pasture
#

yeah, then read the docs on how to add recipe overrides in SC

ornate trellis
#

question: in an event cant I do a message with the [ITEMID] thing to give farmer an item like when an npc talks? or it it because I tried using a custom item

twin wadi
#

or the add item line

brittle pasture
ornate trellis
#

well, I tried it like this
The pirate disappears and leaves something behind in the sand...[VoidWitchCult.CP.TheFishmongerNPC_LostIslandTotem]?

lucid iron
#

Did you use speak or something else

ornate trellis
#

message

lucid iron
#

Wonder if that one somehow didn't go through parsing

twin wadi
#

Maybe you can use /action AddItem <item ID> [count] [quality]right after?

lucid iron
#

Personally i think /action is better anyways

ornate trellis
#

hm yeah i think i gonna try that instead

twin wadi
#

how do you format the response to the answer the farmer gave in an event? like, normally i know you just add a dialogue line for the responseID outside of events, but in an event how would i format that?

idle lantern
#

this is how I did it

/quickQuestion The well-hidden drawer in front of Marlon looks battered and worn.#Need help opening that?#What else are you hiding in there?(break)emote MarlonFay 40\pause 200\speak MarlonFay "Thank you, no. Nothing worth dusting off, anymore."(break)emote MarlonFay 12\pause 300\

#

this is if that ending of the scene stays the same, regardless of responses though. Marlon had different reactions, but my scene ended the same way

twin wadi
#

oh okay! thanks

idle lantern
#

quickQuestion <question>#<answer1>#<answer2>#<answer3>(break)<answer1 script>(break)<answer2 script>(break)<answer3 script>

twin wadi
#

that's much more simple than what i did just now, where i defined the responseIDs in the dialogue.json file. if my method doesn't work ill def try yours in the future

#

thank you so much 🙂

idle lantern
#

I think if the scene changes based off of the response given, the scripting is more difficult

ornate trellis
#

hell yeah the action thing worked like i wanted

twin wadi
#

yay!

ornate trellis
#

this event is so dumb but i love it cuz its just farmer meeting me npc and they stare at each other for a moment and the npc jsut walks off and drops an item basically

rare orbit
#

it's the recipe json

#

basically the only items i want any to occur is the milk, eggs and flour since i found there's many ways to make it

brittle pasture
#

You cant use context tags in base game recipes

#

flour_item wouldn't work

#

only exact IDs and category numbers are allowed

#

you'd need to change that to the base game flour, and make another block adding a SpaceCore override recipe

faint ingot
rare orbit
#

k i kept readin it multiple times and for some reason my brain isn't getting it.

uncut viper
brittle pasture
rare orbit
#

so essentially? my best bet is to make an objectreplacements json and fill in the context for the eggs, milk and flour?

sturdy pebble
#

Hello! I'm not sure the best place to ask this question, but I was wanting to see about having a custom romanceable character modded into the game! Does anyone know of somebody who takes mod commissions? ❤️

uncut viper
#

!commissions

ocean sailBOT
rare orbit
#

is the fruit ok in the json i sent? since it's specifying which one since the guava it's using?

uncut viper
#

be aware that an entire NPC is not an easy task

#

and so the price may be very high, if someone is willing to take it on at all

brittle pasture
uncut viper
#

(or rather, its a "technically" easy task, but a very tedious and long task)

brittle pasture
rare orbit
#

yeah bonster's adds two guavas but the rubyguava seems to be sweeter given how it shows up in more dessert recipes in the mod

#

i did search for the text you send

brittle pasture
#

if it's not from your mod then change {{ModId}} to bonster's ID

#

otherwise it will search for the red guava item from your mod, which presumably doesn't exist

brittle pasture
#

and add an entry for your override recipe

rare orbit
#

and this is in the content json?

#

i also double checked the ruby guava id and it says {{ModId}}_RubyGuava

brittle pasture
#

could be, or an imported separate json file

#

it says that because it's in their own mod, so it gets turned into their ID

#

you're referring to the item in your mod, so you need to turn that into bonster's ID yourself

rare orbit
#

k

#

so im trying to not go crazy. cause i go and check the id again and sure enough the same :DDDDDDDDDDDDDDDDDDDDDDDD

#

i am runnin on fumes

brittle pasture
#

while Nikki98.Recipes_RedGuava doesn't exist and will become an error item

rare orbit
#

ok thank u ;w;

brittle pasture
#

yes that's a good start

idle lantern
#

I finished 4 custom events, and made a very simple extra NPC. I'm tickled pink. I did a very tiny mod before this one, years ago - but this feels far more rewarding

twin wadi
#

oh wow good job! i just finished making an event and it's really hard!

dawn olive
#

im scared to even look at events, I havent even finished my custom npc yet. this was supposed to be an easy and stupid idea and Im too far in to quit now

balmy venture
#

I'm also on that but I barely started the dialogs 🤣

#

guys, anyone know where these icons are stored in the base game?

brittle pasture
#

maps/springobjects

balmy venture
#

bless you kind angel

grim valley
#

I'm having a hard time getting a deffinative answer from documentation on Adding item to stores using Content Patcher 2.6+. This page https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#introduction

seems to imply in one of it's token examples that you could simply use something like (EditData) to add an item to the stores:
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [ "HatMouse", "Items" ],

Various AI seem dead set on having me use the Json Assets mod, but I'd like to keep the number of mods to a minimum.

Either way I can't get anything to show up in Pierre's when I use "Action": "EditData",
"Target": "Data/Shops",

Thanks for any info.

GitHub

Mods for Stardew Valley using SMAPI. Contribute to Pathoschild/StardewMods development by creating an account on GitHub.

proven spindle
grim valley
#

No doubt there 🙂

proven spindle
#

Those first three lines are correct, after that you want an "Entries": line with the items you're adding

#

There's a few examples of the Entries entry in the content patcher docs if you search 'entries', that's what you want to look at next

brittle pasture
#

do the following if you haven't already:

  1. unpack the files and see how Data/Shops are formatted
  2. read the full Content Patcher guide to edit a game asset, like Data/Shops
  3. read this page to see how the data unpacked from 1 work
grim valley
#

Ahh yeah the token example is missing some info.

brittle pasture
#
  • the SDV wiki I linked above
grim valley
#

Yeah I was clearly jumping around. I totally misse dthe wiki entry on modding shops.

#

Looks pretty straight forward. Thank you!

brittle pasture
#

TargetField specifically allows you to edit a nested entry instead of overwriting everything
the example above uses it to insert a new entry into HatMouse > Items

#

you want to do the same but for Pierre's SeedShop

ocean sailBOT
#

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

vital dew
#

DionaPeek_Frostfeuer hi guys, i hope it's alright to ask this here -
i'm trying my hand at editing a few maps to fit the multiplayer run a friend and i are planning on doing
i was trying to edit the map of the mod that allows every player to have their own farm map, but for some reason smapi's throwing this error at me and refuses to load the map, and i'm not familiar enough with it to know how to begin fixing it merushy
any help or directions would be very appreciated, and apologies in advance if it's an easy fix i just wasn't aware of!
https://smapi.io/log/0296ef4c840646aeac8a5127518a1a7d

ocean sailBOT
#

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

near magnet
#

ah sorry nvm i just realized this is in the troubleshooting section of the modding maps page on the wiki lol

rare orbit
#

ok! i think i did the spacecore json right!

near magnet
near magnet
#

basically just make sure your tilesheets are in the same folder as your map every time you edit it

rare orbit
#

i made the recipe have 5 servings since most recipes i found for reference make close to that

vital dew
near magnet
#

they don't need to be in the mod's folder when the game runs, you just need to make sure all edits happen in the folder with the tilesheets

vital dew
rare orbit
#

anyone mind checking out my json??

#

before i run it and mess up????

vital dew
#

apologies if i misunderstood

near magnet
#

did you open the map in tiled at all after moving it?

vital dew
#

i didn't but let me

#

rq

#

it looks fine after opening again... hmm

near magnet
#

the only other thing i can think of is maybe you used a custom tilesheet that isn't in the mod folder

rough lintel
near magnet
vital dew
#

i mean... the mod folder itself doesn't actually have any tilesheets in it, just the .tmx files

vital dew
near magnet
#

the solution on the wiki is to put the map back in a folder with your tilesheets and then save it so it recalculates the gids but if that doesn't work for you idk what else to do either #sorry

vital dew
#

it's alright.. i may have just messed up a tilesheet or something, i can try again

brave fable
vital dew
ocean sailBOT
#

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

vital dew
#

the only reason i tried to add in the textures in the first place when i made the original map edits was because when i opened the file in tiled, it looks like this ... and idk how i'm supposed to work with that lmao

latent mauve
#

You never want to press "Save" when you've got red Xs like that in Tiled

#

For now, move all the listed PNG files into your mod folder (or wherever you opened that file from) and reopen it in Tiled after without saving it here.

vital dew
#

i had tried that, that's how i got it to look the way it does now

latent mauve
#

if it says the files can't be found, then they are not in the same folder as the file you are editing.

#

Or your references are messed up

#

It looks like you originally tried to edit in the mod folder inside your Downloads folder

vital dew
#

it was a downloaded mod i'm attempting to make a personal edit of, yeah ;-;

latent mauve
#

Did you do a "Save As..." at some point? (that will break the paths like that, because they look in the old spot)

#

Okay, so does your current mod folder have the files in it?

#

If so, then you can do "Locate File" in that menu at the top and point to the PNGs that are in the same spot as the file you are editing.

vital dew
#

as downloaded, it doesn't have any tilesheets in the mod folder, no

latent mauve
#

right, but where is the one you are editing?

vital dew
#

it's that PathToFarms one

#

the other 2 folders look like this respectively, no tilesheets

#

so unless its supposed to be pulling them from vanilla, and i need to unpack the .xnb files ..?

latent mauve
#

Honestly, the easiest thing to do to fix this is to either:
a) copy/paste the TMX to an unpacked Content/Maps folder and then change your "Locate File" path for those tilesheets (if still not found) to be in that same Content/Maps folder
or b) do as directed previously and copy/paste the unpacked PNGs for the missing files directly into the mod's folder next to PathToFarm.tmx)

#

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

latent mauve
#

Yes, it's trying to pull the vanilla tilesheets

#

You're gonna need to unpack the Maps folder either way to get to the missing tilesheets.

vital dew
#

ooh okay, so in content/maps, do i need to unpack any specific .xnb, or... all of em? my apologies for the trouble ^-^;

latent mauve
#

If you use the StardewXNBHack executable linked in the wiki, it'll unpack all the game files inside a new folder called something like Content (unpacked)

vital dew
#

got it! so those are unpacking

#

i just gotta move the tilesheets it wants (as listed in Tiled) into the same folder the PathToFarm.tmx is in
after that i can redo my edits, then save as normal, and then move the entire folder over to sdv/mods, i think?

latent mauve
#

Yep, as long as it has no red Xs when you save it, and all the files are in the same spot, you can then copy/paste the TMX safely. Just don't ever edit it again without moving the vanilla files to be next to it.

vital dew
#

i can move just the .tmx and don't need to move the tilesheets with it?

latent mauve
#

And if you publish the mod or if you use recolors, you should remove the vanilla PNG files from the mod folder before running the mod. They only need to be with the TMX while editing.

latent mauve
#

Map mods tend to use Content Patcher to 'load' the map virtually into the game's Content/Maps folder at runtime, so it will automatically think the vanilla files are next to the TMX at that point when you're in-game.

vital dew
#

alrighty! lemme try my hand at this and see if it works
thank you so much for your patience in helping explain it to me neko_bongo
i've done other forms of modding like art and some light coding but mapping is a new beast aha

latent mauve
#

Happy to explain it, I just hope I'm explaining it well enough because I'm exhausted and a little hungry, LOL. I was about to go on dinner break.

vital dew
#

oh i am so sorry to have bothered you!! that food will be well worth it LOL

orchid glade
#

Is there a way to have two json files open in vscode and highlight differences bewtween them? Like a compare function?

lucid iron
#

yea

#

Explorer -> Open Editors

#

right click select for compare

#

right click a different one, compare with selected

latent mauve
#

I just did F1 "Compare Active File With..." and found the other one as a recently active file

#

(That's the difference in Sam's dialogue JSON from my old 1.6 unpack to current)

orchid glade
#

Ooh cool, I'll try both those options and see what's easiest for my workflow!

vernal crest
fading walrus
#

VSCodium my beloved

vital dew
#

okay! so the map loads in game now (yippee!) but i, ehm, seem to be stuck... and noclippy doesn't fix it LOL
perhaps i need to edit a spawn tile? though i didn't change that when i made the edits
also, water layer is bein' all weird, buuuut i'll figure out what went wrong there after

rigid musk
vital dew
#

the waters' on back i mean, sorry

vernal crest
rigid musk
#

for the water you need to have ground water tiles on the buildings layer as well

#

if that makes any sense

vital dew
#

it does!

#

including the surrounding grass bits too yeah?

rigid musk
#

pondering hmm... it only did that when I didnt do that.. let me check one of my maps

#

also where do you get stuck?

vital dew
rigid musk
#

so the first one is my buildings layer, and the second is the back layer (third is them combined)

#

hmm are you sure you dont have a tile there on the buildings layer preventing you from moving? you could also change the default spawn tile so that it moves you one over to the left

vital dew
#

buildings is showing this -

manic shoal
#

Alright, I am giving up on making this Fashion Sense Outfits mod work perfectly with content patcher. It's time to finally learn how to make c# mods. SDVconcernedCA

vital dew
#

moving the default spawn tile would be done in the .json right?

vital dew
#

it's 50, 15 .... one to the left would be, what, 49?

rigid musk
#

you can check on tiled!

#

when hovering over a tile you can see its x,y in the bottom left :D

vital dew
#

omg its gotta be 46

#

you are a godsend lmao

#

okay, let's try this again!

#

oookay, so weird stuff, i think the warps are all messed up and i'll have to find a way to fix them all
so for example, if i debug myself into the spawn position i'm supposed to be in, i can walk around
the top warp goes to the correct place - the bottom one does not work at all

#

i planned on using these with modded maps anyways so i guess i would have to edit them to have the warps in them anyways, wouldn't i?

rigid musk
#

are you doing the warps in Tiled or through the Json/CP?

#

Also you can add conditional patches with CP based on what mod you're using

vital dew
#

i assume they were through the .json since that was where i saw the main warp i edited in NP++, and i didn't see any warp tile options in tiled (i may have just not known what to look for) :o

#

it's a mod called multiple maps for multiplayer and it allowed access to, well, every player in the session to have their own full farm map, instead of everyone sharing one

hard fern
#

SDVpufferwaaah im sitting here writing a whole fairytale for my mod

vital dew
#

i've just been trying to make some personal edits for me and my one friend who wanted to do a multiplayer run together

vernal crest
#

Did you resize the map at all?

twin wadi
#

ughhh why is making npc schedules so hard?

vernal crest
#

Evil

vital dew
# vernal crest Did you resize the map at all?

i had resized only this transition map, but i cropped it from the left side (where i deleted the left's data) so the right should all be in the same area.... unless cropping it moves everything (it might, i might just not know what i'm doing lol)

hard fern
#

yes

vernal crest
vital dew
#

huh, good to know
the tile i had pulled from to have the farmer spawn in on, i checked the coordinates in tiled and wrote that one in the .json
i suppose it was still messed up somehow though

vernal crest
#

Did you check it after resizing?

vital dew
#

yeah

vernal crest
#

Farm maps usually have map properties that control where the player arrives rather than using normal warps. Maybe this transitional map does too?

hard fern
#

3

#

sorry my cat

vernal crest
#

Hi Forsy's cat!

hard fern
#

SDVpufferwaaah why do they always have to walk on my keyboard

latent mauve
#

(is there a Data/Locations entry for the transitional map, and if so, does it have a DefaultArrivalTile set?)

rich seal
#

I've been strugging with adding an item to a vanilla monster's drops. In this case, I'm trying to add Bat Wing [767] to Iridium Bat, but I keep getting the same error. I read the wiki and (probably?) understand which entry in Data/Monsters.json is the loot, but no matter what I put in, the log just tells me that my patch has "type 'System.String', which isn't recognized by Content Patcher". Can someone explain what I should be doing? I'm still very much inexperienced with code. I feel like I'm almost there, but I keep failing to reach the goal.
https://smapi.io/json/none/6398aceef6304caab6e52d8d2fdc14ca

latent mauve
#

You're trying to edit part of a slash-delimited string, so you have to handle that a bit differently, I think

vital dew
vernal crest
vital dew
#

if i walk thru that transition INTO the map, it spawns me weirdly, even if i set the tile for it right via the .json

#

so i'm like RazzThonk

vernal crest
vital dew
vernal crest
#

Default arrival tile only affects the location you arrive at when you're not using a warp set in the world, so using the Backwoods warp will not make use of default arrival tile.

vital dew
#

hmm, alright

vernal crest
#

You can test this by copying debug warp Custom_MPF_PathToFarms into your SMAPI console and hitting enter.

vital dew
#

man, maybe i'm not quite ready for all the intricacies of map modding just yet haha

vernal crest
#

See where it warps you to. If it goes to 46 15, you'll know your default arrival tile is working properly and it's a warp you have to edit.

vernal crest
latent mauve
#

The TextOperations examples for delimited lists are only editing a searched for value or Universal Loves, which.... is not slash-delimited, and thus doesn't help here either.

vernal crest
#

Let's hope someone in my playthrough mods has done it

latent mauve
#

I forget how you target a specific index in the slash-delimited fields

rich seal
#

Yeah I was reading that example too. That only got me more confused lol

latent mauve
#
    "Action":"EditData",
"Target":"Data/Monsters",
"TextOperations":[
    {
        "Operation": "Append",
        "Target": ["Fields","Iridium Bat",6],
        "Value": "767 .9 767 .4",
        "Delimiter": " "
    }
]
}``` this feels close

NOTE: This has been edited to be the working version of the code for anyone searching in the future for how to append values to a specific field index inside a slash-delimited list.
vernal crest
#

Hold up I have been thinking you wanted to replace what's in the field but you want to add to it?

latent mauve
#

but I don't know if the 6 to target the 6th slash-delimited field even works

vernal crest
#

I think that's close Lily. This is to add to gift tastes:

// add gift tastes
        {
            "LogName": "Leah Gift Taste Edit",
            "Action": "EditData",
            "Target": "Data/NPCGiftTastes",
            "TextOperations": [
                {
                    "Operation": "Append",
                    "Target": ["Fields", "Leah", 1],
                    "Value": "AgentLyoko.SaloonBreakfast_FreshOrangeJuice",
                    "Delimiter": " "
                }
            ]
        },
latent mauve
#

ah-ha, so try it without the quotes around 6

vernal crest
#

And I think it needs to be Fields instead of Entries

#

Because you just want to change one field, not a whole entry.

latent mauve
#

seems right that it'd be Fields

rich seal
#

So remove quotation around 6, and change Entries to Fields?

#

Or just the 6?

latent mauve
#

The key is Iridium Bat, so I feel like part would still be Entries, but I am uncertain how it'd handle the rest of the fields.

#

But based on the Leah example, change the "6" to 6 and Entries to Fields, see if it works.

#

You can't use both Entries and Fields AFAIK, so it's gotta be Fields in this case.

vernal crest
#

If I were trying to come up with it from scratch I'd probably do Entries as well, but since that example is from a working mod (Part of a Saloon Breakfast) I'm assuming it's the right way lol

rich seal
#

Still getting the "EditData Data/Monsters" to Data/Monsters: the field 'Iridium Bat' has type 'System.String', which isn't recognized by Content Patcher" error in the console, and the patch didn't apply this time either.

latent mauve
#

Make sure you've adjusted your Target

#

You had Iridium Bat in TargetFields before, you can't do that here

vernal crest
manic shoal
#

I am trying to learn C# but I am on linux, so I'm using Jetbrains Rider. And it is very frustrating to try and learn a new skill when the tutorial is using one program, I am using another, and I don't have any experience with either. SDVpufferwaaah SDVpufferwaaah
If I can just get Jetbrains to the point where I can actually start writing the code, I'll probably be fine, but I can't figure out how to get it set up with what I need and the only tutorial I found for getting JetBrains set up to write C# assumes the reader is migrating from VS and is already familiar with both Visual Studio and C#.
I am determined, but I am having A Time and needed to vent a little.

rich seal
latent mauve
#
        "Iridium Bat",
        6
      ],
      "Fields": {
        "Campaigner.newdropIridiumBat": {
          "6": "767 .9 767 .4"
        }``` this is wrong, it was what was wrong the first time
#

so make sure you've got the updated link for the JSON

#

(I think you had the old URL still)

rich seal
#

I had too many different json tabs open so I must've grabbed the wrong one. Trying the correct one now

rich seal
latent mauve
rich seal
#

Gotcha. I'll try that now

#

Oh, no error in console. That's a good sign

manic shoal
vernal crest
rich seal
#

Got it bookmarked, thanks. Now for the patch, I did patch export data/monsters, and I see the change in the right field. Now...is there an easy way to just spawn a bat, or am I gonna have to trudge the skull caves to test it lol

latent mauve
#

for quick testing, you can do a patch export "Data/Monsters" to see if it actually changed and looks right in the JSON file the game is using. 😉

rich seal
#

I just said I did that lol

latent mauve
#

oops, I had already typed it and hit send late. LOL

rich seal
#

all good lol

#

But yeah, maybe I should test with an easier monster to find rather than that bat

latent mauve
#

there's a debug command to spawn a pepper rex, there probably is one to spawn a bat

vernal crest
#

debug monster <S:type> <I:X> <I:Y> [I:facingDirection]

latent mauve
#

not sure if you can specify Iridium Bat in there, but it's worth a shot.

rich seal
#

I don't know what those I:X and I:Y things are. Do I put numbers in there? Or should I just take the route of editing an easier enemy to find lol

latent mauve
#

that's where it spawns it in at

rich seal
#

Matter of fact, I'll just try it on a green slime. If it drops a bat wing, then surely the iridium bat will too lol

vernal crest
#

(Go to the console commands page and look at the command lol)

#

The X and Y are the tile coords you want to spawn it on

#

But it does look like Iridium Bat is not a valid option for that command

latent mauve
#

(btw, I went back and edited my Discord codeblock so that it's the working example with a note to make it easier for future people searching how to do the same thing)

vernal crest
#

(Ooops sorry Lily I missed you already saying that's where it spawns)

latent mauve
#

(all good aba!)

rich seal
#

Yep, green slime dropped bat wings after I changed it to that instead of the bat, so clearly the patch works, hooray! I appreciate you folks holding my hand through that ordeal. I'm still bad with retaining what I learn since I'm no coder, so all this has been helpful.

vernal crest
#

You're welcome. It's definitely a bit mindbending once you start trying to edit individual fields in a slash-delimited string. Thank goodness 1.6 removed most of them.

latent mauve
#

Data models, my beloved

rich seal
#

Yeah, when I saw "slash-delimited string" earlier, I was like "Aw hell, another new word I don't recognize"

latent mauve
#

anything that goes value/value/value is a slash-delimited list

#

And sadly, they still exist in a lot of places D:

trim sand
#

ah yes like recipe data

latent mauve
#

(Furniture is in that same circle of sadness)

trim sand
#

crafting/cooking being cursed moment

vernal crest
#

I think we might be getting some more converted in 1.6.16 but don't quote me on that.

tiny zealot
rich seal
#

Crafting didn't seem all that bad when I looked at it

trim sand
#

its not terrible. doesn't mean i haven't had bugs that took days to fix because i messed up which field i was putting stuff in

#

multiple unused fields in crafting data moment

rich seal
#

Oh, all those nulls?

latent mauve
#

the field is required but the value is ignored

rich seal
#

Just like my applications 🥲

trim sand
#

something something copy paste error resulting in putting unlock conditions in an unused field/

vernal crest
#

That part trips people up. They think they can just skip it, not realising that changes the index of the rest of the fields after it.

#

Okay, time to return to my ridiculous beast of a gift tastes file

trim sand
#

gift tastes shudder

latent mauve
#

I'm gonna go back to gaming to rest my brain a bit, LOL

#

Have fun coding, I'll be working on mine some more later this week when my brain is less mushy xD

vernal crest
#

I am making Hiria reject almost all gifts which has meant a lot of testing RejectItem_<tag> over and over again

latent mauve
#

I have to add Lon Lon Milk as a loved gift for the Goron NPCs, but that's a later problem.

vernal crest
#

Thank you past me for editing the wiki after testing acceptance/rejection precedence so I don't have to test that all over again 🙏

inland cedar
#

how to get the NPC today dialogue? the one that will be display when talking to them? I tried with npc.CurrentDialogue but it doesnt seem to be correct in some case

tender bloom
#

are the incorrect ones being overriden by conversation topics or location-specific dialogue?

inland cedar
#

I am not quite sure. for example I test on lewis on the 1st day of the game, it show the rregular monday dialogue instead of the actual "how the first night"

tender bloom
#

so it seems like they don't account for CTs at all, then

#

You'd probably have to poke around in the decompile to see when/where CTs are added so you can check downstream of that

vernal crest
#

Am I reading this correctly that gift taste dialogue doesn't actually check for category specifically but rather checks for qualified item id and then context tag only?

dialogue = this.TryGetDialogue("AcceptGift_" + gift.QualifiedItemId) ?? (from tag in gift.GetContextTags()
    select this.TryGetDialogueByGiftTaste(taste, (string tasteTag) => "AcceptGift_" + tasteTag + "_" + tag)).FirstOrDefault((Dialogue p) => p != null) ?? (from tag in gift.GetContextTags()
    select this.TryGetDialogue("AcceptGift_" + tag)).FirstOrDefault((Dialogue p) => p != null) ?? this.TryGetDialogueByGiftTaste(taste, (string tasteTag) => "AcceptGift_" + tasteTag) ?? this.TryGetDialogue("AcceptGift");
lucid mulch
#

don't categories become context tags?

vernal crest
#

Yes they do.

#

But there's also a category field. I'm interpreting this as gift tastes don't check the category field but rather check for the context tag for the category.

#

I checked because the wiki page for gift tastes doesn't mention that you can use context tags so I wanted to add that. But then I thought I'd better check the precedence in case it goes item id -> category -> context tag (or whatever). My conclusion from reading the code is that the code doesn't differentiate between category and context tag but before putting that on the wiki I wanted to get a sanity check from someone better at C# than me.

#

Oh I might have been looking in the wrong place anyway. I didn't notice that the wiki points to the method.

#

Well, trying to read NPC.getGiftTasteForThisItem leaves me thinking I'll just put context tag precendece as a TODO on the wiki page lol

twin wadi
#

...time to move? SDVpuffersob

#

why...

woeful lintel
#

get derby'd

mighty ginkgo
#

what happens if a npc has a schedule point in a spot where a mod placed a building by the way?

#

the top parts of the forest are pretty heavily used by mods. i think the lower left part is least used, although even there several mods patch new entrances to their areas

ornate locust
#

depends, sometimes they walk into stuff until collision stops working and then they noclip really fast in a straight line

sleek igloo
inner harbor
#

@idle lantern Just so you know f Marnie 2 is 2 friendship points, not 2 hearts. You need to multiply it by 250.

stiff laurel
#

Does anyone know where the jungle tank's texture is located, I looked at the furniture sprite sheet but it contains all the fish tanks except the jungle one.

mighty ginkgo
#

TileSheets\\furniture_2 according to Data/Furniture

stiff laurel
#

yep got it. thanks

median forum
#

is dialogueWarpOut only for one NPC or can i use it for two?

vernal crest
#

Lily says you can have end dialogue for multiple NPCs so that probably applies to end dialogueWarpOut too.

median forum
#

oh cool! thank you!

inner harbor
#

You can?

vernal crest
inner harbor
#

All this time I just used Conversation topics

crimson kettle
#

is there anyway to fix this custom window tile, i can't seem to find the solution after changing everything i can in content file

hard fern
#

uh, is this in an npc house or a farmhouse or what

crimson kettle
#

it's in farmhouse

#

the other window works fine so idk what's problem

woeful lintel
#

Is there a reason why the game loads Data/Furniture upon loading the savefile select screen?

patent lanceBOT
winged sand
#

hi everyone! very new to modding, I was watching how to add a custom location (a farm map) into the game, SMAPI is installed, content patcher too, so far so good...
My issue is that since 1.6, the content json files are different than before, and I can't get it working...
so does anyone have a template for a content json file I can use for at least testing my map as it goes? (I think it's something about location data or something, can't figure it out!)

vernal crest
orchid glade
#

So I'm looking at this code in a mod, does this actually work?: "Action": "EditImage", "Target": "Characters/Sam_Beach.xnb", "FromFile": "assets/Sam_BeachOW.png" }, I've never seen the .xnb targetted before... or... is it wrong..?

#

(ignore the missing first bracket)

finite ginkgo
#

It's wrong, the data asset names don't include any file extensions

orchid glade
#

Well, I better fix it then

winged sand
vernal crest
winged sand
#

what confuses me is that smapi seems to load it ok, and yet and <i can't get to that location using commands

vernal crest
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.

vernal crest
#

Can you please use the website like Governor's message says?

vernal crest
#

Thanks :)

winged sand
vernal crest
#

What is your mod's unique ID?

winged sand
vernal crest
#

You make it. Your manifest.json has a field called "UniqueID". That's your mod ID.

#

You need one for your mod to function, so you must already have one.

winged sand
#

oh!!!! Ok OK!! well I 'll try that! thanks for replies and patience !

vernal crest
#

No, I haven't told you the issue yet.

#

I just wanted to know what your mod's ID is so I can check it against what you're trying to warp to.

vernal crest
vernal crest
karmic gust
#

A user on Nexus messaged asking if they could translate my mod into Mandarin. I checked their profile and it seems they've translated a few others as well this year. Is there anything I should know/consider before giving permission to do so?

drowsy pewter
#

Things to consider would be seeing if they reupload mod content in their own translations, or just the i18n file (most people now only do the i18n file) (if your mod is set up for i18n). You can also consider if you want to ask them to upload it separately, or if you want to put it in the mod yourself.

calm nebula
#

A handful use machine translation

#

If this bothers you you should mention it

#

(I wouldn't know about this person)

karmic gust
#

Yeah I was slightly concerned about that but I wasn't sure if it'd be rude to specifically ask that they wouldn't

calm nebula
#

Someone dm'ed me and told me one of the submitted Chinese translations in one of my mods is a machine translation

#

So when I get time I'm gonna text to voice it (I can't read Chinese well but I can understand by listening)

#

And remove it if I think it is bad in favor of the new one

vernal crest
#

Some people do crappy machine translations as fast as they can in order to DP farm, though they don't usually ask permission so them asking is a good sign (unless they decide that asking permission is the same as getting permission and upload before you can even respond, as some people also do).

karmic gust
#

I haven't looked into i18n and my mod isn't set up for it. Just for clarification, that's when they would download your mod in addition to the translation?

#

Yeah I'd really like to avoid machine translations

calm nebula
#

(Fwiw, I'm not against machine assisted translations, and I don't ask translators ask me for permission.)

#

When I was active I preferred it because I could give translators the i18n for the next version, but I've always been mit/cc-4 licensed

#

But you can ask for whatever

#

Ie, no machine translations, or always bundled, or never bundled, etc.

drowsy pewter
#

So in this vase, the translator will need to translate and reupload your mod separately, or upload a file to replace/overwrite one of your code files

calm nebula
#

Which can cause endless issues down the line

karmic gust
#

In case there are bugs that need fixing because then they'd have to fix it on their end as well, yes?

drowsy pewter
#

For example cornucopia has a third party translation which replaces the main code file unnecessarily. This caused multiple issues when I wrote an update for my mod and players using that translation had an outdated main file but up to date subfiles with mismatched code

#

Yes they will

tiny zealot
#

yeah, or just if anything about the mod and its files changes, the translator is on the hook to propagate those changes and update

drowsy pewter
#

its likely they'd forget about it or not realize

calm nebula
#

Tl;dr just use i18n

tiny zealot
#

you can even do i18n folders now, so you can split up files if you want and not have to have one huge monolith (although you may enjoy a monolith, who knows)

calm nebula
#

It depends on how many translations and how much I'm willing to rework things tbh

drowsy pewter
#

The final exception to needing to use i18n is if your mod is a content patcher mod and the ONLY thing that needs translating is the config options. In this case they can create an i18n file for the config without you needing to change anything

woeful lintel
#

"Oh yeah, that's why I have to give the game the size of the Source Rectangle, I remember now"

karmic gust
#

Ah, no. It's a bunch of events and dialogue and such

#

Alright well, i18n support it is lol

drowsy pewter
#

can someone link the i18nifier for them? idk how to use it

calm nebula
#

!converters

calm nebula
#

First thing under "other tools"

karmic gust
#

Thank you!

calm nebula
#

I don't know how to use it either

#

Loooook 6480 we consider may 2023 the date I actually retired from modding b/c that is the last time I did a real release wave

#

Also my heart is in "should I plant purple asparagus in the garden" these days

woeful lintel
#

a soldier never truly leaves the battle field SDVpufferpensive

vernal crest
#

I vaguely know how to use it but most importantly I know how to ping Nomori and bug him about it if needed :D

drowsy pewter
calm nebula
#

I think that is soon actually

#

Or may have already passed

drowsy pewter
#

so ive never actually been active at a time when youve been active either lol

#

when do i get to start saying im retired

calm nebula
#

What's funny is I don't think casey and I have both been active at the same time (not intentionally, but her hiatuses and me actually doing any modding work tended to line up. Coincidence?)

calm nebula
#

Retired means there isn't hope of you coming back

#

Hiatus means there is still hope

frosty hull
ornate moon
#

does the xnbhack only include sprites? I've used it twice and i don't have any access for content files

flat sluice
ornate moon
#

does the animal folder have the json files for them or is it in a different folder, cuz i only see the sprites in that folder

flat sluice
ornate moon
#

oke thanksss

gaunt orbit
frosty hull
vernal crest
frosty hull
ornate moon
#

though i still don't know how to make an animal not purchasable from marnie. i want to make a golden purchasable in an event shop haha

gaunt orbit
vernal crest
gaunt orbit
#

man I wish I had the android dlls

ornate moon
ornate moon
gaunt orbit
#

although I guess it makes no difference if I can't test it

vernal crest
ornate moon
#

doing my best haha

frosty hull
lucid iron
#

If you can put a tile action it will work

lucid iron
lucid iron
frosty hull
#

yes correct

#

if i ready to release mod i will upload on my fork

lucid iron
#

Did you look into using Cecil to rewrite some binaries

#

I think it would be a less scattershot approach

gaunt orbit
#

if I can figure out the combination thing, that will also help me port MUS to android

frosty hull
frosty hull
lucid iron
#

For example i know this method is missing on android
StardewValley.ISoundBank.Exists

gaunt orbit
lucid iron
lucid iron
#

Cool ty

#

The other definitely no work on phone thing in this mod is the trinket inventory menu but I don't think that's easily fixable

#

Atm i think it just crash if you tried to use monS

#

Hm if the soundbank thing is good now does East Scarp C# work on phone?

frosty hull
#

yes it works

#

RSV, SVE, EastScarp

lucid iron
#

Back in 1.5, there was a website that listed compatibility with Android SMAPI

blissful panther
#

The GitHub repo with the 1.5 source is still up, but that's not going to be super helpful nowadays.

gaunt orbit
#

compat was a lot worse in 1.5, though, because xamarin was allergic to annotations

lucid iron
#

It would be nice to have something like that again, though maintaining that is going to be a lot of work

tardy temple
#

Had a weird idea for a mod idk how feasible it is especially since I have no experience.
Essentially I would overhaul slime hutches. I would make each slime like a farm animal where it can be pet, named and etc… it won’t attack anymore as a bonus. They cannot breed to make new colors (I have a better idea) but you can still breed them to get “swirly” slimes where they are instead two colors half and half. Why? Because then you can feed optionally feed them sugar for a candy item that produces different food buffs based off the slimes color(s)

#

How realistic is this from the perspective of people who know what they’re doing. Cannot emphasize enough I have no idea what I’m doing

woeful lintel
#

C# hell

gaunt orbit
#

some parts are easier than others. to make them into farm animals, you could essentially just add new farm animals that look like slimes and replace the slime hutch so regular slimes can't get put in it. (though if you did this, you would need to add another way to unlock the incubator and slime egg drops.) This would be low difficulty

you would need c# for the candy idea, and for the swirly slimes. That part is probably moderate difficulty.

tardy temple
#

Hm so maybe not then

gaunt orbit
#

If you don't feel ready for it now, I wouldn't abandon the idea completely, just put it on the backburner until you have a better idea of what you're doing

#

sometimes letting an idea sit can help figure it out anyways

tardy temple
#

No the issue is I’m just ass with code. I can learn it but I can’t use it well

woeful lintel
#

Maybe you can write a detailed description of your idea to the mod submission list and someone could pick it up

#

don't remember where that is tho

gaunt orbit
#

!modideas

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

tardy temple
#

I can do art I’m good with aesprite. I can try to learn how stardew is coded myself this would just be a long process just not sure diving into the deep end is right

gaunt orbit
#

it's a great way to dip your toes in

tardy temple
#

Hmm maybe. I just need inspiration

woeful lintel
#

!! Furniture mentionned !!

gaunt orbit
#

@rancid musk is it possible to use More Nightly Events to do custom junimo cutscenes?

rancid musk
#

It should be, as long as you write it like an event

gaunt orbit
#

bah, that's what I was afraid of

#

WorldChangeEvent has some secret sauce that's a PITA to do via manual scripting

#

maybe I can just subclass it

lucid iron
#

Personally i think slime farm animals are cool and fun

ornate moon
#

how can i chang the mizu's turkey mod to be in a coop, i changed it so that it can be placed into a big coop but now it ain't showing, like totally invisible

lucid iron
#

They can still drop slimes

ornate moon
tardy temple
#

Unless this isn’t referencing my idea to make them like chickens functionally

fossil osprey
ornate moon
#

thaanks!

lucid iron
#

That you can incubate

#

Slime hutches are somewhat hardcoded but there is a framework to let you raise other monsters

tardy temple
lucid iron
tardy temple
#

Hm

round timber
#
                        {
                            "Id": "{{ModId}}_SpiritsEve",
                            "Portrait": "Portraits/{{Honeyfuggle}}_SpiritsEve",
                            "Sprite": "Characters/{{Honeyfuggle}}_SpiritsEve",
                            "Condition": "IS_EVENT festival_fall_27",
                            "Precendence": -200,
                            "Weight": 0
                        }
                    ],```
is this GSQ incorrect or something :( NPC isnt wearing the outfit but i also dont see any errors in the log
#

aghh it is

#

festival_fall27 not festival_fall_27 🫠

lucid iron
#

debug gq GSQ_HERE

calm nebula
#

Don't use weight=0

round timber
#

ok CGthinkowo

#

based it off what i saw another mod do

calm nebula
#

This was a mistake in the game code that people copied incorrectly tbh

#

When you're doing weighted lists you need to enforce weight > 0

round timber
#

oof

#

noted

karmic gust
#

So I'm in the process of converting everything to support i18n, using the converter, and went to test the events to ensure they were working correctly. The heart events all loaded correctly, but the wedding events didn't. I reloaded the original event and it played fine, so I tried converting it again and smapi said the event could not be found again. Any ideas why 1 out of 5 events wouldn't load correctly?

Here is the updated json with the i18n events:
https://smapi.io/json/none/5aa337607e0d434ebac5f6ced6d43743

Here is the original json:
https://smapi.io/json/none/125751a6f83b41909860ab7b0ac228ba

And here is the smapi log:
https://smapi.io/log/81b87ae4e9bf4e5196fca384ba8760dc

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Unix 6.5.0.23, with 15 C# mods and 1 content packs.
Suggested fixes: One or more mods are out of date, consider updating them, SMAPI is out of date, consider updating it

round timber
# karmic gust So I'm in the process of converting everything to support i18n, using the conver...

i had something similar happen to me before, its because of the {{ImportToken}} thing that, in your case, replaced {{day}} and {{season}}. i think to fix it you have to pass the token through like this (and remove the {{ImportToken}}) textAboveHead Caroline \"{{i18n:FourHeart.12 |playerName={{PlayerName}} }}\". my experience with this is limited though so i could definitely be wrong and defer to anyone who knows better SDVpuffersquee

karmic gust
#

Thank you for the help!

ornate moon
#

does the animalsqueezethrough mod work with livestock bazaar? i already set up my string so that the turkey lives in the coop, but when i installed it, it lives in the barn again

#

i also can't put my turkey in either a barn or a coop because of the livestock UI

lucid iron
#

Livestock Bazaar is just a menu it obeys whatever the data says

#

You will have to do a patch export Data/FarmAnimals

#

Also try disabling your own edits first

little siren
#

this is really silly but where can i find fish sprites in the files? I looked thru every folder in my unpacked content folder but am struggling to find it

calm nebula
#

Maps/springobjects

little siren
#

thank you!

patent lanceBOT
lucid iron
#

Atra archeology

mild dagger
rare orbit
#

any idea which username is dolphinisnotafish from nexus? i wanna ask for permission related to their marniner replacement mod!

rigid musk
rare orbit
#

oh cool

#

i would've @ them but idk if they are cool with that or not

#

i mainly ask too since their mod which replaces the marnier with a mermaid... it turns out that the seasonal pendants will fit on the farmer's portrait made by jupm pretty seamlessly! i tried to make the pendants myself.... but they did not look right. at all..

rigid musk
#

they're fine with pings iirc

#

ive pinged them before

rare orbit
#

cool! i did dm em as well but i'll ping em!

#

@devout otter mind if i either reference the seasonal mermaid pendants or use them from the original mod? i am helping JuPm out by sliding over some personal edits i did for an update to their farmer portrait-nyapu styled mod

#

and i found out through testing that they fit on the farmer wonderfully

ornate moon
#

does market day mod still work? it's totally bogged on mine. and i already got the 1 for 1.6

lucid iron
#

I believe there's an unofficial update for that, i do not know if it works properly

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.

lucid iron
#

Also !log

rich seal
#

Question; I've made an egg item, a mayonnaise item, and a recipe for it to go from egg to mayonnaise. Problem is, it turned into vanilla mayo rather than the mayo it's supposed to. I'm at a loss here, as I thought I covered all my bases. Anyone able to troubleshoot this for me? (item and related are at the bottom)
https://smapi.io/json/none/070e4c949b904907a3213655f8ea2b89

uncut viper
#

did you move your machine output entry to the top of the list

rich seal
#

I don't know what you mean. What list am I supposed to be moving to the top of?

brittle pasture
#

machine rules evaluate from top to bottom, and your rule is at the bottom and below the vanilla "all egg to mayo" rule

#

you need to use MoveEntries and move your Campaigner.snailcrabMayonnaiseRecipe to the top of OutputRules

#

it can be done in the same block as your entry that adds the rule

rich seal
#

Sorry, had a small emergency crop up after I posted (it's fine now, thankfully). I followed the guide and got my mayo to work, woo! Thanks for the link to that page. Didn't know I had to avoid some rule at all with the mayo machine lol

#

Though I probably shouldn't have copied ostrich. 10 mayo was too much lol

#

To change the output amount, that's minstack right? Edit: It was. Wish it said amount instead lol

brittle pasture
#

it's cuz theres also MaxStack

golden basin
#

so i figured out a way to spawn a npc in the farmhouse withuot being married or rommated to them

#

only issue im encounting now is they will not walk a schedule

#

even with the map saying npcs can path there, and even when i add a npc warp for them they dont walk

#

I DID IT

lucid iron
#

Watch out for modded farmhouses

golden basin
#

oh i know thats why the warp will be in the spouse room

#

also the mod is sort of for me right now idk if itll be released

#

ooooooooo im dancin

twin wadi
#

in an event, how do i give an item based on season? for example, i want to give a seasonal flower.

golden basin
#

you can make a dynamic token

#

i can write out a example

valid folio
#

Hi, how are you? I have a quick question — do you know how to use Portraiture Plus? I'm not quite sure how it works. If you know of a mod that uses it as an example, that would be really helpful too.

twin wadi
golden basin
#
   {
"Name": "SeasonalFlower",//Spring
 "Value": "ITEM ID",
"When": {
"Season": "Spring", 
}
},
   {
"Name": "SeasonalFlower",//Summer
 "Value": "ITEM ID",
"When": {
"Season": "Summer", 
}
},
   {
"Name": "SeasonalFlower",//Fall
 "Value": "ITEM ID",
"When": {
"Season": "Fall", 
}
},
   {
"Name": "SeasonalFlower",//Winter
 "Value": "ITEM ID",
"When": {
"Season": "Winter", 
}
},
],```
#

and you palce the toek {{SeasonalFlower}} in the id part of your event command

#

token*

rare orbit
#

i might need to know too

#

for Portraiture Plus

#

cause i was told that using portraiture plus might be better given my current art style

brittle pasture
valid folio
brittle pasture
#

I meant the mods that use it

ornate trellis
#

it directly states it in the mod description

twin wadi
ornate trellis
#

this cant be any clearer tbh

valid folio
brittle pasture
#

Remember what you did before? That's number 15 on that list

valid folio
# ornate trellis this cant be any clearer tbh

Yes, but I don't really understand it. I don't know what exact data goes there or where to get it from. I'm not a programmer, I'm just someone trying to learn how to make things for mods.

brittle pasture
#

(also this looks a lot more than 1)

ornate trellis
#

nothing to do with prgramming

golden basin
ornate trellis
#

you jsut naem the file differently and it shows you how exactly it needs to be name

brittle pasture
#

basically, just drop the pngs in the same place you dropped your base portraiture portrait but name it differently

golden basin
#

I think the hang up is how is this implemented through the code of the mod?

#

let me go look at the mod i bet I could help

ornate trellis
#

goddamnit i hate how i was replying and lost half of it because my antivirus program suddenly wanted to run and tabbed me out of discord :I

brittle pasture
#

they made a Portraiture mod before, I helped them with it
the procedure is the same, but instead of NpcName.png you do NpcName_Rain.png for rain portrait

#

or NpcName_Winter_Indoor.png for indoor winter portrait

golden basin
#

Hmm how do you tell your mod where your assets are does the mod automatically know?

brittle pasture
#

you don't, you need to (tell the users to) drop the pngs into Portraiture's folder

#

that's my main hangup with Portraiture tbh

#

no content pack support

golden basin
#

Oooo I see and the mod will be able to read what each namesake means from that?

brittle pasture
#

yes

ornate trellis
#

tho it does state this on the mod page so idk

After 1.06 you could use "ContentPackFor": {"UniqueID": "Arborsm.PortraiturePlus"} in manifest.json to make Portraiture find png in that folder now,
the game will traverse all png files in that directory and attempt to add them to the game

#

unless that doesnt work

brittle pasture
#

hmm interesting

#

but well, one step at a time
make the pngs first

golden basin
#

Im struggling to write out a full cohesive explanation for this.

So it's like this right?

By following the naming method shown above, you can place your assets into the portraiture mod and the mod itself will read and apply the seasonals based on the namesake by default?

valid folio
golden basin
#

now how to you seperate walksprites from the portraits?

brittle pasture
#

portraiture doesnt do walk sprites

#

it's portraits only

golden basin
#

Oh I see so it's strictly for portraits, so any walksprites need to be applied via content patcher?

#

So example then.

Lyell_Spring

Would be the spring portrait name that I drop into the portraiture folder inside the portraiture mod?

#

Oh good so @valid folio does the conversation above help at all?

valid folio
#

It's really hard for me to follow the conversation on my phone because I can't see well. I'll check it later from the computer when I'm back at it, thanks.

golden basin
#

so you dont lose the info

devout otter
rare orbit
#

ohh ok!

golden basin
#

I think compiling a list of questions to ask new modders might be a good idea? it could help us help them. a lot of stuff new makers wouldnt know what certain words mean. and sometimes even context when related to topics and methods of mod making could be confusing?

#

It can be confusing and discouraging, esp cause sometimes new comers dont know what questions to ask or how to phrase questions either.

#

and also sometimes repeatly teaching is needed, I had to be taught like 3 different times to learn cause of my brain injury

rare orbit
#

i need this too! im relatively new and modding is hard ;-;

golden basin
#

@ me whenever you need help nikki, i dont know about all the frameworks or how to do everything but I can help anyway I can

rare orbit
#

thank u ;w;

golden basin
#

of course!

#

what type of mod are you making?

rare orbit
#

right now im working on a recipe mod for my bf's birthday

rigid oriole
#

Sometimes I'm tempted to make a "content patcher for absolute beginners" tutorial but I feel like every tutorial will have holes in it no matter how hard i try

rare orbit
#

i am testing it out and i think i got it right

golden basin
#

Ooo that's a pretty easy thing to do actyally!

peak isle
#

im not really new or have a brain injury i am just stupid. documentation is a God send

rare orbit
#

i am begging you please do

golden basin
uncut viper
#

i swear ill get back to my tutorials one day too. after cmf,

rare orbit
golden basin
#

teaching modding is also a little difficult because you cant just teach mod making. A lot of what people will learn will be a single thing

rigid oriole
#

i swear i'll write tutorials after i update my existing mods, release my WIP, and life is no longer busy

golden basin
#

Mod creation is such a broad hobby, someone who makes npcs will have a different skill set from someone who makes crops

peak isle
#

the hard part of teaching modding is how much just seems to be digging. i also thought about making a video about making mods but then i realized that beyond the bare bones ModEntry class or content.json, 96% of what I am doing every time I work on a mod is scouring the source code/content 😭

rigid oriole
#

Tutorials do work best when it's for a very specific thing ya

rare orbit
#

true that

#

and that's just using vanilla items

rich seal
#

Question; where is the crab pot's possible loot located? I can't find it in any data file.

brittle pasture
#

hardcoded SDVpufferwaaah

rich seal
#

Really? Big oof.

brittle pasture
#

you can add new crabpot fish, and it will be added to the pool

rich seal
#

Oh. That's what I'm after!

tawny ore
#

Do we not have a dehardcoding CrabPots framework yet?

brittle pasture
#

[[Modding:Fish]] in that case

#

woops

brittle pasture
rich seal
#

I think I worded it wrong. That's for adding new fish, right? I just wanted to add a single item to the crab pot's loot table 😦

latent mauve
brittle pasture
tawny ore
#

For anyone wanting to write yet another framework, there's an opportunity here

#

I for one can't wait to get duck mayo out of crab pots

rich seal
#

So if I just wanted to add say Bomb to crab pots, I just follow the guide on adding a new fish, but use Bomb's ID instead of a modded ID?

valid folio
brittle pasture
rich seal
#

It hurts to be a crab pot enthusiast

tawny ore
#

I like Crab Pots when I play with Automate, which is not very often

golden basin
rich seal
#

I just like having shrimp fish tanks. Love my little fellas.

#

So, looking at Fish.json, I noticed trash like driftwood isn't on the list. Is trash loot handled elsewhere?

calm nebula
#

Yeah

brittle pasture
rare orbit
brittle pasture
#

could be part of MTF once > 2 people request it SDVpufferchicknight

valid folio
# golden basin omw

I'm going to write down how I understood I should name one of the image files, as if it were the one I’ll use for fall:

{NPC Name}{Location Name}{season}.png

ichortower.HatMouseLacey_Lacey_{Location Name}_fall.png

I left part of it blank because I’m not sure what value corresponds there.

golden basin
#

you need to make it more like this

#

ichortower.HatMouseLaceyLacey_{Location Name}_fall.png

lucid iron
golden basin
#

thats only if youre making a location only outfit though

brittle pasture
brittle pasture
rare orbit
#

kk!

lucid iron
#

You can put a mayo on the water

golden basin
#

if you only want fall it would be

ichortower.HatMouseLaceyLacey_Fall

brittle pasture
#

(minor correction it's ichortower.HatMouseLacey_Lacey_Fall)

#

(Discord eated the first underscore in their original message)

golden basin
#

ooo i see

gaunt orbit
valid folio
#

Got it, thank you sooo much! I’ll try it out in a bit and let you know if everything worked or if something exploded, haha.

@golden basin and @brittle pasture

brittle pasture
ornate trellis
#

crab pot fish is what i plan doing for my island at some point :3c

brittle pasture
#

the other is Cornucopia which adds salt to beach

valid folio
#

I have to finish a translation before I can start editing the images—well, actually, the image names.

lucid iron
rigid oriole
#

I coulda sworn they patched the rate

brittle pasture
#

it still has to compete with other vanilla fish which gets checked earlier

#

but yeah it did get bumped up

#

it used to be .1, which in practice is like .01 or something because of vanilla fishies. .6 now

#

(I actually can't tell if that helped because I play with Mariner in my current save, which throws all those numbers out the window)

calm nebula
#

Clearly you should framework it