#making-mods-general

1 messages · Page 601 of 1

verbal glacier
#

i knew there had to be something out there, thanks button SDVpufferheart

ornate drift
#

what could i be missing? i have 4 hearts with manny and 10 hearts with vincent

verbal glacier
#

can you share the .json

ornate drift
#

oh wait it uses the same ID as the previous...

#

oops

verbal glacier
#

that would do it yeah

ornate drift
#

okay so Manny did not move at all and Vincent walked to the opposite direction

#

💔

verbal glacier
#

once again you don't move them to the exact coordinates, you move them in directions

#

you must always have a 0 in either the x or the y

arctic hill
#

I'm working on a mod that is basically a fantasy theme alternate start, so the Farm no longer connects to pelican town and needs its own map
I'm having the darnedest time figuring out how to change a locations map, I added a new location context map property to my farm map, registered that location context in content.json. and edited worldmap for that location/contextid but it still shows the valley map on my farm 🫠
any worldmap experts know what i might be missing? Smapi log seems to indicate everything is loaded it just doesnt show up when I open the minimap

strong kite
ornate drift
#

ohhh i get it now

#

alright

strong kite
#

So moving 2 tiles up would be 0 -2

ornate drift
#

so if i made vincent walk 15 tiles to the left it would be move Vincent -15 0 3

#

...okay so vincent moved but manny didnt

#

is it because hes on a tile which contains TileData?

#

actually nvm those dont have colission

verbal glacier
#

not certain if this has an impact on events but you have a space before move {{ModId}}_SpeedyManny could you remove that

ornate drift
#

i did

verbal glacier
#

hmm

#

share the .json again

verbal glacier
#

did the sound play?

ornate drift
#

yeah the sound played

#

no idea what THAT error log is though

#

everything plays out fine except that command

verbal glacier
#

can you try true instead of continue

#

cause boolean is true or false iirc

ornate drift
#

doesnt true continue dialogue instead of command

verbal glacier
#

no you set the continue to either true or false i believe

ornate drift
#

oh ok

#

a boolean is a funny name

verbal glacier
#

yeah but very good to know

ornate drift
#

vincent moved properly before and stopped, like when i had the continue thing

#

now he completely phased through Manny and went farther for some reason

#

offscreen

#

but manny moved properly

verbal glacier
#

can you try move {{ModId}}_SpeedyManny 0 7 2 Vincent -15 0 3 in the same command

ornate drift
#

wouldnt that defeat the whole purpose of true

verbal glacier
#

yeah but you'd probably want a pause after their move anyway

ornate drift
#

i also gotta make manny move slower because he has WAY less tiles before Vincent

#

but the lowest is 2

verbal glacier
#

try it out and see

#

sadly that's gonna be the case for events, it is a lot of trial and error

ornate drift
#

yeah, no, he takes WAY too long to notice Manny is there

#

gonna make it something like -7 instead to match when manny reaches that tile

strong kite
#

You could also try making Manny move slower? So Vincent can get further before Manny is reasonably in view

ornate drift
#

i did

#

2

#

didnt do much

#

also manny is slightly offset for some reason...?

#

his feet dont match up as the same pixel as vincents

strong kite
#

I've seen that in my own events, tbh not too sure how to fix it.
But on another note, you could possibly have Manny start "inside" Marnie's (since that seems to be where he's coming from?) And have him come out after Vincent has already walked a few tiles?

verbal glacier
# ornate drift

glad to see they are moving, i gotta go and sleep cause it is 2:35 lol, so gn SDVpufferchicknight

ornate drift
#

nite nite

ornate drift
#

thanks a bunch for your help duck!!! :3

hoary tartan
#

Would it be okay if i sent my content.json here to try troubleshooting? I'm feeling a little dumb because its been like an hour and i still cant figure it out

hoary tartan
#

The error code is "Technical details: After parsing a value an unexpected character was encountered: ". Path 'Changes[1].Target', line 13, position 3."

#

i feel like its going to be something simple but i cant figure it out

barren tapir
hoary tartan
#

Thank you

barren tapir
#

And after EditData

#

Basically, when in doubt, add a comma 😅

#

I also don't think the target for the first "EditData" should be CookingRecipes, but I'm blanking on what it should be off the top of my head

hoary tartan
#

Data/Objects, i dont know why i put cooking recipes there actually

ornate drift
#

now i gotta add an animation....

#

is adding an animation to events the same thing as animationdescriptions?

hoary tartan
#

It loaded oh my gosh thank you

barren tapir
proven spindle
hoary tartan
hoary tartan
#

It works! : D and I was able to but the recipe at the saloon and cook it too!
Going to try to make it give a speed buff now SDVpufferheart

tough osprey
#

question, when editing dialogue (marriage or regular) is it always required to load in a blank?

lucid iron
ornate drift
#

huh...

#

is it because E is capitalized

#

oh yeah that was it

#

it needs stardewUI and that is not updated

#

damn

lucid iron
#

StardewUI is made for 1.6 wdym not updated

ornate drift
#

idk why logs said that

#

hold on

#

i downloaded stardewui continued

#

probably why

royal stump
#

that's what soundboard asks for, and it's like a month old, so that probably shouldn't be the case

lucid iron
#

That's also updated (i updated it)

strong kite
#

I am officially done creating recipes! SDVpufferparty
Not done with them themselves, but the coming up with ideas and putting together the ingredients they need is done! just need to set a few prices and edibility values, create the last of the sprites, and then go through and give buff effects to a lot of the foods, and I'm finally done with my original goal for this update!

lucid iron
#

Do u have a too old SMAPI

#

Less than 4.5

ornate drift
hoary tartan
#

oh thats adorable

tough osprey
ocean sailBOT
#

Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 10 (10.0.19045.0), with 21 C# mods and 4 content packs.

serene magnet
#

Probably scrapping the idea of an mcq prompt from an object for the standalone cutscene mod. My current idea is to add a shop tab to the library interaction w/ Gunther where you can buy dime novels that serve as initializing items using SpaceCore_PlayEvent. Does anyone see any initial problems with this / have any tips for making shop tabs?

royal stump
# tough osprey Alo, for some reason my MarriageDialogue is not applying despite the conditions ...

Are you sure they used dialogue from an unedited, character-specific marriage asset? MarriageDialogue assets don't load until they're used, so edits don't apply until then, and the summary will say [x] conditions [ ] applied like that.

Aside from that, it looks like they were loaded earlier due to Event Lookup, and Free Love's token might not be ready that early. It's possible that interferes with patch, though it seems unlikely.

