#making-mods-general

1 messages · Page 171 of 1

latent mauve
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

cosmic grove
tender bloom
#

no, you need another section of your json to handle loading the image to the content folder

frail moss
#

oh can you help me with it ?

tender bloom
#

it can be as simple as this though:

{
            "Action": "Load",
            "Target": "Mods/{{ModId}}/Test_sword",
            "FromFile": "assets/Test_sword.png"
        },```
latent mauve
#

I was typing that out but you're way faster xD

frail moss
#

where i should put it ?

tender bloom
#

I stole it from one of my own mods lol (changed names)

#

Underneath the other "Action" block — send your json via smapi.io/json if you want me to show you

#

So it goes in the same json file, but added on top of your other thing that does EditData

frail moss
#

im so bad i didnt understand smapi.io is a link SDVpuffercry

#

the format 1.23.0 work so i dont think changing that now

latent mauve
#

The Format in this case is the version of Content Patcher you're using for the mod dependency. 🙂

tender bloom
#

you did it perfectly! I do recommend changing the format to at least 2.0.0

frail moss
gentle rose
#

out of curiosity, where did you find 1.23.0?

#

(we've been trying to see where people get that version number from)

frail moss
#

on a youtube video dating of 2021

gentle rose
#

interesting! can you send the link?

frail moss
#

yeah sure

latent mauve
#

oh no, a video tutorial

hard fern
#

😅 these youtube tutorials, huh

latent mauve
#

That explains a lot

frail moss
#

x) he explain really good for following his 4 video (he made 5 but the last is C#)

tender bloom
#

This makes a lot of sense, we had been wondering

latent mauve
#

Video tutorials tend to become outdated very quickly, so there are some mixed feelings here regarding them.

#

I'm gonna leave a comment on the video about the format number, I think.

tender bloom
#

I'll never make one, but I trust Harvz to make something accurate (for the time of publication of the video)

gentle rose
#

I'm guessing people who are using 1.23 all come either from that video or LemurKat's old blog tutorial

#

there was also a modding wiki tutorial that used it too but I updated that now (and idk how popular it was)

frail moss
#

{{ModId}} when it says that i need to put the unique ID of my mod like {{Author_NameOfTheMod}} ? or something else i dont see ?

latent mauve
#

Does this sound good for the comment?
For anyone coming to this video in 2025, please note that the "Format": "1.23.0" portion of the content.json template is outdated. The Format number should always be the latest version of Content Patcher you are using to make your mod, which at the time of me writing this comment, is 2.4.0.

#

I know CP is 2.5.1 now, but the parser is still recommending 2.4.0

tender bloom
#

so you should leave it as {{ModId}}

frail moss
#

effectively its working i have the sword but not the texture

tender bloom
#

you loaded the texture but didn't change where you told the weapon to look for the texture to match where it was loaded to

latent mauve
#

Comment left

frail moss
#

i love you so much i dont know what to do (my french humor could possibly take the lead of my speak)

#

that almost worked

tender bloom
#

what does your image look like?

frail moss
tender bloom
#

you'll want it to be a 16x16 pixel image, that is .png

frail moss
#

i made it png and 32x32

tender bloom
#

This one is too big

frail moss
#

32x32 is too big ?

tender bloom
#

Unless you want to go through a lot more trouble, stick to 16x16

#

Most things in the game are built around a 16x16 grid

frail moss
#

okay that not a big problem

tender bloom
#

I am not personally familiar with the mods (frameworks) that help you use bigger images than the game was designed for, but they do exist — you'd just need to learn how to use them and decide which one can help you. It's not as easy as using Content Patcher.

frail moss
#

its work im so happy i can go sleep now

#

i'll come back tomorrow

desert crane
#

Is it possible to change the amount of bars required to upgrade a tool?

brave fable
#

sure, edit the entry in Data/Tools. you can change upgrade costs and requirements for any and all tools

#

if you've unpacked the game content already, you can open up the file and peek at the vanilla setup

desert crane
brave fable
#

find a tool that has a value for UpgradeFrom to copy from, and set ConventionalUpgradeFrom: null

#

i've a custom generic tool that behaves similarly to the trashcan tool, and UpgradeFrom works just fine on that

#

of course they may behave differently to the usual held-item tools, but that's something to discover yourself hahah

desert crane
#

I'm already lost not sure what I'm doing

desert crane
#

I'm doing something like this, probably wrong

brave fable
# desert crane Not sure what you mean

oh, i just mean that the game may handle tools like Axe and Hoe differently to Trashcan, which is the only tool that uses UpgradeFrom instead of ConventionalUpgradeFrom. tools are very very specifically handled behind-the-scenes

#

but that's something to run into when we get to it

#

it's wrong yeah, just needs a little reformatting

desert crane
desert crane
brave fable
#

oooh actualy no since we're adding a whole new UpgradeFrom we can just use EditData no we do need targetfield lol

desert crane
#

Like this?

brave fable
#

following the style of the Trashcan entry you screenshart above, something like this should work:

{
    "Format": "2.5.0",
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/Tools",
            "TargetField": [ "SteelAxe", "UpgradeFrom" ],
            "Entries": {
                 "Condition": "..."
                 "Price": -1,
                 "TradeItemId": "(O)334",
                 "TradeItemAmount": 5
            }
        }
    ]
}
#

you'd want to find an appropriate condition to use here, there should be a GSQ for checking the current axe upgrade level

#

i don't have the unpack in front of me atm, just a web browser, so i can't do much more than fetch the CP docs

desert crane
#

Shouldn't we just leave there like in vanilla?

#

I mean the condition

#

is it needed?

#

What is the gsq?

#

I don't know how to fill that

brave fable
#

well the condition will just be null in vanilla since UpgradeFrom is also null

#

if there's no condition, the upgrade is always going to be available, but we want the upgrade to only be available if you're at a certain tool level

desert crane
#

But that's already like that in vanilla. Why if I don't change it, it still require me to fix it?

brave fable
#

it's using ConventionalUpgradeFrom in vanilla, so it's handled automatically with a specific number of bars and money and conditions

#

if you want to change the number of bars, you have to account for the rest, too

desert crane
#

Ohhh I got it

brave fable
desert crane
#

So it's a dead end

brave fable
#

there's a trashcan level query SDVpufferfush

desert crane
#

By the way I deleted the condition field before and tried the mod like that

#

It's not like appearing always

#

Didn't work

brave fable
#

you could use PLAYER_HAS_ITEM (T)SteelAxe maybe, but that'd require the player to have the item in their inventory

#

i don't remember if you already need to bring the tool to clint directly when upgrading so it might be fine

desert crane
#

If you want to upgrade you are already required to have it

#

So it's good

brave fable
#

ahhh perfect

desert crane
#

I took out the format as I use the command include

#

Actually should be if player have copper axe

brave fable
#

that looks good to me, but again i can't exactly test any of this atm

desert crane
#

Testing it right now

#

Didn't work

brave fable
#

alright there might be a second Changes entry needed

desert crane
#

We messed up

#

The bars

#

And the upgrade

brave fable
#
{
    "Changes": [
        {
            // the other upgradefrom
        },
        {
            "Action": "EditData",
            "Target": "Data/Tools",
            "TargetField": [ "SteelAxe" ],
            "Entries": {
                 "ConventionalUpgradeFrom": null
            }
        }
    ]
}
desert crane
#

334 is copper bar

#

But you are already upgrading from copper to iron

brave fable
#

that's fine, the iron bars are 335 or 336 or something

#

if the game uses our new item/quantity i'll call that a win

#

we just need to get it to ignore the conventional behaviour first

desert crane
#

I should have seen 10 copperbars but didnt so still didnt work regardless of that I guess

#

Like this

brave fable
#

nope

#

keep your existing changes entry how it was, and add the one i sent above to the list

desert crane
#

That's exactly what I did

#

Oh

#

Above Action?

brave fable
#

you did not 🙏

desert crane
#

Where?

brave fable
#
{
    "Changes": [
        {
            // add specific upgrade behaviour
            "Action": "EditData",
            "Target": "Data/Tools",
            "TargetField": [ "SteelAxe", "UpgradeFrom" ],
            "Entries": {
                 "Condition": "PLAYER_HAS_ITEM (T)SteelAxe probably"
                 "Price": -1,
                 "TradeItemId": "(O)334 or 335 or 336 or something",
                 "TradeItemAmount": 5 /// or more
            }
        },
        {
            // delete conventional upgrade behaviour
            "Action": "EditData",
            "Target": "Data/Tools",
            "TargetField": [ "SteelAxe" ],
            "Entries": {
                 "ConventionalUpgradeFrom": null
            }
        }
    ]
}
#

more like that

desert crane
#

Player has item you put again steel axe

brave fable
#

i put steelaxe probably

#

i'm legally acquitted

desert crane
#

I change to copper and try the mod ahah

#

Thanks for the help by the way

brave fable
#

no problem! more fun than working

#

well that's a lie but still, it's not work 🥳

desert crane
desert crane
velvet narwhal
#

you ate a bracket somewhere

desert crane
#

{
"Changes": [
{
"Action": "EditData",
"Target": "Data/Tools",
"TargetField": [ "SteelAxe", "UpgradeFrom" ],
"Entries": {
"Condition": "PLAYER_HAS_ITEM (T)CopperAxe"
"Price": -1,
"TradeItemId": "(O)335",
"TradeItemAmount": 10
}
},
{
"Action": "EditData",
"Target": "Data/Tools",
"TargetField": [ "SteelAxe" ],
"Entries": {
"ConventionalUpgradeFrom": null
}
}
]
}

#

This is the code

velvet narwhal
#

comma after condition

#

"Condition": "PLAYER_HAS_ITEM (T)CopperAxe",

desert crane
#

Ok thanks I try

#

became this

velvet narwhal
desert crane
#

How do I add that

brave fable
#

ooh right, should be PLAYER_HAS_ITEM Current (T)CopperAxe

#

but innnnnn any case i think i need to reformat the thing

#
{
    "Changes": [
        {
            "Action": "EditData",
            "Target": "Data/Tools",
            "TargetField": [ "SteelAxe" ],
            "Entries": {
              "ConventionalUpgradeFrom": null,
              "UpgradeFrom": [
                  {
                       "Condition": "PLAYER_HAS_ITEM Current (T)CopperAxe",
                       "Price": -1,
                       "TradeItemId": "(O)335",
                       "TradeItemAmount": 10
                  }
               ]
            }
        }
    ]
}
#

this is probably what we want

desert crane
#

Also a comma after the condition I think

brave fable
#

absolutely

desert crane
#

Javi told me before ahah

#

I try It!

#

The neverending journey 😭

brave fable
#

wtf why is upgradefrom a list

velvet narwhal
#
    "ClassName": "Axe",
    "Name": "Copper Axe",
    "AttachmentSlots": -1,
    "SalePrice": 2000,
    "DisplayName": "[LocalizedText Strings\\Tools:Axe_Copper_Name]",
    "Description": "[LocalizedText Strings\\Tools:Axe_Description]",
    "Texture": "TileSheets\\tools",
    "SpriteIndex": 196,
    "MenuSpriteIndex": 222,
    "UpgradeLevel": 1,
    "ConventionalUpgradeFrom": "(T)Axe",
    "UpgradeFrom": null,
    "CanBeLostOnDeath": false,
    "SetProperties": null,
    "ModData": null,
    "CustomFields": null
  },```
