#making-mods-general

1 messages Ā· Page 167 of 1

shut edge
#

i guess i COULD bother to make color variant wools but that seems....needless

#

i guess if i leave it this way it'll make it easy to do that in the future if i want to

pine elbow
#

trying to add my own personal use recolor of some rural outfitters shirts with sleeves but its not showing up in my game?

#

I've got it set up the same as how the mod author had their own shirts already there

uncut viper
#

is your json actually a json file and not a txt file?

pine elbow
#

json suffix

uncut viper
#

does your shirt file say .png after it?

pine elbow
#

I copied one from the teddy shirt i recolored and changed the name in the json file for my recolor

pine elbow
lucid iron
#

abigail gonna sword u in ur sleep

uncut viper
# pine elbow

it seems like the shirt picture is supposed to be named shirt.png

rigid oriole
#

atp she has such beef with me i don't think she'd even tell me she likes to sword fight/adventure

lucid iron
#

she'll show u

shut edge
#

feels like the game doesn't like the {{ModID}}s in the target field

uncut viper
#

the game doesnt care about tokens

#

its content patcher only

#

and content patcher is fine with tokens just about anywhere

#

with limited exceptions

lucid iron
#

it should be fine unless u got like slashes in ur mod id

shut edge
#

oh damn it

pine elbow
shut edge
#

forgot a { again lol

pine elbow
#

idk why my sleeves are blue and the collar is ahhhh

uncut viper
#

(probably underscores too)

pine elbow
#

i don't think that's allowed to be mentioned here is it SDVcharkrobus

shut edge
#

yeah maybe not

#

i'll delete

#

many mammoths have been killed in the creation of this mod...

#

huh, well i got it to make both wool and milk but milk is still shears

#

babby steps

#

feels like animals that get their data changed keep the old data and you need to get new animals, is that right?

#

"TargetField": ["{{ModId}}_mammothbrown", "ExtraProduceSpawnList"],

#

can i make this also target mammothblack and mammothwhite or do i need to just repeat the code block three times

#

three times is easy, anyway. guess if i did skins instead it would just be one.

brittle pasture
#

you have the code?

#

and yes, you need to repeat it

shut edge
#

i think i gotta restructure this whole thing anyway

brittle pasture
#

if they're not skins

shut edge
#

extra animal config does things....slightly confusingly

#

well that is also confusing

#

made one mammoth work with my new code....now they're all doing it correctly??

#

i guess maybe it's adjusting the harvest tool by item? unclear

#

computers am i right

brittle pasture
#

feel free to tag me in the future if you have questions about EAC
(though I'm currently touching grass irl so I'll probably be online only a couple hours per day)

shut edge
#

oh hi. neat mod, thank you

#

i am hammering square pegs into it's round holes at the moment probably

#

but i think i'm getting somewhere

#

my current code if you wanna peek at it, EAC stuff at the bottom

#

probably only the white mammoth is currently close to correct in that

brittle pasture
#

yeah the white mammoth entries look fine. the other ones should work too but most of them are unnecessary

shut edge
#

tusks are not currently appearing but that might just be bad luck lol

brittle pasture
#

it does need rather high friendship and only a 11% chance every day

shut edge
#

the concept here is i want all the thingsit can make in the animal data, and then use EAC to modify how those are harvested?

brittle pasture
#

yeah

shut edge
#

alright

#

aha

#

just luck indeed

#

perhaps i should actually make textures for tusk and milk

#

as they both just use the wool one

#

thanks for the assist, i'll fix the other mammoths up

#

oh right that was my other question, can i just slap ignorewinter in with the produceextention data?

brittle pasture
#

no, that would just be Fields, or just TargetFields-ing the animal

tiny zealot
#

solved this by using onEventFinished to force reload the map (and in the case of overrides, remove the overrides that were saved)

shut edge
#
            "LogName": "white mammoth ignorewinter",
            "Action": "EditData",
            "Target": "selph.ExtraAnimalConfig/AnimalExtensionData",
            "Priority": "Late",
            "TargetField": ["{{ModId}}_mammothwhite", "IgnoreWinter"],
            "When": {"HasMod|contains=selph.ExtraAnimalConfig" : "true"},
            "Entries": {
                        "IgnoreWinter": false,
                    }
                },    ```
#

like that?

#

well, i should set false to true

brittle pasture
#

just "TargetField": ["{{ModId}}_mammothwhite"],

shut edge
#

ah ok

#

rad, thank you

#

now to solve my map issues next i suppose. break time.

pine elbow
#

tried turning the oversized shirt sleeves from GH Peach Body into a FS sleeve variant and adding a brown stripe, but ingame it's invisible

#

not sure what's wrong as the sprite sheet looks the same as the other FS sleeves in the pack for it, and I've got the files named correctly

light bramble
#

Hey 6480, with regards to this message, is it ok if I took the art but like edited it? As long as I put credit for you as original asset creator?

faint ingot
#

can i use a content patcher condition to see if a player has received a specific secret note? I thought so but can't find the documentation

uncut viper
#

i dont think there is any token for that one no

faint ingot
#

oh dang

#

i had a whole plan : (

uncut viper
#

you can send a mail flag with a trigger action and the secret note GSQ though

#

and then have content patcher check the flag

faint ingot
#

sorry GSQ?

uncut viper
#

game state query

faint ingot
#

oh maybe that's what I was remembering

uncut viper
#

not usable in content patcher When conditions

#

without another mod to add a custom CP token

faint ingot
#

OK but I could say use CP to edit Data/TriggerActions, and send a mail item when they've received a secret note?

uncut viper
#

correct

#

dont bother with the If query though

#

use the Condition field on the trigger action

#

and just send the mail

faint ingot
#
            "Action": "EditData",
            "Target": "Data/TriggerActions",
            "Entries": {
                "{{ModId}}_Triggers_LewisNote": {
                    "Id": "{{ModId}}_Triggers_LewisNote",
                    "Trigger": "DayEnding",
                    "Condition": "PLAYER_HAS_SECRET_NOTE Current 19, PLAYER_FRIENDSHIP_POINTS Current {{Russell}} 1500",
                    "Actions": [
                        "AddMail Current {{ModId}}_Mail_LewisNote",
                    ]
                }
            },
        },```
#

look OK?

uncut viper
#

AddMail Current {{ModId}}_Mail_LewisNote received if its just a mail flag with no actual letter to go with it

faint ingot
#

Oh right, thank you

#

actually wait in this case it will be a letter

uncut viper
#

this will also only trigger one time ever, if that matters to you

#

even if you remove the mail later

faint ingot
#

I think that's fine thank you for the heads up

tranquil stone
#

If there is an outdated mod or broken mod, and the permissions on the nexus page say you can edit post patches etc ( as long as credits are given) should you still reach out to the author for permission? New to modding and don't want to start off on the wrong foot lol

fossil osprey
#

If the page says yes, then it's alright

#

And if the author complains, then it's kinda their fault for not modifying the permissions

acoustic summit
#

You can still reach out to let them know, many are happy to hear / be made aware that someone is taking care of their mod šŸ™‚ And it covers your bases if they are really against it

tranquil stone
#

Thats fair, I appreciate it. One more question as well new to stardew valley modding but not necessarily coding* C# was the first language I ever learned and the Jsons are pretty straight forward. However I was curious if there is a video or more in depth article I can read for what tools can be used to debug etc. as the current mod im looking at SEEMS to be written correctly however ingame is different that whats written in the json (looking in the nexus page posts alot of folks are having similar issues as well)...

acoustic summit
#

