#making-mods-general

1 messages Β· Page 124 of 1

astral prism
#

NOOOOOOOOOOOO

hard fern
#

:( canape

drowsy pewter
#

because the y arent seen by the player

#

sucks that they didnt do the full name for ingredients purposes though

astral prism
#

is blank.json just

{
}```
 or is it

[
]```

calm nebula
#

You don't need a blank

astral prism
#

oh ?

calm nebula
#

Just initiate an empty dictionary lil

astral prism
#

oh

#

what about the CP packs though? if there's no blank file how will they make entries

astral prism
#

ty

brave fable
#

the empty dictionary is the blank asset, you're just creating it in C# rather than CP

calm nebula
#

You can just pass smapi an empty dictionary. This is equivalent

astral prism
#

oh shit yeah i always forget you can do that

brave fable
#

in any case, the answer is [] if your data is a list, and {} if it's a model or dictionary

astral prism
#

yeah it'll be a dictionary i think

brave fable
calm nebula
#

Dried

drowsy pewter
#

Dried

brave fable
#

Dried

#

at least JP is decent enough to name it 'dried stuff' and 'smoked things'

astral prism
#

what should my Func<object> do / be? i don't understand it all that well, i thought i'd just return an empty dict

brave fable
#

can u expand the screenshot a little so we can see the error

#

you probably just need to cast to your final type

astral prism
#

my bad

calm nebula
#

e.LoadFrom(static () => new Dictionary<string, Patch>(), AssetLoadPriority.Exclusive);

astral prism
#

that is so bizarre to me, but thanks

#

oh wait so it just wants some function that returns the dictionary to use

#

lol im so silly, thanks

brave fable
#

it's all very simple in the end, you've just got to break through the syntax hahah

#

it's a thin wall but it's not clear

astral prism
#

will this not return an empty dictionary every time the asset is requested ?

#

yeah

hard fern
#

maybe if i watch modders in here long enough, i'll learn a bit of C# SDVkrobusgiggle

astral prism
#

that's how i learned πŸ˜…

brave fable
#

it will create an empty dict whenever you request it, provided the cache is invalidated, but all content packs will apply their changes too

astral prism
brave fable
#

helper.Events.Content.AssetRequested += Apply

#

though you need to update the method signature to (object sender, AssetRequestedEventArgs e)

astral prism
#

ah i see thank ya

#

at what point will content packs have made their entries? i.e. when do i populate the patch dict ?

brave fable
#

if you call T instance = helper.GameContent.Load<T>(AssetName), it'll be resolved by the time it's assigned

calm nebula
#

It is generally two ticks after game launched

native nest
#

I wanted to change the recipe for the electric furnace and to that I need to know 2 things:

1-Can I just delete one of the object ID codes (in my case "Object": 390 and the "Count": 50) and change it with another.

2-If the first option is available I want to change it with the base game furnace, and I don't know the item id for it can someone help?

calm nebula
#

But, you know, I tend to prefer to populate as late as possible

astral prism
#

so i can do it in modentry? or shall i just wait until i'm like, on the title screen

#

or even on save load ?

calm nebula
#

I mean

brave fable
#

i usually init at ModEntry > GameLaunched > OneSecondUpdateTicked

calm nebula
#

What do you want the content pack to do lol

#

East Scarpe's loads, at earliest, on DayStarted

brave fable
#

(i'd answer the crafting recipe question but i don't actually know for sure if you can use a BigCraftable as a recipe ingredient)

calm nebula
#

AtraCore when the first bit of equipment is equipped

calm nebula
#

Unless you recode the entire mod to use CP alone lol

astral prism
#

it's basically going to make random object messages that you can see (like the nameless NPCs) have portraits by targeting the string path and ID and then giving the path of a portrait to use in GameContent (easily then loadable using CP)

native nest
#

thanks both of you

calm nebula
#

Lazy load would work fine there

astral prism
#

so i'll just do it as late as poss?

calm nebula
#

But I don't understand why you can't edit the map to use the form of action that has a portrait lol

astral prism
#

it's for someone else to use as a framework to edit vanilla strings and other peoples' mod strings

brave fable
#

sometimes you might find it better to load early, depends on how much you value stuttering during gameplay compared to likelihood of the asset actually being loaded

astral prism
#

i'll just do it on saveload for simplicity. thank ya !

#

hold on hold on, when i load this here:

public void PopulatePatchDictionary()
{
    Helper.GameContent.Load<Dictionary<string, Patch>>(PATH);
}```

won't that just return a blank dict from the asset invalidation thing every time? like, ignoring the CP edits that are all made
calm nebula
#

I mean, you're not returning anything

#

Note that if you assign it to a field, you'll need to handle listening to invalidating as well

#

For something as slow as a click event it's fine to just rely on gamecontent's internal cache

native nest
astral prism
#

i'm going to populate the dict on save load and then just use it cached in memory for the rest of the session i think

calm nebula
#

People get mad at me when i tell them basically everything in thr stardew modding space is like, actually pretty easy, just tedious sometimes

native nest
#

how can I do it then

#

or should I just google it

calm nebula
#

!1.6 probably has most of the info

hard fern
#

oop

calm nebula
#

!gs

ocean sailBOT
calm nebula
#

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

calm nebula
#

Maybe the 1.6 command got removed lol

native nest
#

thanks again

astral prism
#

so the way i have thought of doing this is by checking if the current object dialogue that is ready to be loaded is equal to the string at the path we're checking

essentially

as a prefix to Game1.drawObjectDialogue(). this is probably wildly inefficient due to loading the file for every patch i check. is there a way i can make this more efficient that anyone can think of?

#

im now gonna cache the strings to do it:

public void PopulatePatchDictionary()
{
    PatchDictionary = Helper.GameContent.Load<Dictionary<string, Patch>>(PATH);
    foreach (string key in PatchDictionary.Keys)
        StringsFromPatches.Add(key, Helper.GameContent.Load<Dictionary<string, string>>(key.Split(":")[0])[key.Split(':')[1]]);
}```
lucid mulch
#

GameContent is the asset pipeline (i.e. what ContentPatcher can touch and what Game1.load etc will interact with), ModContent is just a direct interface to your mods folder on disk.

#

and in ContentPatcher, using InternalAssetKey is the mechanism to generate an asset name in GameContent that will load from ModContent

tardy adder
#

Windows said the weather was too chaotic

blissful saddle
#

Windows can't handle that

fervent horizon
#

Anyone know if there is a way to set animals to come outside even when raining?

rancid temple
fervent horizon
astral prism
#

!harmony

ocean sailBOT
#

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

astral prism
#

🀣

rancid temple
#

Depending on how familiar you are with C#, may need to start there instead

fervent horizon
#

Familiar enough I suppose

astral prism
#

more details can be found on the link roku sent

rancid temple
#

As long as you avoid transpilers Harmony is just regular ol' C#

fervent horizon
#

Basically we are playing with the frog terrarrium that add frogs as animals, but it doesn't make much sense that they wouldn't come out in the rain

astral prism
#

harmony is literally the key to making beautiful mods - once you know harmony everything is SO easy

#

transpilers can die though fuck transpilers

rancid temple
#

I prefer the compat transpilers offer, but they can be a lot to deal with

astral prism
#

changing raw IL sounds like what i will be doing if i go to hell

rancid temple
#

CodeMatcher helps a lot, but there's still a lot of "trying to solve a maze while only being able to see a tiny portion of it"

fervent horizon
#

So would it be able to target only a custom animal?

rancid temple
#

You'd have to add a check to see if it's your custom animal and return to the base code if it's not

#

Then when it is your animal, do your custom code and not return to base

astral prism
#

so my project relies on this nuget package but when i have it imported it doesn't download the .dll for it to /bin, how can i get the .dll so i can put it in the mod's folder?

#

will i just have to compile it?

fervent horizon
#

building it should get you everything you need

astral prism
#

i've built the project im doing but it's not doing the dll. i'll have to download the nuget sln and compile it myself

rancid temple
#

Only nuget packages I'm familiar with are Pathos's and neither of them add any extra dll's as far as I can tell

blissful saddle
#

what kind of produce frogs give?

astral prism
#

erm..? mod, what are you doing?

public override void Entry(IModHelper helper)
{
    HarmonyInstance = new Harmony(ModManifest.UniqueID);

    helper.Events.Content.AssetRequested += AssetRequested;
    helper.Events.GameLoop.SaveLoaded += GameLoop_SaveLoaded;
    HarmonyInstance.Patch(AccessTools.Method("Game1:drawObjectDialogue", [typeof(string)]), prefix: new HarmonyMethod(AccessTools.Method(typeof(ModEntry), nameof(Prefix_OneString))));
    HarmonyInstance.Patch(AccessTools.Method("Game1:drawObjectDialogue", [typeof(List<string>)]), prefix: new HarmonyMethod(AccessTools.Method(typeof(ModEntry), nameof(Prefix_StringList))));
}

public static bool Prefix_OneString(string dialogue)
{
    foreach (var kvp in StringsFromPatches)
        if (Fuzz.Ratio(kvp.Value, dialogue) >= PatchDictionary[kvp.Key].FuzzRatio) // Match according to fuzziness provided by the patch
        {
            ConstructNewSpeakerDialogue(new List<string> { dialogue }, PatchDictionary[kvp.Key].Image, PatchDictionary[kvp.Key].NPCName, kvp.Key, PatchDictionary[kvp.Key].ShouldTrimColons);
            return false;
        }
    return true;
}
public static bool Prefix_StringList(List<string> dialogue)
{
    foreach (string s in dialogue)
        foreach (var kvp in StringsFromPatches)
            if (Fuzz.Ratio(kvp.Value, s) >= PatchDictionary[kvp.Key].FuzzRatio) // Match according to fuzziness provided by the patch
            {
                ConstructNewSpeakerDialogue(dialogue, PatchDictionary[kvp.Key].Image, PatchDictionary[kvp.Key].NPCName, kvp.Key, PatchDictionary[kvp.Key].ShouldTrimColons);
                return false;
            }
    return true;
}```
#

has anyone ever seen that before?

blissful saddle
#

first time I saw this kind of harmony call

merry rampart
#

is there a list somewhere of dialogue keys for shared dialogue among npcs?

edit: nvm it seems the wiki has most of the ones i need

blissful saddle
#

ok. I will take a break. too many new things to a Saturday morning...

tardy adder
#

I need to stop getting distracted πŸ‘€ I start the code/sprites for the crops, boom I somehow end up working on tapper, then I continue with custom moss blobstare

#

At this point I am not even done with the base items because tangents are powerful

fervent horizon
#

Each frog finds different gifts. There are like 10 frogs

pine elbow
#

Is there anyone who knows if the next word after "..." should be capitilized or not ? Stardew Valley has a lot of "..." in the dialogue and is very inconsistent about the capitilization^^

#

Any general rule to follow?

ivory plume
#

It depends on whether it indicates a complete sentence that trailed off (like "He got a pufferchick... It was raining too.") or a pause in the sentence (like "He got... a pufferchick.").

pine elbow
#

That makes sense! What about single expressions like "I...ehm...dont know* etc?

#

I suppose that would still be part of the same sentence in that case

final arch
#

I thought in-sentence its ... and if its between sentence you use 4 dots .... anyway SDVpufferthinkblob

tender bloom
#

I don’t think that’s a rule in US English

final arch
#

When a sentence ends with ellipsis, some style guides indicate there should be four dots; three for ellipsis and a period. Chicago advises it,[10] as does the Publication Manual of the American Psychological Association (APA style),[11] while some other style guides do not; the Merriam-Webster Dictionary and related works treat this style as optional, saying that it "may" be used.[12]
seems split according to wikipedia

#

but yeah, Id follow Pathos advice

pine elbow
#

Thanks for all the help guys πŸ™‚ Coding might be hard, but translating can also be considered a pain in its own category haha ^^

blissful saddle
#

poetic license is a thing too

#

so for dialogues, doesn't care so much to which is the rule, but to which sounds/seems better

#

and 4 dots is a bit too much to me, except in official documentation

drowsy pewter
#

grammatical rules are employed by native speakers based on what feels better, but they still have rules underpinning them. For people who dont have that familiar sense of "feel", you can also just ask someone to read through your stuff at the end and find stuff that doesnt flow right

proud wyvern
#

Never heard of anyone using four dots

fossil osprey
#

You don't use four dots, an ellipsis replaces end-of-sentence dot and is always three dots long

pine elbow
#

On a sidenote, It's pretty funny trying to translate all the "uhm"s and "Oh"s from English to my language since we dont really have those kind of expressions

#

Gotta get creative with it

ivory plume
blissful saddle
#

I think the best way is to get the general sense and meaning of the dialogue line and translate it to your own. How someone with that same demeanor would speak in your language?

#

translation is less about parsing word by word and more about translating the meaning of the original message as close as possible

#

and that's why bot translations are always terrible...

fervent horizon
astral prism
#

uhhh it's a postfix so im not sure

#

it'll do what it usually does THEN do what you have written out there

#

you'd probably want a prefix?

#

to overwrite the usual logic for the frogs

fervent horizon
#

ok, I'll keep tinkering. Still new to all of this

astral prism
#

no worries, a good start

fervent horizon
#

Are cutom locations like grampleton fields still considered farms

#

code wise?

astral prism
#

if you can build on them yeah

#

depends what you mean by farm

fervent horizon
#

ok, so referenceing farm is good to get the terrarium location

astral prism
#

they're a buildable location and you can grow shit but the only place that is of type 'Farm' is the farm

fervent horizon
#

var farm = Game1.getFarm();

                    // Place the frog on the farm
                    farm.animals.Add(farmAnimal.myID.Value, farmAnimal);
                    farmAnimal.home = terrarium;
                    farmAnimal.setTileLocation(spawnTile);

So will this code only work for terrariums on the main farm?

cedar turtle
#

hm.. If I were to make a UI mod (way out of my abilities) which files would I even be looking at to change?

ivory plume
#

(I'm not familiar with frogs, but postfixes are fine for adding extra behavior in addition to what the game does.)

lucid iron
#

if u want to make an interface mod i'd start by looking at a existing one

ivory plume
lucid iron
#

it is mostly replacing textures

cedar turtle
#

Yeah, I'm aware. But I guess I could just look at existing ones

lucid iron
#

but there r a lot scattered across menutiles and cursors

fervent horizon
#

is there a check for if the animal door is open?

ivory plume
#

The tricky thing for UI mods is changing the text color if needed; you need Harmony if you want to do that, and it's probably not very fun to do.

ivory plume
fervent horizon
#

Cool thanks

cedar turtle
#

Yeah. I'm not skilled or experienced enough to do anything of that sort. I was just wondering

lucid iron
#

!anyonecancook

ocean sailBOT
#
cedar turtle
#

Still not experienced enough :p

#

I stick to easy things for now. (even those I might never do)

tardy adder
#

You can practice little by litte πŸ‘€

lucid iron
cedar turtle
#

I was thinking about making an npc but that's lots of effort I imagine. Coding wise I mean (not to mention character and sprites)

lucid iron
#

starry blue ui uses this for text colors

latent mauve
#

honestly, my biggest challenge for custom NPCs so far is thinking up enough dialogue lines to have them not constantly repeat themselves

blissful saddle
#

the only thing I would probably use generative IA is to generate NPC gibberish lines

tardy adder
#

Dialogue lines and events are difficult for me

blissful saddle
#

'write 100 lines of dialogue as if you were a grumpy blacksmith in a small coastal village'

fervent horizon
blissful saddle
#

I have a conceptual question...

Would be possible to cook a mod that checks the current schedule of an npc and gives it a new schedule on fly before returning them to their standard schedule?

fervent horizon
#

That is kind of what inviting a NPC to the movies does in a way, so I bet it is

dusky moss
#

hey guys, whats the $ for Alex's shocked face

#

I think im gaslighting myself 😭

#

it should b 6 no?

tardy adder
#

Like 6 I think

dusky moss
#

okay thanks Ive been staring at it for like 20 mins

tardy adder
#

This is from what I kinda remember in my recent dialogue craze, don't have the spritesheet to check

dusky moss
#

if it doesnt work I can always go back and edit!!

#

I'm trying to get all the days of the week done before playtesting first route, then ill go fill in event n season stuff

#

I still have to map out my events lol

blissful saddle
#

I thought it was more like an event

blissful saddle
#

western lecture standard

tender bloom
#

?????

tardy adder
#

????

tender bloom
#

I reported

tender bloom
#

But it’s hilariously inaccurate too, anyone can fake that level of β€œproof”

tardy adder
#

Thanks because what that gotta do with the price o rice? (Expression)

iron ridge
#

i assume the end goal is a course

#

or the proof is credential theft?

tender bloom
#

I could photoshop a sales dashboard toooo

ivory plume
#

I guess that's the $ for Alex's shocked face.

tardy adder
tender bloom
#

22,000 is definitely beyond the portrait limit

tardy adder
#

Alex is shookethed

tender bloom
#

I don’t think any computer has a graphics card that happy

calm nebula
#

@outer glacier

blissful saddle
#

that was the daily revenue of my farm at first summer before I sabotaged myself with mods

lucid iron
#

Aw man I missed some shenanigans

brittle pasture
#

eh just a spambot

ivory plume
#

Monthly mod stats time!

Stardew Valley 1.6.9+

Stardew Valley 1.6.9 through 1.6.14 were released this month! Despite being 1.6.x patch versions, these were a pretty big update for mods; see the mod author migration guide for an overview of the changes.

Compatibility list revamp

The wiki compatibility list is dead, long live the mod compatibility repo!

The wiki page was reaching the max complexity the wiki could handle. It was just under MediaWiki's 'post-expand include size' limit, most edits to the page were timing out, and editing it was enough to slow down the entire wiki server. Unfortunately, keeping the table on the wiki was no longer sustainable.

The move also comes with a few benefits:

  • The JSON data is very easy to use in tools, unlike the former wiki text.
  • The data has been unified into one list, so it's more intuitive to edit mod data overrides.
  • The data is now validated automatically to make sure it's correct, and to detect issues like broken workarounds.
  • Added field docs and auto-complete directly in the text editor when editing the data.
  • Added an open-source license for newer contributions to the data.

Stats

Milestones

  • SMAPI surpassed a quarter million endorsements and 6 million unique users on Nexus!
  • We reached two stats anniversaries this month: we now have four years of mods by type, and seven years of web costs.

Mod compatibility

71.8% of SMAPI (C#) mods are compatible or have a workaround. That's down from 74.4% before this month's Stardew Valley updates, but pretty good for the scope of those updates.

Unique mods by type

We have 294 more mods this month.

That includes:

  • +193 Content Patcher;
  • +48 SMAPI;
  • +29 Alternative Textures;
  • +17 Fashion Sense;
  • +8 Farm Type Manager;
  • +3 XNB;
  • +2 Mail Framework Mod;
  • +1 Producer Mod Framework;
  • +0 Better Artisan Good Icons;
  • +0 Custom Music;
  • +0 Json Assets;
  • -2 Custom Furniture;
  • -2 Dynamic Game Assets;
  • -2 Shop Tile Framework;
  • -3 TMXL Map Toolkit;
  • and +2 for frameworks with <100 content packs.

Content Patcher packs

We have 9,811 Content Patcher packs.

The top six Format versions are...

  • 2.0 (3,288 β†˜ 3,241) for Stardew Valley 1.6;
  • 1.19 (576 β†— 577) for Stardew Valley 1.4;
  • 1.3 (472 β†’) in old unofficial guides;
  • 1.28 (385 β†˜ 375), latest version for a while last year;
  • 1.29 (398 β†˜ 386) for Stardew Valley 1.5;
  • 1.23 (361 β†’) for mysterious reasons.

The 2.0 format has dropped for the first time, with the newer 2.1–2.4 formats now available.

Open source

  • We have 3,055 tracked C# mods, of which
  • 1,879 mods (62%) have a source code repo, with
  • 1,059 (56%) in a multi-mod repo and 820 (44%) in a single-mod repo.

Web costs

And finally, web hosting costs for the SMAPI.io site, update-check server, and API rose slightly to US$139/month. That will increase significantly in next month's stats, since the post-1.6.9 traffic isn't shown yet. (The graph is always a bit behind due to billing cycles.)

See also

And that's it for this month!

blissful saddle
#

I think I lost the one from October, because that is a very impressive report

lucid iron
#

was wiki 502 directly caused by mod compat page? or was it combo of that plus 1.6 console

ivory plume
#

I think it was a combination of someone scraping the wiki until they got blocked, the mod compatibility list, and the post-1.6.9 traffic spike.

rancid musk
#

I'm curious about how many requests the website is serving to have those kinds of costs.

ivory plume
#

In the last 13 hours, it received 1 162 112 update-check API requests for 17 836 836 mods (11 535 unique) according to its anonymized stats. That only covers the update check API endpoint since the last server restart; it doesn't cover the main page, log parser, JSON validator, redirects, or other API endpoints.

teal bridge
#

+3 XNB

(sigh)

blissful saddle
#

the negative counts is because the mods were removed or not updated?

ivory plume
#

Those are mods which were hidden, deleted, or converted to another type. For example, a TMXL content pack converted to Content Patcher would count as -1 TMXL and +1 Content Patcher.

calm nebula
rancid musk
#

Hmm. A bit more expensive than I'd think for that level of traffic, then, but normally I'm used to bare metal hosting and not azure/aws so that's expected.

tender bloom
#

Is bare metal a host or is that a term for bare bones?

gaunt orbit
#

kind of the second one but it's more specific

rancid musk
#

It's a term. You're basically renting a specific machine in a rack somewhere and handling all the software yourself, as opposed to something like aws or azure where they manage a lot of the software for you and depending on how it's set up, there's a lot more.

#

Bare is... bare. πŸ˜„

gaunt orbit
#

many web hosts are "virtual" hosts, which host many servers/websites on a single computer with sandboxing. bare metal hosting runs directly on the hardware and has the whole computer dedicated to a single renter/server

ivory plume
#

I think cloud hosting is a bit more expensive for the amount of traffic, but only when you don't account for the time spent maintaining bare metal servers (e.g. updating the servers, dealing with Windows Update breaking the server occasionally, manually scaling them, etc).

rancid musk
#

Yeah, not having to do that is a big value add.

ivory plume
#

I think bare metal servers are worth it for a company that has a devops team or something, but for a hobby project where every hour spent on server stuff is an hour less of sleep, the convenience of cloud hosting is worth the added cost.

rancid musk
#

I've been enjoying cloudflare workers recently for some hobby projects. I'm paying $5 a month, and even that's only because I needed websocket support.

#

Granted that project isn't serving nearly as much traffic as something like smapi, but it's getting a decent 500k requests per month.

ivory plume
#

Serverless is interesting, though SMAPI's site does need to store state (e.g. the mod update cache). So if it can't store it in-memory, it would need something external like Redis which would be way more expensive.

rancid musk
#

For a hobby, being able to just deploy some js onto a vaguely defined cloud and have it work and scale and stuff is perfect

ivory plume
#

(Flashback to the MongoDB days.)

rancid musk
#

For something like the mod checker on Cloudflare Workers you'd definitely want to use the D1 SQL rather than the KV. Reads are an order of magnitude cheaper, and the latency isn't a significant tradeoff.

#

The KV is just... silly. $0.50 per million reads, compared to D1 SQL at $0.001 per million rows read. Granted you need to be careful with your queries but if you're, say, doing SELECT * FROM ModData WHERE id IN (x, y, z) then you're not going to be doing full table scans and reads should stay quite low.

#

This has me curious if anyone has done C# on Cloudflare Workers now

brittle ledge
#

I love seeing these stats every month. Curious if CF will drop off at some point like BFAV did or if most packs are just straight up abandoned at this point

#

(Hey silvermoonchan, need a new project SBVLmaoDog )

old edge
#

Hiddenuntilmet is a new character setting. Where can I find all the doc for new NPC features in 1.6.9+?

#

I was using a dynamic token before and noticed they only load at start of game

gaunt orbit
#

The migration page for sure will have it, or a link to it.

#

Not sure if it's on the npc modding page yet

feral pecan
#

anywhere I can find a good tutorial/api about UI editing

gaunt orbit
#

Textures or layout/function?

feral pecan
#

I basically want to replace the nodes of the skill levels with a bar that displays your excess exp once you reach level 10. I wanna know how much extra exp I've been getting

#

I found the mastery bar draw code in the decompliation, so I plan to reference that

gaunt orbit
#

You will definitely need c# for that

feral pecan
#

I have C# experience, Duck Game and Terraria modding

gaunt orbit
#

Oh wonderful!

#

Then it shouldn't be too difficult, though tutorials basically don't exist for c# modding, beyond the basic usage of harmony (which you'll likely need for this project) and the tools that SMAPI provides to mods

lucid iron
#

!decompile

ocean sailBOT
gaunt orbit
#

They already decompiled the game it sounds like

feral pecan
#

I already decomiled it

lucid iron
#

then u good Dokkan

#

one thing to be aware of is custom skills

gaunt orbit
#

[[Modding:index]]

lucid iron
#

the framework ppl use for that is spacecore, u may need to do something about it dunno

feral pecan
lucid iron
#

incidentally

gaunt orbit
#

There's links there that document SMAPI's toolkit, beyond that you will also probably want to read the harmony docs, since it's different from the patching system tmodloader uses

#

!harmony

ocean sailBOT
#

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

lucid iron
#

there's a vanilla thing called mastery that use up the excess exp think

feral pecan
lucid iron
#

do u care about it for ur own counter?

feral pecan
gaunt orbit
#

The principles are similar but not the exact same

feral pecan
#

alright, sounds like I'll be able to figure it out then, thanks guys for the pointers

gaunt orbit
#

Any time

feral pecan
#

btw where is exp values stored in the save?

gaunt orbit
#

Well, you'd want to read it from the game when loaded, not directly from the file

#

It's somewhere on Farmer though

feral pecan
#

I know, I just want to make sure it doesn't cap it at 15000

gaunt orbit
#

The save is direct serialization, you'd want to unlimit it code-side using harmony

#

Or alternatively, keep the limit but track excess in moddata to prevent unintended side effects

feral pecan
#

I don't know if the vanilla game caps exp, so that's what I'm trying to check, because that determines how I go about my mod

gaunt orbit
#

Yeah so you'd want to start in Farmer.cs to see how xp is handled

feral pecan
#

alright

#

ok if I'm reading gainExperience correctly, it looks like it doesn't cap exp, even after unlocking mastery

old edge
#

Hmm for some reason my mod isn't working anymore like it did before 1.6.9 none of the mail flags are being set when shown, dynamic tokens aren't working, events and quests can't be found...

loud ice
#

i am trying to get the fish smoker to smoke another item, i followed the guide on stardew wiki, but my code is not working :/

#

man i love makings mods

drowsy pewter
# loud ice i am trying to get the fish smoker to smoke another item, i followed the guide o...

There's a couple isses:

  1. I can't parse syntax easily when it's uploaded to discord like this, so I'll probably miss some syntax stuff. You can use smapi.io/json to upload json code in the future

  2. You're trying to patch over the vanilla SmokedFish rule, which if this succeeded, it would prevent any fish from being smoked (since the rule is replaced by your smoked meat rule).

  3. meat_item is not a vanilla context tag, so if you're trying to test this with vanilla items, it may or may not work depending on if you have Cornucopia installed or not.

  4. In order to make flavored items, you either need to copy the vanilla FLAVORED_ITEM parameters (compare to unpacked smokedfish rule in vanilla files), or create your own flavored item rule, using another machine mod as an example. "Flavored" items that are custom (not a smoked fish, jelly, wine, etc) require a very specific format.

You have two options, one is that you can patch the specific vanilla SmokedFish rule to add meat_item as a potential tag, or you can create a new rule that outputs a new Smoked Meat item. Cornucopia does both approaches, and I'll link those both as examples

#

Option A, add additional accepted tag to existing rule: https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Cornucopia Artisan Machines/machines/keg.json
Under the Enable Vegetable Wine section, there's a section where I add tags like category_vegetable, etc tags to the vanilla keg wine rule. You would do the same for meat_item, targeting the SmokedFish rule instead

Option B, add new smoked meat rule. Search for SmokedMeat on this page: https://github.com/MizuJakkaru/Cornucopia/blob/main/[CP] Cornucopia Artisan Machines/machines/deluxesmoker.json
We added it to our own custom machine, but this can be added to the vanilla fish smoker instead. We have to use an Extra Machines Config feature in order to imitate the product sprite + smoking in the output product

loud ice
#

I was trying option A

#

Thanks for the help 6480

teal bridge
#

Has anyone ever had an issue where Nexus doesn't show a thumbnail for their mod?

#

In the search results and also the "my mods" page.

gaunt orbit
#

no, but I have had it take > 1 day for the thumbnail to update before

loud ice
lucid iron
#

one of my mod's thumbnail have been stuck

teal bridge
#

And became unstuck eventually, or...?

lucid iron
#

i went and clicked the star on a different image

#

it seemed to have cleared things up blobcatgooglyblep

teal bridge
#

That's actually what I just tried. No immediate result but maybe it takes time.

lucid iron
#

u pressed Save right

teal bridge
#

Ah - now I am seeing a thumbnail in the search result! Good.

gaunt orbit
#

thumbnails are slow and weird sometimes

teal bridge
#

Still doesn't show up on my mods page, but that's less important.

#

Most features on Nexus are slow and weird! But this was the first time I ran into an issue that didn't resolve itself after about a day, or look different in a private window.

lusty halo
#

uuuh I know it matters little, but NexusMods on their bluesky account posted a short video with Fashion Sense's mods for a "Wicked"-like style, showcasing the clothing mods name in panels...but NOT my animated hair name, who is clearly shown used for Elphaba and Galinda's stand-in movie hair, and in action in the video, and I'm not sure how I feel about that. The name does briefly show in the FS menu, but still...SDVpufferflat

brave fable
#

does markdown not let me use relative urls SDVpufferfush i'm sure i've done this in the github web editor

uncut viper
#

github markdown does allow relative urls tho ive not done it with images

brave fable
#

oh it does show up on web after pushing after all, just a nuisance that vs can't pick up on it

teal bridge
#

VS is pretty bad as a Markdown editor.

brave fable
#

i'd like to think it'd be a little better given the same company owns the git platform, the ide, and the file system

teal bridge
#

Have you worked at a company that size? It's precisely because the same company owns all that stuff that it's so poorly coordinated.

brave fable
#

surely someone there's tried to write a readme for their github page in visual studio on windows and thought it'd be nice to use relative urls in md

#

i'm going to fax steve ballmer about this inconsistency

teal bridge
#

Many of us someones, yes. We just use other editors.

calm nebula
#

I now have developed the theory that focus works for Microsoft

teal bridge
#

Rider is actually pretty decent about Markdown, I was surprised to find. I think it must just be loading a webview or something.

teal bridge
old edge
#

Is it not possible to add custom context tags?

brave fable
#

sure it is, all sorts of mods do SDVpufferthumbsup

old edge
#

How do you do it

brave fable
#

from love of cooking:```json
// "Target": "Data/Objects"
"{{ID}}_curry": {
"Name": "{{ID}}_curry",
"DisplayName": "[LocalizedText {{STRINGS}}:item.curry.name]",
"Description": "[LocalizedText {{STRINGS}}:item.curry.description]",
"Type": "Cooking",
"Category": -7,
"Price": 220,
"Texture": "{{ASSETS}}/ObjectSprites",
"SpriteIndex": 15,
"Edibility": 35,
"IsDrink": true,
"ContextTags": [
"color_red",
"dye_strong",
"food_soup",
"food_spicy"
]
}

old edge
#

I assumed all I have to do is write a new one in the object data contexttags section but it's not working. Along with an event I made using the kindadumbautumn track not working.

#

I made a special order using my item and everything is correct no errors is this a smapi issue. Unfortunately since I am poor I have no Internet and very little data to download updates. so I'm on smapi 4.1.3 and Stardew 1.6.11...

brave fable
#

a different unreleased mod of mine sets context tags via C# just fine, but i suppose that's a little different

lucid iron
#

make sure u spawn new items whenever you change this stuff

brave fable
#

what type is your item? BC and O populate from ContextTags, but other types don't

teal bridge
#

Drinking curry, now that sounds appetizing.

old edge
#

Hmm does HasFlag no longer work?

tranquil quiver
#

Anyone knows how I remove the top bar covering the categories?

old edge
#

Got my event to work but I had to remove the mail flag

brave fable
brave fable
old edge
#

Hmm I see what the issue is when adding context tags they have to be in parenthesis each one.

#

Thought it was a long string

brave fable
#

parentheses? see the loc curry example above, it's a list of comma-separated quoted strings

old edge
#

Yeah sorry those thingys ""

#

Is HasFlag obsolete now?

brave fable
#

no? share how you're using it

teal bridge
hallow prism
#

(it's pretty rare that stuff is made obsolete)

teal bridge
lucid iron
#

u have to unsee a event to see it again did u forget

old edge
#

"When": {
"HasFlag": "mailStone1"
}

#

Then did debug showmail mailStone1 command, saved a day. but event doesn't trigger. Only when I remove the mail flag does it work

brave fable
#

yeah that won't work

uncut viper
#

showmail doesnt give a mail flag

brave fable
#

you want debug seenmail

faint ingot
#

In CP, can I use EditMap to set the properties of the Object layer, for example to update TileData Action? If so how, since the object layer has the same name as the tile layer?

brave fable
#

the Object layer doesn't exist in SDV exactly; all TileData Objects are assigned as tile properties to their matching layer

#

MapTiles SetProperties is the same as including a TileData Object on the matching layer in Tiled, just at runtime with CP

brave fable
#

i believe that's the page they're already on, chief SDVpufferchickmayor

final arch
#

... youre right. ^^
yeah SetProperties is the one you want to use

faint ingot
#

Thanks I think i understand

brave fable
#

does nexus often get stuck at files > add a new file > upload > upload is being processed? mine's been on the spinner for 5 mins now

uncut viper
#

yes

#

i just refresh if that happens

brave fable
#

this might take a few tries then SDVpufferfush

#

i guess 2.0.1 can wait

brittle pasture
#

nexus not eating poop randomly challenge (impossible)

teal bridge
#

Strangely, that's one of the few things that Nexus doesn't do to me.

#

I wonder if it's some silly virus heuristic thing, like too many Harmony patches makes it choke.

brittle pasture
#

I've ran into that uploading json content packs
it's just their server eating dirt

calm nebula
#

(I've never encountered it either.)

#

and I used to like, upload updates to 20+ mods at a time

uncut viper
#

id say at a rough estimate it happens to me like 5% of the time

teal bridge
#

Collectively trying to understand what Nexthulu likes and doesn't like is like some sort of Rashomon plot.

calm nebula
#

tbh I feel like Nexus has gotten worse recently

teal bridge
#

Or the elephant parable.

calm nebula
#

is there a "give atra another cup of coffee" parable

rancid musk
#

atra it's past 8pm do you really need more coffee

calm nebula
#

yes

lucid iron
#

do u like coffee or just caffine

calm nebula
#

both. both is good

#

(I have caffeine pills and they are Not The Same.)

tiny zealot
#

i want to taste the delicious beverage. why would i take a pill that doesn't taste like the thing i like to drink

teal bridge
#

Well, caffeine pills mixed with a certain <censored> can also provide a nice <redacted>

fading walrus
teal bridge
#

(Nothing illegal was implied, just things you probably shouldn't do)

#

For all my skepticism on Rider, one feature I am really going to miss when going back to Visual Studio is this "nesting overview" where it shows you whatever insanity led up to your current position.

#

It would be all the more awesome if it could be combined with a half-decent decompiler, since Stardew's code is often a spaghetti tangle.

lucid iron
#

huh even vsc has this

teal bridge
#

It does? I know a lot of IDEs will show you the class and method but usually that's as far as it goes.

lucid iron
#

oh yea it doesnt go as deep as that for C#

teal bridge
#

This is all I get from VSCode, it's not as impressive.

lucid iron
#

but it does go that deep for json and sml for some reason

teal bridge
#

(Sorry these screenshots are so enormous... Retina shenanigans, everything on my screen is actually twice as big as it looks to me)

silver pelican
#

they look okay in all seasons except winter. ]:<

lucid iron
#

these 3 squares are the animated water?

silver pelican
lucid iron
#

those tiles might not exist on winter_TileSheet

silver pelican
#

i think i may have an idea how to fix this. one sec πŸ₯²

lucid iron
#

animals can only have 4 frames per movement direction right

silver pelican
#

Update: Fixed it. I had put the animation tiles wrong.

elfin gust
#

Hi all - I'm pretty new to trying to work on mods and pixel art and most of it has been me editing mods I have in my game for personal use. Currently, I'm trying to edit the 'rustic wood plank' path texture so that it doesn't have those eye-sore gaps when placed alongside another path - I editted the gaps out of the png in the assets folder, but the gap is still present. Is there some sort of coding I should be doing?

tender bloom
#

Can you show some pictures to explain?

#

Screenshots of the game, for example

#

And possibly the asset you’re editing

#

The gaps might be on the other path, but in general I believe paths only care about other paths of the same type

#

Regardless, I’m just guessing without pictures

elfin gust
#

annoying gaps in question

slender badger
#

Are you editing another mod or the unpacked base game assets?

elfin gust
#

edit of the texture

#

It's Elle's Seasonal Paths

#

The icon in my inventory in-game shows the edited path, but when placed it defaults to the shown texture

#

Basically, I'm just trying to get an even merge between the stone paths and the rustic paths, without the gaps to the terrain underneath. Right now all I truly know how to do is edit textures, but I imagine there's some sort of code or something I might be missing in the transfer of icon to on the ground.

#

an example of what i mean

brave fable
#

if the path is seasonal, is it possible you're editing the tilesheet for a different season to the one ingame atm SDVpufferthinkblob

#

the two don't appear to match colours

tender bloom
#

There’s two places a path is, seems like you’ve hit one but not the other

#

!log with a patch summary should sort it out

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.

tender bloom
#

!patchsummary

ocean sailBOT
#

Can you do these steps to provide more info?

  1. Load your save and view the content that should be patched.
  2. Type patch summary directly into the SMAPI window and press enter.
  3. Upload your SMAPI log to https://smapi.io/log (see instructions on that page).
  4. Post the log link here.
tender bloom
#

You’ll want to narrow it down to the mods affecting the floor texture

#

I wouldn’t be surprised if you discover there’a a hidden one

elfin gust
#

It is the one currently in game, its the spring texture and it is currently spring

#

!log

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.

elfin gust
#

I think I did this correctly?

ocean sailBOT
#

Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 37 C# mods and 66 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

brave fable
#

this may be the longest patch summary in history

elfin gust
#

Should I edit the flooring in the Terrian Features folder as well?

slender badger
# elfin gust I think I did this correctly?

You need to update SMAPI & Content Patcher for a start, and I'd strongly recommend testing with a minimum mod list to make sure that other mods aren't overwriting your edits

elfin gust
#

I know, I have a truly obscene amount of mods

brave fable
#

according to the patch summary, it's editing these assets:

Brick Floor base version (EditImage TerrainFeatures/Flooring)
Brick Floor base version for winter (EditImage TerrainFeatures/Flooring_winter)
Brick Floor Icon (EditImage Maps/springobjects)

elfin gust
#

Oh I thought they were updated 😭 Everything in my game has been working as expected except for a weird temporary freeze when sleeping so I thought I'd gotten everything when I started playing again

brave fable
#

so yes, you want to target the TerrainFeatures assets as well

#

SpringObjects is simply the icon when held in the inventory, while TerrainFeatures sprites are the ones drawn when placed

elfin gust
#

Alright let me dig those up, if thats what it is it should be a decently easy fix?

brave fable
#

should be! just another sprite edit SDVpufferthumbsup

elfin gust
#

Oh dear goodness I am either in the wrong place or is it supposed to be the .xnb file?

brave fable
#

well all assets are packed with the game as XNBs, have you unpacked them already with StardewXNBHack?

elfin gust
#

I have not

brave fable
#

or are the modded files given as xnb?

#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

elfin gust
#

The only thing I've edited to this point is a couple of hairs implemented through fashion sense

#

So I didn't have to touch the game files

brave fable
#

it's easy enough to use, provided you're on PC SDVpufferthumbsup

elfin gust
#

I am indeed!

#

I appreciate all the help! I have found with the edits I actually enjoy pixel art, so I have considered beginning to do some custom design work but I haven't even a small clue how to implement anything or do any sort of coding.

brave fable
#

all the implementation and code is exactly how you see it in any CP or FS mods you download, so for the most part you can copy whatever they're doing and follow along in the framework documentation to fill in any knowledge you're missing

elfin gust
#

Gotcha! Thats sort of what I've been doing.

#

Once I finish the edits in the file, is there anything I need to do to repack it to implement it into the game?

brave fable
#

nope! no repacking needed, all framework mods will read the files as-is

#

if you're making a new mod you'd want it in a new folder and with edits to the manifest file as needed of course, but editing another mod in-place won't need any extra work or tools

elfin gust
#

Awesome! Just finished editing the terrain features file, so moment of truth

#

Did not work so I tried editing the rest of the seasonal tiles and the Winter file, moment of truth p2

#

SUCCESS!!!

brave fable
#

mmmm... perfectly aligned kit-kats

elfin gust
#

I can at last place my paths in peace

brave fable
#

congratulations! now you too will be bitten by the bug that makes you want to fix tiny inconsistencies in the game, an itch that soon spirals into an addiction, and finally, a hobby

elfin gust
#

so much nicer....

elfin gust
#

This turned into me making a hair shorter that I liked to match my existing hair

#

and now... this

shadow pagoda
#

How simple would it be to modify these items windows? I want to add a custom string to tell the user to save X amount of the item for future projects. I would preferably like this string to be next to the word Seed in the first and third screenshots. And next to the backpack inventory for the second image (could be more to the left near the name of the item itself so people don't get it confused with the count of the item in their inventory)

brittle pasture
#

if you just want to add extra text you can postfix the functions that return the item's name/description/category text

#

should be very simple

lucid iron
brittle pasture
#

that mod also exposes an API to add your own decorations, if you don't feel like touching UI code and is fine with an extra dependency

lucid iron
#

FFP informant compat when

brittle pasture
#

I actually did look into it! But the public API doesn't do what I wanted SDVpufferflat

fervent horizon
#

Anyone know what exactly visible fish uses when looking at custom fish mods? I am working on one and I believe I have it working, but visible fish is throwing errors on the maps that would have the fish.

brittle pasture
#

!log what errors?

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.

lucid iron
#

check if your item queries are correct

latent mauve
#

Friends, is there a way to set up an item query that only pulls items with a specific context tag, and if so, how do you format that?

I'm looking for a quick way to add my custom child beds to the furniture catalogue based on a config without having to add them one by one, and without having to enable them for random sale.

brittle pasture
#

PerItemCondition

#

there's an example in the RANDOM_ITEMS section

latent mauve
#

ah-ha, ITEM_CONTEXT_TAG does exist!

#

In the GSQs, which is a totally different page

#

The example for RANDOM_ITEMS shows categories, which is not what I needed

brittle pasture
#

yeah about to link it lol

latent mauve
#

okay, time to add context tags to all of them in the furniture definition, which is definitely easier than repeating them all again

obtuse pike
#

trying to edit a door texture but any assets i edit don't seem to be reflected in the game itself-- does anyone know in which png the bedroom door textures are located?

fervent horizon
#

I'll have to get the error log tomorrow. The latest log is the one where I removed the pack to verify it was the cause.

hard fern
#

towninterior

obtuse pike
#

that's the one im editing SDVpufferwaaah

hard fern
#

the door animations are in everyone's favorite cursors

brittle pasture
#

yes, harmony postfixing

#

(it looks scarier than it is)

obtuse pike
hard fern
#

since you're editing someone else's mod you could've just looked in the content.json for where the doors were being patched

obtuse pike
#

that was my first step, but as far as i could see it was just towninterior that had the doors

#

but i think i fixed it-- thanks

latent mauve
#

Well, clearly I did something wrong, it's telling me that 'IS_CONTEXT_TAG' isn't a known query or alias when I try to put it in PerItemCondition.

uncut viper
#

did you put IS_CONTEXT_TAG or ITEM_CONTEXT_TAG

latent mauve
#

d'oh

#

I put IS, was looking at other queries and must have gotten confused

#

Thanks, it's working now that I have ITEM in there properly. Now I just need to try to move them around so they fit in with the other bed items in the catalog rather than being split in half weirdly.

#

doesn't look like there's any way to cleanly position them with the other beds that ARE part of randomsale, oh well

#

haha, got it! I just changed the PerItemCondition for "Default" in the Furniture Catalogue to exclude my collection context tag, and then let them appear with my other entry for the context tag instead, so they're alphabetically sorted again and all together

brave fable
#

so what's the reason for the name Futan on futan bear, futan rabbit, ..

#

i've always subconsciously associated it with futon because it's all plush like that

#

what does it mean

silver pelican
deep cypress
#

The Treasure Map Property: I don't super see any examples of vanilla maps using it; I suspect it allows whatever is in the map property to be dug up at a certain percentage rate? Also, does it take one entry, or is it space delimited?

#

Also, some trivia: bushes spawn on the bottom left corner of the bush, big rocks spawn upon the top right corner.

royal stump
#

I'm also guessing it's repeatable*...it removes the property from the tile after it's dug up, but that would probably just get reloaded whenever the map does

deep cypress
#

Ok, thanks!!! I will attempt a wee bit of a test upon it then!!!

#

Can that be set in the crawling ants box, or does it have to be on the tileset?

rigid musk
#

Is there anything else I have to do to make an event load into the game for a specific NPC - other than to have the 'events' json be included and writing the event itself? I can't get it to show up in game at all ( i can send the events json uploaded to the validator but it shows up as one massive line which i'd imagine is hard to read)

slender badger
#

Depends on which map the event triggers at. If it's a map like the blacksmith which doesn't have any vanilla events, then you'd need to load a blank event file in order to be able to edit it

#

If you run a patch summary for your mod though, it should give you more info about why it's not triggering

uncut viper
#

when in doubt you should generally always err on the side of sending a json, too. a hard to read json is still easier to read than no json at all!

deep cypress
ocean sailBOT
#

Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 27 C# mods and 61 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

rigid musk
#

What does the 'blank event file' mean? (not used to all of this but i do appreciate the help!)

as far as im aware no vanilla events occur at the desert so that could be my problem

deep cypress
#

Yes, then definitely you will need one! πŸ™‚

#

Gimme a second, I will pull up an example from one of my mods....

#

{ "Action": "Load", "Target": "Data/Events/Custom_RestStop", "FromFile": "Assets/Locations/Blank.json" },

rigid musk
#

Thank you so much!

uncut viper
#

make sure your blank.json is an actual file too

#

it should have {} in it and nothing else

deep cypress
#

So, just make sure to have the folder right for your json, cause you might or might not be using assets/locations folder filing sytem

uncut viper
#

it basically creates an empty canvas for your edits to work on, since the game doesn't start with it

slender badger
#

Keep in mind though that SMAPI can't load the same file for multiple mods, so if you load one and another mod also loads one, both will crash and not load anything

deep cypress
#

I need to go to bed, my wife is annoyed at me, and with good reason. I lost my phone, and cannot find it, and my MiniMe is awake because I am awake. Good night loves!!!

rigid musk
#

For compatibility would it make sense to have a 'has mod' condition for mods that might edit it? I want my mod to be as compatible with other mods as possible (once I get it working anyways)

slender badger
#

So you're best off adding a priority to it if it's for a vanilla location so that other mods will overwrite your blank file and won't cause issues, like so:

{
  "Action": "Load",
  "Target": "Data/Events/Desert",
  "FromFile": "Assets/blank.json",
  "Priority": "Low"
},
#

You can disable your Load with HasMods too, but making it low priority is more robust because it'll allow any other mod to work rather than needing to specify particular mods

rigid musk
#

Ohh that's very nice thank you

slender badger
#

The other option is adding a config option to disable the load, but that then relies on people actually reading things

rigid musk
#

I know from experience that people do not read things

#

Would I be able to load it from the same blank json as the NPC is loaded from or should I make another in a separate folder

slender badger
#

Yep, you can load anything that needs a blank from the same file

#

I'd recommend checking out Jorts & Jean if you'd like an example, since Tia loads blanks for the NPCs and for the JojaMart

whole raptor
#

How does stardrop deal with replacer files? SDVpufferthink

brittle pasture
#

I don't think it does

restive hill
#

Assuming I don't directly use a lick of other people's assets (as in, not uploading any of their assets), do I have to ask the author's permission for crossover events and making reference to their characters and other things?

brittle pasture
#

(disclaimer, I don't make NPCs)
generally it's very frowned upon to touch other people's NPCs without permission

devout otter
#

I think that falls under "Modification permission". And regardless, why wouldn't you ask somebody to use their character. It's just good manners.

brittle pasture
#

if you're making events involving them you are writing them without permission

restive hill
#

Sounds like a gray area of fair use... Well, I guess I'll just stay on the safe side.

rigid musk
#

I wouldn't mind if someone made events but I would still want them to ask

#

Especially if it was a character I made

restive hill
#

I'm extremely paranoid about someone outright stealing my assets (even though they're all sitting in my local storage or cloud, encrypted by at least two layers), but I welcomed crossovers and references, provided that it's not some massive butchering of my characters.

ornate locust
#

I think that if you like the character you are crossing over with, upsetting their writer with a "technically I am legally allowed to write this crossover" wouldn't be something you'd want, right?

#

It wouldn't hurt to just ask.

restive hill
#

That's the point, I also appreciate not having an army of people coming after me, even if what I do is legal and/or not a violation of the TOS of the platform.

#

I've worked with modders that have a rather dramatic history in the modding community, their reputation stained. It's not something you can easily redeem from.

lucid mulch
#

modders with fragile egos? never

hallow prism
#

i think it's always good to ask because then you cover the case of people wanting to be asked first, but also, it's opening the door for more solid collaboration. If you include a npc in an event or refers to them in a CT and the author is aware, they may then have some extra content when your mod is installed or something, thing that may happen if you put it directly in the mod but months after because they don't know about it.
I mean, if you find the idea of integrating them cool, chance is that the author may too!

sour anchor
#

Does anyone know where the scarecrow file textures are located? I've been looking for an hour now

hallow prism
#

craftable are in tilesheets

#

i don't remember if they are named big craftables or craftables

fading walrus
#

just craftables

sour anchor
#

Thanks a lot!

hallow prism
#

to be fair some stuff has different naming so it doesn't help (like the json file and the art file are not the same exact name)

fading walrus
#

they're mixed into the craftables png in the tilesheets folder

next plaza
#

Going to bed way too late so can't really debug it more though

night gazelle
#

Hi, I've been trying to mod barns to have additional upgrades, one of which is a cellar
I've been stuck for a while now, I see a couple of ways to do it but can't get any of them to work fully

First idea was to create a separate location for the cellar with CanCaskHere set to true and add a trap door to the barn that would teleport you there but I don't know how to make a separate cellar for each new barn and also how to set up warps to specific barns

Second was to have the cellar be on the same map but far enough away so you wouldn't see it from the barn and then setup warps between that, but I don't see a way for CanCaskHere to be set only in one area and I don't want the whole barn to be caskable

I found a mod that seemed to achieve it by adding CanCaskHere property to a tile but that doesn't seem to work and the mod was never updated

Any help or alternate ideas would be appreciated, thanks

final arch
#

I'd say your analysis is correct, can't rly be done with CP only

fossil bear
#

I recently tried Market town which is a nice addition to the game. I think it would be great if one could also purchase or rent a new building to open up a shop. Maybe with a quest line to be a competitor to pierre and then maybe buy out his place or something.

wise ermine
#

Hi! im not sure where to ask this but Im new to modding and im not sure where to start. I wanna make a dateable NPC but i can't find any tutorials about it.

help would be appreciated

slender badger
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.

slender badger
# wise ermine Hi! im not sure where to ask this but Im new to modding and im not sure where to...

There's a tutorial on the modding wiki, but if you're new to modding, I'd suggest starting with a smaller mod first. NPCs have a lot of different parts and require a lot of different modding skills, so they're pretty complex for a first project
https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC

Stardew Modding Wiki

So, you're interested in creating a new character for Stardew? Good news: with version 1.6, creating a character is easier and allows for more flexibility than ever. However, NPCs are one of the more complicated things to create for Stardew, as they have a LOT of moving parts. This guide aims to provide a basic but thorough walkthrough for ea...

slender badger
#

A good place to start would be making a small dialogue or event mod for a vanilla NPC, since those skills will be a big part of making your custom NPC

wise ermine
#

oh ok ok, thank you so much for the info!

fossil bear
slender badger
fossil bear
#

Why would I need permission to simply build a mod that makes it possible to buy a new building in town?

slender badger
#

Because your initial comment sounded like you wanted to expand on Market Town?

#

Hence why I said "unless you're planning to do your own separate take on the idea"

nimble marlin
#

oh god I came back to Stardew Valley after a couple months and not only the game had a lot of new updates but I also had to update almost 150 mods xD

pine elbow
#

Hi! The "%firstnameletter%name" part should not be touched when translating right? Since I assume it's all part of the code?

#

(and obviously the @ which pulls the characters name)

nimble marlin
#

its a token

pine elbow
#

thanks! and that goes for every time a word has % around it right?

#

I might have screwed up once before in that case ^^

fossil bear
#

I guess I'll use cp, some c#, tiled for asset logic and solid foundation for the custom buildings.
I guess I'll create a new asset in town that can be accessed via purchasing something from Lewis and then make upgrades available through Robin. Or something.

nimble marlin
lilac jungle
#

Question (may have been asked before).
Making a new map, is my understanding correct that the game swaps out the tileset graphics for the seasons based on the map properties such as Fall_Objects, Winter_Objects etc.? And that the graphics need to be prefixed with e.g. spring_, winter_ etc.?

final arch
#

yes

#

it swaps everything that starts with spring according to season

lilac jungle
#

Thank you!
@final arch What if I want to change some tiles properties based on the season? I assume that would surpass what one can achieve with Content Packs right?

drowsy pewter
#

you can do that with content patcher

#

content patcher can edit tile properties through json code or you can patch the map file conditionally

mighty lake
#

can anyone direct me to some resources for learning how to make my own recolors? 000027peeking_kitten

#

i wanted to recolor some mods to match my farm aesthetic but i dont know the first thing about AT or modding in general really

hallow prism
fading walrus
calm nebula
#

Morning, lumi!!!!

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
#

!unpack You'll want to unpack the game's content folder to poke at the tilesheets inside.
In addition, I'd look at a few existing recolours to see how they do things

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

hallow prism
fading walrus
#

Hi Lumi, hi Atra! RWave

fallow musk
#

do permanent buffs need to reapplied everyday?

brittle pasture
#

Yes

fading walrus
ocean sailBOT
#

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

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

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

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

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

SDV has a few quirks to remember too:

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

thank you love bcat_love

#

I want to recolor HxW’s bakery shed mod to match the italian countryside buildings mod catsweat no clue if it’ll work or even look good but i want ✨ cohesion ✨

fading walrus
#

Ooooo

mighty lake
#

luckily aseprite has a handy replace color feature i just learned of so it’ll be easier than i think most likely :D

fading walrus
mighty lake
#

i’ve dabbled in pixel art before but i’m nowhere good enough yet to publish anything i don’t think BunnyChubbySad

fading walrus
#

Oh don't worry too much about it, I'm far from a skilled artist myself but have a couple mods on my page that had art made by me in them giggle

calm nebula
#

Okay who made a 32kb string

mighty lake
#

i’m sure they are gorgeous SDVpufferwow

calm nebula
ornate trellis
#

the secret to making good art for a mod is to just make art aSDVpufferleaves

fading walrus
#

indeed

fallow musk
#

what are the units in which mvmnt speed is measured?
In this case, is it a 500% over base? How does it stack with other spd buffs, does it take the base default spd or the buffed base spd

brittle pasture
#

it adds extra speed to default speed, like all buffs

fallow musk
#

does fractional buff like 10% or 1.1 work here?

brittle pasture
#

I believe so

hallow prism
#

i think the books give 0.5

#

so if you check for how they work you may know for sure

mighty quest
#

I'm looking at the effect of Emerald enchantment and it doesn't make sense. I'm probably missing something. Can someone help me see it?

The Emerald enchantment effect is coded as such:

weapon.speed.Value += 5 * GetLevel();

And the effect of weapon speed is coded in MeleeWeapon.setFarmerAnimating:

swipeSpeed = (float)(400 - speed.Value * 40) - who.addedSpeed * 40f;

This means that a single level of Emerald enchantment cuts the animation length in half (200).
At level 3 the animation duration will be negative at -200.
None of this makes sense. What am I missing?

round dock
#

NPC Claire or me Claire

royal stump
#

I guess it'd be a 1 frame per tick minimum, with the animation comparing time passed to animation interval (swipe speed)

final arch
#

Not an RSV issue per se, but encountered with RSV weapons. With enough buffs to player speed from consumables daggers will no longer auto-swing. Anyone else encountered this?

velvet narwhal
round dock
calm nebula
lucid iron
#

What's the value of visibilityOption.DisplayName

indigo yoke
#

@brave fable question with LoC, with spacecore 1.6 you can add recipes to spacecore skills viva content patcher, so why the custom level up screen?

edit: to clerify, this here isn't needed and is blocking others from adding recipes to LoC level up it seems.
https://github.com/b-b-blueberry/CooksAssistant/blob/a824ed26b159a0f213a03dcb7ffc6d19ccbf8a28/LoveOfCooking/Core/Utils.cs#L819

GitHub

Stardew Valley content expansion. A suite of changes all about cooking. UI overhaul, generalised rebalancing, new features, and new assets. Still working through multiplayer sync issues for netfiel...

lucid iron
#

Oh it's already resolved

#

Assuming you used content patcher

gaunt orbit
#

is visibilityOptions.DisplayName in quotes?

#

no it is

lucid iron
#

So what happened is that DisplayName is "(strooberry)" and then you tried to use that as a i18n key

gaunt orbit
#

but then your key in your i18n should also be visibilityOption.DisplayName

#

also if you are using c# you can't use CP tokens like i18n

lucid iron
#

If you didn't use content patcher, then u want to remove the surrounding {{i18n:blah}}

#

Simply pass "Berry_Display_Name_Test" to get

#

Also useful, esp for translations in static method

gaunt orbit
#

if you still end up having problems, you can post your code and I can walk you through whatever's wrong

blissful lichen
#

Hey is it okay I ask for some help getting started with making a mod? I know how to add items with Content Patcher but I think I might need C# if I wanna make an instant grow fertilizer mod. I'm not remotely sure if I can even use C# to directly register the item.

uncut viper
#

anything content patcher can do, C# can also do. content patcher is just a C# mod

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

lucid iron
#

The intended use for framework is that other people edit in the data via content patcher or something else

#

By the time you get access to DisplayName, content patcher already resolved the value

#

So you get their translation

blissful lichen
#

I'm still a little confused on the "Adding an item" part. I have a basic C# mod .

lucid iron
#

You can also use LocalizedText ofc

#

With String/yourmod asset

#

Then it is in the content pipeline Bolb

uncut viper
#

this content pipeline stuff is what content patcher is doing on your behalf

lucid iron
#

Here is example of what I mean

#

This token belongs to the content patcher mod

#

I do not attempt to translate it, because it already is resolved using the content mod's i18n

uncut viper
#

your C# code is never going to see anything that says {{i18n:Berry_Display_Name_Test}} regardless of whether it comes from your mod or someone elses mod using your framework

#

you never need to figure out what someone elses i18n token should be

#

Content Patcher figures it out, and Content Patcher adds it to your custom asset

gaunt orbit
#

it will only see the text the other mod got out of the translation file

lucid iron
#

You only need i18n for your own text Bolb

uncut viper
#

if Berry_Display_Name_Test is supposed to be like "BerryTag" or something, then as far as your mod is concerned, it was "BerryTag" from the moment it got it from the content pipeline

lucid iron
#

Like configs/help text or whatever

gaunt orbit
#

I recommend using a breakpoint to inspect the data when you get it, so you have a better idea of how it works

#

you will also have to use the asset invalidated event to reload the asset when CP changes it

lucid iron
#

Wren r u still suffer in gampad land DokkanStare

gaunt orbit
#

I'm not working on it rn tbh

#

this is my weekend I'm going to do fun things and not horrible input mangling

blissful lichen
uncut viper
#

if you wanna make a new item, you basically wanna do the Edit to Data/Objects similar to how you would in Content Patcher

#

so you'd watch the AssetRequested event for when Data/Objects is being requested

#

and add your object data directly to that asset

gaunt orbit
#

SMAPI has asset events, you will want to use those

#

gimme a sec and I'll explain how the asset pipeline works

#

the asset pipeline in the game works like this:

  • something in c# asks smapi for an asset
  • smapi asks everyone if anyone wants to load it
  • someone ic c# says "yes I can load this asset for you"
  • smapi asks them to give it the asset
  • they create or read the asset and give it to smapi
  • smapi then asks everyone if anyone wants to edit it
  • everyone who wants to edit it, edits it
  • smapi then gives the asset back to the thing that first asked for it in c#

Then, later on

  • someone tells smapi "Hey, I want to change this asset, and need everyone to refresh it"
  • smapi tells everyone "alright, this version of the asset isn't up-to-date any more, everyone get rid of it"
  • you discard the version of the asset you have
  • the next time you need it, you don't have it, so you ask smapi for it again, and the whole pipeline runs again
#

in other words, if you want a custom asset that CP writes to, you need:

  • to load a default/empty version of the asset
  • to request the asset when you need info from it
  • to refresh the asset in the assetInvalidated event

and if you want to manually trigger a reset, you would use InvalidateAsset and the asset name

#

CP will automatically invalidate assets when it changes them, though, so if changes are only coming from CP you don't have to manually refresh

#

if you are editing anything with c# and want to re-run your edit code with up-to-date information

#

(including if you just registered an editor for an asset you do not "own")

uncut viper
#

presumably you're using this ConditionalContextTag stuff somewhere and not calling Game1.content.Load every time you use it in getDescription or whatever, so basically if you store the data in your own dictionary somewhere (for example), and then someone elses Content Patcher edit changes what theyre adding to your ConditionalContextTag asset, your stored dictionary of stuff is now out of date

#

so you watch the AssetInvalidated event (or w/e its called i forgor) to empty out that dictionary when that happens

#

and then in getDescription, when you grab a value from that dictionary, you should be checking if that dictionary is empty/null, and if it is, then you reload its data again. by calling Game1.content.Load (or the smapi helper if you want) which will then apply the new edits

gaunt orbit
#

it's not complicated to use, it just sounds complicated because there's a lot of steps. in principle you just do something like this

private static MyAsset? myAsset = null;
public static IModHelper helper;
public static MyAsset MyAsset => myAsset ??= helper.GameContent.Load<MyAsset>("Mods/MyModId/MyAsset");

public void Entry(..)
{
  helper = Helper;
  Helper.Events.Content.AssetInvalidated += RefreshAssets;
  Helper.Events.Content.AssetRequested += LoadDefault;
}

private void RefreshAssets(object sender, AssetInvalidatedEventArgs ev)
{
  if (ev.NameWithoutLocale.IsEquivalentTo("Mods/MyModId/MyAsset"))
    myAsset = null;
}

private void LoadDefault(object sender, AssetRequestedEventArgs ev)
{
  if (ev.NameWithoutLocale.IsEquivalentTo("Mods/MyModId/MyAsset"))
    ev.LoadFrom(() => new MyAsset(), AssetLoadPriority.Low);
}
final arch
lucid iron
#

what is best way to ignore a RANDOM 0.25 gsq

#

e.g. i have RANDOM 0.25, PLAYER_HAS_SEEN_EVENT Current 3900074 and i do want to check PLAYER_HAS_SEEN_EVENT Current 3900074 but i elect to ignore the RANDOM 0.25

uncut viper
#

do you want the ANY GSQ to make it an OR

lucid iron
#

no i just want to yeet RANDOM

#

it looks like ignoreQueryKeys should work, maybe

uneven dagger
#

Hello Stardew Valley mod gurus! I just have an itch today. Do you know if there's a way to tail game events as they happen somehow? Google hasn't presented a mod or clear answer yet. I'm arriving from a web dev angle. I though it would be neat to track what day I'm on externally or have a guide show details for the odd item I just picked up. Too many ideas. Too little time...

I haven't worked with dll files yet, so not sure if I'm actually going to create a mod or not. I'm always trying to throw things to a web server or socket server for web interactivity (I suppose this could live as a mod). That said, I'd be happy to dip my toes in if needed. I am playing with a couple mods (Speaking Valley and its prerequisites).

calm nebula
#

Also maybe the dagger special

mighty quest
hallow prism
royal stump
#

(Almost every base game weapon's speed is even, but I guess there's a 3 and such)

lucid iron
mighty quest
#

(you mean +11 for the last one right)

lucid iron
#

I guess u can do that but unsure what is purpose vs just displaying the info in game

mighty quest
#

ok makes sense now

royal stump
#

oh, yeah, switching between reference and in-my-head numbers SDVkrobusgiggle

mighty quest
#

so negative animation speeds are valid

#

basically

royal stump
#

yep, it seems effectively capped at 1 tick per animation frame, which varies by weapon type

uneven dagger
# hallow prism (what "tail game events" means?)

...and I'm back. Pardon the web dev speak: Servers will often write to a log file with errors or other notable events. I've seen a couple of games do this (I'm not finding it in Stardew Valley yet, so maybe not). Tailing the log would be for a script to read and work with lines as they are added to the file in realtime.

hallow prism
#

!log for where it's located

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.

final arch
uneven dagger
hallow prism
#

not sure what you want to do as i'm not a dev but you may find what already exists quite useful

uneven dagger
#

Thanks! Taking a look

final arch
#

dont think SDV supports REST APIs natively SDVkrobusgiggle

royal stump
lucid iron
#

yea u gotta make mod in normal way

#

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

lucid iron
#

look at the C# guide

hallow prism
#

(when smapi is installed it has a pretty very detailled log, with various info added, and mods can add more to that, so you should be able to do what you want if it's not already done)

uneven dagger
proper linden
uneven dagger
#

Hmm. I may need a cooler name for this mod though. I seem to need a lot of wood in the game, and I'll be creating lots of logs in the mod. Can you do better than LotsOfLogs?

proper linden
#

ThickHeavyWood? πŸ˜„

uneven dagger
#

EventLog. (so good!)

(also: the tutorials are great!)

blissful saddle
#

Log for Life

#

or Logging for Life

hallow prism
blissful saddle
#

also make sure it is a name easy for someone searching for a mod that does what yours does to find

round dock
#

League of Logs AkaliLaugh

fervent horizon
#

Call it Lumberjack, since it gathers logs

deep cypress
#

The Treasure tile property seems like it might be bugged. When using Spacecore, digging it up after the first time causes an NRE. I squinted, then removed the Spacecore. Digging them up works the first time. Then, u can pick the dirt spot, and dig them up again. sometimes u get the treasure, sometimes not. On repeat this can go for quite some time.

#

(Also, I unsquinted, and put Spacecore back on when Done. Spacecore is the best.)

#

Also, MailboxLocation doesn't seem to work.

calm nebula
#

Yes

#

Wiki needs to be updated

#

MailboxLocation died in 1.6

uneven dagger
#

SDVdwarf Whahaha. (mod name not finalized, yet I can log a new day!) I appriciate the pointers today. Thanks for the assist! Now to standardize this a bit and add more event types. I'll share when it's in some state of usable.

calm nebula
#

The Treasure tile. I've looked at it before, it looked weird and not fully implemented correctly

#

I would not use it

rancid temple
#

I was looking at MailboxLocation, seems like it's still reading the position provided just doesn't ever use it lol

#

That's probably for the best anyways, mailbox sticking to the house of each player makes sense

calm nebula
#

(Yes. Because 1.6 made thr farmhouse moveable by players)

deep cypress
#

Thanks! I will see If I can remember how to log into the wiki, I am just going to make a note on them concerning what you have said above, to not mess things up, but also to perhaps guide future travellers down the road

calm nebula
#

Remind me in 36 hours to do a wiki edit

patent lanceBOT
#

yeah, yeah you'd like that, wouldn't you squint (#6393634) (36h | <t:1733216629>)

blissful lichen
#

I think I should stick to something closer to my skill for right now, seeing as how I don't have that much experience making my own Stardew Mods.

fervent horizon
#

ok, This is the visible fish error I am getting when my custom fish mod is active [Visible Fish] This mod failed in the GameLoop.UpdateTicked event. Technical details: NullReferenceException: Object reference not set to an instance of an object. at showFishInWater.Trash..ctor(Item item, Int32 tileX, Int32 tileY, FishTank fishtank) in C:\Users\shekurika\source\repos\showFishInWater\showFishInWater\Trash.cs:line 48 at showFishInWater.FishManager.SpawnFishInLocation(GameLocation location) in C:\Users\shekurika\source\repos\showFishInWater\showFishInWater\FishManager.cs:line 299 at showFishInWater.FishManager.OnUpdateTicked(Object sender, UpdateTickedEventArgs e) in C:\Users\shekurika\source\repos\showFishInWater\showFishInWater\FishManager.cs:line 78 at StardewModdingAPI.Framework.Events.ManagedEvent`1.Raise(TEventArgs args) in /home/pathoschild/git/SMAPI/src/SMAPI/Framework/Events/ManagedEvent.cs:line 101

I feel like it has to do with the aquariumdata, but I don't see any issues in my pack

ornate trellis
#

look like the same error i had when i did something wrong with my aquariumdata

fervent horizon
ornate trellis
#

oh its so long ago....it had something specifically to do with me doing the swimming animation code wrong, i think

brave fable
indigo yoke
uncut viper
#

(its casey)

brave fable
#

is skill profession rerolling another feature πŸ“

#

k (ittycatc) asey

brittle ledge
#

And it's a pretty small mod, just five fish, so it should be straightforward to find the data.

indigo yoke
brave fable
#

ohhh very nice, do i have to update for that or is it generic

#

i've always wanted to pr that in but cloning and building from a monolothic shared project repo is awful

indigo yoke
indigo yoke
#

It's like large enough on its own to be one

drowsy pewter
#

(its casey)

brave fable
#

probably impossible, too many interlinked dependencies

indigo yoke
#

Especially since it's a mini-api at this point.

brave fable
#

well you say mini-api but it's probably the second biggest api after bettercrafting lol

indigo yoke
#

It's used by so many mods for like the context recipes, skills, events.

brave fable
#

uggh context tag recipes

#

one day

indigo yoke
#

Is better crafting used more than spacecore?

brittle pasture
#

another transpiler to clickCraftingRecipe custom Better Crafting event

brave fable
#

someone pr me. i'm not brave enough to face my own code

lucid iron
#

my PR will add 1 method that prints "You can do it blueberry!" to the console whenever you open game

brave fable
#

i do not open game πŸ™

uncut viper
#

do you think blueberry would make it to opening the game

brittle pasture
#

just tell users to use Better Crafting ez

#

"but what about seasoning" lol, lmao

#

(now you see why I more or less abandoned EMC's flavored cooking feature, having to manage four-way compat was too much)

brittle ledge
#

question about event preconditions: If someone sees an event with ID, say mymod.event1, and the preconditions on that event (in the entry key) are changed, will the initial event still register as seen and/or will the same event with the new preconditions trigger even if the original event is seen?

brave fable
#

the preconditions aren't factored in when checking if an event is seen, it's stripped down to the first value (the event id)

#

if the id is already in the eventsseen hashset, it won't be replayed even if the new preconditions now match

#

(if it didn't then events would probably replay anytime the preconditions happened to match again)

#

i don't know what emc is or what flavoured cooking is haha

#

but yah me too. dropped it like hot butter

brittle pasture
#

it's a feature of Extra Machine Config that enables this abomination

brave fable
#

s+ rank requirements: submit pr with no bug reports immediately after

calm nebula
#

How do you feel about publicizer

brittle ledge
#

thanks blueberry!

calm nebula
#

Oh I can't be trusted to iterate backwards correctly bluebs

brave fable
#

i don't know what publiciser is other than makes public

calm nebula
#

Otoh bluebs I refactored thousands of lines of work code over the Thanksgiving holiday and only made two dumb mistakes

brave fable
calm nebula
brave fable
#

yeah i looked at spacecore recipes briefly and it was just too scattered and inaccessible for me to even begin to want to work on it

#

and then i have to put that in my own existing illegible class

#

and not cause new issues

calm nebula
#

Spot the stupidity

brave fable
#

ah the ole instant crash method

uncut viper
#

(well you could go on a reflection adventure...)

calm nebula
#

Hey. Button

uncut viper
#

Hi!

calm nebula
#

If publicizer is an option, and LoC already hard references spacecore

#

I see no downside

uncut viper
#

i also support the use of a publicizer

brave fable
#

the downside is having to make the rest of the implementation

calm nebula
#

Yup.

uncut viper
#

however you made the cardinal sin of saying the word "need"

calm nebula
#

Oh yeah

#

I need a coffee

uncut viper
#

and i will always take the opportunity to both a) gently needle and b) also suggest reflection fun

calm nebula
#

I also need to figure out why my knee hates me today

brave fable
#

ur knee doesn't really hate u. it's just pulling ur leg

calm nebula
#

I need to get some of that cartilage supplement

uncut viper
#

(needling in good fun ofc but im glad u know that at least)

calm nebula
#

My cousin also kinda suggested creatine to me

brittle ledge
#

glucosamine?

#

oh, creatine

#

pretty sure glucosamine was what my mom took for years before she got approved for knee surgery

calm nebula
#

Yup, that

#

I take it sporadically

#

Basically I remember when something hurts haha

brittle ledge
#

brace might also help? One of the compression ones, not the full-on immobilizing ones

calm nebula
#

And since I'll be going for more running distance in the next few months I think it won't hurt

brittle ledge
#

(do dirt or rubber trails if you can, or if you can go with a road over a sidewalk do that, asphalt but especially concrete is really bad for your knees skaiHug )

hallow prism
#

it's nice if you can go running again πŸ™‚

faint junco
#

Quick question is there any way to reset SpaceCore skills professions either programmatically or via a command?

indigo yoke
faint junco
brave fable
#

supposedly it's possible from the statue in the sewers now πŸ₯³

indigo yoke
teal bridge
#

Supposedly it's possible to talk to people very far away using only a handheld gadget, now.

brave fable
#

well ok, it's been possible for the last 8 months, but not the 8 years prior to that

teal bridge
#

SOU was added in 1.3, that's a bit more than 8 months. Wee bit.

brave fable
#

excuse me how many bug reports do u think are on my mod page about my SPACE CORE skill professions not appearing at the SOU

#

it's more than 3

#

πŸ”₯SDVdemetriums

teal bridge
#

300?

#

How close am I

brave fable
#

that's the total number of bug reports. it's less than that

teal bridge
#

Open or closed?

ornate trellis
ocean sailBOT
#

Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 16 C# mods and 12 content packs.

calm nebula
#

temporarily remove fashion sense, does it still happen

ornate trellis
#

lemme check

#

huh, removing FS fixed it

calm nebula
#

okay, now try the reverse

#

no spacecore, yes fashion sense

ornate trellis
ocean sailBOT
#

Log Info: SMAPI 4.1.8 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Pro, with 15 C# mods and 12 content packs.

calm nebula
#

okay, my guess is that you have some character with an invalid fashion sense item

ornate trellis
#

is this going towards modded help territory at this point

calm nebula
#

and instead of handling this gracefully, fashion sense just...does that

ornate trellis
#

hm

calm nebula
#

did you happen to disable a fashion sense pack

ornate trellis
#

i had a WIP one earlier enabled that I had tested but I refreshed my modlist in stardrop which had worked until now, but I guess it doesnt fix that anymore

indigo yoke
ornate trellis
#

i saw a few bug reports on the FS page about the issue so I guess its a matter of time till it gets hopefully fixed. guess until then i shouldnt disable any FS packs once enabled

#

yup, alright, i broke out of the loop with enabling the FS pack again, thanks atra

dusky sigil
#

I'm trying to port an old mod of mine to 1.6 and it says to use Game1.removeCharacterFromItsLocation instead of removeThisCharacterFromAllLocations, but the new method isn't being found

brittle pasture
#

hmm yeah removeCharacterFromItsLocation is mentioned on the migration page, but it's not actually in the decompile

#

in any case it's not too difficult to implement it yourself

#

use Utility.ForEachLocation, check if the character is in the location's characters list and remove it if it is

dusky sigil
#

thanks that helps

ornate trellis
#

so...i assume despite being Back layer water cannot be walked on by NPCs even when theyre directly warped onto the water past any building layer tiles?

#

cuz i tried making a lil cutscene with my mermaid and she aint showing up

#

nevermind i found the issue lol

dusky sigil
#

is it possible to make the player immune to only a single specific debuff?

brittle ledge
#

Probably not without C#

dusky sigil
#

yeah i mean in c# lol

brittle ledge
#

Then probably, but I'm not one of our coders so I can't help, sorry SDVpufferheart

brittle pasture
#

probably a prefix/postfix on Buff.Apply

dusky sigil
#

i will look into it

#

really i'd like to stop specific monsters from attempting to apply their debuffs but i have no idea how to even start with that one

brittle pasture
#

do a skipping prefix on Buff.Apply that checks if it's one of the buffs you don't want, and skip the rest of the function if it is?
(skipping prefixes are kinda considered sinful, but I think it's justified in this case)

lucid iron
#

if its specific monsters, patch them out from respective monster class

dusky sigil
#

it's specific monsters but only under specific conditions

brave fable
lucid iron
#

e.g. if u want to stop the putrid ghost from doing debuff

#

transpile on Ghost.behaviorAtGameTick and conditionally skip basicProjectile.debuff.Value = "25";

dusky sigil
#

that's pretty much exactly what i want, thank you!

rancid temple
#

I think a skipping prefix is only sinful if you're rewriting the entire original method and skipping regardless

brittle pasture
#

speaking from experience I see

rancid temple
#

Yes well, some day when I'm not feeling like crap I'll make a compat patch for DTZ that actually retains the original functionality instead of just nuking it out of existence lmao

round dock
#

Pinging @silver pelican

#

Let me know what you want added as a description froggopopfast

rancid temple
#

My original patch to GameLocation.performAction was also a sinful skipping prefix SDVpufferpensive

silver pelican
# round dock Pinging <@608170576883875840>

hmmm just the brief description from the mod will do :>

A new location for a shopping hub! New shops and stalls, new NPCs, and heart events! Includes boutique, supply, cafe, pastry shop, and mini stalls! Accessible by bus (or warp).

#

Thank you so much btw frogdance

calm nebula
#

Blocked, blocked, blocked, none of you are free from the skipping prefix sin

#

please ignore all of mine

rancid temple
#

Request denied

calm nebula
#

This is one of my favorites

brittle pasture
#

checked out of morbid curiosity, and goodness, 11 skipping prefixes in Machine Terrain Framework. one of them on a patch to another mod

teal bridge
#

To be fair, if you download a mod with the word "experimental" right in the name, you have to know what you're in for.

brittle pasture
uncut viper
#

if you just wanna make debuffs not apply instead of worrying about patching every monster you can also just postfix the DebuffingProjectile constructor and change its ignoreCharacterCollisions

teal bridge
#

NML has 13k uniques and over 200 endorsements by now. Users SDVpufferclueless

drowsy pewter
#

Experimental No More Lag

dusky sigil
#

i'll be honest, all this prefix/postfix/transpiling stuff is completely new to me, i think i have to learn a new skill to make my mod do what i want it to do

calm nebula
teal bridge
#

It's new to most people, seeing as how 99% of users are game modders.

calm nebula
#

I have questions

hard fern
#

no more lag from an alternate universe: more more lag

uncut viper
brittle pasture
#

no, more lag!

teal bridge
calm nebula
#

I love this

hard fern
#

grabHorse

teal bridge
#

The funny thing is, that loop doesn't guarantee a unique horse name.

calm nebula
#

god, every time I look into the code, I have questions

hard fern
#

just looking at it makes my head spin

calm nebula
#

you know what? fuck it

teal bridge
#

For that loop to do what it promises, it would have to run nested O(N^2)

calm nebula
#

an atra needs new fingerless gloves anyways

#

tbh that loop is silly as hell anyways, since it gets, like, Green Slime in there as well

#

why not use a guid

hard fern
#

green slime???

rancid temple
#

Monsters are NPC's

teal bridge
#

I mean, yes, but silly and broken is sillier than silly.

calm nebula
#

do I want to suffer through a tubular cast on

teal bridge
#

Display name as ID is the gift that keeps on giving (bugs).

hard fern
#

:so

#

😭

zenith steppe
#

Hey all! I think I'm dumb. I cannot figure out what I'm doing wrong here.

rancid temple
#

Missing a closing } between line 42 and 44

uncut viper
#

you have a lot of missing/mismatched braces

#

i think. maybe only one or two

#

its hard to tell with the weird indenting

rancid temple
#

That's just the one I see for the error on the site

zenith steppe
#

Found the missing bracket there!

uncut viper
#

the indenting of the CustomFields at the top confused me i thought it was the start of another entry

zenith steppe
#

Still not correct...

uncut viper
#

i would recommend using a text editor that will highlight these missing braces for you and also indent things properly for you

#

you added a brace to close your Entries but not your EditData action

rancid temple
#

Yeah, so it was two missing there

hard fern
#

vsc is freee

rancid temple
#

!vsc

ocean sailBOT
hard fern
#

(it auto-closes your brackets when you add them too)

uncut viper
#

notepad++ will also at least auto indent things for you if you dont wanna download vsc

rancid temple
#

I love that the VSC command also mentions N++

proven narwhal
#

hey random question whats this sprite used for??? ive only found it on the side of the town and it literally is only there for the spring town tilesheet

hard fern
#

special order boeards

rancid temple
#

It's the broken special order board

proven narwhal
#

OH

#

weird why is it like on the side of the town near the book fair

rancid temple
#

Reusing assets is video game dev 101

uncut viper
#

sprite reuse is efficient

latent mauve
#

on the tilesheet? Things got placed wherever there was room.

proven narwhal
#

yeah im more so just confused on why it isnt on the other season tilesheets

#

since it makes that piece of debris disappear except spring

drowsy pewter
#

because the special order board shows up in summer 1

proven narwhal
#

OHHH that makes more sense whoops

drowsy pewter
#

:P