brave fable
desert crane
#

Yay we did it!

#

Thank you very much!

brave fable
#

no worries! if you want to change all the other tools, you'll need to copy that same Changes: [ { ... } entry over and over with different TargetField and UpgradeFrom values

uncut viper
#

(dont copy the "Changes" part)

desert crane
#

Yeah I just copy for each one. I Was just wondering, If I want to change the price as well, I can just put like 1000 instead of -1?

desert crane
gentle rose
# brave fable wtf why is upgradefrom a list

The requirements to buy this tool from Clint's blacksmith tool upgrade shop. If you specify multiple entries, the first one which matches will be applied.

(from the wiki, emphasis mine)

uncut viper
#

widely used feature im sure

brave fable
#

that doesn't tell me why.

#

ca added at least 2 more messages to this chat with that change

#

was it rly worth it

onyx flame
#

Hello guys, how do you do a drawObjectDialogue with npc portrait? Edit: figured it out, it's just drawDialogue

gentle rose
#

idk what "the first one which matches" even means in this context tbh

brave fable
#

condition waterfall, i'm sure

gentle rose
#

but that doesn't even make sense for upgrades? bc (if I'm understanding correctly) you'll still only be able to upgrade from one item at a time

#

maybe I'll test it out later and see what the exact behaviour is

brave fable
#

i suppose you could have an entry that costs 10 bars by default, or 2 bars and a chicken if you've got 10 hearts with Flint

uncut viper
#

flint

gentle rose
#

yeah, ig that's true

#

very specific feature SBVLmaoDog

brave fable
#

or if you've received some Magic Mail, you can upgrade your Copper Trashcan into a Steel Cereal Bowl instead

#

sounds pretty fun actually

gentle rose
#

well, costing a chicken might not be within the scope of this actually. Might have to be a cp thing SBVLmaoDog

brave fable
#

on tuesdays clint won't even offer an upgrade if you like. go ham

#

capitalist clint charges you more for upgades as an overdraft fee if you're low on cash, or maybe he doubles the price of upgrades if your hearts with emily are too high. the world is your clint

#

triple the cost in winter. peak upgrade season. what are they gonna do, upgrade their tools themselves?

#

endless plausibilities

tough crater
#

I can imagine there being an event triggered after gifting Emily a bouquet. Walking into the shop and he's VISIBLY not having it then grumbling "hm... times are rough... i gotta raise the prices. you understand, right?" It's a fun scenario to think about

sharp torrent
#

Hello. This is my first time translating a mod for Stardew. I had experience with other games before. But it doesn't help much, because I'm a humanitarian :)
$29, $13 and similar values ​​are repeated many times in the text. On the wiki, I was able to read that $1 - $6 are responsible for portraits. I also figured out that words like {{word}} are listed in another file and I can understand what it's responsible for. But I don't see where I can find other phrases with "$" yet. Let's keep quiet about "$18#$b#". I hope I won't need something like this.

gentle rose
lucid iron
sharp torrent
gentle rose
lucid iron
#

then i guess they left the control characters in the i18n files think

#

u will have to just disregard these im afraid

#

here's the wiki list, though i assume u read this already

gentle rose
#

so $18#$b is "use portrait 18 then put a break in the dialogue"

sharp torrent
#

Thank Yoba.

#

Thank you

tiny zealot
brittle ledge
#

Yeah, I would just leave them in the i18n as-is

#

same as if you see any other commands beginning with $ or #

#

@whole raptor Hey, heads up about your i18n converter - it apparently doesn't read events as events if you have linebreaks in there (which events can do now.)

sharp torrent
#

If you're still here, one more question, please. Is there a way to quickly check what will be displayed in the game after a certain command? I mean ${lad^lass}$. Not sure if it will be ok with another alphabet.

tiny zealot
hard fern
#

huh wait are you supposed to leave all the #$b# in the i18n or not

velvet narwhal
#

it's not best practice to leave the dialogue commands inside of the i18n

tiny zealot
velvet narwhal
#

i'm just lazy suslysella

hard fern
#

well ill keep them in

#

no harm...

versed wyvern
#

At the same time it's not worst practice Think

lucid iron
#

i think code should be separate from logic

velvet narwhal
#

because, like above, translators will look at it and possibly accidentally translate things like #$action

lucid iron
#

but i also recognize ppl who actually write npcs dont want to chop up their dialog

uncut viper
#

is code not logic

tiny zealot
#

i expect SDV translators to understand how dialogue is put together enough to avoid chopping out the #$b#s

lucid iron
#

sorry i meant content

#

brain ded LilyDerp

uncut viper
#

mood

tiny zealot
#

i do separate out stuff that isn't part of the actual dialogue, like quickQuestion separators etc. i just consider portraits and box breaks part of the text

desert crane
#

Whats the problem in here?

uncut viper
#

you need a comma after your } on line 18

#

and similarly on every copy-paste entry after that

desert crane
#

Oh perfect thank you

#

Everything works perfect

tawny ore
#

Thanks! I'll work on a PR and consider your suggestion. The one challenge to this helper method is that the id should remain consistent between sessions since it affects the player config. But otherwise, I think it'd be perfectly reasonable for me to add a shortcut method.

onyx flame
#

how do you queue dialogues?

This seem to only render the last dialogue:

NPC harvey = Game1.getCharacterFromName("Harvey");
Dialogue dialogue = new (harvey, null, "Test");
harvey.setNewDialogue(dialogue);
Game1.drawDialogue(harvey);

Response response = new("test", "test");
Response response2 = new("no", "no");
Game1.drawObjectQuestionDialogue("test", new Response[] { response, response2 });
lucid iron
#

you want a choice question box type thing from C# right

onyx flame
#

yeah

#

I want Harvey to say something then give you a choice box

lucid iron
#

tbh this might be the kinda thing easier if you just wrote a event script

onyx flame
#

I can get the choice box working with just the 2nd part and the harvey's dialogue working with just the first part, but if I have both, only the choice box is rendered and harvey's dialogue is skipped

#

I have not messed with event script yet, gotta look that up

brave fable
#

well that's exactly what you told it to do. you said drawdialogue, and then you said drawobjectquestiondialogue instead

onyx flame
#

yeah that's why i was wondering how do you queue the msgs

lucid iron
#

besides that maybe u want createQuestionDialogue instead?

#

it takes a string question then the responses

onyx flame
#

mm let me see how createQuestionDialogue works

lucid iron
#

dialog also has the $q thing