Im not sure about a guide per say, but I always reccomend NoClip, LookupAnything, DebugMode, Profiler (particularly for c# mods) and SkipIntro for when you are testing mods. You can also use https://smapi.io/json to double check if json is correct. Patch reload can also be used to test some changes without reloading

tranquil stone
#

patch reload sounds like a HUGE time saver lol making changes and restarting constantly is rough lol

acoustic summit
#

When was the last time the mod was updated? Knowing when it broke can give an idea of how it broke

tranquil stone
#

Last updated
24 July 20243:38PM

#

the Smapi.io link actually may have already helped solve the issue

acoustic summit
#

Sounds like it was probably 1.6.9 then that broke it. Oh nice!

tranquil stone
#

I need to learn more about writting for content patcher lol the "logic" makes sense but I have never used that format so I should probably brush up on formating etc

acoustic summit
#

!cp you could check out that bottom link if you havent already; the modding wiki has a tonne of amazing resources for cp

ocean sailBOT
tranquil stone
#

might need to read up on it

#

looks like github has a nice article as well! Thank you!

#

so if I understand... sorry for all the questions šŸ˜…
if you were to add... say a new crop.. you would "load" the asset and if you wanted to add it to the shop and edit the price you would then "edit" the asset and target the shops.xnb from the SDV game itself?

acoustic summit
#

Yep thats about it! You'd also need to "edit" the crops data from the game after "loading" the needed assets for that crop (like its sprites and stuff)

#

Example from wiki;
{ "Format": "2.4.0", "Changes": [ { "Action": "EditData", "Target": "Data/Crops", "Entries": { "Example.Id_CucumberSeeds": { "Seasons": [ "summer" ], "DaysInPhase": [ 1, 2, 2, 2 ], // grows in 7 days with four growing sprites "HarvestItemId": "Example.Id_Cucumber", "Texture": "{{InternalAssetKey: assets/crops.png}}", "SpriteIndex": 0 } } } ] }

tranquil stone
#

Ah right, give the crop its data of course

tough crater
#

When looking at the decompiled data for Stardew, I can find the code for the GSQ PLAYER_PLAYER_RELATIONSHIP, but a comment says to refer to a different part of the code. Am I supposed to replace any of the words to make it work?

tranquil stone
#

in the Edit data action with target being shops wouldnt you need to add a price?

"Action": "EditData",
"Target": "Data/Shops",
"TargetField": [ "SeedShop", "Items" ],
//"When": {"Enable Basic Pack": "true"},
"Entries": {
"{{ModId}}_TestSeeds": {
"Id": "{{ModId}}_TestSeeds",
"ItemId": "{{ModId}}_TestSeeds",
"Condition": "SEASON summer",
"Price": 20,

However looking at the wiki if you dont add "price" it would be default price? but if its a new item.. how would it have a defualt price unless specified?

acoustic summit
#

You need to use the same key as you used in cropData in objectData to create the seed item

#

And that is where you can determine default price

#

The way you've done it will ignore default price though, which I think is correct (unless you want the seed to sell for as much as you buy it for)

lilac citrus
#

I'm making a mod editing tool in Unity.

Is there a list of all of the valid Map locations for schedules?

tranquil stone
acoustic summit
lilac citrus
#

Thanks! šŸ™‚

Im so proud, you can click a little guy in the scene and set its position. Going to be sooo much fun to put little dudes in the game!

My next step is going to be allowing the user to change facing direction and animation visually, and add schedule keys from a little widget maker. Once it's done I'll put up an itch.io link.

#

I already have the character creator mostly done.

hard fern
#

What does it mean if i had a dream about sdv mapmaking...

acoustic summit
#

It means its time to get to work SDVkrobusgiggle

tough crater
hallow urchin
#

Hi, has anyone ever figured out if it is possible to use arrays/lists with GMCM? While I can create and edit arrays fine with just using config.json, whenever I try to read it I get a bunch of errors with GMCM

#

I'm trying to create a list of custom options the user can edit but having some trouble

teal bridge
#

Fixed-size lists are somewhat doable with a lot of hacks. Variable-sized lists, I'd say don't bother.

lucid iron
#

You can make a drop-down with string option, or make a bunch of checkboxes, but you need fancy custom thing for anything more elaborate

final sequoia
#

If I want an event or something to happen when it is not a specific condition, I put a "!" in front of it, right?

So if I want an event to not happen on Year 1, Day 1 (i.e. not the very first day) but any day after is fine, would I do "/y !1/u !1/season !spring"? I am not sure if that says specifically not Spring 1, Year 1, or if that says not in Spring, not on the day 1, not in year 1 (all three individually).

calm nebula
#

There should be a condition for "days played"

#

Use that one insteqd

flat sluice
oblique meadow
#

Silly question for you all. When making maps in Tiled, have you seen an issue when you clone an existing tile on your map to use again it creates a new tilesheet reference instead of using the same. I have 5 of the same sheet now

final sequoia
#

Oh, thank you. That is much more elegant!

silver pelican
oblique meadow
#

Right click to clone.

#

I might ctrl click to find the first layer a tile is on. But otherwise, its all right click

silver pelican
oblique meadow
#

Yeah. It's such a weird thing. I dunno. Doesnt hurt anything per se. Just annoying

tranquil stone
#

someone should put up a teach stardew modding gig on fivver lol

brittle ledge
#

Tutorials are free though?

#

!moddingwiki

ocean sailBOT
tranquil stone
lucid iron
#

Just nerd snipe ppl in this channel

brittle ledge
#

the one I just linked to is not? There's plenty of CP tutorials.

lucid iron
#

Modding a single game is a relatively niche skill compared to learning how to program in general

#

I don't see a market for this

tranquil stone
#

I'm not saying its unhelpful Its VERY helpful I've been reading it almost all day. I'm saying for little questions here and there and helping to understand the theory/concept its nice to brainstorm with another human vice an article

teal bridge
#

"Someone should" - be the change you want to see, my dude.

brittle ledge
#

if you want to ask questions that's what this channel is for, and it's also free

calm nebula
#

(Tbh I associate fiver with insultingly low pay.)

#

Like, wouldn't get out of bed for that, would rather sell plasma bad

brittle ledge
tranquil stone
#

I'd pay 100$ for an hour of screen share and voice chat

teal bridge
#

Most of us would rather do our own thing and receive $0 (or whatever trickle of DP the DPers get).

tranquil stone
#

but nonetheless I feel sorta bad asking 100 questions lol but if yall dont mind I thank you all in advance!

lucid iron
#

Hobby wew
Job 🚮

brittle ledge
#

If you're actively trying to learn people generally don't mind a lot of questions!

oblique meadow
#

Only time ive seen people refuse to help is if you ask the same question a number of times, or argue with the answer

tranquil stone
#

I guess the issue I have is C# C++ they have variables "if-then" etc it was easier to grasp and it was sorta linear. Maybe I just don't understand the framework/conditions lol Edit: I learned C# and C++ 8 years ago and am still in IT but network operations and not coding so i've lost alot of it lol

brittle ledge
#

Are you familiar with JSON as a syntax?

flat sluice
#

Hi,
I'd like to ask, when creating an NPC, I wanted to add a mail. It won't trigger any event or do something else (just a debug one), the only thing I want from it is to show it in my mailbox, like any other mail. Sadly, I'm not quite sure what should the code for mail include. For now, I have this code below (or here: https://smapi.io/json/content-patcher/31fb3c80acea439fbd38736eb4a203ff):

  "Changes": [
    // triggering mails
    {
      "LogName": "Eleanor - mails",
      "Action": "EditData",
      "Target": "Data/Events/Farm",
      "Entries": {
        "{{ModId}}_mail_DebugT": "null."
      }
    },
    // the mail itself
    {
      "LogName": "Eleanor - mails",
      "Action": "EditData",
      "Target": "Data/mail",
      "Entries": {
        "{{ModId}}_mail_Debug/x {{ModId}}_mail_DebugT": "StrojvedouciDenis.Eleanor-DEBUG:mail_Debug"
      }
    }
  ]
}```
However, for some reason I don't quite know, I can't trigger the mail (just sleep to next day is correct, right?). I guess that I missed some part of the code (inspired by SVE's `Mail.json` file as I found https://stardewvalleywiki.com/Modding:Mail_data not providing enough information, if any; wrong wiki page?), but I don't know.
Would anyone be willing to help?
Stardew Valley Wiki

← Index

tranquil stone
calm nebula
brittle ledge
calm nebula
#

"x {{ModId}}_MailKey": "null" if you must

#

The x sends the mail

#

But people tend to use trigger actions now

tranquil stone
brittle ledge
flat sluice
brittle ledge
#

When I'm looking for examples I typically look for a small mod that's doing the same thing I want to do.

#

e.g., if I want to add crops, I look for a mod that adds two or three, not, say, Raffadax or Cornucopia

tranquil stone
#

Makes sense

tranquil stone
flat sluice
royal stump
#

SDVpufferlurk the main thing I'd say about json (and CP mods) is that it's an object notation, rather than a programming language, so it just describes a static thing that is read by another program

flat sluice
royal stump
#

(though reading up, button's tutorial presumably covers that)

brittle ledge
#

correct, you do still need to edit both the triggers and the data/mail itself

#

(is my understanding)

tiny zealot
#

@flat sluice discord nuked my reply @ i guess

flat sluice
ocean sailBOT
#

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

tranquil stone
flat sluice
# flat sluice And I should do that by the way I did?

To be precise, I should remove the

    {
      "LogName": "Eleanor - mails",
      "Action": "EditData",
      "Target": "Data/Events/Farm",
      "Entries": {
        "{{ModId}}_mail_DebugT": "null."
      }
    },```
part, rewrite it with the provided example and keep the
```    {
      "LogName": "Eleanor - mails",
      "Action": "EditData",
      "Target": "Data/mail",
      "Entries": {
        "{{ModId}}_mail_Debug/x {{ModId}}_mail_DebugT": "StrojvedouciDenis.Eleanor-DEBUG:mail_Debug"
      }
    }```
part?
brittle ledge
#

Pretty sure you should remove the x precondition since that's an event thing

#

just a sec, let me grab an example from my mod

tiny zealot
#

your key should just be the mail's id: "{{ModId}}_mail_Debug": "mail contents here"

royal stump
#

so swapping textures, adding objects/NPCs that act like the other stuff already in-game, etc, is a lot quicker/safer to add via CP

flat sluice
brittle ledge
#

Here's a trim from my Elliott mod that adds four letters: ``` {
"Action": "EditData",
"Target": "data/mail",
"Entries": {
//Penpal letters
"elliott_penpal1": "{{i18n:elliott_penpal1.text}}%item conversationTopic elliott_writing_letter1 7 %%[#]{{i18n:elliott_penpal1.title}}",
"elliott_penpal2": "{{i18n:elliott_penpal2.text}}%item conversationTopic elliott_writing_letter2 7 %%[#]{{i18n:elliott_penpal2.title}}",
"elliott_penpal3": "{{i18n:elliott_penpal3.text}}%item conversationTopic elliott_writing_letter3 7 %%[#]{{i18n:elliott_penpal3.title}}",
"elliott_penpal4": "{{i18n:elliott_penpal4.text}}%item conversationTopic elliott_writing_letter4 7 %%[#]{{i18n:elliott_penpal4.title}}"

        },
    },```
#

the i18n part is where the actual text is, you can ignore the conversationTopic bit if you don't want a CT

tranquil stone
flat sluice
# brittle ledge Here's a trim from my Elliott mod that adds four letters: ``` { ...

So this code adds the mail itself, but I should do triggering that mail with the code like it is here: https://github.com/atravita-mods/StardewMods/blob/34f5e2013f95aba2c980c9dcf6ef44f0f96654be/ContentMods/[CP] Spam Mail/assets/sendmail.json#L372
Am I right?

GitHub

Contribute to atravita-mods/StardewMods development by creating an account on GitHub.

tiny zealot
tropic stag
#

I've been searching for a while now, and is it true that there's no true solution for knowing what quests have been completed/knowing when a quest is completed? I want to send a letter when a quest is completed but I can't see a way to do that? or am I just looking at things wrong...

tiny zealot
#

i think that's right. there's no trigger for a quest being completed, and once it's completed there's no record of it left to check.
one workaround is to go one level higher and attach the thing you want to do (send mail) to the thing that completes the quest (e.g. an event) instead of to the quest itself

hallow urchin
proven spindle
#

If it's a quest you created you can add a trigger action to the end dialogue to set a mailflag

tropic stag
#

I have just used a super simple LostItem quest which functions almost exactly like Robin's axe quest. Is it possible to attach mail to that or do I need to restructure the quest slightly

royal stump
#

if nothing else, it seems like quests generate a conversation topic when they're done? if so, a trigger action could check for that at DayEnding to send mail

Game1.player.autoGenerateActiveDialogueEvent("questComplete_" + this.id.Value);```
tropic stag
#

Nice. I'll look into this. Thanks

#

I've spent the last hour writing a complex system which tracks the QuestLog and caches the last known data of any quests that are removed, including whether they were completed or removed without completion. I was in the final stretch of figuring out how to save data to disk when I thought "maybe I should ask if there's an easier way"

#

This has happened twice now where I do way more work than I need to lol

royal stump
#

I think this kind of setup should work, though I haven't tested CT stuff much

"Action": "EditData",
"Target": "Data/TriggerActions",
"Entries": {
    "{{ModId}}_QuestCompletionMail": {
        "Id": "{{ModId}}_QuestCompletionMail",
        "Trigger": "DayEnding",
        "Condition": "PLAYER_HAS_CONVERSATION_TOPIC Current questComplete_YourQuestIDHere",
        "Actions": [
            "AddMail Current {{ModId}}_YourMailFlagHere tomorrow",
        ]
    }
}```
#

or just set a flag to check later, etc, depending on the specific setup

#

(or whatever the C# asset-editing setup would be if you're on the code side SDVkrobusgiggle)

tropic stag
#

Are conversation topics removed if you have the conversation? Or does it stay in memory for the 4 days I'm seeing on the wiki?

royal stump
#

they're not tied to any specific NPC (or actual dialog) and basically work as temporary flags, so they should persist until the expiration date

tiny zealot
#

thanks, esca! i wrote the current version of the dang wiki section on how CTs work and i forgot there was a questComplete auto-topic SDVpuffersquee

tropic stag
#

hell yeah, thanks for the help guys

tropic stag
#

Yes, I did try Game1.player.questLog.OnElementChanged first but after hooking that up to a Log() I was not seeing any changes when I cancelled or added quests so I gave up on that

#

I was very likely doing something wrong but I couldn't figure out what

lucid iron
#

Hm isn't there new quest complete events

#

For each type

#

If u be in C# then u can use those, many previous answers were based on doing stuff in content only

calm nebula
#

Tbh content only hacks also are useful in c# land

#

Like, for a lost item quwst, you bet I would have just dropped an $action AddMail in the dialogue you get when you return the item

tropic stag
#

man

royal stump
#

definitely a cleaner option than a trigger, if you can throw that in SDVkrobusgiggle

tropic stag
#

that especially sucks I missed that, cause I was staring at that part of the wiki for so long

#

but there it is, right at the top lmao

acoustic lintel
#

Hey! Can anyone tell me how to schedule ā€˜funLeave/jobLeave’ data for a custom NPC spouse? I’ve done it backwards I’m sure.. I put the dialogue in and just kind of expected him to go off and do one of his usual days randomly at some point during the week, but when I tested it he always just stays on the farm so I’ve obviously missed out some important information. Any advice appreciated! I’ve almost finished this is pretty much my last hurdle šŸ˜®ā€šŸ’Ø

latent mauve
#

You do need to set him to go somewhere in the married schedule

acoustic lintel
#

(I put in MarriageDialogue.json ā€œfunLeave_nameā€: ā€œtextā€ etc)

latent mauve
#

The dialogue json is only for the lines spoken, not the actual NPC movement

acoustic lintel
#

I thought so, do I need a separate json file for marriage schedule? Or can I lump it in with the normal schedule?

tough crater
#

jobLeave is also only used by Elliot and Penny. I think I saw that if you wanted to use them for an NPC, you need to use C# to make it work

acoustic lintel
#

Ahhh ok gotcha!

#

I’ll scrap that then.

tough crater
#

You can still use fun_leave to make your character "go to work"

acoustic lintel
#

Got it šŸ‘ thank you

latent mauve
#

marriageJob is the schedule key that needs C#, you can still do the rest with a schedule starting with the marriage_ key

acoustic lintel
#

So would I just add fun leave to the normal schedule? Sorry for all the questions. It’s my first mod. It’s been a journey

#

Ahh okay. So ā€œmarriage_funLeaveā€?..

velvet narwhal
#

i have been summoned suslysella

#

the funleave/funreturned is a very specific key

#

in Character/Dialogue/marriageDialogue<NPCNAME>

#

funLeave_<NPCINTERNALNAME>
funReturn_<NPCINTERNALNAME>

tough crater
latent mauve
#

^

velvet narwhal
#

i think what's also missing context is:

latent mauve
#

Correct, I was typing up an example, funLeave is not a schedule key

velvet narwhal
#

Characters/schedules/<NPCINTERNALNAME>

tough crater
#

What's the official purpose for funLeave and funReturn?

#

Is it just a random day?

velvet narwhal
#

is where you put the schedule for them to physically move

#

that's their dialogue if they leave the farmhouse

#

if the schedule demands it

latent mauve
#

Yep, doesn't matter what they are leaving FOR in the schedule (fun or work)

#

The game doesn't know that distinction without C#, so it's all "fun"

#

You would not use fun anywhere in your schedule key, if they are leaving the farm while married, it's assumed

acoustic lintel
#

Right, so in the marriage dialogue json I put ā€œfunLeave_nameā€: ā€œdialogueā€? I’ve got that part. And in schedules I put what? šŸ˜… sorry it’s not sinking in

#

Does npc internal name just mean their name?

tough crater
#

Marriage schedules ALWAYS end with /bed

latent mauve
#

So for example, if X is going to the saloon on Friday night, you would use marriage_Fri as the schedule key, and it goes in the normal schedule file

acoustic lintel
velvet narwhal
#

i see there is a disconnect

latent mauve
#

funLeave is used as a DIALOGUE KEY only, not a schedule key.

acoustic lintel
velvet narwhal
#

it's not you, it's the game's bs

velvet narwhal
#

those are all of the valid marriage dialogue keys

latent mauve
#

So you can keep that in dialogue but you ALSO need a schedule key starting with marriage_ that takes the NPC off the farm to even get the game to use the dialogue line

#

I can't really explain it any more clearly than that, I am fighting a migraine today

velvet narwhal
#

there could be more added in 1.6+ but i haven't bothered to add them because if you want to write more dialogue than that, there's better ways (like randomization)

acoustic lintel
#

Okay I think I get it now. Thanks everyone I really appreciate it šŸ™šŸ¼

strange dew
#

im writing my first event and i think im almost done ><

#

im trying to have the event start in the quarry mine entrance specifically, but its technically connected to the regular mine entrance. does anyone know how to specify that?

tough crater
#

Set the map to the mine, then move the viewport coordinates to be where the quarry mine entrance is

strange dew
#

wouldnt that still trigger the event when they walk in the normal mine entrance though?

tough crater
#

I think there's an event condition where it only starts the event if you enter a map on certain coordinates

strange dew
#

okay, ill look for that. thank you!

tough crater
#

No problem!

inner harbor
#

Query: I know Content Patcher (or Smapi) added in the option to set three gender options in dialogue, I think using this code: ${Mr.^Ms.^Mx.}$ but how do you set the game to recognise that you are using the third option? Is there something else you need to do in the content pack, or can I just include the code within it? (code taken from Disappearing Villagers, a new mod that includes it)

tough crater
#

Let me know if I'm doing this the wrong way, but I'm attempting making tokens again. This is based on a set of dynamic tokens I wrote in my JSON.

The name to call I'm trying to call in my JSON is sevenA, and in my C# code, I put a string that's meant to put 700 in the code.

I originally did this in my code by using {{7am}} which turns into 700.

What might I be doing wrong? SDVpufferthinkblob

lucid iron
tough crater
dim yew
#

Is there an alternative schedule debugger since GIMA doesn’t work in 1.6? 🄺

#

I just need the get schedule command

inner harbor
tough crater
#

I don't know of anyone that's made it work

velvet narwhal
#

was it... GNT? i don't remember the gender mod

inner harbor
#

okay so maybe I'll just stick to my old way

velvet narwhal
#

where's tia

lucid iron
#

You should use the new way because u can have less dupe text

#

This is true even if you do not set the third value

velvet narwhal
#

i forget, does it work in mail now too?

#

or do we still have to use the full pipe suslysella

lucid iron
#

But since undefined is 1 value while ppl can have various pronouns, the gender neutrality mod provides tokens that ppl can use

inner harbor
#

I feel several ES writers are adding in options to config, but i also like to minimize config options

uncut viper
tough crater
#

OH

#

nvm then lol

#

Idk where I heard that from

inner harbor
#

Yeh but setting farmer as undefines

#

One cannot currently do that?

tough crater
#

It'd only work through modding

uncut viper
#

ah, i have misread

tranquil stone
#

adding a entirely new crop you need to also have Json assets and use Json assets "formating" from their github right? its not just content patcher

uncut viper
#

No

#

json assets is no longer necessary

#

content patcher can now do the job of several old popular frameworks

#

using json assets for a modern mod is not recommended

tranquil stone
#

mmm maybe im blind.. I missed the fields in the wiki but on json assets github the fields are right in my face lol

uncut viper
#

content patcher makes edits to the game data. it's a generic framework not geared toward adding any particular kind of thing

#

if you've unpacked your files, you'll see there's a Data/Crops json and a Data/Objects json. You can edit those two assets with content patcher

#

along with any of the other data files you find in there. or map files. etc

tranquil stone
#

Yup I unpacked them! maybe I'm misunderstanding..šŸ˜…

uncut viper
#

it can be a good idea to find a small mod that already does the idea you want (adding a crop) and seeing how they did it

#

as long as the mod was made after 1.6 ofc

tranquil stone
#

right ok so creating a json and inside content.json you would want to "load" the new crops with the target being data/crops. and the from file field (this is the json I created)

rigid oriole
#

You want to "editdata" to add new crop data

#

you "load" your new sprite assets (images)

tranquil stone
#

ahhh so loading spites and editing (basically the games code to make changes to vanilla or ADD whatever your trying to do)

uncut viper
#

you only really want to use Load if the asset doesn't already exist, because if you Load into an asset that DOES exist, like Data/Crops, it will replace the entire Data/Crops with your file

tranquil stone
#

I was thinking load was like in a twisited way of thinking about it "injecting" your new data

tranquil stone
uncut viper
#

EditData will edit the data of the existing Data/Crops

#

and will not involve any fromfile

tranquil stone
tranquil stone
#

Thank you

smoky delta
#

how do I make a mail with question fork event?

#

i'm really confused

#

only if you choose a specific answer

uncut viper
dim yew
#

Is it possible to conditionally change an NPC’s home coordinate in 1.6 or will that cause bugs and death and chaos?

uncut viper
#

iirc as long as they have a fallback home that doesnt change its fine

dim yew
#

Right now I am getting bugs and death and chaos and I’m not sure if that’s the reason or if it’s something else

uncut viper
#

just in case

tranquil stone
#

I grab mods off nexus that add a single crop(within a week or two upload date) take a look at the files theres no content json though... crops and objects folders and crop and object jsons in them but theres no editdata anywhere how is the data/crops being edited lol for these new crops? this is why im confused I think lol

dim yew
#

with this he keeps spawning at the beach at 6 5 and of course that's on a building tile so it gets super frazzled

#

Which makes zero sense

uncut viper
#

there is no fallback home in that list

#

unless thats not the whole list

dim yew
#

How do you write a fallback home?

uncut viper
#

by fallback i just mean like in the same way the spring schedule key is used if no other valid key is found

#

if the player has not seen that rydenrescued event and has not reached mine level 120, then they have no home

#

but they need a home

dim yew
#

That's so true

#

and also makes sense

uncut viper
#

so just make sure there is always at least one home that will be true for them to use

calm nebula
#

Technically there is always a fallback home

uncut viper
#

the town, right?

calm nebula
#

If you enjoy your npc being dropped off dead center in town

#

Like lost goods

dim yew
#

šŸ‘ā¤ļø

#

Let’s see if it’s still bugged after that fix

royal stump
dim yew
#

Are there any other noticeable issues with that home json

tranquil stone
uncut viper
#

can you post a link to the mod?

tranquil stone
#

Sure!

royal stump
#

they might not have tagged the reqs correctly, but you could check the manifest.json's ContentPackFor to see which framework reads it

#

JA packs have a particular folder structure with subfolders for each item category, etc

tranquil stone
uncut viper
#

that has Json Assets in its requirements

tranquil stone
uncut viper
#

that one also does

tranquil stone
#

sorry I think this is what I was looking at but the manifest is

#

yeah I see that now

#

so they are using old frameworks..

lucid iron
#

You should follow a content patcher crop mod instead yeah

tranquil stone
#

ok gotta look at them more carefully then

velvet narwhal
#

cornucopia afaik doesn't depend on JA, so you could glean some information off of that, but crops are convoluted

uncut viper
#

tbh im kinda surprised that you managed to pull 2 recent JA mods

lucid iron
#

Cus they had crop in the titles

velvet narwhal
#

it's seeing a resurgence thonkmuvi

royal stump
#

clicking through the crop category itself, it looks like a bunch are still using JA
(especially the small ones)

uncut viper
#

Cornucopia is a mod that adds a lot of crops but i was hesitant to suggest it bc it can be very overwhelming

tranquil stone
#

yeah was tyring to find a 1-4 crop mod to get an idea

velvet narwhal
#

uhhhhhhh

#

untangling SVE is a pain in the ass but they do have minimal crops iirc

calm nebula
#

(Mouseear cress.)

uncut viper
#

(ill reword: im surprised theres still that many people using JA for crop mods as we near a year after 1.6)

calm nebula
#

(Also 6480)

uncut viper
#

so is making an xnb mod

tough crater
#

The modders I mean

uncut viper
#

their reasons dont make it any less surprising to me

royal stump
tough crater
royal stump
#

looks fairly small relative to crop mods

uncut viper
#

making an xnb mod is easier than figuring out content patcher from nothing

#

not allowed to be discussed in here

#

so, delete that link

tough crater
#

No problem SDVpufferthumbsup

lucid iron
#

You have unpacked the game right

#

A lot of content patcher is just look at game and use editdata to do more of it

royal stump
#

mouse-ear does use spacecore crop extension data, but you can probably ignore that part while using it as an example (not that I make mods like this)

tranquil stone
#

Once I can grasp the concept I’ll be fine just finding the entry point difficult lol

calm nebula
#

Esca crop mod when

velvet narwhal
#

yeah that's a part of the convolution

calm nebula
#

Chu farm map when

uncut viper
#

oh me next what mod am i assigned

velvet narwhal
#

seeds + crops need to be the same iirc

velvet narwhal
royal stump
uncut viper
# velvet narwhal npc mod

does that couint though if i was already planning on it i thought atra was giving people work they didnt wanna do SDVpuffersquee

velvet narwhal
#

i thought it was just "something the author hasn't released" delegations KEK

velvet narwhal
#

tbh i just don't wanna deal with crops so that's why mine is just "oops all trees" because doing that is convoluted enough for me suslysella

tranquil stone
#

Isn’t the concept the same though?

velvet narwhal
#

trees don't have some fields that crops do

lucid iron
#

Trees is a whole other asset

royal stump
#

there are similar elements between the data types, but yeah, separate assets with different options

tranquil stone
#

I mean as far as adding them to the game it’s the same how they work inside the game is different but that’s just writing in different fields right?

uncut viper
#

yeah the EditData concept is the same

#

some data is just more annoying to think about

tranquil stone
#

Fair lol seems I went straight to the most annoying one

velvet narwhal
#

i will disrespectfully stare at data/machines from a distance

royal stump
#

(just noticed that my 20+ wiki bookmarks didn't include crop data SDVkrobusgiggle)
https://stardewvalleywiki.com/Modding:Crop_data
being the theoretical centerpiece of the game, they have a bunch of options and some are a little unintuitive, e.g. how growth phases are defined

#

though really that one just confuses me in C#, because the "crop is done now" code is ambiguous

tranquil stone
#

Scoured that page too

#

Was trying to find the prices like seed price sell price quality price buy seed price

royal stump
#

ah, that's the other odd part, since seeds are a basic "object" separate from the "crop" that's actively planted/growing

left basalt
#

Hey! Question for Map nerds (because I might just need my SMAPI updated from .9 to .10) - Anybody else been seeing issues with tiles I've placed mirrored in Tiled showing up in their original orientations?

tranquil stone
#

Right but then the object of the crop the fruit from it would have to have a sell price be affected by skills for harvest higher quality

royal stump
#

so there's the seed object that needs certain definitions to act like a seed, then the crop that's actually growing, then the object(s) that are produced when it's finally harvested
which basically means a bunch of definitions at once, vs some simpler item types

tranquil stone
#

Seed one object crop second object I imagine the crop fields is where prices would be but

#

So like 3 objects per crop

left basalt
royal stump
#

I think the prices are all in object data, so the seeds and produce each have their buy/sell prices but the crop data doesn't affect it

royal stump
#

and skill/quality bonuses are probably percentage-based and done automatically, if i had to guess, but I haven't actually looked at that SDVpufferthinkblob

tranquil stone
royal stump
#

pretty much, yeah; when I say "object", I mean the entries are in Data/Objects specifically, for simple in-game items like seeds/food/produce/etc
whereas data about crops (how they actually grow when planted) is an entry in Data/Crops

#

so for one custom crop, you basically add "Custom Crop Seeds" and "Custom Crop Produce" entries to Data/Objects, then "Custom Crop" to Data/Crops, 3 things total

#

(aside from more fiddly stuff like that Spacecore addon data in the mod earlier)

tranquil stone
#

Next part is pixel art which I’m awful at so that’ll be fun lol

#

Some kids would make pixel art in Microsoft paint I was the kid that scribbled and used the paint can to fill in all the random spaces šŸ˜…šŸ˜‚

teal bridge
#

I thought MSPaint was more well-known for making dank memes than pixel art.

oblique meadow
#

silly question. to call the cursors tilesheet. I cant just reference cursors.png. So im assuming I need to manually call / load it in my content file. Yes?

uncut viper
#

what do you mean call it. what are you trying to do with it

oblique meadow
#

Im trying to use tiles from it in a map. Like i would with Springisland_1 or something. But those are already in maps/ so i dont have to handle differently

teal bridge
#

Wait, what could you possibly want with the Cursors file for map-making?

uncut viper
#

by default, you cannot use any tilesheets from anywhere that isnt the Maps folder in your map, without making a separate copy of that tilesheet to use (which means its not compatible with recolours)
there is a mod to allow this though

oblique meadow
#

Rockslide

velvet narwhal
#

you, too, can make Spinning Collectableā„¢ļø with arbitrary tilesheet access

oblique meadow
teal bridge
#

Huh, that's wild, I know Cursors has literally a little of everything but I didn't expect it to have map features that are only available in Cursors (assumed they must have been duplicated like the tree).

#

Well, as they said, you have to use a mod dependency for it.

oblique meadow
#

ok. good to know

#

Thank you all!

uncut viper
#

(though there is a noticeable seam on the right there if you care about that)

slender badger
#

Late reply because I haven't had internet access - I did report it, but Nexus didn't do anything about it since it turned out to be just the names (even though it's blatantly obvious that it's taken from mine given that their mod previously required mine and it's exactly the same number of items with exactly the same names) and the thief has been taunting me in DMs about it šŸ˜’ I'm doing a big overhaul of Star Fragments though with a bunch of new content, so the thief can live with their mod being stolen and unnecessary.

tranquil stone
#

anyone know a fix for CP Content packs UI in game being huge and not letting me see the options to reload patch šŸ˜… worked for a couple minutes now its idk lol

tight rivet
#

Oof. I'm sorry to hear that

tranquil stone
#

big oof

#

dang cant even save changes rip

lucid iron
#

I'm not sure what you mean by content packs ui

tranquil stone
#

CP Content Packs the mod

#

to reload patches ingame

lucid iron
#

That's just a console command, there's no UI

tranquil stone
#

I'll take the console command 😮 but there is a mod that gives a UI šŸ˜…

lucid iron
#

Huh interesting, never heard of that

#

Most ppl use a text editor + patch reload from smapi console

tranquil stone
lucid iron
#

yeah just type help in the console

#

All C# mods can register their own console command if they want, patch reload is from content patcher itself

velvet narwhal
#

... ui thonkmuvi

slender badger
#

There's also a list of console/debug commands on the wiki šŸ˜„

lucid iron
#

Debug is slightly different, those r commands from game itself

teal bridge
tranquil stone
#

for being inside CLIs all day for work... idk why i didnt think SMAPI had commands.... or even was able to take my inputs...

slender badger
#

Ah right, I misread. Yeah, CP debug commands are in the CP docs šŸ˜†

lucid iron
#

The console commands mod let u do debug whatever

velvet narwhal
tranquil stone
#

now if only I could tab out commands and ? them LOL

teal bridge
#

No payouts. But I'll take the uniques.

lucid iron
#

You can just run sdv in windowed mode

velvet narwhal
#

alt enter SDVpuffersmile

lucid iron
#

Focustense when is stardewui gonna support textmate syntax highlighting \j

#

Gotta let me edit sml in me sdv game

velvet narwhal
#

i'm already contemplating that spinning ui thing as an april fools toggle tbh suslysella

teal bridge
#

You mean like... a text editor in the game that highlights its own syntax?

#

That's very meta, yes.

#

(The non-joke answer is... probably never. I'm not even sure if I can do multiline text input, although that's at least a maybe)

lucid iron
#

Yeah it is joke, though u did have rich text somewhere on roadmap right

#

For display only

teal bridge
#

Yes, I still do. It was going to be in 0.6 but then I found a ton of other things I wanted to put in right now to support the RM update.

#

So the 0.5.1 update turned into a 0.5.5 update and is probably going to be released as 0.6, and everything else gets bumped to 0.7. (I'm picky about versions, yes)

mighty quest
#

anybody know if the game has an "OK" string? And if so, where?

teal bridge
#

Come to think of it, that sounds more like your kind of project. In-app JSON editor.

mighty quest
#

I found it

lucid iron
#

I'm not sure if there is purpose to have it all in game yet keep the json learning curve bolbpopcornhat

teal bridge
#

There probably isn't, it's just an excuse to fool around with regular expression parsers.

lucid iron
#

It would be the most direct way to access all the game data types tho, for the hypothetical in game mod maker

teal bridge
#

Someone was working on an editor thing IIRC, but I haven't heard hide nor hair of it for some time.

velvet narwhal
#

tbh the json learning curve is what weeds out the weak /lh

tawny ore
#

Editor is too complicated, can't someone just train an LLM to do it for you?

pine elbow
#

tried turning the oversized shirt sleeves from GH Peach Body into a FS sleeve variant and adding a brown stripe, but ingame it's invisible
not sure what's wrong as the sprite sheet looks the same as the other FS sleeves in the pack for it, and I've got the files named correctly

tranquil stone
#

Any links for keeping quality in artisan machines from crops?

drowsy pewter
#

You want a mod or you want to make a mod?

tranquil stone
#

There’s a couple out there already. I just started today and made a mod that added 4 crops didn’t seem sensible to ask them to add compatibility for mine šŸ˜…šŸ˜‚ so I was trying to make one

#

Plus it’s fun

drowsy pewter
#

So your mod adds new artisan products?

#

If you're just talking about the vanilla wine, jam, etc, it will already be compatible

tranquil stone
#

It doesn’t but the new fruit(crops) I added would just be made to wine jam etc

drowsy pewter
#

Then it should already work with those other mods

#

You didnt add any machine data at all, right?

tranquil stone
#

No no

drowsy pewter
#

So yeah it should work then, because those mods would have already edited the vanilla data for making wine, etc

#

Are you having issues with testing it?

tranquil stone
teal bridge
#

I don't get it; by default, most machines don't preserve item quality. There's a specific flag on the machine data for doing it and it's usually false. If you want to preserve quality, need to use custom machines/rules.

drowsy pewter
#

Yes you should just test it

teal bridge
#

Ok, so that's a mod that changes the machine rules to preserve quality. As long as your newly-added crops follow the same rules as vanilla crops, it should just work.

tranquil stone
#

Yeah I mean it’s the most basic mod that could be created I learned and made it today šŸ˜…

teal bridge
#

(It's odd that the screenshot puts the fish smoker in there, since that's the one machine that already preserves quality, but whatever)

drowsy pewter
#

Congrats on making your first mod, btw!

tranquil stone
#

Thanks! All the credit goes to the folks in here who put up with all my questions lol

strange dew
#

another question aSDVjunimobounce do non social npcs NEED a dialogue file? they wont be speaking outside of the shop interface and the intro event (which has all of its dialogue included)

calm nebula
#

Don't think so but don't quote me on tjat

strange dew
#

okay cool cause im tired of writing my i18n file for now šŸ˜‚

patent lanceBOT
#

@wanton pebble: update Saloon Breakfast if not done previously (25h ago)

latent mauve
#

Fairly certain that if your NPC doesn't have a dialogue file and is social, they'll just say "..." when spoken to directly

#

Should be able to just make them nonsocial if they only exist as a shopfront though

dim yew
#

Does anyone have any post-GIMA schedule debugging tips? My NPC’s schedule is in the fritz and it’s driving me bonkers

upbeat condor
#

Does anyone know of any guides on beginning to create smapi mods?

tiny zealot
#

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

upbeat condor
#

Thank you!

tiny zealot
#

there are also assorted tutorials on the (separate) modding wiki. what are you thinking of making? maybe we can link you to something specific

#

(oh, the modding wiki tutorial category link is in there! silly me)

upbeat condor
#

Im wanting to work up to eventually make a new town

#

Im into creating new npc's, buildings, etc.

tiny zealot
#

"work up to" is a good idea šŸ˜… even a single standalone NPC is a lot of work and can be overwhelming if you're new. take your time and don't forget to have fun!

upbeat condor
#

It seems pretty stressful but im already having fun just trying to learn!

velvet narwhal
#

(you'd want to look further into content patcher lest ye attempt to reinvent the wheel)

brittle ledge
#

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

shut edge
#

any clue why this would be happening?

#

the trough tile is set to T in it's options

#

the kibble is just reskinned hay being auto fed

lucid iron
#

did u try exploding these

gaunt orbit
#

can you post a screenshot of your map in Tiled

shut edge
#

they just respawn the same way

#

sure sec

#

only thing i can think of is maybe it doesn't like being on the back3 layer?

brittle pasture
#

Trough checks Back specifically

gaunt orbit
#

I'm surprised it works at all

shut edge
#

hah, ok

gaunt orbit
#

the extra layers are supposed to be purely decorative

agile hinge
#

Does anyone know what namespace/function/file in the decompiled code that the game calculates the player's end of day profit is in?

shut edge
#

hm, still doing it

uncut viper
#

_newDayAfterFade

shut edge
#

that's unfortunate

#

am i missin something?

gaunt orbit
#

let me crack open one of the animal interiors

#

hmmm, seems right. let me check the decompile

shut edge
#

i was using barn3 as a reference if that matters

#

i appreciate the backup

gaunt orbit
#

I see absolutely no reason it wouldn't work, but I have a thought- do you also have Trough on the top tile of the feed bins?

shut edge
#

i do not

#

i just did a check against every other tile on both sheets to check even

#

hell this WAS working fine the other day and somehow started doing this along the way so i'm puzzled

#

does the hopper location effect it at all?

#

like, it shouldn't, right?

brittle pasture
#

can you post your building data just in case

gaunt orbit
#

I have no idea what's happening here

shut edge
#

can send you the map if you wanna look

#

maybe i should make another barn as a test and make sure something else isn't just broken

#

yeah ok, deluxe barn working fine

#

that's baffling me then what the hell

#

also confusingly, i can manually place hay in the correct spots

#

confounding hovering kibble

gaunt orbit
#

hm, strange

shut edge
#

guess i'll donk around with making all my other content for this mod instead awhile

strange dew
#

Received this error from my i18n file, this is my first time using these. can anyone help?

brittle pasture
#

!json Likely a typo somewhere

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.

uncut viper
#

if i had to guess you missed a comma, but please post your json using the uploader

#

!log (also this for future reference for posting error logs)

ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

strange dew
#

oh my god i didnt format any of it CatScream

#

my brain is soup

uncut viper
#

you should really use a program like Notepad++ or VSCode or something that will auto format it for you

strange dew
#

I've been doing okay doing it by hand, I actually just forgot to put any formatting in this file LOL. ill check out notepad++, i didnt know that was a feature

supple rock
#

Ahoy good people! I've been playing around with some minor tweaks to existing mods and was wondering if there's a way to fully remove the update key from the manifest? When I make a copy/fork for my variation, I've just removed that entry in the manifest, but SMAPI still complains that one doesn't exist

uncut viper
#

SMAPI will always talk about mods that dont have update keys

supple rock
#

Ah, bummer... and I'm assuming the update key is tied to public release on nexus, etc? which personal, local mods/forks won't ever have

uncut viper
#

you can turn off checks for individual mods if you really want but you have to edit smapi's config file yourself

brittle pasture
#

if you wont ever release it the only issue is an extra line in the logs

gaunt orbit
#

if you remove it, remove the whole section

#

that should stop it from complaining at you, though it will still be listed as not having any keys, which in your case is okay

supple rock
#

probably not worth the hassle of trying to exclude it, I'll just learn to live with it šŸ˜„ just nice to have clean logs

uncut viper
supple rock
#

I've removed the whole line for "UpdateKeys", so it says it doesn't have an updatekey... which I already know šŸ˜„

gaunt orbit
gaunt orbit
shut edge
#

you coudl maybe put it on nexus privately if you cared to, i guess?

uncut viper
#

i always use an empty array for my wip/test mods and it always just lists it

supple rock
gaunt orbit
uncut viper
#

putting it privately on nexus is more work than tweaking smapi's config

shut edge
#

i agree

uncut viper
#

and might not even work if SMAPI tries to check it but cant

shut edge
#

yeah i dunno if it would actually work, bad solution idea lol

supple rock
#

it's a variation of a greenhouse mod, keeps it vanilla but just makes the tillable space 10x15 for neatness and symmetry ... it's nothing big or complex

uncut viper
#

there is no actual "private mod" function on nexus, cryo just meant uploading but not publishing

supple rock
#

i'll just live with the log message, good to know what the options are/aren't, thanks!

#

I was looking at editing another modded map, but that one might be a bit more complicated. I just wanted to switch some tiles around, and tried looking at Tiled though wouldn't work as I don't have the original assets to load with it

uncut viper
#

if it uses custom tilesheets they'll be somewhere else in your mod folder, if it uses vanilla tilesheets you can just grab them from your unpacked content folder

supple rock
#

ooh, neat.. yes, it's all vanilla, I'll give that a try, thanks!

half tangle
#

TIL that to successfully deserialize a string back into a class, the class needs a default (parameter-less) constructor (you can have other constructors in addition). I took a guess that that was the issue I had been having and it worked! It's weird getting the hang of more and more of C# as I keep going...

pine elbow
#

Are mods still done with JSON?

#

Like additions of food, fish, etc?

vernal crest
#

Yup

pine elbow
#

Sweet

uncut viper
#

until you need to do something complex and unsupported in which case you need C#

#

you can technically make a Content Patcher mod with YAML too if you want

#

(theres a mod to make that possible)

pine elbow
vernal crest
#

But if you're coming back to modding since 1.6 hit, be aware that many frameworks that used to be necessary (like JA or DGA or Custom Music) are now obsolete because Content Patcher can do most of that stuff now.

pine elbow
#

Ah

lucid iron
#

context tags cant have spaces right

uncut viper
#

correct

#

i think theres SplitBySpace stuff that happens during their parsing

#

for objects it might just replace spaces with underscores itself

tranquil stone
#

Any good articles or guides on sprite sheets? Dimensions etc looking at the unpacked and doing some reading the sheet has to be 64x (16*x) but as far as the actual sprite dimensions inside the sheet when I was counting them they are all different šŸ˜…šŸ’€

uncut viper
#

items are 16x16

#

bigcraftables are 16x32

#

things like cursors is whatever the ufck

#

i dont know what you mean by 64x or what you're reading

tranquil stone
#

So a crop seed is 16x16 and I could make it 10x10 but I can’t have the next sprite inside that 16x16 ā€œsquareā€

tranquil stone
uncut viper
#

you should be using your own sprite sheets in which case you can make them whatever size you want

#

as long as its divisible by 16

#

assuming its for custom crops

#

but yes even if there is blank space around your seed sprite, that is part of the sprite

#

likely want the 10x10 just in the center of the 16x16 grid

tranquil stone
#

Yeah I made a mod that added 4 crops and I’m trying to consolidate them into a sheet just trying to figure out the row column set up lol

#

I guess what’s confusing is we say a crop has to be 16x16 which mine are but trying to reference other sheets I see crops that are 16x24 and 16x30 šŸ˜… wouldn’t anything more than 16x16 get cut off?

uncut viper
#

well
the sheet should be divisible by 16 not that the crops are strictly 16x16

#

when you said seed i thought you meant the Item version of the seed

#

i assume the crops you're referencing are actually 16x32

#

with just some empty space on top or below

tranquil stone
#

It’s possible that’s what I was trying to figure out I have all separate 16x16 pngs for each seed and stage of the crop and I’m trying to consolidate it into a sheet and referencing other sheets I guess it wasn’t intuitive for me šŸ˜…

strange dew
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 42 C# mods and 7 content packs.

tranquil stone
#

So the sheet itself has to have dimensions divisible by 16 ok and each individual sprite doesn’t have to be 16x16 but that leads to if they are all different sizes how does stardew know what location that exact sprite is in the sheet I’m close but I’m missing something lol

uncut viper
vernal crest
ocean sailBOT
#

JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.

If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.

When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.

uncut viper
#

im not familiar with the specifics of crop data but i assume you can set a spriteindex maybe?

strange dew
uncut viper
#

use the uploader in that governor command to send jsons

strange dew
#

oh. icant read LOL

uncut viper
uncut viper
#

(tho actually for crops it probably moves further than 16 pixels to the right to get to the next crop, since they come with a set of sprites)

#

(i was thinking of items which are always 16x16 so it just moves 16 to the right to get to the next item on the sheet)

tranquil stone
#

They all seem to be 16 wide it’s the height that varies and after you said 16x32 I checked and they all fit inside the 16x32 ā€œboxā€ on the sheet I’m referencing

teal bridge
#

I wasn't aware that they varied, thought they were all 16x32. Except for giant crops which are really multiple tiles.

tranquil stone
#

With blank space above or below if it doesn’t take up the whole 16x32 ā€œboxā€ now I have to figure out if all crops are 16x32 and then I can adjust and index from there or if not idk how tf to index them once I get it into a sheet šŸ˜‚

uncut viper
#

the actual content of the sprite varies they mean, but all within a 16x32 space

uncut viper
#

no matter what you do, it always assumes a 16x32 space

teal bridge
#

Yeah, the tile is 16x32. That space may not be entirely occupied with pixels, but it is always 16x32.

uncut viper
#

it doesnt matter if theres blank space

tranquil stone
#

Ok ok perfect that’s exactly what I was trying to figure out so I just need to space them in a 16x32 manner and I can index them

uncut viper
#

even if you dont fill the top half of your crop sprite, that top half is still part of its texture

tranquil stone
#

Thank you so much!! Sorry for all the questions it’s a steep learning curve but it’s getting much easier the more I figure it out lol

uncut viper
#

thats what this channel is for!

strange dew
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 42 C# mods and 7 content packs.

vernal crest
uncut viper
#

and also slept a day after reading the letter

strange dew
#

also to confirm. you need to NOT be in the location of the event when using debug right?

uncut viper
#

i dont think that should matter but ive not used the command before myself so i suppose i could be wrong

vernal crest
#

I use the command from the same location as the event all the time

#

Apparently it can cause problems but I've never run into them

strange dew
#

okay, i had an error with the filepath, fixed that. but now its saying my event json is invalid but i didnt change it and the validator says no errors

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 42 C# mods and 7 content packs.

uncut viper
#

if you're just Loading the event straight from the .json it should just be a json file, not a content patcher formatted json

#

also you cant use tokens in a Loaded file if you have any in it

#

its recommended to load a blank json file into the asset and then use EditData to actually put the event in it

#

also Data/Events/Mine already exists so you're just completely overwriting it

#

so you should absolutely not be Loading into it

strange dew
uncut viper
#

ModId is a token and will not work in a Loaded file

#

are you perhaps confusing Load with Include?

strange dew
#

I think so

uncut viper
#

if the file you're loading has a Changes field and patches like EditData and whatnot, you need to Include it, not Load it

strange dew
#

got it! thank you so much!

strange dew
#

this is my first time making something that isnt just a simple machine

half tangle
#

As I recall, the whole "don't be in the location when you ebi an event" is from 1.5 and earlier, so it should no longer be a concern

strange dew
#

oh okay cool

half tangle
#

yeah, from the Migrate page on the wiki: ebi Fixed event not played correctly if called from the same location as the event.

onyx flame
#

alright I'm so confused about how forgeable work when harvesting:

if ((bool)forageCrop)
{
  Object o = null;
  int experience2 = 3;
  Random r = Utility.CreateDaySaveRandom(xTile * 1000, yTile * 2000);
  if (whichForageCrop == "1")
    o = ItemRegistry.Create<Object>("(O)399");
  else if (whichForageCrop == "2")
  {
    soil.shake((float)Math.PI / 48f, (float)Math.PI / 40f, (float)(xTile * 64) < Game1.player.Position.X);
    return false;
  }
  if (Game1.player.professions.Contains(16))
    o.Quality = 4;
  ...
}``` wouldn't o.Quality = 4 cause NPE if whichForageCrop is not 1? where is o coming from?
strange dew
#

thank you so much guys! I got it to load!!! now i just have to fix the event itself šŸ˜‚

teal bridge
#

whichForageCrop can only be 1 or 2, I think.

#

The comments are not consistent with its usage.

brittle pasture
onyx flame
#

I see

brittle pasture
faint ingot
#

If I want to make sure an event can be seen the same day as the one it depends on, is it best to use a mail flag for that?

#

nevermind I think I found the answer searching a past discord conversation

#

at least I think so... if I put "AddMail Current {{ModId}}_MyMailFlag received" in an event, does that mark the mail as having been read immediately, or not until end of day?

uncut viper
#

immediately

faint ingot
#

OK, so I guess I'm back to square one... should I just make it so that my first event only triggers in the afternoon and the second event in the morning (or fiddle with what days of the week each can trigger)? or is there an easy way to prevent them from happening on the same day.

#

ideally i'd like both events to be available at any time, on any day, as long as you have met certain other conditions

#

i don't want to actually send a letter after the first event

uncut viper
#

you can just send a different mail flag then

latent mauve
#

Is there a reason why you're not just using the has seen event precondition for the 2nd event, if you want them available one after the other?

faint ingot
#

it is a precondition, i just want the player to 'sleep on it' and not go from one event and see the other event

latent mauve
#

Ah, I see

faint ingot
#

like there needs to be a feeling that a little time has passed at least

uncut viper
#

i thought you said you wanted to make sure it can be seen the same day?\

latent mauve
#

What about a time precondition?

latent mauve
#

Yeah, Button, that's why I was confused.

faint ingot
#

i see now that i mistyped

latent mauve
#

Could set one to be available in the morning and one in the evening?

faint ingot
#

sorry

latent mauve
#

if you pair has seen event with the evening time, I think that'll satisfy your requirement.

uncut viper
#

does your mail flag have an actual letter attached to it, or is it just an invisible flag?

faint ingot
#

that's fine if that's the solution I was just asking if there was something more elegant. the mail flag was just an idea to make a precondition that wouldn't trigger until the next day, but as you said its immediate

uncut viper
#

well, if it has an actual letter attached, you can put it in their "for tomorrow" inbox. or just use that mail flag to trigger another mail flag the next morning

tough crater
#

You can add the mail without immediately receiving it

uncut viper
#

only issue with adding it Not to the received inbox is that it needs to have an actual letter, because it will appear as a letter icon on the players inbox

faint ingot
#

oh yeah I guess I could add an end of day triggeraction for it? ... I think to keep things simple I'll just use day of week or time triggers to separate the events

#

thanks for all the feedback and apologies again about the confusion from my typo

gentle rose
#
private void OnAssetRequested(object sender, AssetRequestedEventArgs e)
{
    if (e.DataType == typeof(Texture2D))
    {
            e.LoadFromModFile<Texture2D>("assets/bonched.png", AssetLoadPriority.Medium);
        
    }
}

you're welcome

inner harbor
#

Conversation topics

#

We use them to break up events

faint ingot
#

true that's a possibility I hadn't thought of

rocky anchor
#

Do I have to use the Append operator for a new entry to be added to the end of a list of values? Or does CP handle that?

mighty ginkgo
#

can depend on what the exact thing you're changing is

rocky anchor
#

Just adding a new letter to Data/mail

#

But I wasn't sure if it would just get chucked on the end by default, because I'm not modifying an existing entry?

mighty ginkgo
#

the new entry gets added to the end by just using EditData yeah

rocky anchor
#

Okay I am very dumb, but I don't know why my letter won't show up haha

#

Anyone have the patience to deal with me rn?

#

[18:35:24 WARN Content Patcher] Can't apply data patch "(CP) Rainy Day Clothing > EditData Data/mail #1 > entry #1" to Data/mail: failed converting entry to the expected type 'System.String': Can not convert Object to String..

#

This is my patch:

        "Action": "EditData",
        "Target": "Data/mail",
        "Entries":    {
            "RainTomorrow": "ADVERTISEMENT:^^KOZU 5 have predicted rain all day tomorrow... and they're never wrong!^^Stop by Pierre's General Store TODAY and check out our new rainy day gear![#]Rain Tomorrow",
            },
        "When": {
          "Season": "spring",
          "Day": "2",
          "Year": "1",
          },
         },```
#

I can't make the mail key spring_2_1 because that's already used by Willy's note

mighty ginkgo
#

can you upload the file to smapi.io/json and link it here? i don't know what the issue is but that could help

half tangle
#

As I recall, that code just adds the letter to the game's mail data (and does so on the second day of year 1). You have to also actually add it to the mailbox. I think you'll want a trigger action for that - they can add mail to the mailbox.

uncut viper
#

the error they have is a json parsing error, not one related to actually getting the mail

half tangle
#

Oh, then I think it's one or both of those commas at the bottom. The json parser will probably show that

#

(that's what I get for looking at this on my phone and not scrolling up enough)

uncut viper
#

that would give a different error from the one they posted. its just difficult to point out without a full json though

#

"Can not convert Object to String" means you have a {} data model or similar where you shouldnt, but that code looks correct to me, so its likely somewhere else

#

(or perhaps a case of editing the wrong json and not actually the one thats in the mod folder)

rocky anchor
#

Will do in one sec, thank you so much

#

FWIW, I'm just trying to update this mod because it relies on depreciated mods

#

(My mod)

rocky anchor
uncut viper
#

are you 100% sure you're editing the right file in the right folder and not a copy of it?

#

(unrelated, but you should put your mod ID somewhere in your mail key)

#

(and in your clothing item IDs and shop entries)

#

thats not how youre supposed to add new clothing or item textures either, with the editing the vanilla images directly

#

again though these are all unrelated to the error you got

inner harbor
#

can you use object context tags in gift likes? For example, coudl I make my NPC love all "bauble_plush_character"

uncut viper
#

you can yes

wide flint
#

This throws System.NullReferenceException: Null method:

harmony.Patch(
    original: AccessTools.Method(typeof(Event), nameof(Event.DefaultCommands.ShowItemsLost)),
    postfix: new HarmonyMethod(typeof(Event_command_showItemsLost_Patch), nameof(Event_command_showItemsLost_Patch.Postfix))
);

What am I missing or doing wrong? It's not harmony being null, there are other patches in front that work.

uncut viper
#

that means either the method you're trying to patch or the method you're using to patch it is not being found

wide flint
#

Weird, everything exists

#

It's Class Event -> Class DefaultCommands -> ShowItemsLost

uncut viper
#

that would be typeof(DefaultCommands)

#

nameof(DefaultCommands.ShowItemsLost)

#

as is you're looking for Event.ShowItemsLost

wide flint
#

Makes sense, thanks. Thought I need to provide the full "path"

inner harbor
rocky anchor
#

It's such an old mod now haha

drowsy pewter
rocky anchor
#

Okay omg I think I'm nearly there

#

Just not sure how to conditionally load one of two image assets

tough crater
#

Loads normally occur at game launch, right?

rocky anchor
#

I tried this:

   "Action": "Load",
   "Target": "{{ModId}}/Hats",
   "FromFile": "assets/hood up.png",
      "When": {
    "WeatherCheck": "true",
    "OutdoorCheck": "true"
    }
 },
        
{
  "Action": "Load",
  "Target": "{{ModId}}/Hats",
  "FromFile": "assets/hood down.png"
},```
but the sprite was blank
granite bluff
#

hey ho, a quick question: how do i make maps load seasonally?

finite ginkgo
rocky anchor
#

Someone earlier mentioned not editing vanilla files directly - is that possible with EditImage?

#

Like I just change the Action (in theory)?

granite bluff
#

is there something like "Update": "OnSeasonChange" ?

finite ginkgo
finite ginkgo
tough crater
#

There's only "OnLocationChange", "OnDayStart", and "OnTimeChange" for the Update field

granite bluff
#

hmm dayum since i can load maps on time change i thought i might load maps on season change. 4 diffenrent maps for each season

royal stump
#

iirc, any sprite sheets you use in a map that start with spring_ will switch to their other seasonal ones, if the location is considered outdoors

granite bluff
#

oooooh

calm nebula
#

Hmmm

#

Non-exclusive loads would work huh

royal stump
#

you could probably also load other map files with "when" conditions, if needed too, it's just not an update rate

calm nebula
#

Also can I ask why people are something about bouncer?

tough crater
royal stump
#

i assume this got typo'd somehow and people noticed, but idk really
(it sounded like they fixed it and then unfixed it)

granite bluff
#

thank you i think the season_ solves this :)

wide flint
#

Is there a method to manually trigger animals producing their product? Went through FarmAnimal.cs but couldn't find what I need.
Only discovered NetString currentProduce but can't figure out what it needs to be set to. Does it just need to be anything but null?

calm nebula
#

The code you want is buried in farmanimal.dayupdate

granite bluff
#

if i rename the png it wont be recognized anymore in tiled and i have to rebuild the whole tiles on my sheet. any way to solve this?

wide flint
royal stump
# tough crater Loads normally occur at game launch, right?

in practice, yes, a Load without any When conditions should be active immediately
(in a nitpicky sense, I think CP starts applying changes a frame or two after the GameLaunched event, and it doesn't edit assets until code tries to load it SDVpuffernerd)

#

even then, I haven't seen anyone try to edit the load screen graphics in a long time, so idr

vernal crest
royal stump
#

ā¬†ļø there are lines like this for each sheet when you open it as a text file

<image source="spring_outdoorsTileSheet" width="400" height="1264" />```
unique sigil
# granite bluff hmm dayum since i can load maps on time change i thought i might load maps on se...

if each of your seasonal maps have a different feature (i.e. an area that only appears in summer) you can load a different .tmx file using a season condition (i.e. "When": "Summer"),

but if the maps are all the same, then the seasonal changes are automatically handled by the tilesheets, as long as the name starts with {{season}}_. If your map has a custom tilesheet, make sure all seasonal variants use that format.

granite bluff
#

thank you these are both good solutions SDVpufferheart

unique sigil
#

is your map a replacement map or a custom location map?

calm nebula
granite bluff
#

it's a Playground recoloration that is loaded as EditMap From/To Area

unique sigil
#

oh, a map patch to the vanilla Town map?

granite bluff
#

yes

unique sigil
#

okay, i was going to recommend to not rename the tilesheets at all if it's replacing a vanilla map, but if it's a patch map there shouldn't be any problems

granite bluff
#

alright, thanks for the thought : )

royal stump
# calm nebula The only other possibility is shears.doaction and milkpail.doaction?

the majority of FarmAnimal.dayUpdate decides whether and what produce is created, while the tools' doFunction generates the item for non-chicken types, fwiw (basically just this)
ItemRegistry.Create<Object>("(O)" + this.animal.currentProduce.Value);
I tried to write an abbreviation of the day update stuff, but there're a lot of steps involved for cases like eggs SDVpufferdizzy
and quality, picking an rng seed, etc

wide flint
rocky anchor
#

This is where I'm at:

{
   "Action": "EditImage",
   "Target": "{{ModId}}/Hats",
   "FromFile": "assets/hood up.png",
      "When": {
    "WeatherCheck": "true",
    "OutdoorCheck": "true"
    }
},
        
{
    "Action": "EditImage",
    "Target": "{{ModId}}/Hats",
    "FromFile": "assets/hood down.png"
},
        
{
    "Action": "EditData",
    "Target": "Data/hats",
    "Entries": {
    "RainHood": "Rain Hood/Optional extra for your rain coat./false/true//Rain Hood/0/{{ModId}}\\Hats"
    },
},```

SMAPI currently says my asset doesn't exist šŸ˜ž  But it's in the game! And in Pierre's shop! It's just the sprite that's still missing... It's nearly 1am, so I'm heading to bed, but I'd appreciate any nudges in the right direction!
#

Thank you all for your help!

tough crater
#

use an underscore in the file name and code and see if it works hood_down.png

rocky anchor
#

Simple thing to check! Thank you!

tough crater
#

No problem! SDVpuffersmart

pine brook
#

Good morning, all! I am trying to add more content and compatibility to my mod with other large mods. but I am getting a token not found warning in SMAPI

    "Action": "EditData",
    "Target": "Strings/StringsFromCSFiles",
    "When": {"Fixed": true,"HasMod|contains=Rafseazz.RidgesideVillage": true,   "HasFile:{{FromFile}}": true},

Any ideas on what I may be missing. This is copied from a another mod.

granite bluff
#

wasn' there a command like "MapType": "Overlay" or so? how was it, i can't quite remember

finite ginkgo
granite bluff
#

ah great^^

gray bear
#

SDVkrobusgiggle
soon...

tough crater
#

We need a good stone boi in our lives

gray bear
#

kinda confused on how i'm meant to get screenshots for this mod, really.

tough crater
#

What do you mean? :O

gray bear
#

like some mods have screenshots showing their content. i guess that doesn't apply for this one, tho. thonk

drowsy pewter
#

for the mod where i got rid of bigfoot

#

i just screenshotted an empty forest and called it a day

gray bear
#

ur right, shouldn't overthink it heh. not like u can really see the monster names while playing normally c:

#

when... do monsters start spawning if u set the option for it anyway

scenic igloo
#

Hey, I'm super super new to making my own content packs and I have no base understanding of it but I was trying to recolour Daia from RSV (I am also using the seasonal vers of her) and SMAPI doesn't find an issue just in game nothing changes. Please forgive me if this is a simple fix I've just not seen! The mod I'm trying to add is my own '[CP] RSV Daia Edits'. I have all the files I thought I would need but truly I've no idea. Any help would be nice! (Also super sorry if I'm interrupting just trying to consolidate my thoughts.)

https://smapi.io/log/b559579a2ef34e3ea41dcb4ad0795028 , https://smapi.io/json/content-patcher/6477448509f84d74aaf690608f5000e6

ocean sailBOT
#

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

true coyote
#

since i havent added an item to the game yet, is doing so still considered a cp mod? I feel like that might be a dumb question lol

tough crater
#

A CP mod is any mod that uses any of CP's features

lucid iron
#

Yep u can add new objects with content patcher

#

What specific objects do u want to do?

gray bear
#

i mean you can if they load in the assets you're editing, but looking at the RSV seasonal mod that isn't the case.

#

better off making replacer files in your case (files that overwrite the original mod)

true coyote
flat sluice
# gray bear better off making replacer files in your case (files that overwrite the original...

~~ I don't think that's necessary, it should be enough to use "Priority" in the code.
More on that here:https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/action-editdata.md#overview ~~
Please, ignore my mistakes. Thanks!

GitHub

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

#

However, that would mean rewriting the whole code.

gray bear
#

EditData wouldn't help them in this case

gray bear
#

Nope, can't target other files in other mods with that. Only if they've loaded it using Load

flat sluice
gray bear
flat sluice
gray bear
#

Yeah, It's quite annoying to have to turn them off each time, huh? No worries, didn't think there was.

lucid iron
calm nebula
#

no, the jank with gates is that people don't know how to use the gates

#

like, to the point where I almost want to make a mod to fix that shit

#

(shhhhh)

#

you have to place down all your fences, then place teh gate into the fence

#

that's how you get matchy match gates

true coyote
#

oh yeah i'd stuffed that part of my to-do list to the back of my brain.. i still gotta make the gates and recolor those OTL

lilac citrus
#

I noticed that the 'Home' Spawn Rule https://stardewvalleywiki.com/Modding:NPC_data for npc data is optional. If I don't include it, can I assume that a character will default to its first schedule element? If not, is it better to have these set? Is Home only used for 'SpawnIfMissing'?

Thanks!

Stardew Valley Wiki

← Index

flat sluice
calm nebula
#

it's technically optional if you accept the default (dead center in town) as a good option

#

it does not default to the first schedule element

lilac citrus
#

I am making a modding tool to add characters to the game and I want to ensure that I only have necessary information as editable to make it streamlined.

Do you think it's a good idea to allow users to edit the Home option for a character through the UI?

tough crater
#

That'd be pretty tricky, especially depending on how the condition(s) the creator wants their NPC to have for their home change

#

I have a conditional home spawn as well, but it involves Trigger Actions to make it work

calm nebula
#

I'm going to be completely honest with you - I'm not an wysiwyg person, I'm never going to use your tool anyways

#

so I'm not in your market

lilac citrus
#

No trouble!

I think I'll go ahead and add it in. Thanks!

lucid iron
#

The mismatched pixel sizes with that big Grandpa bothers me, as does the general strange use of whitespace like not centering the portrait. But i am also not the target audience here blobcatgooglyblep

#

How do you envision people testing the resulting (content patcher?) mod?

teal bridge
lucid iron
#

The game has random places that r less than the usual 4x scale which i feel ok with tho

#

Blowing it up is different than drawing it smol i guess

teal bridge
#

A second issue is that the grandpa sprite is probably not scaled using nearest-neighbor.

#

I'm not as Expert at recognizing algorithms as Mr. Graphics, but I'm guessing bicubic or bilinear.

strange dew
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Home, with 42 C# mods and 7 content packs.

lucid iron
#

When the game says can't find xnb file, that's actually a monogame error

#

For content patcher stuff it usually just means ur files were named wrong, didn't correctly load, or loaded to wrong target

teal bridge
#

Yeah, it's a misleading error that says "I couldn't find any assets of the correct type/extension and XNB was the last one I happened to try"

strange dew
#

is there a way to check why they wouldnt load correctly? I didnt change any of the file path names and i triple checked them today lmao

lucid iron
#

Oh it is probably cus u only did editimage

#

On a target that doesn't exist without load

strange dew
#

OH

lucid iron
#

You will want to make the vanilla one load i think

#

Unconditionally, to avoid any underlying asset not exist errors

strange dew
#

that makes so much more sense T>T

lucid iron
#

And gate nyapu behind the when

strange dew
#

thank you! gil_salute

#

just to check, does that mean that my sprite sheet should be load instead of editimage also?

lucid iron
#

If your target doesn't exist then you need to do a Load

#

The default priority of Load is exclusive, meaning you cannot do 2 Load to same target

#

Changing this priority is fine, but ultimately only one Load gets to do anything

gray bear
tardy adder
ocean sailBOT
#

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

tough crater
#

Just to clarify, it broke your own mod's code or you're looking for something that might've generally broke the game?

tardy adder
#

looking for what might've caused the special order to nullref

tough crater
tardy adder
lucid iron
#

This error came from s&s special order time limit code

#

I don't see how ur regular ol special order could bork it

#

Maybe ask atra about it? Idk who's the main code person atm

tardy adder
strange dew
#

Desty is active over in the ES discord, not sure if theyre here too though

lucid iron
#

Yeah but desty focus on content side not C#

tough crater
#

Desty might be the mod author

strange dew
#

Desty handles releases iirc, but the mod had mutliple authors

lucid iron
#

This would have been a casey question but casey on vacation, doesn't hurt to go ask in ES just in case

tardy adder
#

SDVpufferlurk oki

sleek flint
#

Are there any frameworks that would allow you to have a higher quality sprite? For example a 256x256 in one tile?

calm nebula
lucid iron
sleek flint
#

16x16

lucid iron
#

But is this a map tile? An object icon?

sleek flint
#

Map

finite ginkgo
lucid iron
#

I don't know if any texture upscaling framework that specifically targets maps think

#

U could try spacecore hd textures on the tilesheet but no clue if that works well

ivory plume
sleek flint
lucid iron
#

While i think i could probably figure out building it on linux I don't have the knowledge about cross platform stuff

iron ridge
#

let's try and see how much pain i suffer

lucid iron
#

Ty pillow i believe in u bolbwawawa

ivory plume
#

I'm not planning to release it, it's just so we can see what the underlying error is for the affected player.

iron ridge
#

or does it just build to a dll that can be used in c++

blissful panther
iron ridge
ivory plume
#

All I really know is that the issue is with the extern calls into libSkiaSharp.dll in the game folder, which seems to be a C++ assembly. Not sure where the source code is unfortunately, C++ is a bit out of my wheelhouse.

blissful panther
#

I'm going for "let's build Skia, and see what it gives us".

ivory plume
calm nebula
#

Which OS?

iron ridge
#

definitely seems to be from mono/SkiaSharp, that has references to a libskiasharp.dll (as in, a compiled output)

ivory plume
#

The player is on Windows.

calm nebula
#

I'm not at home and won't be for a while, so I can't promise anything

blissful panther
#

No worries, I'm already on it!

#

I have to say though, wow the build docs and build system for Skia is spooky.

teal bridge
#

Skia is a massive project targeting way too many platforms, even web browsers, so yeah it's pretty ridiculous at times. libskiasharp.dll is a P/Invoke wrapper, if memory serves - since .NET can't interop with C++ directly. Have to either expose C headers or create a C++/CLI library and I think they did the former.

#

On a totally unrelated note, I've been searching without success, both in the game assets and on the web, for a CC-* asset of a warning/error sign (like the caution or danger emojis) that's sort-of consistent with the Stardew style. Does anyone have one or know where I can download one?

#

(It's not exactly hard to draw the shape itself, but I'd never be able to get the shading right)

latent mauve
#

Can you clarify what you mean by CC-*? Not sure I have ever seen that term before.

teal bridge
#

Creative Commons (don't care what the suffix is)

#

(as in, free to redistribute)

ivory plume
#

Does it need to be Creative Commons, or does any open license work? You could maybe use open-licensed font characters like āš ļøšŸš«šŸ›‘, though I guess they're not really consistent with the game style.