(PS there's an extra 1 at the end of your first link, in case anybody else needs to take a look)

tough osprey
orchid glade
#

Are all fields in Data/Objects permanently saved to an object's info? I've found that I can't retrospectively change the Texture of objects already created, and I wonder if it's true for other things. If I change context tags for example, will they be updated for objects already in inventory?

The only place I've found reference to this in the modding wiki is for ObjectDisplayName in Item spawn fields.

uncut viper
#

Generally they are permanently cached on the item yes

#

That's why the first troubleshooting step with items is telling people to trash it and spawn a new one

orchid glade
#

I see. I feel like that would be really good information to put on the Modding:Objects page.

orchid glade
#

Actually, the color context tags and Description seem to be updating for old items.

ornate drift
#

i need more event ideas

#

my creativity is my own enemy dracthyr_cry_animated

orchid glade
#

Do you have a story arc for the character?

ornate drift
#

Also i have a planned out way of doing events:

-Even numbers events (2,4,6,8,10) will have Manny interact with the townsfolk so that he can feel more welcome (This can either omit the farmer or include it for a choice)

-Odd number events (1,3,5,7,9) will have Manny interact with the farmer directly and usually give them a choice question, they will be more related to the characters lore, or can have something funny

ornate drift
orchid glade
#

Maybe think about what some of his challenges might be, and how he might develop and overcome them, over time, and perhaps with the farmer's input

ornate drift
#

hmmmm

orchid glade
#

Like in the event I saw with Vincent - have you explored the challenges of being a "wild animal", gaining the trust of Marnie and the village?

ornate drift
#

To be completely fair, SVE has a wild bear just randomly EXIT through Marnie's ranch with no explanation whatsoever

#

so it's not like everyone needs to gain trust

orchid glade
#

No of course not, it can be a choice to have him just there and accepted

#

It was just an example of something that could be explored deeper

#

If he's from the Arctic - what made him leave there? Are there any difficulties adapting to a warmer climate?

ornate drift
#

Maybe one of the NPCs can be harsher towards Manny, saying he doesn't belong here, but maybe that's too much

ornate drift
#

he only wears a tanktop, shorts, and slappers

#

for that reason

#

it's shown in his Summer dialogue

orchid glade
#

Perhaps some storyline that, over a few events, he's able to get AC installed in his house, or some such thing

ornate drift
#

That would only affect his house, he would still burn outside

orchid glade
#

What I'm suggesting is to come up with a 'problem', and then have the story work to find a 'solution'.

ornate drift
#

Yeah, that makes sense

#

The problem needs to be clear from the middle point of the story, but not sure what it could be

orchid glade
ornate drift
#

Oh wait, that would actually be really good

#

Noted skaifoNODDERS

orchid glade
#

That can occur over a few events

ornate drift
#

But I'd have that at maybe like 8 hearts, because that would solve it

#

Or, maybe have it to where the Wizard is still trying to find a permanent variant of the sunscreen, and at 8 hearts he eventually finds it right before Manny collapses from the heat

orchid glade
#

You can show an event with him struggling with the problem, one meeting the wizard, one working on the problem with the wizard, one where he gets/shows the solution

ornate drift
#

Yeah, i can also do that

orchid glade
#

Obviously, doesn't have to be that many. And they can be small events.

ornate drift
#

Though, there's very small room for many events

#

Actually wait I'll just make multiple events for, let's say, 2 hearts

#

Easier that way

orchid glade
#

But it's nice to have a bit of continuity between events, and to see some character development.

#

Have to balance having too many events, some of the things could be shown by mentioning it in an event with someone else. Like "the wizard and I are working on a new formula".

iron ridge
#

ty i was trying to find how to do this, my shell history didnt have it from the last time

iron ridge
#

where's the rejection dialogue stored? I can't see these keys in the dialogue files

this.CurrentDialogue.Push(((!this.datable.Value) ? this.TryGetDialogue("RejectMermaidPendant_NotDatable") : null) ?? (isDivorced ? this.TryGetDialogue("RejectMermaidPendant_Divorced") : null) ?? (this.isMarriedOrEngaged() ? this.TryGetDialogue("RejectMermaidPendant_NpcWithSomeoneElse", this.getSpouse()?.Name) : null) ?? ((this.datable.Value && friendship != null && friendship.Points < 1500) ? this.TryGetDialogue("RejectMermaidPendant_Under8Hearts") : null) ?? this.TryGetDialogue("RejectMermaidPendant") ?? new Dialogue(this, "Strings\\StringsFromCSFiles:NPC.cs." + ((this.Gender == Gender.Female) ? "3970" : "3971")));

fading walrus
iron ridge
#

its the vscode extension

#

and updating it didnt help intellisense work so i just have no completiton 😔

fading walrus
#

Oh

#

Oh dear

gray bear
#

sadge

iron ridge
#

ill just use the snap i already know zen wont download that

stoic chasm
#

Hello people, is there a way to have a config option overwrite another option?

iron ridge
#

puffer_party it works perfectly in rider without having to do anything!

orchid glade
#

I don't think you can make one change another option, but you can always set your When / Conditions to use them in ways that overwrite the other

#

For example, you can have an "enable mod" config required on all your patches, so even if the other config conditions are met, that must be on as well

iron ridge
uncut viper
#

The game comes with some XML docs

iron ridge
#

ooh fancy

uncut viper
#

Non exhaustive of course

iron ridge
#

mhm

lucid mulch
iron ridge
#

ah

#

well

#

i already downloaded rider so i may as well stay

lucid mulch
#

.net6 has been eol since Nov 2024 so makes sense anyway

iron ridge
#

mhm

lucid mulch
#

Though all the more reason to use my cursed smapi versions that run natively on .net10

gray bear
#

is there a way to make vscode stop notifying me about trailing comas in json files? its yellow n annoying

iron ridge
#

!vscjsonc

ocean sailBOT
#
How to make VSCode not scream at json comments

In Visual Studio Code, go to File -> Preferences -> Settings, then search for "associations", and in the "Associations" setting, click the Add Item button to add an item with key *.json and value jsonc (see image).
If you are making a content pack for Content Patcher, you should consider using its json schema so that VSCode can tell you if your patches are valid, you simply have to add

"$schema": "https://smapi.io/schemas/content-patcher.json"

at the start of your content.json file.

iron ridge
#

oh nvm thats just for comments

#

oh no the schema should work

gray bear
#

ah alr

#

i already have the jsonc thing tho

iron ridge
#

mhm, jsonc is just comments, but if you add the schema, that specifies trailing comments are allowed so should work then?

gray bear
#

lemme try that

#

ah it works, awesome. ty

iron ridge
#

how would i load in a string to a content file? load it with a blank.json and then editdata with fields: {"key": "value"}?

final arch
#

just as always?

#

can just load the json directly if you dont need CP tokens

iron ridge
#

i mean from a content pack

#

oh i could just look at how an npc mod does it for dialogue

final arch
#

with C# or with CP?

#

do you want to read the content file or write it?

iron ridge
#

to write to a content file in a cp mod, for the c# mod to later read but i know how to do the reading part

final arch
#

yeah you load it if its your mod and other mods then edit it with editdata (dont need fields if its a normal key:value json)

iron ridge
#

mhm

iron ridge
#

that was surprisingly easy

verbal glacier
#

yippee BarnGate™

gray bear
iron ridge
#

but i dont want to get that dw

torpid sparrow
#

Made that mistake once

iron ridge
#

which are you responsible for

torpid sparrow
#

sneeb

iron ridge
#

ahh

torpid sparrow
#

Although that’s a good one

iron ridge
#

it is!

#

used often

barren tapir
#

Does the map action "MinecartTransport" add the location in question to the minecart network? And if not, how would one add a location to the possible minecart locations?

#

Also, how do you mark a map as a location you can place objects in without them disappearing and a location that is a valid cask location?

verbal glacier
barren tapir
#

Gotcha. Thanks!

verbal glacier
#

i believe for casks it is: CanCaskHere T²

iron ridge
#

😭how did i give myself two number columns

iron ridge
#

oh yeah ofc lmao i ran nvim inside of an nvim split

#

do i have to do anything specific to make i18n work in a content pack or just put the things in i18n/default.json and use the tokens?

verbal glacier
#

no that's how it's done

iron ridge
#

ty

#

oh no that wont work anyway.. uhhm

verbal glacier
#

why?

iron ridge
#

oh jsut the way im doing thinsg with c#

verbal glacier
#

hmm

iron ridge
#

the dialogue is a key instead of a text

#

im referncing it with

__instance.CurrentDialogue.Push(
                                new Dialogue(__instance,
                                    string.IsNullOrEmpty(standard.RejectionDialogueKey)
                                        ? "Strings\\StringsFromCSFiles:NPC.cs.3972"
                                        : standard.RejectionDialogueKey)
                            );

so in the content.json it's just "RejectionDialogueKey": "Mods\\{{ModID}}\\dialogue:reject", which is then "reject": "Your barn is not up to my standards, @!"}
so since its not the c# mod's translations it wouldnt be able to get them

verbal glacier
#

can't you put the "reject": "Your barn is not up to my standards, @!" in an i18n folder?

barren tapir
#

Yes

#

Is this the "Making Mods" channel we're supposed to use to ask for the Mod Author role as per the GitHub instructions?

And if so, may have that role pls?

iron ridge
#

oh nvm i get what you mean

#

mods/{{modid}}/dialog would just be changed based on the i18n

barren tapir
#

In C# you'd do ModHelper.Translation.Get("rejection")

#

I believe

iron ridge
#

yes but the c# mod would be looking at it's i18n folder, no?

barren tapir
#

It would

iron ridge
#

so it'd be referencing different text to the content pack

fierce vault
barren tapir
#

@outer glacier Can I have the mod author role pls?

fresh knoll
#

Does anyone know of a way to revert the 1.4 change that makes it impossible to plant trees on grass outside the farm?

fierce vault
#

I was given the rest of the instructions after that

#

in the staff and bots section, you can tap the bouncer to send a dm

fossil osprey
#

Wrong ping iro I think

gentle rose
#

yup.

#

I blame discord. it's my fault but I blame discord

gentle rose
fossil osprey
#

Let's all collectively blame discord

severe cairn
#

Is there a way to get a list of items like you can with Utility.getAllCharacters()? I've been trying to find it for hours 💀

iron ridge
fossil osprey
gentle rose
barren tapir
#

I don't see an option to edit the page though

fossil osprey
#

It's at the very top of the page once you're logged in

gentle rose
#

are you logged in?

barren tapir
#

It'd help if I had an account I guess 😅

#

I'll make an account as soon as I'm finished creating this i18n file

orchid glade
#

I discovered I could put ® in my strings and I went a little crazy.

hot geode
#

Hello There ♡
I hope I'm right here :3

Atm I'm facing troubles with creating AT textures.

I'm Trying HD - Modding and tried upscaling things equally ...

The good Part: My AT Mod pack does exist in-game, Smapi doesn't show any error code...

The Bad Part:
In-game the texture uploaded is invisible. I can grab the decorative part and I can interact with it but it's simply invisible.

Im a raw beginner and have no Idea what the huuuh I'm doing wrong so if anyone would like to help me and maybe even guide me through the process I would be super happy and grateful 🙏🏻

strong kite
fossil osprey
#

As long as you've published a mod, you're eligible

#

Whether you want the role now or later is up to you

barren tapir
#

I've finished creating i18n entries for 13 different books, now its time to add myself to the wiki!

orchid glade
strong kite
fast urchin
#

Anyone knows how to draw on the Paths tile layer using C#?

hot geode
# orchid glade Have you tested to see if it works with a vanilla-sized texture? That way you co...

So according to the source I trusted, stardew automatically compresses the scale 🥲

If the scale is like is the OG size things seem to load correctly... so there's no issue with the folders or json I guess... exept I maybe do the scaling wrong OR it's not even possible to do HD-Modding and the source was incorrect 🤔

I came up with this Idea by seeing some really beautiful AT textures with plenty of details that are Impossible to create with the original scale.

orchid glade
#

Are the other AT textures you've seen using HD? And if so, are those working for you?

barren tapir
#

I've added my info to the wiki

barren tapir
#

Step 1 of my c# only mod - create a GMCM menu: Check

orchid glade
#

Well my mod took me a lot longer than I anticipated for such a simple thing (trial and error in testing alternate ways of doing things, plus being extra on options). But I've finished it! Tomorrow I'll do the nexus page.

barren tapir
#

How do you load textures in C#?

barren tapir
#

So I currently have the following, but am getting the error "assets/books.png for item ... does not exist" (I renamed the Assets folder to "assets")

brittle pasture
#

you need to load your png into an asset first before you can use that asset name in the Texture field

barren tapir
brittle pasture
#

show your full code?

barren tapir
#

Sure, give me a sec

#

AssetManager.cs:

internal static class AssetManager
{
    public const string BookAssetPath = $"assets/books.png";
    public static Texture2D BookTextures = null!;

    private static ITranslationHelper Translation = ModEntry.StaticHelper.Translation;

    public static void Register()
    {
        BookTextures =  ModEntry.StaticHelper.ModContent.Load<Texture2D>(BookAssetPath);
        ModEntry.StaticHelper.Events.Content.AssetRequested += OnAssetRequested;
    }

    public static void OnAssetRequested(object sender, AssetRequestedEventArgs e)
    {
        IAssetName name = e.NameWithoutLocale;
        if (name.IsEquivalentTo("Data/Objects"))
        {
            e.Edit(EditObject);
        }
    }

    private static void EditObject(IAssetData asset)
    {
        IDictionary<string, ObjectData> data = asset.AsDictionary<string, ObjectData>().Data;
        List<string> contextTags = new List<string>();
        contextTags.Add("book_item");

        if (ModEntry.Config.EnableAncientFruit)
        {
            Dictionary<string, string> customFields = new Dictionary<string, string>();
            customFields["Spiderbuttons.SpecialPowerUtilities/Books/Messages"] = Translation.Get("AncientFruit.Book.Message");
            data[$"{ModEntry.ModId}_Book_AncientFruit"] = new ObjectData()
            {
                Name = $"{ModEntry.ModId}_Book_AncientFruit",
                DisplayName = Translation.Get("AncientFruit.Book.Name"),
                Description = Translation.Get("AncientFruit.Book.Description"),
                // Type: "asdf"?
                Category = -102,
                Price = Costs.AncientFruitBookCost(),
                Texture = BookAssetPath,
                SpriteIndex = 0,
                ContextTags = contextTags,
                CustomFields = customFields,
            };
        }
    }
}
brittle pasture
#

so what you did was load a texture into a Texture2D object

#

not a game asset with a name

barren tapir
#

Dammit

brittle pasture
#

change the name to something else obviously

barren tapir
#

And that would work despite me not actually replacing a file?

brittle pasture
#

that example code loads a png into Portraits/Abigail, which allows you to use Portraits/Abigail in places that ask for an asset name

barren tapir
#

Gotcha. I was under the impression that that would only work with already existing assets.

brittle pasture
#

you remember how in your CP mod you need to Load your textures into a name? you're doing the same thing here

#

-# that's why you read the whole page

#

-# ngl I think we should move that section up

barren tapir
barren tapir
#

I'm still getting errors, but I have to go. I'll keep chipping away at it later.

gentle rose
#

@barren tapir congrats on cheetohood! SMCPufferCheeto

strong kite
verbal glacier
#

Congrats Nullnnow SDVpufferparty

strong kite
#

Also yeah congrats Nullnnow! allthethings

lusty halo
#

Congrats Nullnnow!SDVpufferparty

iron ridge
#

shock your making mods general notifications!!

lusty halo
#

Oh gosh the BEDS. 😂

next plaza
lusty halo
#

Incredible work as always of course, it just looks a bit funny for some textures which is a given when trying to port 2D into 3D.

next plaza
next plaza
#

The budget TV has an untextured model for example. Let me see if I can find it

#

or I guess make a new recording of it

lusty halo
#

Oh interesting!

next plaza
#

oh wait I broke it somehow

#

apparently

#

invisible budget tv ooooo

#

...oh there's a lot more than that broken

#

what did you do, casey of last time?

lusty halo
#

eh it happens. I am updating my Patcher mods and I broke them like 10 times because I mistyped a number even though I know I should doublecheck everything. 😂

#

Anyway, I wanted to ask you wonderful coding experts, if I want a token to NOT activate in multiple locations, is there a way to do it in a single line? I have "LocationName |contains=IslandWest": falsebut I want to add the other 3 zones (South, East, North) without making that line for each of them? Can't quite find it in the docs (English is hard)

next plaza
#

Oh nevermind I just needed to rebuild the mod's source since the fix was hotreloaded last time

jaunty shuttle
#

Oooooo

#

That is so cool

lusty halo
#

So cool!

floral imp
#

Hey wssp guys

strong kite
floral imp
#

Hello?

#

Some one's here for me?

#

Hi?

#

Come on a lot of ppls here ik

verbal glacier
#

you can just ask your question, someone who knows will help you, just be a bit patient

floral imp
#

Hundreds no thousands of ppls here nice..

#

I don't have a question just a request

ornate drift
#

😭

hard fern
#

If it's a request to make a mod we don't really take them here

lucid iron
#

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

hard fern
#

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

ornate drift
#

stardew 3D???

iron ridge
floral imp
#

Yea

#

Btw who's a good youtube here ?

#

Youtuber**

hard fern
#

No one, probably

proven spindle
strong kite
#

So I see this is what Casey's been doing lately SDVkrobusgiggle

next plaza
#

and probably much longer

#

there's still so much to do

floral imp
#

Oh !I want to be a good and big youtuber to overcome dreams so I need a big n good youtuber to guide me plz

hard fern
#

Uhh

#

Not sure if this is the right place for that

#

Like at all

floral imp
#

Y'all looking supportive .

#

Am I being annoying? Soory for that.

strong kite
# next plaza for way too long, yes

Sorry this is sudden, Is there any chance I could tell you about a few issues I believe I found with SpaceCore's Health and Stamina regeneration buffs?

hard fern
#

We make stardew mods here, not guides on how to be a youtuber

floral imp
#

I know but I thousands of People's might be there successful peoples

hard fern
#

Not really

iron ridge
#

just because a server has thousands of people doesnt mean that all of them are in one channel at one time

strong kite
hard fern
#

We can help if you're interested in making stardew mods, but outside of that, you're not going to have any luck

next plaza
hard fern
#

You are asking in the channel for making stardew mods, after all.

#

So this is sorta what we do lol

floral imp
#

Alr got it.

strong kite
#

Uhh I never sent a ping about it actually, I kinda held out that it would be seen on GitHub lol

next plaza
#

Ah

#

Well, I did see it

#

It sounds good, haven't looked at the code yet but it's probably fine

floral imp
#

What are Stardew mode btw?

strong kite
#

Wait- No it wasn't a pull request-

ornate drift
iron ridge
strong kite
#

I didn't understand what "PR" was HehSweatCloseup

next plaza
hard fern
ornate drift
#

super cool, i wish to be like 6480 one day in terms of quality XevYay

floral imp
#

No

next plaza
#

I have some controller navigation fixes that are half done that I need to finish up before a new release happens. Once that is done, I'll be going through the outstanding issues before I push a release (suchas the one you posted)

next plaza
#

Originally for a mod. But now that stardew3d has taken over my brain, who knows when I'll get back to that one

floral imp
#

I understand this isn't correct spot for me bye guys thx for having ne

#

Me*

ornate drift
strong kite
#

I believe I can work around the issues for now, but I figure my workarounds are gonna break once the issues are actually fixed LUL

ornate trellis
lusty halo
#

I have to say I have the best timing, I was here for a coding question and it was rightfully eclipsed by Spacey's WIP. 😂 Let me try again, can I use "LocationName |contains=IslandWest": false but multiple locations without repeating the whole thing (I want to include all external Island zones S-W-N-E)

next plaza
next plaza
ornate trellis
#

yeah i meant to say one of them(im still new to github so i wasnt aware there was a report option there but didnt want to bother you on two platforms)

#

mine was about the spacecore spawneables, where i changed something in the spawngroup code and still had old spawned stuff on an existing save and it crashed the game

lusty halo
next plaza
viral gazelle
#

How to do rain dialogue with content patcher? I'm a bit confused due to the rain dialogue being in a different file, so I assume I have to target and edit that one?

next plaza
#

I must've missed that message since I was postponing getting back to my unread ones

ornate trellis
#

so far it hasnt been too much of an issue for me at least since my mod is still in beta which is why i had just been waiting so i guess its good i happen to drop in here just this moment lol(for the future i now know that i can report on github)

#

there was also something selph had mentioned further down(not sure if youve scrolled that far or not, just in case i meant this #making-mods-general message)

verbal glacier
calm nebula
lusty halo
barren tapir
#

How do you check if a player has read a power book?

#

Is it a stat that is automatically incremented, and if so, which stat?

nova gale
#

One sec, I used that stat for adding a custom power/trigger action. Let me look

uncut viper
#

Reading a book increments a stat with the same name as the book

#

Internal name

nova gale
#

"Condition": "PLAYER_STAT Current {{ModId}}_Book_PotionRecipes 1",

#

yeah

#

that

barren tapir
lusty halo
# calm nebula Does the Island context + outdoors work for you

Thanks to your help I learned what words to look out for in the docs. I just needed that and the Merge token (that I'd been already using for my Foliage/flowers... facepalms) and in the end, "LocationContext |contains=Island": false, works in a pinch. Thanks again! SDVpufferheart

calm nebula
#

Sorry! I'm running errands so you get me in tiny increments when I'm bored standing in line

strong kite
#

Alright.. I think I've finished spriting all of my recipe items! All of the ones I felt like I needed to make at least
They're basically almost all done, I just need to add buffs to like.. half of them or something lol

uncut viper
#

I actually don't remember the docs for SPU like at all, so... SDVpuffersquee

barren tapir
uncut viper
#

I didn't make More Books

#

I did make Button's Extra Books though

barren tapir
#

The other books mod then

#

I always get the two confused 😅

uncut viper
#

(More Books is the name of the other one so I'm not just being pedantic I promise 😛)

strong kite
#

I was surprised to get no errors when I loaded the game. Then I was REALLY surprised to not find any of the new items in the game.
I forgot to actually copy and paste the mod into the game's Mod Folder heehee

#

Ahh, there's what I was expecting

nova gale
#

"ahh, theres the wall of errors i was hoping for. The world makes sense again"

barren tapir
#

BTW, can I just say, making a C# mod from scratch has been infinitely easier than converting a CP mod to C#.

strong kite
#

omg who'd have guessed I forgot commas and had extra brackets LUL

limpid harbor
void aspen
#

Null is orange now congrats

barren tapir
#

Yep. I ate too many carrots

#

And now there's a tiny bus and a bunch of kids in my stomach. It's a real predicament

strong kite
#

ayy and I only had a few errors with the recipes themselves, though that includes forgetting a whole darn set of i18n entries heehee

#

Dang now I'm left not knowing what to do despite having a literal list written down on things I need to do for the mod

limpid harbor
barren tapir
#

Its Working!

#

IDK why the gif is slow

#

It was firing way faster in the recording

hard fern
#

Stopped writing my list in favor of baklava SDVpufferflat

barren tapir
#

Whelp, that didn't take long. I was curious what would happen if I set the reload rate to 0. Ended up dying due to explosive ammo

#

Whelp, time to figure out how to fertilize fruit trees

sharp hornet
#

Hello 🖐️ I'm currently adding (and not replacing) dialogue for Linus. Let's say I want him to say his new line every friday during fall, but apparently in vanilla he has already these (highlighted in yellow). Does my line will replace that ?

ornate trellis
#

those are said all Fridays/all Fridays when having 4 hearts
you can just add a fall_Fri key for the Fridays in fall, that should do the trick

dawn ore
sharp hornet
#

oh these numbers are heart levels ? i didn't know thanks

ornate trellis
#

yea

#

you can also do fall_Fri2 etc if you also wanna add specific heart level fall dialogue on Fridays

sharp hornet
#

i think i'll do that since the new line is basically a tip for the farmer, 2 hearts seem fair for this

hot geode
#

But if COP is the only option for HD-Modding I'm open for it x,x
I guess I just need to know where to start then

ornate locust
#

What is COP?

hot geode
#

Content patcher

ornate locust
#

Oh, never seen anyone use that abbreviation for it

latent mauve
#

We tend to use CP

#

(not sure where the O would come from in that abbreviation)

barren tapir
#

Whelp, time to see if the tree fertilizer book works

jaunty shuttle
#

How hard would it be in theory to make FS clothes go on mannequins?

#

Just wondering if it’s really difficult or something cause I saw there aren’t any

barren tapir
#

Am I completely off base for trying to use this to allow tree fertilizer to be placed on fruit trees?

private static void Object_placementAction_postfix(StardewValley.Object __instance, GameLocation location, int x, int y, Farmer who)
{
    if (!ModEntry.Config.EnableTree || !Utils.PlayerHasBookPower(who, "Tree"))
    {
        return;
    }

    Vector2 placementTile = new Vector2(x / 64, y / 64);
    TerrainFeature terrainFeature;
    string id = __instance.QualifiedItemId;
    if (id == "(O)805")
    {
        if(location.terrainFeatures.TryGetValue(placementTile, out terrainFeature) && terrainFeature is FruitTree tree)
        {
            var data = tree.GetData();
            string key = $"{ModEntry.ModId}_fertilized";
            string isFertilized = "false";
            if (tree.modData.ContainsKey(key))
            {
                isFertilized = tree.modData[key];
            }
            //if (data?.CustomFields != null && data.CustomFields.TryGetValue($"{ModEntry.ModId}_fertilized", out string fertilized))
            if (isFertilized ==  "false") 
            {
                if (tree.growthStage.Value >= 5)
                {
                    Game1.showRedMessageUsingLoadString("Strings\\StringsFromCSFiles:TreeFertilizer1");
                    location.playSound("cancel");
                    return;
                }
                if (isFertilized == "true")
                {
                    Game1.showRedMessageUsingLoadString("Strings\\StringsFromCSFiles:TreeFertilizer2");
                    location.playSound("cancel");
                    return;
                }
                //data.CustomFields.Add($"{ModEntry.ModId}_fertilized", "true");
                tree.modData[key] = "true";
                location.playSound("dirtyHit");
                return;
            }
        }
    }

}
brittle pasture
#

you're missing the return value to denote whether the item was used up, and also I think you need to patch a separate function for "can be placed here" check

barren tapir
hot geode
lucid iron
#

yea u can use spacecore for that sort of thing

lucid iron
woeful lintel
#

you can try smithy to make Furniture

hot geode
tough osprey
barren tapir
#

What's the name of your mod? I'm not seeing any of the logs you've added in the console

barren tapir
#

If so, you are missing a line

#

Give me a sec to find it

#

It should be

{
 "Format": "2.9",
  "Changes": [ ... ]
}
#

Finally, if it isn't your content.json file, you need to add the following to the content file:

{
"Action": "Include",
"FromFile": <Insert File Name Here>
}
jagged isle
#

I'm new to modding, and am making a very small mod for a school project. Can anyone tell me how to add a flower that can be foraged or picked up for a custom quest? I mean to a custom map in Tiled

#

like a dandelion or something

torpid sparrow
#

there's item delivery and item harvest, i'm not sure what specifically you need

jagged isle
#

my idea is a quest where you have to find and deliver a custom flower that can only be found in one specific area (the cave map i'm making)

#

im also using content patcher for this, so the quest has to be coded in that way

torpid sparrow
#

yep everything you want to do is possible with CP

#

and Tiled

jagged isle
#

although with how mad i am at this, i might just have it be a pre-existing flower and just have a player get it from a specific place

torpid sparrow
#

if u need help feel free to ask here, these are common things people create for their mods so a lot of ppl will be familiar and know how to do it

jagged isle
#

yeah i probably do

#

its my first time modding in general so

#

i just want to add a flower that can be foraged and such

torpid sparrow
#

tbh the map is hardest part

jagged isle
#

: (

torpid sparrow
#

adding a custom item is pretty straightforward and so is a quest

#

map has a few more steps

#

it's not TOO difficult but between the three, it's the hardest

hoary tartan
urban patrol
#

isn’t working how?

#

"Target": "Data/Buff",

#

Data/Buffs i’m pretty sure

hoary tartan
#

Thank you

#

Yep that fixed it! Thank you again

jagged isle
#

do you know which tileset the dandelion is a part of?

urban patrol
#

spring objects

#

90% of objects in the game are in there

void aspen
#

and cursors

urban patrol
#

not objects

void aspen
#

mb

jagged isle
#

gotta find that to put in tiled now, yay /sar

urban patrol
#

it’s in Maps

void aspen
#

do you want it to be pickable

#

or just some decor

torpid sparrow
#

they want to use it in a quest

#

lost item*

void aspen
#

interesting

torpid sparrow
#

although if you do that you don't really need the tilesheet since it won't be part of the map

#

you just

urban patrol
#

yeah you’ll have to spawn it somehow

torpid sparrow
#

use it in your quest

#

it's done w/ quest

#

iirc you set the object you want to deliver, with the coords you want it to be at

jagged isle
#

but if i want to place it in a specific part of the custom map?

#

oh

torpid sparrow
jagged isle
#

ok thanks

urban patrol
#

i’m pretty sure a quest like the berry basket or robin’s axe aren’t doable with just CP

torpid sparrow
#

its a lost item nic xd

deep cypress
urban patrol
#

oh i read wrong i thought you meant NOT specific coords

torpid sparrow
#

<x> and <y> are the X and Y tile coordinates to place the item at inside the given <Location>

void aspen
#

is fairy in that night event uses the same texture that fairy box uses

deep cypress
#

So, the The schedule animation square_X_Y_Z bit, has anyone worked with it? I am getting trouble getting my NPC to do anything.

Here is the Schedule:

"Mon": "800 Custom_JunkBeach 47 78 1 square_5_5_2/1400 Custom_JunkBeach 45 75 1 square_19_6_2",

void aspen
#

from companions

#

or night fairy is somewhere else

deep cypress
#

IRL or in game?

torpid sparrow
#

in game xd

void aspen
#

tbh im gonna sleep irl so nighttt everyone

deep cypress
#

The NPC? no

torpid sparrow
#

sleep a day to test schedules

ornate locust
#

No, you need to sleep a day ingame for schedules to update

torpid sparrow
#

if ur testing a monday schedule use cjb to put the day to sunday and then sleep

deep cypress
#

Oh, sorry, I thought you meant did I make a sleeping animation for the NPC!

torpid sparrow
ornate locust
#

Schedules are set at the start of the day

#

and BEFORE the start of the day save

deep cypress
#

Yes, I slept a day... I believe. Does the area need to be clear of items?

urban patrol
deep cypress
#

The location is added in C#

urban patrol
#

you should consider prefixing it with your mod id

#

but anyway square only takes two numbers

#

0800 Forest 79 74 3 square_8_4

deep cypress
#

The wiki said three? Did it change?

urban patrol
#

let me check

deep cypress
#

Emily in the Bar had three, I copied hers...

#

Maybe it likes a thing after the animation? Will try adding a thing,,,

urban patrol
#

oh hmm it does say it takes facing direction i wonder if that’s new

#

but i know two numbers works

#

do they go to both schedule points without you putting square in?

royal stump
#

the third number is optional, fwiw; the game uses both versions, and it just sets a facing direction preference if it exists

#

(well the variable is named preference, but it happens whenever they stop moving, ig)

ornate locust
#

I'm going to assume it's for when they pause or something? because when waking in a square, I feel like you face many ways

royal stump
#

yeah, if it's not provided they presumably just face whatever direction they were moving

barren tapir
#

I'm trying to get Tree Fertilzer to be placed on Fruit Trees. I've patched Object.canBePlacedHere so that the tile lights up green when hovering over the fruit tree with tree fertilizer.

Despite this, Object.placementAction is never called when trying to place fertilizer on the fruit tree.

This is despite the fact that placementAction is called when using the fertilizer on a wild sapling.

coarse pine
#

I want to make a seasonal portrait mod for a character, I have the images done but idk how to use them

urban patrol
# coarse pine I want to make a seasonal portrait mod for a character, I have the images done b...
Stardew Modding Wiki

Last edited by AirynS on 2025-10-23 07:04:19
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference bet...

coarse pine
#

thank youuu

tough osprey
royal stump
barren tapir
#

5 harmony patches later, lets see if this finally begins using tree fertilizer (I know for a fact the growth logic won't actually work, rn I'm just trying to print things to the terminal)

clear atlas
#

so guys I have a quest, this barn is from the "jen's Mega Coop and Barn", I love this mod but its just too...clean, it doesn't have any detail inside, I want to edit and make it more pretty, how can I do it?

barren tapir
#

FINALLLY IT IS TAKING FERTILIZER!

#

This is by far the most harmony patches I've had to do for a single book 😅

Now it's time to actually try and add the logic that makes them grow faster.

barren tapir
#

Thanks!

#

Hopefully this will only be the second most complicated power for me to add

#

-# I'm almost certain the book that let's you feed golden animal crackers to pigs will be more complicated

placid coral
#

A sneak peek of the lighting overhaul mod I'm working on. It's getting closer to a point where I'm happy with it, still many more effects to add though

#

There's another lighting mod I've seen, but it doesn't get rid of the existing shadows and doesn't apply shadows to the objects off your farm. So it ends up looking all weird, this should be fully coherent across the whole game, and the sun and shadows are all dynamic

gaunt orbit
#

That looks really nice! I like that it works with map objects too, like the fences. How much is that hardcoded?

placid coral
#

It's a sprite matching system, so it hooks in at the tile draw call level and identifies the indices there. So it should work out of the box with any kind of recoloring mods, new maps, etc. But any that add new content by editing the existing spritesheets or adding new sheets would not work.

I'll probably end up adding a system where other mod devs can supply a json in their mod folder that would give this lighting system all it needs. I've got a little dev tool that lets me open spritesheets and select things from there, set height/depth parameters, the lighting style, etc. so that would go open source too.

gaunt orbit
#

Oh wow, that sounds awesome

placid coral
#

Thanks!

gaunt orbit
#

I'm not sure what the code looks like so I have no idea how doable it is, but I think the tree shadows in particular might look better skewed instead of rotated

void aspen
#

I swear if it's gon be dynamic

placid coral
coarse pine
uncut viper
#

I think I agree with the suggestion of skewing because without it it lacks the implied angle we're looking at the shadows from, rather than top down, if that makes sense?

gaunt orbit
void aspen
#

A bit upsetting that it's pretty imposible to make it work with terrain due to how game handles it

#

100 😔

uncut viper
#

We just need someone not me to implement the depth buffer 😌

void aspen
#

Hi mobile users

placid coral
#

I have good news on the dynamic part... the plan is to have smooth updating throughout the day
Also, I will be making cliffs work. just haven't gotten there yet, it will be tricky

gaunt orbit
void aspen
#

I wonder if making a dynamic normal or height map would somehow do the trick

uncut viper
#

It is already a thing that exists, you would just need to... fix every single draw call in the game to account for it, I think

void aspen
#

Not sure how it's gon work lol

gaunt orbit
void aspen
#

Works for me

#

Looks fire

gaunt orbit
#

Oh it's definitely just mobile being terrible

void aspen
#

Discord being discord

#

Bonfire would be a better name

placid coral
#

my plan is to just infer cliff height by trying to match bottom/top cliff tiles, not sure how fragile that will be, we will see... and then get direction and try to project the shape out

desert tinsel
#

Good evening, guys! Could someone teach me how to add a mod to #mod-showcase ? If it's not too much trouble, of course. ^^💜

placid coral
#

Also, some things in the vid are still weird, no bus shadow, fences shadowing each other. so that will all be fixed too. vid is still early dev

torpid sparrow
stray trellis
#

Hi! I wanna put my face on walkabouts but the site just shows how to pack and replace an xnb and not how to drop it in the mods folder. I also wanna just use one sprite instead of layering it.

torpid sparrow
#

Oh god I’m yap supreme again

uncut viper
#

(Notable rules being (but not limited to), do you have permission to publish whats in the mod, no AI, no nsfw)

desert tinsel
desert tinsel
gaunt orbit
# uncut viper It _is_ already a thing that exists, you would just need to... fix every single ...

Honestly might not be that bad. Most things you could just use the inbuilt depth value as z... Which spritebatch technically does already. Mainly you'd have to set manual values for "flat" layers like back, buildings, and alwaysfront, and find a way to get spritebatch to actually write to the depth buffer

Though that doesn't account for translucency, the bane of every graphics programmer

uncut viper
#

I can assure you if it's within our rules then people would always love to see someone newer showcasing their own work SDVpufferheart

gaunt orbit
placid coral
#

Oh, I think I just understood the skew thing some of you suggested. Right now the shadows are straight on at the screen. but we are looking at the ground with some angle, so they should be skewed with that angle like they are projected on the ground? Is that right? Not sure how I missed that originally, that makes a lot of sense

uncut viper
uncut viper
stray trellis
#

My face.

What will eye color change do with this?

brave fable
gaunt orbit
uncut viper
#

@stray trellis I'm afraid I'm not sure what you mean with walkabouts but this image would be too HD to just put somewhere in the game on its own, you'd need dependencies if you're intending to use it as a portrait

gaunt orbit
#

You have to honestly, otherwise you lose the illusion of depth completely

uncut viper
#

What site are you talking about?

desert tinsel
uncut viper
stray trellis
uncut viper
#

I was mostly thinking about cliffs not trees and such

stray trellis
#

Also the farmer bases are so creepy

gaunt orbit
#

Yeah the map layers would be the trickiest thing

#

Quite possibly you would simply need to redo the whole layer system and all the maps with it

uncut viper
stray trellis
#

Just gonna shrink the hd image

#

I was gonna shrink it until crunchy

uncut viper
#

You'd have to shrink it down to fit and you'd lose... basically all of the detail, given that you'd be going down to like, 8 pixels

gaunt orbit
#

Even at 1:1 scaling the farmer's face is like 32 pixels max

stray trellis
brave fable
#

your image is seemingly about 4000x4000 pixels, and you'd be shrinking it down to about 8x8 pixels. you're going to lose virtually all the detail

uncut viper
#

But if you did still want to try, you'd want to use Content Patcher to edit the farmer's spritesheet. Or alternatively, use Fashion Sense to make an HD accessory or mask or something, which is probably possible, but I am not familiar with FS as much

void aspen
#

Sub pixel art my beloved

brave fable
#

you'd be better off just redrawing a rough facsimile

stray trellis
#

Oooooh, I see what you're all saying, I didn't think about that. Thanks!

#

The 8x8 thinbg I mean

brave fable
#

actually yeah FS HD accessories is a good call, those can do up to 4x more detail, so around 32x32 pixels for a headpiece of the same 8x8 size

#

it's still a great enough downsize that you'd be better off redrawing a pizza in up-down-left-right directions though hahah

void aspen
#

HD then upscale would be pretty funky lool

#

I still want to try the upscale mod one day

uncut viper
#

cough, cough

brave fable
#

well you can't really HD then upscale because both of them simply draw your image at 1x scale, rather than the default 4x scale for player sprites.

stray trellis
coarse pine
gaunt orbit
#

Run blueberry! Run while you still can!

void aspen
#

I see

uncut viper
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.

coarse pine
#

thanks lol

void aspen
#

I just thought of something

uncut viper
#

Keep it up!

void aspen
#

FromFile can be the vanilla asset as well right?

uncut viper
#

No

void aspen
#

Oh

uncut viper
#

Not unless you include a copy of the asset in your mod folder

void aspen
#

That's

#

Sad

brave fable
void aspen
#

Wait yeah I see why

brave fable
#

on the front page of the index there you can already see an 'iron man helmet' mod as an example for a 1x scale (non-HD, vanilla-style) headpiece, and 'vv's hd cute face pack' as an example for a 4x scale (HD, non-vanilla-style) headpiece

void aspen
#

Whole smapi cp unpacking thing

uncut viper
#

(I actually wonder if it'd be feasible for Content Patcher to let you do that for vanilla assets by just... supplying the actual xnb file... like aside from filepath climbing stopping you, there's no reason you couldnt just point the fromfile to the games own Content folder, I suppose?)

brave fable
uncut viper
#

(You wouldn't get any modded edits from it ofc but still)

brave fable
#

my mind is boggled enough already 🙂‍↕️

brave fable
#

i'll leave it to someone who's already patched seemingly every draw call in the game just to make things have rainbow colours

uncut viper
#

who is that

placid coral
#

does anyone know if there are test maps that might have every building and crop on the farm, or something like that? I imagine that would be helpful for something like retexturing alone.

brave fable
#

you say that but now i'm not even sure who it was. but it was probably you

uncut viper
#

the only rainbows i made recently were Agromancy but I patched no draw calls for those rainbows you're thinking of if so

brave fable
#

then it was atra 🙂‍↕️

uncut viper
#

i made those draw calls from scratch 😌

#

ill let atra know next time i see em that you nominate them for depth buffer

brave fable
placid coral
#

That's perfect, thank you!

brave fable
#

it's not really meant as a 'zoo'/'gallery' for all types of buildings and animals though, it's missing a lot of things. it'd be neat to see something like that created, though

#

of course you can always put a test farm together yourself with the commands on that wiki page, clearfarm + build + animal will get you half the way, and CJB item spawner + cheats menu will cover you for seeds and crops

uncut viper
#

Could make a custom farm map that has the Greenhouse property too to get them all planted, and just reuse that farm map/save as needed

#

(at least I assume theres nothing stopping that property from working on the farm itself)

brave fable
#

that's an interesting thought SDVpufferthinkblob i've not heard of any farms that do that

stray trellis
#

I shrunk it to the head and touched up the highlights

uncut viper
#

now im gonna have this nagging idea of a Debug Farm that has everything you could possibly wanna see in it. every building, every animal, every crop and each growth phase... hm. on the backburner for now

#

wouldnt be difficult to lock things like growth phases or animal spritesheets and such in stasis with a lil C#

brave fable
#

i suppose there's also no reason for the map not to simply be a 100x100 flat colour fullbright room

uncut viper
#

theres plenty of reason

#

the most major one being that 100x100 is far too small

#

what if i have 50 building mods

brave fable
#

eh just make location instances for a paginated gallery of buildings

uncut viper
#

we're reinventing pif

brave fable
#

pif the debug expansion ✨ i call it PDF

uncut viper
#

its got my vote of approval

brave fable
#

royalties 🫴

urban patrol
coarse pine
#

actually uhh

#

It seems like it's mostly working but in the social page the sprite is the default one

uncut viper
#

The social page (and calendar) doesn't use appearances

coarse pine
#

oh weird

#

what do I do then

devout otter
#

If you want your character's social page to change every season, you'd need to patch their default appearance asset every season.

coarse pine
#

I think I figured it out

#

nvm

coarse pine
devout otter
#

Do EditImage on it.

coarse pine
stray trellis
#

How good is Vortex for Stardew these days?

hard fern
#

its ok, i guess..??

urban patrol
#

i recommend stardrop instead

stray trellis
#

Ok, thanks everyone!

wheat tulip
#

Question - im toying with the idea of a sprinkler mod that covers a 9x9 space (why idk im just messing around with modding. probably not anything i would post) what do you feel would be a fair cost to craft it? right now I'm on 5 iridium bars, 2 radioactive bars, and a prismatic shard but idk if that is 'balanced' with the vanilla game. or would even be worth it to people in a modded game

ocean pagoda
#

Don't think this is good idea :)Who would put radioactive bars in sprinklers 😄

brittle pasture
#

the other ingredients are fair in a late game scenario

wheat tulip
#

Okay. what about the amounts? the other sprinkler recipes are 1 bar of each. im pretty set on 5 iridium bars but maybe 1 radioactive bar instead of 2?

#

by the time you're getting radioactive ore, iridium is an after thought so i figure 5 is fair lol

brittle pasture
#

an 9x9 sprinkler is more than 3x the watering size of a 5x5 sprinkler; I'd say 2 is fair

gaunt orbit
#

Also keep in mind that it would be 11x11 with a pressure nozzle

hard fern
#

one sprinkler for the whole farm XD

placid coral
#

it's beautiful

gaunt orbit
#

Almost 5 times a regular iridium sprinkler

#

Actually not counting the tile that the sprinkler takes it would be exactly 5 times

opaque crypt
#

Who's permission would I need to get to make mod addons? The OG code writer and the person that made whatever expansion (Always raining/sunberry/rsv)

opaque crypt
round dock
#

Insofar as ARV is concerned, it’s best to contact Hime

placid coral
#

@gaunt orbit the skew looks much much better, thank you! shadows look to be on the ground now

round dock
opaque crypt
#

Is that their name on nexus?

round dock
#

(to the extent that)

#

No, it’s HimeTarts

#

The author’s profile can be found on the mod page itself

devout otter
#

When you set a Special Order to not be repeatable, does that mean that you won't see it again if you fail it?

#

Or does that mean "not repeatable if you've done it."

brittle pasture
#

latter

devout otter
#

Thankee!

golden spire
#

If you fail this mission, it will explode.

shadow galleon
#

I hope there is a mod that notifies You when someone get inside your cabin .

verbal glacier
shadow galleon
#

Thankyou

golden spire
#

@elfin kindle

Hi, you're more than welcome to use Ayeisha's "special delivery" template to send players' multiple items\gifts from Mirren if Ayeisha exists. As I can easily see such a character sending multiple unwanted deliveries to someone.

"event.id/preconditions": "music/-200 -200/farmer 2 2 2 Ayeisha 3 3 0/pause 1500/speak Ayeisha \"Good Morning @. I have a special delivery for you today.\"/pause 500/showFrame Ayeisha 19/pause 800/playSound pickUpItem/speak Ayeisha \"Here you go. [itemid]$h\"/showFrame Ayeisha 8/pause 400/message \"A note is attached:\"/message \"'some kind of message'\"/end",
ornate drift
#

woahhh what happened with the server icon

#

morning guys

verbal glacier
#

star wars :) also good timezone

barren tapir
#

I think I'm gonna try and figure out the fruit tree fertilizer logic before work.

jagged isle
#

Could someone tell me if this code looks good, or if I need to change any of it?

barren tapir
#

But first I'm gonna do one more fire frame

jagged isle
golden spire
# jagged isle Could someone tell me if this code looks good, or if I need to change any of it?

these are 3 of my quests

        {
            "Action": "EditData",
            "Target": "Data/Quests",
            "Entries": {
                        "TheLimeyDragon.Ayeisha_Quest1": "LostItem/{{i18n:quest.AyeishaLostRing01}}/{{i18n:quest.AyeishaLostRing02}}/{{i18n:quest.AyeishaLostRing03}}/Ayeisha (O)TheLimeyDragon.Ayeisha_Ring Forest 42 10/-1/300/-1/false/{{i18n:quest.AyeishaLostRing04}}",
                        "TheLimeyDragon.Ayeisha_Quest3": "ItemDelivery/{{i18n:quest.Package.Kiarra01}}/{{i18n:quest.Package.Description}}/{{i18n:quest.Package.Kiarra02}}/Kiarra (O)TheLimeyDragon.Ayeisha_Package/TheLimeyDragon.Ayeisha_Quest4/75/-1/true/{{i18n:quest.Package.Kiarra03}}",
                        "TheLimeyDragon.Ayeisha_Quest4": "ItemDelivery/{{i18n:quest.Package.Alissa01}}/{{i18n:quest.Package.Description}}/{{i18n:quest.Package.Alissa02}}/Alissa (O)TheLimeyDragon.Ayeisha_Package/TheLimeyDragon.Ayeisha_Quest5/120/-1/true/{{i18n:quest.Package.Alissa03}}",

                        }
        },
#

I'd also avoid using apostrophes in ids

jagged isle
#

thanks

golden spire
#

you can always open the game's data to understand how it should be formated

jagged isle
#

got it

barren tapir
#

I may have lied about only doing one more frame

#

Oh God, I just realized how many maps I'm gonna need to make for if/when I make this mod a reality.

For context, it will be a mod that essentially adds permanent versions of calico statues to the skull caverns ☠️

jagged isle
#

I cant get my mod to load in game

#

wait hold on

#

nevermind i got it

void aspen
#

Ughh I forgot my mod idea I came up yesterday

#

I gotta start write things down

#

I hate my brain

rich seal
#

Relatable

strong kite
#

So according to the Unlockable Bundles docs, If I wanted to add new (presumably animated) packages for bundles I'd need to crate a custom JunimoNoteTexture. Would that basically just be taking the existing JunimoNote texture and adding onto it then replacing the vanilla one with that, or is there a simpler solution?

gaunt orbit
#

IIRC unlockable bundles lets you define custom gui textures, which is probably what you would want here, though you could probably also just use an editimage patch to glue some extra sprites onto the existing texture

#

I haven't used UB yet so that's only based on what I remember from talking to the author

strong kite
#

There is "ShopTexture" but I don't know if that's gonna have the animations of the bundle opening once you complete it

gaunt orbit
#

The author is here but I forgot who makes UB

strong kite
#

DeLiXxN

gaunt orbit
#

Oh right it's delixx

#

@spice inlet tntdove is looking for help with unlockable bundles, would you mind dropping in?

spice inlet
#

I'll get back to you in 10min ^^

strong kite
#

I'm just looking for exactly how I'd go about adding new colors of the vanilla bundles to use with the PagePackageIndex field, or if I should just settle for using custom ShopTextures

spice inlet
#

Hi, so just for clarification you're trying to change the bundle texture inside a book, like this one, right?

strong kite
#

Yup!

spice inlet
#

There's currently two ways to do that, one being the vanilla way with the little packages

#

the packages will draw from the JunimoNoteTexture of the bundle

#

so if you wanted to change/add the bundle packages you'd ideally add a custom JunimoNoteTexture

#

but you can also use ShopTexture, ShopAnimation and ShopCompletedAnimation to create a custom sprite

#

then it would be completely independent of the JunimoNoteTexture

strong kite
#

Ahh, Alrighty! And I've just noticed the "JunimoNoteTexture" field in the docs so I don't need to actually replace the vanilla texture

#

I'm realizing, I could also use a CustomJunimoNoteTexture to make things more compatible with the bigger backpack mod?

spice inlet
#

sure

#

haven't really added compatibility for bigger backpack to UB since it would require providing alternative JunimoNoteTextures for each theme, which is just messy to do ;;

strong kite
#

Yea that's understandable lol

spice inlet
#

currently I'd recommend "The Return Of Custom Backpack Framework"

#

it does the same thing and arguably even better

#

it already adds a scroll bar to the menu

#

doesn't touch the menu texture at all

#

If you just want a simple way for custom packages I could add a PagePackageTexture field

#

could just ignore the JunimoNoteTexture then

strong kite
spice inlet
#

Bigger Backpack is quite popular

#

really old mod too

strong kite
#

Bigger Backpack was what I was using before I started updating this mod. Since this mod is somewhat for personal use, I figured I'd just not use the bigger backpack anymore, mostly to avoid it looking really strange

#

Tbh part of me wonders if there would be a way to automatically recolor the vanilla package animation with any given hexcode, adjusting colors and shading automatically, but I actually can't imagine how hard that would be to code heehee

spice inlet
#

you could do that with a custom ShopTexture

#

keep it sort of greyscale and use ShopColor to draw the desired color

strong kite
#

Oh.. huh! I'll have to look into that then!

spice inlet
#

the little junimos in the demo are drawn that way:

strong kite
#

Ohhh okay!

#

I'll probably still need custom PagePackages for the more involved color schemes like these 3 I put together, but that sounds very useful otherwise!
Saves me from having to manually recolor each package I might want a different color for heehee

#

But yeah if you want to add a field for a custom PagePackageIndex, I'm sure I wouldn't be the only person who'd find that useful!^^

ocean pagoda
#

Does anyone know which font is used for the normal text in the game - looking for the cyrillic one as my mod is now using Cyrillic Pixel-7 Regular - but would love to make it similar as the OG one

strong kite
golden spire
spice inlet
#

seemed to work fine when I tested it just now

#

wanted to send you the prerelease build on discord, but can't due to your privacy settings

strong kite
#

Oh, oops lemme change that real quick then

#

Okay I think you should be good to do so now?

autumn tide
strong kite
#

Can I give myself a conversation topic with a debug command? not seeing anything on the wiki for it...

calm nebula
#

Sure!

#

There should be a debug command to set an action

#

Use that

spice inlet
#

hi atra, what are you up to ^^?

strong kite
#

I'm encountering this but I can't find a console command on the wiki to mark an action as unapplied 😭

placid coral
#

cliff detection progress

brittle pasture
strong kite
#

Ohhh okay

calm nebula
ornate locust
#

Alright my mysteru has evolved

calm nebula
#

Congratulations! What did it evolve into

#

Mysteru sounds like a Pokémon

ornate locust
ocean sailBOT
#

Log Info: SMAPI 4.5.2 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26200.0), with 235 C# mods and 516 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

ornate locust
#

I had them patch export Gift Tastes, and sure enough he's not on there

#

But here's the evolution:

#

PLAYER_HAS_SEEN_EVENT host 75160375 | true

#

this is the unlock condition for Zayne being giftable

#

and it is true in their game, but they have not seen the event

#

and it's only triggering MY gift taste patch, not Ridgeside's somehow

#

what in the actual hell could do this

golden spire
wispy bramble
#

have they been using debug commands to force events or using mods to "forget" them?

ornate locust
#

Also they had no idea who Zayne was

#

So they have not seen the even where they meet him

#

wait hang on I may have something (or I may not)

calm nebula
#

Show your patch and RSV's

ornate locust
#

omg it's the wrong event number and I couldn't tell because it's like one number off

barren tapir
#

@ivory plume Which methods should one look to patch if one were to add support for junimo chests added via Expanded Chests (https://www.nexusmods.com/stardewvalley/mods/7431) that have a unique inventory?

Nexus Mods :: Stardew Valley

Expanded Storage allows Content Pack Creators to add more custom storage options to the game.

#

Basically, I'm trying to have each junimo chest that has a unique inventory ID be its own machine network

uncut viper
#

why ping pathos specifically for that question?

rich seal
#

Is there any kind of game state query I can call on that sees if the player has ever turned children into doves?

uncut viper
#

there is not

rich seal
#

Curses

#

or no curses, apparently. There goes that idea.

ivory plume
#

PLAYER_STAT Current ChildrenTurnedToDoves 1 should work?

ivory plume
uncut viper
#

I didn't realize that was a stat! I was checking the CTs....

rich seal
#

I need to spend more time looking at the wiki if I missed that lmao. Thanks

uncut viper
#

keep in mind if whether a farmhand has doved anyone matters to you that stats are weird and not as reliable in multiplayer, when it comes to checking other players

#

but if you only care about the current player doing it then no issues

golden shadow
#

is it possible to add spouse dialogue for when the players health is below a certain number?

ivory plume
# barren tapir Yes

You'd need to patch several methods in the MachineManager to inject a new dictionary of custom machine groups (similar to the existing JunimoMachineGroup property). That said, it'd probably be much easier to submit a PR to support chest networks directly instead of trying to Harmony-patch it in.

barren tapir
#

Whelp, I guess I know what I've gotta do now

#

BTW, does anyone know where the skull cavern tmx files are? I couldn't find them in the mineshaft directory

uncut viper
#

The skull cavern uses the same maps as the regular mine

late pewter
#

Does anyone know if Tikamin557 is here? I want to ask them something about their coffee machine mod.

golden spire
#

they seem to be on here, but not posted anything in since march 2025

late pewter
#

Oh oh oh, cool, they are here!

#

Uuuhh... I might PM them and hope they respond.

barren tapir
uncut viper
#

I don't know for sure if it uses all 60 of them, but if it uses a map file, it will be one of the same 60 the normal mines uses, yes

#

The game just swaps out the tilesheets as necessary.

barren tapir
#

UGHHHHHHHHHHHHHHHHH WHY DO I HATE MYSELF

#

Also, time to retry adding a transpiler

#

Is this not how you try patching a private method?

brittle pasture
#

should be

clear atlas
#

can someone help me with my project? idk i need a lot of help since idk nothing about making mod/ detailing inside of a barn

barren tapir
#

Okay. Is there anything immediately and blatantly wrong with the following?

ocean pagoda
#

If it's hard to read - try to install TTS - so you can listen how to make mods

brittle pasture
#

well I don't have the IL on me so I can't tell what you're up to
I think that instruction won't work though

barren tapir
brittle pasture
#

if you need to jump to another instruction you should create a label on the instruction you want to jump to and then use that label

#

that's for creating a new label

barren tapir
#

I'm trying to leave a loop. The function has the following IL lines:

IL_00ab: ldloc.s 5
IL_00ad: callvirt instance string StardewValley.Item::get_QualifiedItemId()
IL_00b2: ldstr "(O)789"
IL_00b7: call bool [System.Runtime]System.String::op_Equality(string, string)
IL_00bc: brfalse.s IL_00c0

IL_00be: leave.s IL_012c

Which I'm 99% certain is the equivalent of

if (tackle.QualifiedItemId == "(O)789")
{
                break;
}
brittle pasture
#

you need to go to the instruction at IL_012c (via code matching as usual), grab the create a label from there, and pass that label as the operand into your jump instruction

barren tapir
#

Okay. Ugghhh it's been a day 😅

brittle pasture
#

understanding the way of the IL is a slow and steady process 🌊

brittle pasture
barren tapir
brittle pasture
#

tbh if compatibility is not important you can also yeet that entire block instead of skipping it

barren tapir
#

For the past... IDK, like 2 hours, I've been stuck on the phone while trying mod

-# Also, that was my original plan. All that line is doing is checking if the lucky shorts are equipped. I figured exiting would be a better approach though 😜

modern saddle
#

does anyone know how to learn coding lolol

#

i wanna make a mod but all i can make is maps so i should probably learn to code right-

#

(i dont know how to learn coding) ill take like suggestions </3

fading walrus
#

because a lot can be achieved with just json, which isn't coding

#

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

fading walrus
#

if you end up needing C#, people here recommend the yellow book, and my mom, a programmer, recommends w3schools

ornate locust
#

Content patcher "code" is very versatile

modern saddle
#

yk stardew valley expanded

#

like theres sections where you can visit that arent in the actual game

#

and they have their own little side quests

#

that kinda thing

#

also if i wanna learn to mod i think i needa learn to code icl

#

someone said that to me once so idk how to code-

void aspen
#

is it possible to do a food object that gives a ring-like light as a buff for a time

#

with cp or some framework

#

or theres no way but c# way

ornate locust
#

I made an NPC, building, crop, items, etc. without real code, just content patcher stuff

#

and quest

ornate locust
#

You can do quite a lot with content patcher

lucid iron
modern saddle
lucid iron
#

well, the vague is subjective on my part

#

im not really sure whats meant by "sections where you can visit that arent in the actual game"

modern saddle
#

theres locations where you can visit

#

that arent in the game its a mod

ornate locust
#

Yeah that doesn't need C#

modern saddle
#

i want to make locations you can visit

lucid iron
#

but i made a guess that you meant new locations and formulated response based on that

modern saddle
#

so all i gotta do is learn to code a wee little bit then?

lucid iron
#

you basically just need to learn how to write JSON, which is kind of like writing stuff into a spreadsheet

ornate locust
#

Nothing harder than JSON/Content Patcher stuff, it's fairly readable

severe cairn
#

Wait how did I not see that while searching when I made my map what the heck

#

u unless i did

lucid iron
#

for new location the other important thing is map making, which people do by tiled

#

it lets u paint with tiles basically

severe cairn
#

get tilesheetinator as an add on for Tiled too it'll save your skin lol

#

I did it without and... it wasn't ideal

#

much easier when I downloaded it 🙂‍↕️

lucid iron
#

back in my days we edited our maps in Content/Maps and copied it to the mod folder both ways up the hill etc

severe cairn
#

I did mine in my assets maps and linked the sheets to my unpacked files folder (without tilesheetinator) outside and also apparently had a duplicate tilesheet that wasnt a png and I had to go into the code to fix the references for it SDVIridiumKek the first few times using tiled sure was a time

#

Oh and never save when Tiled has an error due to not being able to find image paths
Even if you just opened a fully working map, if you save and don't fix the errors Tiled will get angry with you and it won't work even if you didn't make any changes except save the file SDVpufferwaaah

calm nebula
#

Button, iro, congratulations on finishing apple school!

#

Quick - what's your favorite apple?

#

Mine are pink ladies

fading walrus
#

And geeks for geeks!

ornate drift
#

more event making time

ornate locust
#

updating all my mod screenshots because I changed A Mailbox

lucid iron
#

@ivory plume question regarding the reference assemblies, how/when do those get updated?
I use mod manifest builder and i get these versions atm:

"MinimumApiVersion": "4.4",
"MinimumGameVersion": "1.6.15",
ornate drift
#

hmmm, is there a way i can make a certain item in a shop available after the player sees an event?

lucid iron
#

yea use a Condition

ornate drift
#

what are conditions

#

well i mean theyre self explanatory but like

#

is there an example i could use

verbal glacier
#

"Condition": "PLAYER_HAS_SEEN_EVENT TargetPlayer EventId",

lucid iron
#

you prob want Current

ornate drift
#

easier than i thought

#

thanks!

#

i should probably also consider adding mail messages

verbal glacier
ornate drift
#

ok ill just put current

#

why are you in a trashcan now

verbal glacier
#

we were talking about the binning skill

ornate locust
#

and the update's tested and working, woo

uncut viper
#

Current basically just means "you, the person playing the game right now. i am looking at You"

#

not necessarily a farmhand, not necessarily the host, not some context-based player. You.

#

(this goes for split screen too. its whichever split screen belongs to the person who needs the condition checked)

lucid iron
#

yea the reason why i think Current make sense here is bc it's a shop sell item that won't be net sync'd

verbal glacier
#

Thank you for the explanation SDVpufferheart

lucid iron
#

is fine for ppl to have different available stock depending on the condition

ornate locust
#

updated thumbnail and header too. Woo

ivory plume
barren tapir
#

IDK, what I'm doing wrong. I currently have the following:

// ----- Register Function ------
harmony.Patch(
     original: AccessTools.Method(typeof(FishingRod),
     "doDoneFishing"),
     transpiler: new HarmonyMethod(typeof(BookPowers), nameof(doDoneFishing_transpiler))
     );
// ------------------------------

private static IEnumerable<CodeInstruction> doDoneFishing_transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator)
{
    if (!ModEntry.Config.EnableFishing)
    {
        ModEntry.StaticMonitor.Log(...);
        return instructions;
    }

    CodeMatcher matcher = new(instructions, generator);
    MethodInfo getQualifiedItemIdInfo = AccessTools.PropertyGetter(typeof(Item), nameof(Item.QualifiedItemId));
    MethodInfo getIsLocalPlayerInfo = AccessTools.PropertyGetter(typeof(Farmer), nameof(Farmer.IsLocalPlayer));

    matcher.MatchStartForward(
        new CodeMatch(OpCodes.Ldloc_0),
        new CodeMatch(OpCodes.Brfalse_S),
        new CodeMatch(OpCodes.Ldloc_0),
        new CodeMatch(OpCodes.Callvirt, getIsLocalPlayerInfo),
        new CodeMatch(OpCodes.Brfalse_S)
        )
        .ThrowIfNotMatch(...)
        .CreateLabelWithOffsets(1, out var labelLocation)
        .MatchStartBackwards(
            new CodeMatch(OpCodes.Ldloc_S),
            new CodeMatch(OpCodes.Callvirt, getQualifiedItemIdInfo),
            new CodeMatch(OpCodes.Ldstr, "(O)789")
            )
        .ThrowIfNotMatch(...)
        .Insert(new CodeInstruction(OpCodes.Brtrue_S, labelLocation)
        );

    return matcher.InstructionEnumeration();
}

But am getting the following error:

[Money Sinks - Books for Dark Offerings] Mod crashed on entry and might not work correctly. Technical details:
InvalidProgramException: Common Language Runtime detected an invalid program. at System.Runtime.CompilerServices.RuntimeHelpers.PrepareMethod(RuntimeMethodHandle method, RuntimeTypeHandle[] instantiation)
#

The ellipses in the Log and ThrowIfNotMatch statements are just there bc of Discord's character limit

lucid iron
#

its cus u did a bad in the IL

#

try printing the IL after ur patch to see if something unexpected happened