onyx flame
#
public void createQuestionDialogue(string question, Response[] answerChoices, string dialogKey)
    {
        lastQuestionKey = dialogKey;
        Game1.drawObjectQuestionDialogue(question, answerChoices);
    }``` seems to just call `Game1.drawObjectQuestionDialogue` internally
lucid iron
#

e.g. alex's daily dialog question

"summer_Wed": "Hey farm guy, I've got a question for you.^Hey Farm girl, I've got a question for you.#$b#$q 52/53 summer_Wed_01_old#Do you think I'll ever turn pro?#$r 52 30 summer_Wed_01_01#You're destined to be a sports legend#$r 52 0 summer_Wed_01_02#Maybe, if you practice a lot#$r 53 -50 summer_Wed_01_03#No, you'll most likely fail and become a salesman",
onyx flame
#

reenaphread this is more complicated than I thought

lucid iron
#

i assume u can use the C# Dialogue class for these

onyx flame
#

Let me look up event script thing

lucid iron
#

overall it is area where, there is a lot of tools for doing things from content

calm nebula
#

Your worst case is to queue the question via the closed delegate of the first menu

lucid iron
#

so u might as well take advantage

calm nebula
#

Don't ask me for details, I'm grocery shopping after work

lucid iron
#

even if u r in C# for whatever reason

onyx flame
#

thx

onyx flame
# lucid iron even if u r in C# for whatever reason

I dunno i just started with the example mod on the wiki, tbh I still dunno how to use content patcher or any other frameworks yet. I've only have 50 hours of stardew play time and 40 of them is me messing with making mods in C#

lucid iron
#

im sure other ppl told u already but content patcher is just a C# mod that does content editing for u

onyx flame
#

yeah

lucid iron
#

sometimes it's just convienant though, to not have to do all that manually

#

hence why some mods ship both a C# part and a content patcher part

plain marsh
#

Is there a way to edit a vanilla map to warp to a custom map? I'm creating a custom farm map and every time I try to edit the bus stop map warp it still teleports me to the wrong place

calm nebula
#

Sure! But farm maps are special

#

It's a map property

plain marsh
#

I see, in this case, what should I edit?

gentle rose
tiny zealot
gaunt orbit
#

identifying what you want to see in the game is the best way to get into mod making

gentle rose
#

also, editing the bus stop will a) conflict with like a million other mods that edit it unless you're careful, and b) if you add/change warps, can cause npcs on the farm

onyx flame
gaunt orbit
#

if you make a mod that you do not intend to use yourself, it will feel like a chore to create and update, and it will not be as high quality as it could be

#

the secret ingredient really is love

plain marsh
#

I see, thanks for the help you all

gaunt orbit
#

(unless it's a throwaway meme mod)

gentle rose
# onyx flame Im just using my harvest moon experience and winging it xd

without playing vanilla, you won't know what the game already has implemented or what actually gets unlocked later! which is especially an issue for if you're making more complex mods, which it sounds like you are. If you're just adding cosmetic items, then I'd recommend not using c# and using frameworks instead

onyx flame
#

it's working, im just polishing it and adding flavour text

tiny zealot
onyx flame
hard fern
#

the love of committing to the bit

brave fable
#

warning u both ur on thin ice for copyright violation with these posts

onyx flame
#

the mechanics of the mod already works WorryOk

gentle rose
#

we weren't questioning your ability to make the mod so much as we were recommending experiencing more of stardew so you know what fits in before you make a lot of mods tbh - I believe you that it works!

onyx flame
#

that's fair. I just rarely play any game vanilla

hybrid talon
#

Is there a boolean check for "is the game currently in a cutscene"?

#

(Specifically one that won't catch festivals but will catch heart cutscenes, jas and vincent at the sewers, etc. Ones where you don't have control over your character)

brave fable
#

!Context.CanPlayerMove probably

calm nebula
#

You just check if game1.currentevent is not null and if game1.currentevent.isfestival is not true

tiny zealot
#

Game1.eventUp && !Game1.currentEvent.isFestival or something like that ^

gentle rose
uncut viper
#

there's also an IS_EVENT gsq you can look at

tiny zealot
#

in summary, there are a few things you can check lol

onyx flame
#

that's fair point tho

#

I've not made it past summer in my actual game yet

hybrid talon
#

Is there an easy way to trigger a cutscene for testing? Feel like there should be a debug command or something for that

calm nebula
#

debug ebi

hybrid talon
hybrid talon
whole raptor
brittle ledge
hybrid talon
#

I keep crossing things off my mod's todo list and somehow it keeps not getting any shorter SDVpufferdead

tiny zealot
#

the saying goes there are two parts of any project: the first 90%, and the second 90%

hybrid talon
#

Honestly at this point there's only one item on the list that really needs to get done for my mod to be usable, but it's the one item I've been avoiding doing because it's going to take a lot of work

#

(Everything else is just extra convenience functionality and a very minor bug I need to fix that's unlikely to come up regularly during normal gameplay)

tardy adder
#

I has a question...
Between Map Music
Data/Location Music (not MusicDefault or MusicContext)
and
Data/LocationContexts DefaultMusic and Music

Is it for priority:
Map Music>Data/Location Music>Data/LocationContexts Default Music>Data/LocationContexts Music
?

I am not sure if I am making sense 9-9

hybrid talon
#

Okay I saw somebody mention that you can scale smallfont, how might you do that?

whole raptor
brave fable
#

fonts (like all other sprites) generally scale quite badly though if you aren't going by increments of 100%

#

fairly sure drawstring uses 1.0f as the default scale, since it's applied to the default game scale of 4i

hybrid talon
#

I can find it though

brave fable
#

if you're modding on Windows i'd suggest getting VS Community

#

if nothing else, at least you can build the mod without going through the terminal lol

#

alternatively you can get ILSpy and decompile StardewValley.dll and check out the methods yourself

#

you can even view in C# and select Save Code to export it as a browsable C# project with (roughly) the original file structure, meaning you can click around in VS/VSCode

agile terrace
#

Anyone recommend a trouble shooting for when an i18n file just doesn't do anything even though it is a valid Json and the text you're telling it to change is correctly formatted and is genuinely copy pasted from the thing that does work?

tawny ore
uncut viper
#

id recommend sending the json and log

normal trout
#

I haven't modded in a long time (like four years...) So I have a very specific random map question about the greenhouse. I know things have changed a lot since I first made my many greenhouse variations. How is the warp from greenhouse to farm handled these days? Is it still a map property? Is it still directly to a coordinate on the farm? Or is there some convenient sorcery that's been added to make modding easier? TIA!

uncut viper
#

and being more specific about how it is not working (is something not even trying to use i18n or is it saying it cant find the translation?)

#

and checking that you're not trying to use an en.json

lucid iron
#

so the greenhouse is a building now

#

you make a normal Warp property on the inside map

#

and on the outside the building door logic magic it for u

normal trout
# lucid iron you make a normal Warp property on the inside map

So like. If I'm editing the greenhouse map and setting up the warp to the farm, is this correct? This is what I had originally from wayyyyy back. Not even sure if that's the correct location on the farm at this point tbh. But I just want to make sure that's how it's done still.

lucid iron
#

the destination coord does nothing

hybrid talon
lucid iron
#

as long as 10 24, the first 2 numbers, match where the exit is

#

u good

normal trout
#

Okay cool. Should I do anything to the destination coord? Or just leave it there to do nothing lol. What's best practice?

lucid iron
#

well u need to have it i think

#

otherwise it'll have wrong number of arguments

agile terrace
# uncut viper and being more specific about how it is not working (is something not even tryin...

I am trying to get the reminisce function in the mobile phone to correctly display the name I want the events to have. Each event has an internal name, and then the i18n is supposed to change that internal name into a displayed name (This is for Tsundere Alex, so the one I'm using is his intro event, with an internal name of TsunAlex-1-Heart with a desired displayed name of "Introduction (one Heart)") but there are no errors, and the displaied name is still the internal name.

Gimmie a sec and I can get the two jsons and the log, I'm just angry that the i18n is doing absolutely nothing instead of at least popping up an error or something so I have a thing to go off of

lucid iron
#

there's no particular best practice since it dun matter

#

(for building interior maps)

normal trout
#

Yeah. Wasn't sure if I should set it to something specific to futureproof it, or if it's fine as whatever. Thanks for the help! I'll probably have more questions as I get back into the swing of things lol.

uncut viper
#

so you'll have to remove any of the actual content

#

which might make it kinda hard to troubleshoot

agile terrace
#

What do you mean they can't be discussed here?

brave fable
#

i thought the rule was against yandere. are they the same thing or

uncut viper
#

oh you know holly is probably right

#

mixing up my deres

brave fable
#

i don't know what they mean lol, i just assume they're different

uncut viper
#

they are, and maybe tsundere ones are okay? idk im not a junimo. depends on the specifics of the content i suppose. im not wholly familiar with them myself

agile terrace
#

OOOOHHH Yea this has nothing to do with the actual Tsundere or yandere stuff, it's just getting Events to show properly

royal stump
# tardy adder I has a question... Between `Map Music` `Data/Location Music` (not MusicDefault ...

From highest to lowest priority (i.e. the top-most is used first):
Data/Locations Music
Data/Locations MusicDefault
map property Music (which isn't meant to be used anymore, but still works)
Data/LocationContexts DefaultMusic
Data/LocationContexts Music (only before noon, if it's not raining, and if there's no default for the context, according to the 1.6 migration page)

It's honestly pretty complicated, but basically: use Data/Locations for area-specific background music, and context for the lower-priority ambient music that might not always play. And yes, the default fields don't match names or priority. SDVpufferdizzy

uncut viper
#

sorry for the confusion

tiny zealot
#

although, really, if any mod gets too spicy you are in trouble

agile terrace
# uncut viper sorry for the confusion

No it's ok, I was really confused for a moment because this has little to nothing to do with the actual Dere part of the mod, it's just getting events to show in the phone so I had no fluffin clue why it might have to do with anything

#

If we're worried I'll get the RomRas one up because that is not a particularly spicy mod and as of right now I'm pretty sure I'll still have the same issue.

tardy adder
uncut viper
#

i mean if it was the other kind of dere, it wouldnt matter how much it has to do with it, they cant be discussed. the content/words wouldve had to be removed from the logs before sharing them, iirc

#

but its moot anyway

#

but also, i noticed you said you're trying to change the internal name of something?

#

for what reason?

calm nebula
#

Carolina Reaper

agile terrace
#

No, I'm trying to get the displayed name to work, because it's showing the internal name not the display name I'm trying to get the i18n to display

tardy adder
#

Thanky Esca, I go commit music crimes

calm nebula
#

(I had to, sorry.)

#

I'll go knit my sock now

agile terrace
#

As it is right now I might well just say forget it and use the display name as the internal name so that I don't have to futz with the i18n if it's not even going to throw me a bone with a flippin error message

uncut viper
#

well i wouldnt say that before sending a json

agile terrace
#

like... there's so little to it... but there's nothing more to put to it

uncut viper
#

your content.json

#

or wherever is using it

agile terrace
#

There is no content Json for Mobile phone stuff...

#

Like...

#

This is for the actual mod I'm modding... No content.json, they don't ask for one when you're adding stuff... and the events show up, I just wanted to use the i18n like they do to alter the display name... which isn't working so shrug

uncut viper
#

what do they ask for? im not familiar with mobile phone, but that i18n folder is just going to be for the actual MobilePhone.dll mod itself, and if nothing in there is going to ask for your keys, its not going to get them

agile terrace
#

You put the events in a folder assets/events, name the jsons in there with the character's display name... and there's a structure for adding the events... Then if you wanna do an i18n you throw it in the i18n folder under default.json and go to flippin town.

#

There's not a lot of documentation that I can find on the whole thing so I'm going off another functional mod and the original stuff they have in the phone mod...

#

But like I said before. I can fix this by cheating and making the internal and display name the same thing... so I guess I'm just gonna do that.

#

I just figured I'd use this to figure out the whole... i18n thing and it's still as greek to me as it was at the begining so Meh. I'll cheat

brave fable
#

well i18n itself is a very straightforward system, but the implementation is completely up to whatever framework you're using, which is however the author decided to write it that day

#

aedenthorn mods weren't all that well supported even before they left the scene, as well

uncut viper
#

yeah i was looking at the mobile phone mod and i dont really get the system so. do whatever works i suppose

agile terrace
hybrid talon
#

Any idea why this is a star? It should be "="
Is "=" just converted to a star in smallfont?

tiny zealot
#

yeah

hybrid talon
#

Oh well that's not helpful

agile terrace
hybrid talon
#

What other things get converted?

brave fable
#

plenty of stupid things work just fine until they don't

uncut viper
#

random special characters mostly

hybrid talon
#

Is there a list somewhere?

#

Oh that might actually be +, not =

#

Wonder if = is fine

hard fern
#

I think it's the = sighn

#

?

hybrid talon
#

Hm if it is than I made a mistake somewhere else, let me check that lol

#

I did oops

agile terrace
hybrid talon
#

Plus is fine, which is good enough

gentle rose
#

= is a star in vanilla, something else in SVE

#

[[Secrets#Special_Characters]]

gentle rose
#

I was hoping it would link to the exact section lol. But the special characters section lists all the conversions

gentle rose
#

(so be careful because +s DO have special side effects)

hybrid talon
#

Thanks! The rest of those should all be good, I'm using a bunch of special characters for key labels but not any of those. And I'm guessing plus doesn't actually make a sound if you're using it as printed text elsewhere, only when input by the player?

gentle rose
#

there's no telling tbh, someone would have to check exactly how that part of the code works

hybrid talon
#

I don't hear a sound at least when I load it up SDVkrobusgiggle

gentle rose
#

since the = did get replaced, I would try to double check haha. But also the page I linked is a general wiki page not a modding page, so who knows if the two things are actually related

hybrid talon
#

I'm not a reliable source necessarily (hearing loss) but tbh even if it did make a sound, it'd be fine I think

gentle rose
#

things that get replaced typically do because they're used somewhere in the game, by the way, and I know that SVE adds/changes some of them

rocky anchor
#

Hello again! I am still stuck with my hat mod, and I can reproduce the same issue with another user's hat mod - the 'show real hair' value from data/hats isn't working from their mod either. Could this be a Content Patcher issue, or is it an issue with my game?

#

The correct value is passed through to data/hats, it's just that the game won't listen!

#

It's not a problem when copying the string from a vanilla hat, so I think it's something to do with the custom sprite value

uncut viper
hybrid talon
rocky anchor
#

I might try editing hats.png with EditImage and see if that fixes the problem

#

Out of curiosity, not as a solution

gentle rose
rocky anchor
#

So, for my hat's data string:
"RainHood": "Rain Hood/Optional extra for your rain coat./hide/true//Rain Hood/0/{{ModId}}\Hats"
the bolded dynamic token doesn't fulfil the bolded 'show real hair' value

#

But I fixed it by adding my hat sprite to characters/farmer/hats and calling its sprite number:
"RainHood": "Rain Hood/Optional extra for your rain coat./hide/true//Rain Hood/131"

tiny zealot
#

taking a break from my current struggle bus (writing an event) for a forbidden treat: playing a day of stardew

lucid iron
#

blasphemy

calm nebula
#

(As much as I joke about orange names never playing I do think when you stop playing is when you slowly start losing touch.)

tough crater
#

I agree. Sometimes you can get so carried away with modding that you forget that the player is gonna also pay attention to other aspects of the game too

ivory plume
pine ermine
#

Now I'll always know at any given moment what the best place to fish is. SDVpuffersmug

rocky anchor
faint ingot
#

I guess "proceedPosition farmer" doesn't work like it does with NPCs? It only waited like 10% of the route in the event I just tested before moving on.

hybrid talon
#

Went to bed and then had to get up again because I figured out a way to make my config file nice and neat and couldn't sleep until I'd implemented it SDVkrobusgiggle
Now I've got a bunch of custom config classes to categorize my configs SDVpuffermusic

faint ingot
#

Good job! Now go to bed!

brittle ledge
#

@indigo yoke can I offer a suggestion on your EXP Control mod to put "Experience" in your title somewhere? It's impossible to find searching "EXP" because of all the "expanded" mods.

indigo yoke
#

done

#

darn, still waiting for LoC to update to use spacecore's learning recipe system instead of it's own T_T I don't want to make like an unpatch or patch someone else's mods to just be able to make a compatibility thing.

faint ingot
#

what's a good soundbank ID for a punch / whack?

brave fable
#

clubhit and clubsmash for sure

#

fishslap if you're feeling feisty

indigo yoke
#

Fishslap best whack sound

brave fable
indigo yoke
brave fable
#

oh that, i thought you meant spacecore recipes

#

uhhh well you probably wont suffocate if you hold your breath on that one but like get a scuba tank or something

indigo yoke
#

I guess invasive patch for compatibility till it happens then?

proud wyvern
#

you know how the saying goes

#

"PRs are welcome"

indigo yoke
brave fable
#

master is the most up to date branch atm

indigo yoke
# brave fable `master` is the most up to date branch atm

uptodate with the release version yes, but wasn't there a BC + LoC update that was being worked on? I remember you and khloe talking about it ... I think around December 15th.

if it was a simple translation PR or something like that I wouldn't mine doing a PR, but I don't want to do a PR that changes a chunk of things while someone is working on an update.

brave fable
#

idk i don't remember a thing

#

ill maybe look at the repo when i can

indigo yoke
#

okay, it was earlier back than I thought, but still post the last github update

real whale
#

Is there a working mod that shows what everyone's gift preferences are

brittle pasture
#

Lookup Anything

gray bear
#

selph beat me to it

brittle pasture
#

this channel is for making mods, while modded-farmers is for general modded gameplay (and has more people there playing the game)

faint ingot
#

I've been banging my head against the wall with this event and no matter how much I tinker the fade doesn't seem to work right

#

It starts to fade out, then flashes back unfaded, then fades out again. Is it because I'm doing a changeLocation? How can I fix this? showFrame farmer 5 emote {{Russell}} 16 globalFade viewport 1000 1000 warp {{Russell}} -1000 -1000 warp {{Shannon}} -1000 -1000 changeLocation {{ModId}}_Jail viewport 1000 1000 warp farmer 14 10

rancid temple
#

globalFade always just end when it's done

#

If you want it to "remain black" you have to set the viewport out of bounds

#

Usually something like -10000 -10000 does wonders

#

Then when you're ready to fade back in you do a globalFadeToClear and set the viewport where you want it

faint ingot
#

OK well I'm doing the viewport 1000 1000 which should functionally be the same as -10000 -10000, right? I'll try the globalFadeToClear

#

the thing I don't understand is it's doing the snap back to unfaded before I change the location

frail moss
#

and how ? pls

faint ingot
rancid temple
#

Pretty sure it's the negative numbers that do it

mighty ginkgo
shut edge
#

anyone know any mods that do weird screen visuals or anything?

#

like tinting colors when you eat a food or stuff like that

frail moss
gentle rose
#

I think you really need to find a new tutorial

hard fern
#

With how fast things in modding changes, a tutorial from 2021 is very out of date and will trip you up in places

normal trout
#

Can someone point me to either an example mod to look at or a wiki or something to help me figure out how to change the pieces of furniture that spawn in the farmhouse when a new game is created and their locations? I'm floundering a bit and don't really know where to look.

mighty ginkgo
normal trout
#

Interesting... that could work, potentially. Do you know where I'd find the furniture IDs I need for that?

#

I assume there's a list somewhere

mighty ginkgo
#

probably from Data/Furniture, by unpacking the game files

#

!unpack if you don't know

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!

normal trout
#

I couldn't find it in the game files, but I did find this and I think it's going to be incredibly helpful to myself and others so I wanted to drop the link. If that's not cool, Junimos feel free to moderate with full force lol! https://mateusaquino.github.io/stardewids/

Complete item cheatsheet guide to help you find all IDs of items in Stardew Valley, updated for 1.6. Quicky locate between objects, seeds, plants, furnitures, shirts, books and more!

uncut viper
#

that link is often posted and it's fine and not against any rules, though it's worth mentioning that the IDs from that site are just from the unpacked game files

normal trout
#

I know they had to come from somewhere, but I couldn't for the life of me (and with the level of patience I have today lmao) dig deeper to find them when I couldn't find them in Data or Maps or anywhere intuitive.

uncut viper
#

they are just in Data/Furniture like Kristian said

deep cypress
#

That thing helps me a lit too

#

It’s so much easier for me to see and browse…

#

Plus i can quickly hop through the tabs, instead of mining through the files! It’s an executive dysfunction thing.

normal trout
#

This all might be futile anyway - I just did a test, and despite me specifying the position of a piece of furniture in that map property, the game still loaded the default set of farmhouse furniture when I started a new game 😭 The issue I have is that the TV in particular spawns right where I'm trying to place down a little starter kitchen, so I wanted to be able to tell the game to spawn it somewhere else and add some other cute little furniture tweaks to the beginning house. But this might not be the way to accomplish that. Or I'm just doing it wrong, which is also always a possibility. Further testing required, but also further advice apprecaited.

uncut viper
#

oh, the TV and bed might be hardcoded

#

specifically

normal trout
#

Yeah I worried about that too.

uncut viper
#

im not 100% on that but i feel like i remember that being the case

normal trout
#

I know back in the day when I was actually actively modding and first created this mod, it was a whole thing and I basically had to just have people manually move it around after spawn. But I was really hoping there was a way to do it after all these years 😂

uncut viper
#

actually its just the bed thats hardcoded

normal trout
#

Huh. So this should theoretically be possible.

#

I swear that I saw something about being able to list out furniture and locations in a map (though I know the farmhouse is it's own whole thing, so it may not apply anyway) using JSON when I was going through the mountains of information that is the Stardew Modding wiki and github trying to make up for being gone for years. But I can't find it again now. I didn't even remember this map property existed until Kristian reminded me of it above.

#

Blergh. I certainly decided not to ease back into this with easy problems 😂

#

Well. Okay. Time to experiment more. Can anyone explain the rotations part of this to me? The wiki didn't say anything at all 😦

uncut viper
#

thats how many times the furniture will be rotated when its placed

#

i do not know which way it rotates

normal trout
#

Yeah, I figured. The questions I had were: What's the default value for just forward facing? If I go up by 1, is it clockwise or counterclockwise? Do I use -1 to go the other way?

#

I'd guess if I want it forwards, I'd use 0?

uncut viper
#

i assume 0 is facing forwards

#

you do not use negative numbers

#

it will simply rotate it as many times as the number you wrote

normal trout
#

I think I remember some map properties did back when I was modding more, so I wasn't sure.

uncut viper
#

if you write 1 it will rotate it 1 time

#

if you write 72 it will rotate it 72 times

latent mauve
#

From what I recall of the furniture tilesheet layout, objects will rotate to face right on a single rotation

shut edge
#

anyone know the path of least resistance to making a clothing item that provides a buff?

#

when worn

sweet geyser
#

hi !! ive gone through the stardew mod commissions site but i was just wondering if anyone knows some modders who can help out with making a marrigiable npc (using content patcher probably)

vernal crest
sweet geyser
#

well

vernal crest
sweet geyser
#

most of it

vernal crest
sweet geyser
#

and id be willing to pay for just help with figuring it out honestly

sweet geyser
#

i understand if its against the rules !! thanks

vernal crest
#

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

vernal crest
#

That's Avi's template at the third link there if you want to see what she has done.

sweet geyser
sweet geyser
#

omg this is so helpful T_T

#

tysm

vernal crest
#

Thylak might also be a good option except he hasn't been around for a while so I don't know if he's currently accepting comms. He doesn't say he does full NPCs but I am pretty sure he can (whether he'd accept a commission for them, I'm not sure).

Arknir is a very accomplished NPC creator too (creator of Lucikiel and Lavril on Nexus) and makes very advanced events. Again, not sure if he'd take a comm for a full NPC but he is active.

sweet geyser
#

thank you !!

vernal crest
#

And finally Pau hasn't advertised herself as being able to do the CP code side of an NPC but I think she's underselling her capabilities so she might be worth contacting too.

shut edge
#

Buffs from worn items - These are in asset in spacechase0.SpaceCore/WearableData,

vernal crest
#

I would put myself on there as I am also primarily an NPC creator but I am insufficiently reliable to do comms haha

shut edge
#

hmm, guess this exists but an example file sure would help

vernal crest
shut edge
#

did a patch export and it's blank by default

#

thank you

vernal crest
shut edge
#

rad

#

that is perhaps all i need, neat

#

probably should do that stuff AFTER i finish up this bigass animal mod i've been working on tho lol

sweet geyser
#

do you have advice on where i should start? you totally dont have to answer btw

#

like with dialouge, art, code,,, etc

#

where do i begin

hard fern
#

😅 i have a question, are there flags to check which of the seasonal foraging bundles have been completed, and can i use them as conditions for unlocks?

round dock
#

Vouching for Avi as well happyfrog

vernal crest
# sweet geyser do you have advice on where i should start? you totally dont have to answer btw

If you're considering giving it a go yourself, start with learning how to make a little mod in Content Patcher that just changes a vanilla NPC's dialogue or changes their portrait. That gets you familiar with how to read and write CP .json files (I can point you in the right direction for some resources for that). Then read Tia's tutorial for making an NPC (first link in the "Creating a Custom NPC" box from before) and maybe cross-reference that with Avi's template and/or fireredlily's NPC builder tool.

shut edge
#

as a person dabbling in NPCs, i'd just start with figuring out what you want to do

#

events you want, character aspects etc

sweet geyser
vernal crest
#

I have found the coding part of NPC creation to be pretty easy and the creative stuff to be hard, personally haha

#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

sweet geyser
#

so just to confirm

shut edge
#

i somehow made a whole house and stuff and then stalled the hell out on dialog

sweet geyser
#

npcs are made with content patcher right

#

and c# isnt for npcs

#

i have no idea what the difference is between the two actually

vernal crest
# sweet geyser can i have the resources for that?

There's no step by step tutorial for specifically making the sort of mod I suggested, I don't think, but if you read through the wiki information about Content Patcher and try to find a little mod that changes some dialogue or a portrait and then attempt to modify that it should help you.

shut edge
#

CP is mostly easy to learn, C# is actually coding

normal trout
#

good lord I can't remember, can we comment out sections of our JSON? 😅 It really has been forever, and I don't remember the syntax very well at all. I feel old.

uncut viper
#

Content Patcher is just a C# mod. anything Content Patcher can do, you can do in C#. but its easier to use Content Patcher for things that it can handle because of all its nice features

vernal crest
# sweet geyser and c# isnt for npcs

Not quite. The game is written in C# so if you can write C# you can achieve...many things. Including creating an NPC! But Content Patcher is a mod that lets you basically write content for the game that it then feeds to the game in the format the game needs. (Disclaimer for knowledgeable people: I am trying to say this in a very simplified way, I am sorry if it's slightly inaccurate!)

uncut viper
sweet geyser
#

ohh

#

thats rlly interesting ty ty

sweet geyser
#

thank you all so much fr

#

will get to learning now !!

vernal crest
# sweet geyser will get to learning now !!

It's important to know as well that although the members of this channel will generally try to encourage you to look at the available resources and other mods to learn what you can, we're also happy to help explain things that people don't understand or suggest tips for doing things in a better way and so on. Questions are always welcome! We also have the #1277457201077813280 thread if you ever feel like you want to ask NPC stuff but feel like this main channel is moving too quickly.

sweet geyser
#

oh im glad i was worried id annoy ppl with all my questions T_T

#

ill check out that thread too thank you

uncut viper
#

as long as you're making an effort and not just looking to make people do free work for you, people will not be annoyed

sweet geyser
#

got it

normal trout
#

Ahhhh! I finally got it working and I need to celebrate/explain/rant lol. It was a whole freaking journey, and we were going in the right direction but it was more complicated, becuase of course it was 🥲

Because the FarmHouseFurniture map property isn't applied to the farmhouse map directly for some reason, I couldn't get anything to spawn. It's apparently applied to the farm map itself? Idk man, CA does weird things sometimes. But like. On the actual tmx farm maps, there is no such property??? And I couldn't find it anywhere that would make sense in the Data files. So I had to try a lot of things and nothing worked. But I finally found the blurb I remembered about using Content Patcher and the EditMap action to edit a map property in your content.json! So I managed to edit the property that way, and it replaced the default furniture spawns, giving me the desired result of a cozy house with a small kitchen upon spawn 💜 As an unforseen bonus of doing it this way, I can very easily change the furniture items that spawn in for each farm if I want, or just give people a config option for a different set.

rancid temple
#

Most of the vanilla maps don't have the property, they rely on the hardcoded defaults

#

But Farm_Ranching has it

normal trout
#

The inconsistency kills me 🥲

#

But I also get it

rancid temple
#

It's kind of a "don't fix what's not broken" policy lol

normal trout
#

Yup fixing one thing can break four others.

#

Video games are complicated.

rancid temple
#

Farms and the farm house are probably the most complicated map based stuff you can mess with

#

A lot of specific issues and rules around their functionality

normal trout
#

I know, I remember them being a huge headache back when I was actively modding maps a few years ago. My memory is slowly coming back to me about the pain points 😂 And I have to laugh at myself, because jumping into the deep end with harder things is very typical of me.

#

"Oh, I kind of want to start dabbling in mods again. Let's do x thing."

hallow prism
#

hi Froststar 🙂

acoustic lintel
#

Hey guys! Just a quick dialogue question.. I’m making a 2 npc mod and they’re brothers, so I wanna make sure I’ve got the dialogue down for bouquet rejection if the farmer is already going out with or married to the other brother. The wiki says

“RejectMermaidPendant_NpcWithSomeoneElse: the NPC is already engaged or married to someone else. You can use {0} in the dialogue for the other player's name.”

My questions are 1. do I just replace “SomeoneElse” with the name of the other brother?
And 2. What does it mean by use {0} in the dialogue?

Sorry if these are dumb questions. It’s my first mod and I’m learning along the way.

acoustic lintel
#

Also on a similar note. The wiki example for “FriendsAndFamily” is “inlaw_<NPC>”. I tried adding this as “FriendsAndFamily”: “brother_Name” to data/dispos but smapi says it can’t apply data patch for that entry. I also tried “little_brother_Name” as little_brother is an entry in character strings but that didn’t work either. 🤷🏻‍♀️

normal trout
royal stump
# acoustic lintel Hey guys! Just a quick dialogue question.. I’m making a 2 npc mod and they’re br...

That rejection key doesn't support specific names, so it'd happen to any proposal if they're already married to anyone, without context. If you use the text "{0}" in your dialogue for that key, it'll get swapped out with the NPC's spouse's name. For example, if you added this dialogue:
"RejectMermaidPendant_NpcWithSomeoneElse": "I refuse. I'm already married to {0}."
The game would display something like this when a player proposes while your NPC is already married:
I refuse. I'm already married to Player1.

drowsy pewter
acoustic lintel
#

Ohhh right. I misunderstood the meaning then. Thank you so much for clearing that up!

whole raptor
#

I just saw your message (sorry that it's a week later) and actually fixed it this time 😅 I must have skipped config page when I was adding escaped characters handling, it should work now if you're ever gonna need it. Feel free to ping me if you find any other bugs

vernal crest
#

@shut edge This is Goat's json to use spacecore's wearabledata buffs with rings. It's slightly incorrect here in that he had BuffToApply instead of BuffIdToApply and was using unqualified item ids when they should've been qualified, but is otherwise correct I'm pretty sure (because it worked after he fixed those two things). https://smapi.io/json/content-patcher/a0b4070651d44544b793d0c99daf8f90

shut edge
#

appreciated

#

qualified here would be adding (O) right?

#

"(O){{ModId}}_PrismarineRing": {
"BuffIdToApply ": "{{ModId}}_FishermansBounty"

#

like that?

gray bear
#

Thats an o right?

shut edge
#

yeah

sweet cloak
#

I thought I'd check the pins for a guide first but I guess not. What's a good place to start with making my own mod? I have some coding experience, but not with c#. My experience is primarily with JavaScript but I imagine that is not helpful herem

tender bloom
#

There’s a hello world type example on the wiki

#

!startmodding let’s see if this is the command I want

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.

tender bloom
#

Second bullet here

brittle pasture
#

javascript can actually be helpful if only for the json experience for content mods

#

and depends on what you want to make you can go pretty far with content mods

sweet cloak
#

I just want to change what some of the professions do

brittle pasture
#

that's C# territory then SDVpufferthumbsup

#

!decompile this will be helpful

ocean sailBOT
sweet cloak
#

Thank you so much! I'll get to work with learning the basics of c#

calm nebula
#

@ivory plume if you want help with the mod-compat-github, I'm willing to review PRs there!

#

avoids modideas though

next quarry
#

I'm having trouble to find the documentation on how to make a mod work with ModRegistry
is there a guide that I'm missing? SDVkrobussad

next quarry
#

ohhh, yeah I wasn't aware I was looking for APIs technically
it was right there all along SDVpuffershy

#

Thank you!!!

sweet geyser
#

is it possible to make my custom npc crawl...?

fossil osprey
#

You could always make a crawling sprite, but you would need a framework to allow yourself to have sprites wider than 16*32

sweet geyser
#

so its possible right?

#

im not gonna work on it immediately but i just wanted to know !

fossil osprey
#

Walking animations are just a serie of pixel art, so of course you can simply draw them crawling

sweet geyser
#

yay thank you

fossil osprey
#

However, usually sprites are 16 pixel wide, it's a bit too narrow to comfortably draw a person laying on the side
There are framework that allow you to bypass these limit tho

frail moss
vernal crest
whole raptor
acoustic lintel
#

Can anyone tell me where/how to specify a custom npc’s winter star gift? I tried adding “WinterStarGifts” from the wiki to my dispos file but it didn’t like it, maybe it’s meant to go somewhere else? Can’t seem to find any more info on it

wanton pebble
#

Use the SECOND code block in this as an example on how to patch it in without adding it in Data/Characters itself

#

The syntax within is the same for if you natively patch it in

drowsy pewter
#

And again I would check your unpacked data/characters file and imitate what's done for vanilla characters

acoustic lintel
drowsy pewter
#

Yup

#

majorly outdated

#

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

drowsy pewter
#

Try the tutorial in the first link!

#

It covers everything from start to finish

acoustic lintel
#

Oh thank you so much!

wanton pebble
#

Good catch 6480, I wouldn't have cottoned onto that

gentle rose
acoustic lintel
gentle rose
# acoustic lintel

thank you, could you send a link to that please? we can have a look at updating it

acoustic lintel
#

I think this must be where I found it but it’s the same as the link posted just now above

gentle rose
#

which one?

acoustic lintel
gentle rose
#

thanks!

gentle rose
sharp torrent
#

Hello. I have a question. I saw this information on the wiki before, but lost it. If i18n has a default folder, and there should be folders for other languages, what should the file in that folder be named? Just default or also as a language abbreviation?

#

There is a folder there because there is more than one file in it.

acoustic lintel
gentle rose
#

it also mentions how to separate them into folders like you wanted

sharp torrent
#

exactly, I didn't notice that there was one

sharp torrent
brittle ledge
#

That's probably the biggest change in NPCs since 1.5 so definitely don't refer to old tutorials (before March 2024) for that.

ivory plume
# calm nebula <@226803198218731520> if you want help with the mod-compat-github, I'm willing t...

Sure! Since that repo tracks data/changes and is deployed live to the server, there's a few extra considerations when handling PRs though.

We need to...

  1. Enforce the repo guidelines and unofficial update guidelines. For example, one of the current open PRs should be gently rejected.
  2. Rename PRs to keep a consistent commit message pattern in the Git history and be clear about what it changes, which makes it much easier to review changes later.
  3. Perform a squash merge (not regular merge), and edit the auto-generated commit message to remove the commit list and/or clarify the specific changes if needed.
  4. Push the release branch to the top of develop to deploy the changes live.

If that all sounds fine, I can add you to the repo. (I can also document this stuff in the readme for future reference.)

ivory plume
#

@next plaza FYI it seems Content Patcher Animations broke in the latest Content Patcher 2.5.1 update, since it used reflection to access the unused EditImagePatch.LastChangedTick field which no longer exists (see sample log).

gaunt heath
#

In order for a tutorial to exist, first you need a modder with:
-a comfortable understanding of the content
-a desire to write a tutorial
-time to write a tutorial

The center of that venn diagram is small indeed SDVpuffersquee

#

And that's to say nothing of keeping the tutorial up to date!

lucid iron
#

The content patcher docs r decent tutorial though

#

You need to understand the concept of "edit content to put my stuff in the game" but after that any unpack asset is example to follow

tribal ore
#

Quick question about event IDs for my mod: I've been using placeholders but am almost ready to publish it. How do we make permanent event IDs so that there is no conflict with other mods?

gaunt orbit
#

At least that was the case in 1.5

tribal ore
gaunt orbit
#

Yeah

tribal ore
tender bloom
#

now that they're not numeric anymore you can use mod IDs

tiny zealot
#

don't use integers

gaunt orbit
#

Ah yeah that's probably better

tender bloom
#

you can run out of numbers

tender bloom
#

yes

#

1000 vs 10000 kind of stuff can be tricky with numbers

tiny zealot
#

do not, do not, do not use integer ids for anything unless it's absolutely unavoidable (secret notes is the only thing that comes to mind)

tribal ore
# tender bloom yes

All of the mods I was using as an examples used integer IDs, so I'm glad I asked

tiny zealot
#

in 1.5.6 it was mandatory. in 1.6 we are finally free

tiny zealot
#

old mods that existed before 1.6 typically leave theirs alone and are grandfathered in, but there's no reason to do so now

tribal ore
gaunt orbit
#

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

tribal ore
#

Vanilla still uses integer IDs I thought?

tiny zealot
median dune
#

Im gonna seem dumb BUT- Im totally new to modding I wanna make a mod to change basically the entire post-marriage system, now I know how to extend the game logic and to patch assets thru content patcher but I never saw any proper documentation on how to get around changing the game logic. So basically what I wanna know is how to learn to do that 👉 SDVdwarf 👈 I concluded that that for the most part of the NPC behaviors post-marriage I might wanna switch it to my custom code as schedules probably won't cut it unless I can make them read from my dynamic strings instead assuming I can even change those mid-game (omg it ended up so long dont eat me)

ocean sailBOT
gaunt orbit
#

!harmony

ocean sailBOT
#

Here be dragons. Venture forth with bravery, young warrior, for thou art alone in these dark lands. See the Harmony wiki page for more info.

median dune
#

ah shit harmony patching

tiny zealot
median dune
#

I was afraid of that

gaunt orbit
#

You will need to use c# with harmony to change the game how you want to

#

You may not need much harmony depending on exactly what you want to do

median dune
#

well- basically probably? just to change NPC tryloadschedule() and to load a completely different block of code if married

lucid iron
#

The marriage stuff is pretty hardcoded

#

But i think spacecore(?) has feature to make a married npc follow previous schedules

median dune
#

I don't know yet how it will be possible, but I thought that I can either make use of existing schedule code but use dynamic variables or need to write a completely new AI for the things I wanna do with those

tribal ore
median dune
#

well as I said, the difference is I want to make it dynamic

tiny zealot
#

keep in mind when you are looking through the game code that spouses have no schedule (null) on the days that they stay in the house. they just wander randomly

median dune
#

doesn't null simply default to some schedule?

coral solstice
#

anyone here know creating AT packs pretty much inside and out? I need a hand and would appreciate any help 🫶🏼

median dune
gentle rose
#

you can load different schedules based on different conditions but they'd apply to entire days I think, not specific decisions during the day

#

schedules are kind of a cursed thing to modify in stardew

nocturne mantle
#

Hello everyone 😄
does anyone know if there is an easy fix for "Custom Music"? I know the original mod is outdated but I believe there is another way of overwriting the default music as before

gray bear
#

Content Patcher can add music im pretty sure

median dune
tribal ore
nocturne mantle
gray bear
gentle rose
median dune
gaunt orbit
nocturne mantle
gray bear
tiny zealot
#

if you want them not to leave the house for their schedule days, a simple postfix on the schedule load would do it

gaunt orbit
nocturne mantle
#

But that one won't be able to use existing music packs to add into the game, right? Because I was intending to use Miss Coriels Music Pack

median dune
tiny zealot
#

i don't know where exactly it is, sorry, so you'll have to do some sleuthing. i would guess it's somewhere wacky like baked into FarmHouse.cs's update logic, but maybe that's a cynical assumption 😅

median dune
#

Aight I will look for it, thanks for the suggestion though, it might really ease the start process of making it

#

Or if I wont find it I will if(this.ismarried) {my code} else{gamecode} and pray it works (it probably wont)

tribal ore
median dune
#

You will very likely see me here again and I will gladly update you on it when that happens

gentle rose
#

according to a friend of mine haha

median dune
gentle rose
#

I think so

#

it probably controls the marriage pathing

median dune
#

I dont think so, I think its only the random world action and dialogue in the morning

gaunt orbit
gaunt orbit
nocturne mantle
calm nebula
#

It's baked into the farmhouse

gaunt orbit
#

Alternatively you could write something in c# to hijack custom music packs and insert them into the game's music data

frail moss
#

where i can find the seed of crops ? i'm not sure to where i can find it

tiny zealot
nocturne mantle
frail moss
#

in the content unpacked

#

i'm trying to make a sprite and i search to make something similar of the vanilla seed

gaunt orbit
#

In Data/Crops, the key will be the seed item id. The data for the seed is in Data/Objects, and the sprite is probably in Maps/SpringObjects

blissful panther
#

Unless you mean the texture for the part that's actually planted in the dirt? Then TileSheets/crops, I believe?

median dune
frail moss
#

i search the sprite in the inventory

gaunt orbit
#

!springobjects

ocean sailBOT
#

Most vanilla object sprites are in the Maps/springobjects asset. See a table of springobject sprites by index.

Some newer object sprites are in TileSheets\Objects_2. You can check the entry in Data/Objects to see where its sprite is stored; SpriteIndex is the position, and Texture is the asset name (defaulting to Maps/springobjects).

frail moss
#

i found thx

ivory plume
#

(Nexus sure has a lot of ads for non-premium users now, and each slot separately rotates through multiple ads too.)

gentle rose
#

that's so many 😭 that's worse than those scam websites

gentle rose
#

also love that multiple of them are for an offshore crypto casino

tribal ore
gentle rose
#

I use an adblocking vpn because of that

onyx flame
#

Why is there's some mods in your ads?

ivory plume
#

(The rest of the page is really just an ad for Vortex.)

ivory plume
frail moss
#

pls someone can say me again how i could add stuff with sprite more than 16x16

dreamy cedar
#

So I recently changed Junimatic to search for NPC's on the farm (e.g. Robin) and have the Junimos not work while the NPC is out there. I got 2 people say "Hey! The Junimos won't work because of a Truffle Crab, but there's no way there's a Truffle Crab around!" One of them sent me a save. Sure enough, the characters list on the farm includes an instance of RockCrab named "Truffle Crab". I don't see anything peculiar about the crab when I inspect it in the debugger, and I can see its position. In the game, that location is a bare patch of land not obscured by anything. Swinging a sword at that coordinate doesn't do anything. Placing a bomb on that coordinate doesn't do anything either. (That is, judging by inspecting the crab in the debugger). Any ideas on what's going on here?

royal stump
#

Truffles produced by pigs have a 0.2% chance to be replaced by a Truffle Crab instead, but I don't see any reason they should be invisible or non-interactive, so I'd have to guess that's some kind of odd mod interaction. You could check the IsInvisible flag on them to see if that's the direct cause, I guess, but those crabs shouldn't do that themselves or anything SDVpufferthinkblob

elder mountain
uncut viper
#

it is better to just ask your questions out loud to the channel than ping one specific person and ask them to help

elder mountain
#

I just asked a couple of people before this and no one knew what the problem was, so for some reason I decided to just flag it :0

dreamy cedar
uncut viper
royal stump
#

There's isInvincible() for monsters too, which basically points to the field invincibleCountdown

#

Other than IsInvisible or having a blank (but not null) sprite, I don't see any way a specific character should fail to be drawn, at least by the base code

ivory plume
elder mountain
#

Well, in short, my fish seems to be not completely fish for some reason

#

When I catch it, there is no mini game, quality and size

#

I checked the files, everything seems to be correct, there is even a smoked version and caviar, but no mini game

ivory plume
#

That may happen if...

  • the player caught a non-object (i.e. non-(O)) item;
  • or the fish isn't listed in Data/Fish;
  • or its entry in Data/Fish has a non-numeric value in field index 1 (difficulty), so it's assumed to be a non-fishing fish.
ornate trellis
#

that looks like when you catch trash

lucid iron
elder mountain
dreamy cedar
elder mountain
ivory plume
#

What's the item ID of the fish you caught? Can you run patch export Data/Objects and patch export Data/Fish in the SMAPI console window, upload both files to smapi.io/json, and post the links here?

uncut viper
dreamy cedar
ivory plume
uncut viper
elder mountain
thorny tiger
#

can anyone explain to me how question fork works please? i dont really understand what its doing exactly

dreamy cedar
uncut viper
#

if you're a mod author you can request access to the decompile repo. public decompile repos are not allowed

dreamy cedar
#

How do I do that? I think I'm a mod author.

uncut viper
#

you do not have the mod author role

#

nor are you the minimum level for it

#

(server level i mean)

#

(also i forgot its not just being a mod author you need lvl 50 too)

ivory plume
#

Otherwise that data seems fine. If it still doesn't work, you could send me a minimal repro content pack + repro steps and I can run the game through a debugger to see why it's treating it as a non-fish catch.

elder mountain
ivory plume
#

That sets the minimum fishing level to zero, which should be fine; a lot of the vanilla fish have that too.

rotund elm
#

Pathos I have a question about the Day/NightTile map properties if you have a moment

ivory plume
#

Feel free to ask anytime! (I may not necessarily know the answer, but others here might.)

rotund elm
#

I just wanted to know if there will ever be the opportunity for animated tiles to be used with the Day/Night Tiles map property? Currently I cannot replace a unlit lantern with my animated lantern without jumping through extra hoops, or having the player leave and reneter the location

sweet geyser
#

how hard is it to make a new location underground (similar to the sewers) under the train station

#

as in like is it possible and how

rotund elm
#

I am unsure if there is a map property specific for underground locations, but you would need to make the map.tmx and create an area in an existing map or a way to get to your location via warp

sweet geyser
ivory plume
ornate trellis
#

obligatory stare at spacecore

rotund elm
#

If I can make it exist I shall!

#

And does spacecore have this function!? I looked through the docs but didnt see anything

ornate trellis
#

not sure but i sure always check spacecore if theres something not vanilla that i need

rotund elm
ornate trellis
#

but the docs are too summed up for my silly brain I am used to the awesome CP documentation josweat

ornate trellis
gray bear
#

and example! cat_nod_cc

ornate trellis
#

english not being my mothertongue makes things another layer of hard

gray bear
#

being concise with me is how i lose my brain

rotund elm
# sweet geyser thank you !!

Yes if you need an example you can look at the locations.json from my mod, but don't add a when clause for disabling locations, I just forgot to remove that for my testing X|

#

link is in my discord bio

uncut viper
#

(this reminds me i still need to move my special power utilities docs to my docs website...)

#

remind me in 1 week to do that

patent lanceBOT
#

THUMBS UP EMOJI (#6475501) (1w | <t:1737494051>)

ornate trellis
#

damn, the bots nice for once

uncut viper
#

immediately realizing that im going to be busy that day when the reminder happens. oh well

gray bear
#

instant regret

#

i don't think i've used the remind feature ever

#

im too scared too

rotund elm
#

The only bot I use is Leah for mod-showcase XD

#

IDK what the others do besides Maru now lol

gentle rose
#

I think it's technically possible to use the reminders to set up reminders for other people but that feels mean haha

tribal ore
rotund elm
#

No kidding I was considering adding one to my mod, but decided against it for that reason in the foreseeable future

gentle rose
#

governor handles commands

uncut viper
#

and free games

#

kinda

ornate trellis
#

looks away in adding 4 more NPCs

rotund elm
gentle rose
#

bouncer makes people start protests to have it renamed back to boncher (and I guess as a secondary feature also does modmail)

gray bear
#

i think it also handles reports? is that what modmail is

#

farm computer can link to the wiki

uncut viper
#

it is

gray bear
#

[[coconut]]

gray bear
#

why does it work like that? idk

gentle rose
#

modmail is reporting things directly to the mods by dming the bot, but you can also report through app commands

gentle rose
gray bear
#

i'd imagine mini-jukebox plays music

elder mountain
rotund elm
#

Ok so the issue is there is no minigame?

elder mountain
#

yep

rotund elm
#

Did you upload your .json for the fish in question and the fish data, I know your fish/data is probably fine after adding the tutorial portion

gentle rose
#

pathos asked you to send him a minimal repro content pack and repro steps if it still doesn't work

elder mountain
gentle rose
rotund elm
#

I am wondering if it is the way you added the object

gentle rose
#

send the mod as a zip file

elder mountain
rotund elm
#

is this one of multiple fish having the issue or only this one fish

elder mountain
rotund elm
#

Ok I think I can help you, but I would need to see the Data/Fish, Data/Object and Data/Locations info

acoustic summit
gentle rose
rotund elm
#

Perfect thanks!

gentle rose
#

this server should have an upload limit of 100MB

elder mountain
#

Oh, ok

rotund elm
#

I think that is just the info from content unpacked no?

acoustic summit
#

Data/Locations would be good to link as well

#

Its their patch upload

rotund elm
#

Oh ok I see

uncut viper
#

(though, ideally, a minimal repro pack is supposed to be a pack tested with only the absolutely essential mods and a pared down content.json to just be the problem patch in question)

lunar dawn
#

Sooo it’s been a while and I suppose I’m in the mood to make more mods or revise my current ones. I made the Mystic Truffle Foxes mod and I suppose I was wondering if anybody else who has created a “dig up” custom animal has an issue with extremely low produce. Like I have 3 foxes and it’s a common occurrence to go entire days without them digging up a single produce item

Relevant info: I think I have like 8different types of produce they can dig up but I don’t see why that should make them decide to dig up nothing at all so often

gentle rose
#

-# hi button CB_wave_boy

uncut viper
#

hi hi

lunar dawn
#

Hiya

gentle rose
#

why is the smapi installer inside the mod folder?

acoustic summit
#

Yeah I think I found out why the file is so large aha

elder mountain
rotund elm
# elder mountain

I am going to change the way your fish are added to the location as I think that is what is causing the issue

gentle rose
#

the installer is actually pretty small, but it shouldn't be there

#

neither should the internal folder

ornate trellis
#

40MB folder...?

#

my entire wip enpansion only goes up to a little bit less than 4MB whats in there O:

elder mountain
#

Without smapi installer 13 KB

gentle rose
#

please delete README.txt, install on Windows.bat, install on macOS.command, install on linux.sh and the internal folder from your folder

elder mountain
acoustic summit
#

Thats more like it 😛

gentle rose
#

your ids' capitalisation doesn't match between the fish data and object data I think

#

idk if that would cause this issue though

ivory plume
#

Yes, item IDs are case-sensitive.

gentle rose
#

@elder mountain fix the IDs in FishDataStats.json to match your other IDs exactly

rotund elm
#

Its not your Data/Locations either

gentle rose
#

it probably wasn't loading the fish data at all then, thanks for confirming pathos

rotund elm
#

Yippee, just goes to show how much one minor detail can throw a whole mod off X|

gentle rose
rotund elm
#

It is, I just tried doing it an alternate way instead of by randomID as I'd never seen that and to double check casing, but the issue was reproduced the same

#

But yea I didn't notice the capitol case in fishing data

#

So I probably would've been no help unless I used Cody

#

This also scares me because when I start working on my new mods... It's gonna be another learning curve XD

#

Also can we take a sec to just "appreciate" how nexus doesn't alert you about new mods requiring your mod? I was scrolling through New Mods this Week and found another translation XD

tribal ore
gentle rose
#

pathos would get a million alerts per day though haha

#

requires: smapi

tribal ore
rotund elm
#

You would obviously be able to turn it off XD

tribal ore
#

Or better yet, configurable

ivory plume
rotund elm
#

But yea

#

Poor Pathos XD

#

I just like to know so I can go show support, it means a lot when someone takes time out of their day for a translation I don't have or a resprite

lucid iron
#

I sometimes check my framework mods to see if anyone's made things with them DokkanStare

uncut viper
#

i also check CMCT every so often for that reason too

gentle rose
#

I got an alert today too! it was an android smapi question /lh

vernal crest
rotund elm
#

It still irks me that Nexus doesnt let us display our own translations in the translations dropdown tho

#

like its pointless especially if they're added as optional files

vernal crest
#

If I wanted a bad machine translation that has no quality control I could just make my own!

lucid iron
#

There was a community suggestion opened at some point

#

To let authors mark translations as out dated

rotund elm
#

That would also be nice

#

because the Mandarin translation for my mod is so outdated

#

by months XD

vernal crest
elder walrus
#

hello

rotund elm
#

That’s what nexus support wants you to do for translations because they’re nuts

#

lost internet just now 😭

#

Either way they should have it setup to read an i18n folder and list those translations under the dropdown

#

and like Chu mentioned being able to mark them outdated instead of having to do the alternative would be convenient

#

Especially for people with quite a few translations

uncut viper
#

that doesnt sound like something nexus should handle to me personally

#

the reading the folder or letting you list your own files in the translations, i mean

#

marking translations outdated or w/e i agree with

gentle rose
#

I guess they should let you add a "x language - built in" line to the translations box

#

just so people know it's not needed

uncut viper
#

i mean dont forget "an i18n folder" is not a universal concept

#

we only use those because SMAPI tells us to

lucid iron
#

Yeah i don't expect nexus to actually parse the file upload

#

Just some feature to document is enough

rotund elm
#

Yea, it would be nice, to have the flags listed for all the translations not just ones done by other authors tho

calm nebula
#

I want i18n to have version numbers and unique ids and update checks

lucid iron
#

Rn i just write a translations section since i usually do my own simplified chinese tl

rotund elm
#

I have a message at the top of my modpage letting readers know if they even make it that far XD I do 6 translations

uncut viper
rotund elm
#

Thats a rabbit hole nobody wants to go near XD

lucid iron
#

Tbh the standard should probably be through Strings assets

gentle rose
#

(insert xkcd 15 standards thing here)

rigid oriole
#

i have one mod with a translation and i just have a tag for it

lucid iron
#

It has a number of advantages

rigid oriole
#

i have no idea if spanish speakers actually find this mod

uncut viper
#

translations arent only used in places where those assets are even applicable