#making-mods-general

1 messages ยท Page 49 of 1

velvet narwhal
#

it just does this when i ctrl k

rancid temple
#

Oh you formatted the line spacing lol

velvet narwhal
#

it bothers my soul, okay

rancid temple
#

Yeah the normal spacing is flat along the left, I also formatted it lmao

velvet narwhal
#

contemplating yeeting {{InternalAssetKey:

rancid temple
#

The comment blocks look fine if you don't touch them :P

velvet narwhal
#

i guess i can just manually go into each npc and remove the internalassetkey and not touch the other two

rancid temple
#

That's the goal, to do away with InternalAssetKey

velvet narwhal
#

tbh that's really the only thing that needs to be added/removed, i can throw a load at the top of each of the npcs

rancid temple
#

Or do you just mean a find and replace situation lol

velvet narwhal
#

find and replace, and then throw the load

rancid temple
#

Well the Targets are wrong then still

#

Because InternalAssetKey is a path not a Target

velvet narwhal
#

the portraits are never loaded though yeah?

rancid temple
#

I guess you could make them those

velvet narwhal
#

or are they in a different block from the npc's file

rancid temple
#

Only the base stuff is loaded as the spring variant

velvet narwhal
#

under what .json is that in

rancid temple
#

Loadables

#

But yeah, the appearance stuff isn't Loaded so you could make the Target the same as the current path

velvet narwhal
#

lemme get breakfast

rancid temple
#

I hate that idea personally, but it would work lol

velvet narwhal
#

oh i was going to do the festival data the way that ender suggested

rigid stirrup
#

hey having a few problems with some new mods i just downloaded the most recent versions of into my SDV mods folder- it keeps saying they're either not installed, or not up to date, or some other thing but i know i literally JUST downloaded and installed them today, and they've been very very recently updated too so i dunno what's going on?

https://smapi.io/log/ffcc4cc21edf4ce1b634c66b78cb0453

ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on macOS Unix 10.15.7, with 29 C# mods and 27 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

rancid temple
#

#1272025932932055121 is where you wanna ask for help with installed mods, this is more for making mods

rigid stirrup
#

my bad sorry

rigid stirrup
velvet narwhal
#

(i will be back in roughly an hour and hopefully have this file for fellow roughly two hours or so from now ๐Ÿ˜‚ )

rancid temple
#

You would make your own

velvet narwhal
#

oh i see

#

oh actually it's not that bad lmao

#

eggo in mouth, time to work

#

i wonder if that'll do that to .pngs

formal crown
#

@normal kelp Hello, Ruin! do you mind if I DM you? (it's about your SDV Rich Presence mod) SDVpufferheart

uncut viper
velvet narwhal
#

oh no, not another brain worm

hallow prism
#

i kinda wish i had a mod that would reward me for progressing toward shipping goal, so i can see the actual progress. Sadly i don't think there's a way with CP to like, track stuff like "shipped X% of the items"

golden basin
#

crawls in

#

im back sorry for vanishing

#

my brain was becoming mush for a second there haha

#

so whats the plan?

velvet narwhal
#

i'm already roughly 80% done, i'm just double checking some things and i'll write the load block

#

gotta love ctrl+h

hallow prism
#

but can't the stuff be solved by using an higher precedence appeareance?

golden basin
#

oh okay ill make sure to put you into the credits list too for helping me switch this over

hallow prism
#

so clown doesn't have to do anything?

golden basin
#

they want me to get rid of the internal assest thingy

hallow prism
#

yeah that i saw

#

maybe my solution wouldn't work for reasons, i didn't see the entirety of the discussion

#

i was mainly curious

velvet narwhal
#

i can test the higher precedence

rancid temple
#

Depends on how many replacements someone has for the original portraits/sprites, but sure they could just add some more appearances on

#

Lower precedence actually

#

Lower gets checked first

velvet narwhal
#

handwaves i don't understand weight

rancid temple
#

Negative number first lol

velvet narwhal
#

what's base weight if there isn't one set

rancid temple
#

0

velvet narwhal
#

0?

#

ok

hallow prism
#

yeah i meant higher in term of getting checked, but it's indeed lower number

golden basin
#

I could just.....make full seasonals and use the token

velvet narwhal
#

let me test the precedence, then we might not even need to change anything for you

golden basin
#

okay sounds good

velvet narwhal
#

just makes a copy real quick

rancid temple
#

Technically, it would be only one patch block per NPC if this works

#

Since you can put however many entries into the Appearance as you want in that one block

#

Considerably less than one block per Appearance entry

golden basin
#

I thought we were doing away with the appearance entry

velvet narwhal
#

nah not the entire entry

#

just literally the {{InternalAsset string

#

that's all i've done, ctrl+h'd that out, but if precedence from an outside mod works, then we're fine

golden basin
#

once i see it written out ill be ok in the future i think

rancid temple
#

There's technically no reason to get rid of the Appearance entries, unless you don't want to use them anymore

velvet narwhal
#

euh

#

how am i gonna do this

#

copies edelweiss

hallow prism
#

what's edelweiss in context?

velvet narwhal
#

my own npc

#

the quick and dirty "slap a passerby npc name into this"

hallow prism
#

ohhh

velvet narwhal
#

to test the outside precedence

hallow prism
#

it's one of the flower i consider to add into VMV

#

i wondered if it was some sort of program here ๐Ÿ˜„

golden basin
#

oof a lot of loading

velvet narwhal
#

yeuhp

#

okay gotta usurp my already running mod to throw this into cause i don't wanna make a manifest

normal kelp
hallow prism
#

i understand, users tend to ask more question ๐Ÿ™‚

#

(and not always in the right place indeed)

golden basin
#

i think i get it now

#

but i would have to rename my festival files to include the npcs name

#

i think

#

bah

velvet narwhal
#

oh you don't have to

#
  "ID": "spring",
  "Condition": "SEASON Spring",
  "Portrait": "Portraits/FC.Alan/FC.Alan_spring",
  "Sprite": "Characters/FC.Alan/FC.Alan_spring"
},
{
  "ID": "winter",
  "Condition": "SEASON Winter",
  "Portrait": "Portraits/FC.Alan/FC.Alan_winter",
  "Sprite": "Characters/FC.Alan/FC.Alan_winter"
},
{
  "ID": "SwimWear",
  "IsIslandAttire": true,
  "Portrait": "Portraits/FC.Alan/SwimWear",
  "Sprite": "Characters/FC.Alan/SwimWear",
  "Precedence": -10,
},
{
  "ID": "flowerfestival",
  "Condition": "EVENT_ID festival_spring24",
  "Portrait": "Portraits/FC.Alan/Festivals/flower_dance",
  "Sprite": "Characters/FC.Alan/Festivals/flower_dance",
  "Precedence": -10,
},
{
  "ID": "spiritseve",
  "Condition": "EVENT_ID festival_fall3",
  "Portrait": "Portraits/FC.Alan/Festivals/spirit_eve",
  "Sprite": "Characters/FC.Alan/Festivals/spirit_eve",
  "Precedence": -10,
},```
#

i was going to specify the loads

#

back to testing the precedence

golden basin
#

my friends use the internal asset method too

velvet narwhal
#

if the precedence works then you won't have to change anything SDVkrobusgiggle we'll just have to make a mental note of it

hallow prism
#

(and you can still change it later when you feel like doing it, if you feel like doing it)

golden basin
#

im just overwhelmed i think, i have 19 npcs

hallow prism
#

yeah i get that

golden basin
#

and its weird having peopel telling me different things too

hallow prism
#

it's because there are different approachs

velvet narwhal
#

alright where's alan

rancid temple
#

Yeah at this point, I think you're just waiting on the results of Avi's tests and then you'll have a better idea of where to go

golden basin
#

what do you mean?

#

hes in assets/npcs/portraits/fc.alan

velvet narwhal
#

oh no i meant in game SDVkrobusgiggle

golden basin
#

ooo

#

hes in passerby

#

its uhh next to the mines

velvet narwhal
#

ooh my game did not like debug spawn FC.Alan lmao

hallow prism
#

he's at debug wtc alan!

golden basin
#

it should be FC.Alan

rancid temple
#

warp to character is fuzzy search

#

You can type part of a name and it'll try to find a match

#

A lot of console commands are fuzzy search and I love it

hallow prism
#

me : "debug warp ham"

golden basin
#

would it be weird to ask for someone to explain why I shouldnt just leave it as internal asset?

normal kelp
#

are masked links not allowed in here? lmao

velvet narwhal
#

outside access (portrait editing/sprite editing) mostly

velvet narwhal
golden basin
#

So like portrait mods need easier access basically?

rancid temple
#

As said before, you don't actually have to do anything about this

normal kelp
#

i tried to post a link to my mod's github for assistance, but tried to use a masked link to make it less obtrusive. timed out for 10m but i think a mod saw it and removed the TO. ๐Ÿ˜…

hallow prism
#

we are trying to see if another solution exists so you don't have to rush a solution

normal kelp
#

but now i have to re-type the whole message.

#

i can still post regular links, right? just to github?

uncut viper
#

yeah markdown masked links are not allowed here

rancid temple
#

Yup

round timber
#

yep!

uncut viper
#

feels almost like a rite of passage to get timed out for trying to use one

golden basin
rancid temple
#

:P I didn't even know about masked links before the post about them not being allowed

hallow prism
normal kelp
hallow prism
#

because right now avi is testing things and you don't have to do anything

golden basin
#

okay ill relax for now

#

I just like understanding things but I should be resting tbh i have a bad case of the flu

rancid temple
#

Has Kedi tested with only your mod and theirs?

velvet narwhal
#

would be nice if my stupidity could remember to put the actual jsons i'm testing into the 1-6-8 folder and not the 1-6-9 folder but y'know

normal kelp
golden basin
uncut viper
#

does it only happen with Kedi's mod, or other mods that change profession names too?

golden basin
#

๐Ÿ”ซ or else

formal crown
#

Vanilla professions are left as-is

lucid iron
#

what does rich presence mod do

#

does it ever interact with localized content

normal kelp
rancid temple
#

Why use localization strings instead of i18n?

hallow prism
normal kelp
#

shouldn't be touching anything in the game, other than reading some save information.

velvet narwhal
#

AYYYYYYYYYYY

normal kelp
#

@formal crown just curious, did you happen to install Generic Mod Config Menu with my mod as well? it's not actually required and could potentially be the cause as well.

velvet narwhal
# golden basin ๐Ÿ”ซ or else
  "Changes": [
    {
      "Action": "Load",
      "Target": "Portraits/EdelweissSeungL_Spring, Characters/EdelweissSeungL_Spring",
      "FromFile": "Assets/NPC/{{TargetPathOnly}}/Edelweiss/{{TargetWithoutPath}}.png"
    },
    {
      "Action": "EditData",
      "Target": "Data/Characters",
      "TargetField": [ "FC.Alan", "Appearance" ],
      "Entries": {
        "{{ModId}}.EdelweissSeungLSpring": {
          "Id": "{{ModId}}.EdelweissSeungLSpring",
          "Condition": "SEASON spring",
          "Sprite": "Characters/EdelweissSeungL_Spring",
          "Portrait": "Portraits/EdelweissSeungL_Spring",
          "Precedence": -100
        }
      }
    }
  ]
}
``` anyway
velvet narwhal
#

thank you lumina for the input

calm nebula
#

If not go do that first

formal crown
#

No, afaik, but how would it cause that? SDVpufferlurk

calm nebula
normal kelp
calm nebula
#

No

normal kelp
#

my mod doesn't touch strings at all. it just uses SMAPI's i18n.

calm nebula
#

Strings/UI

#

....weird

velvet narwhal
golden basin
#

So this means i dont need to change anything at all?

#

Thank you Aviron youre really awesome for figuring things out

calm nebula
#

I don't mean edit them, I mean cause them to be loaded

velvet narwhal
#

thanks are for lumina for suggesting precedence because y'know, i wholly forget about it

golden basin
#

hehe yes thank you Lumina as well, youre always so helpful wherever you are โค๏ธ

hallow prism
#

thanks ๐Ÿ™‚

#

yeah don't change anything for now clown, in the future if it is really needed at least you know the option exists

lucid iron
#

maybe its cus you are do lots of stuff in Entry instead of GameLaunched or SaveLoaded

velvet narwhal
#

i might actually swap to internalassetkey for portraits/characters now though SDVpufferthinkblob

golden basin
#

It really is a great way to do it

lucid iron
#

not too clear what could have caused the cache to fail though think

golden basin
#

loads faster, less code

lucid iron
#

but as mentioned on content patcher the changes apply 2 ticks after launch

golden basin
#

and now that i know i dont need all those loads

#

mmm wonderful

rancid temple
#

You still need the loads you have

velvet narwhal
#

the base ones, yes

normal kelp
# calm nebula Do you call the strings.

...potentially...?

      WTag( // Registers a tag
        "Farm",
        () => Game1.content.LoadString("Strings\\UI:Inventory_FarmName", api.FormatTag("FarmName"))
      );

And those callbacks are ran on

Helper.Events.GameLoop.UpdateTicked += DoUpdate;
lucid iron
#

perhaps blobcatgooglyblep

formal crown
#

Huh, @calm nebula The invalidation fixed it

golden basin
#

hm i do? hm thats odd it was running without it

lucid iron
#

u could try delaying the update stuff to after save loaded

golden basin
#

let me see something

formal crown
#

SDVpufferthinkblob I'm still not sure how not invalidating caused it though

rancid temple
#

The way the game handles content errors, if your appearances failed for some reason I guess you would likely just have a broken NPC

normal kelp
normal kelp
formal crown
#

Then why did it work properly without presence mod?

normal kelp
#

because my mod loaded before yours, and because i'm reading strings, it creates the cache

golden basin
#

worked just fine without the loads

calm nebula
lucid iron
golden basin
#

should i keep them in just in case?

lucid iron
#

and see about adding invalidate if that is the cause

calm nebula
#

No, Ruin is doing the access

normal kelp
#

actually, this right here is probably the earliest case of my mod loading strings ๐Ÿ˜‚

public string None => Game1.content.LoadString("Strings\\UI:Character_none");
calm nebula
#

Kedi is doing the edit

rancid temple
#

I would leave the base Load's, there should always be a default for the game to fall back on just in case

calm nebula
#

The invalidate on her side is sufficient

golden basin
#

okay โค๏ธ

calm nebula
#

I was just explaining why it happens

golden basin
#

no changing things yay

lucid iron
#

but could it cause similar problems in other mods think

formal crown
#
 if (e.NameWithoutLocale.IsEquivalentTo(PathUtilities.NormalizeAssetName("Strings/UI")))
 {
     e.Edit(asset =>
     {
         var editor = asset.AsDictionary<string, string>();

         foreach (var item in ModEntry.Professions.Keys)
         {
             editor.Data.Add("LevelUp_ProfessionName_" + item, ModEntry.Helper.Translation.Get("Profession." + item + ".Name"));
             editor.Data.Add("LevelUp_ProfessionDescription_" + item, ModEntry.Helper.Translation.Get("Profession." + item + ".Desc").ToString().Replace('_', ' '));
         }
     });
 }```
Fwiw, this is the part of code that adds the profession strings
normal kelp
hallow prism
normal kelp
#

i'll update this on my end, but you should probably invalidate caches anyways, since you don't know what other mods are gonna do.

#

aw man now i have to redownload VS

formal crown
#

Ngl, I was doing more invalidations before, but I was afraid of causing lag issues since VPP is a big mod in size and the variety of assets it edits ๐Ÿ˜…

calm nebula
#

Equivalent syntax

uncut viper
#

alright i did it. very easy actually

#

oh oops did not need to ping you for that one my bad

normal kelp
#

oh.

calm nebula
formal crown
#

So it'll do the same thing as before

calm nebula
#

Lol

#

I knew it was eays

normal kelp
#

oh. i see now what's causing it to load string.

#

it's only used 5 times, but yeah i can just replace that usage.

uncut viper
#

though, now that ive done it... ive immediately realized that i dont think you actually need a token for it at all?

calm nebula
#

Yeah

#

but it is internal smapi stuff

#

Subject to change at all times

uncut viper
#

i never knew you could just prefix it with SMAPI/UniqueID/[path] and itd just work

calm nebula
#

Yup

uncut viper
#

true

#

i suppose the token will always work even if that changes

#

so i still might as well keep it now that ive done it, plus if nothin else opening up the project again made me realize i left some debug console logging in there again oops

lucid iron
#

have u considered #if DEBUG

uncut viper
#

yes

#

next question

velvet narwhal
uncut viper
#

i swear this time i did a whole project search for every `"Log.[level]" call i had, i just missed one SDVpufferflat

#

its not the worst one leftover anyway, just lets you know that you are indeed grabbing a token. just meant to change it from Warn to Trace

lucid iron
#
        internal static void Log(string msg
#if DEBUG
            , LogLevel level = LogLevel.Debug
#else
            , LogLevel level = LogLevel.Trace
#endif
        )
        {
            mon!.Log(msg, level);
        }

        internal static void LogOnce(string msg
#if DEBUG
            , LogLevel level = LogLevel.Debug
#else
            , LogLevel level = LogLevel.Trace
#endif

        )
        {
            mon!.LogOnce(msg, level);
        }
uncut viper
#

i build my mods in debug bc im bad at this

velvet narwhal
#

"bad at this" says the one causing a 3rd earthquake for content authors

uncut viper
#

because im lazy at this*

lucid iron
calm nebula
#

So I can only release release builds

lucid iron
#

it is annoying that vscode C# plugin doesnt let you put build config when u right click to build

velvet narwhal
#

i will eventually parse the thing chu sent to me for external folder zipping, but that is for a more patient me

uncut viper
#

look i understand that there are like a million things i could do differently to make all this better and easier for me
however whenever i get a random mod idea and spin up a new project i tend to just forget about things like that a nd just go right into experimenting, bc most of my ideas start off as "idk if im actually gonna bother doing anything with this, i just wanna mess around with OnButtonPressed to test things" and then by the time i decide its actually gonna be a mod, im too lazy to set up any of that other stuff

calm nebula
uncut viper
#

see line 1

calm nebula
#

Yeah a few days ago we were discussing how like

#

None of the autostash mods handled multiplayer right

#

And I had liek the thought that I throw it together really fast

#

As an example

#

And then was sad nothing in my repo builds rn

uncut viper
#

score 1 for the non-mono-repo users

#

is what i take away from that

velvet narwhal
#

my git repos will be chaos and i will not care

tender bloom
#

my 12 git repos will be chaos and multiply and i will not care

#

more repos more better

velvet narwhal
#

if it means someone can easily fork to tell me how to do something better, i take it

uncut viper
#

i keep things a lot tidier and doing-things-right on my professional github, the personal one i use for stardew modding is the equivalent of placing things on a shelf haphazardly bc ive got nowhere else

calm nebula
#

I might still make an example

brittle pasture
#

I have a monorepo but outside a couple files they're all independent
aka the best way to do it

tender bloom
#

I'm not actually that messy I think, but I do have the same standards for work because academia

next plaza
#

I used to have mine in all separate repos. But then I went on hiatus and pathos maintained my mods for me and he wanted to merge them to make things easier

#

I still had them all in one sln though

uncut viper
#

tbh if someone did the work of merging them into a mono repo with preserved history and everything for me id switch too

valid folio
#

Hi, I made a mod to add a crop, the mod works and does what it should do but... when the crop is harvestable, you should see a white flower and when it is not ready to harvest, you should see a yellow flower but the exact opposite happens, when it is harvestable it is yellow and when it is not harvestable it is white.

I have no idea where I went wrong, could you help me? What information would be useful to know?

brittle pasture
#

post your json and png?

valid folio
brittle pasture
#

!json

ocean sailBOT
#

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

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

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

brittle pasture
#

for the png just post it here

golden basin
#

is anyone else get compatibility errors for the public beta? im using the beta versions of the mods cjb and spacecore and still gettin errors

lucid iron
#

yea there's changes in later builds of beta

#

mostly regarding quests

velvet narwhal
#

smapi beta yelling at me that it's downgraded when i have no idea what happened

lucid iron
#

for spacecore you need to build it from source, or find that debug build casey sent in this chat

valid folio
#

I know it's not a pretty design but I did the best I could hahahaha

lucid iron
#

for cjb there's 1 line in HeartsCheat to change from socialQuest.checkIfComplete(npc);

socialQuest.OnNpcSocialized(npc);
brittle pasture
# valid folio

For regrowable crops the last sprite is the "full grown but not ready to harvest" sprite

valid folio
calm nebula
#

But luckily for me, I get to also have a real name gitlab

#

Which we will be keeping cleaner

brittle pasture
valid folio
ashen oak
#

I was gonna put out a call here today asking how folks organize their mods (things like shared code, etc.) to minimize duplicated work without constantly having to rerelease old mods when some bit of shared code changes but it sounds like this is already a topic lol

#

Like I'm extracting a bunch of code from my current mod into a shared library and I haven't decided whether it should itself be a mod with a ModEntry and a config

#

And I refactor this stuff a lot right now and am a little worried about breaking things since my ideal flow is "run a script to clone a mod template and then hammer out something fast"

lucid iron
#

You better not be making molligrucore

ashen oak
#

I totally did lolol

uncut viper
#

the only stuff i share between my mods is some specific logging functions that i dont mind just duplicating in every mod so i dont have much input here

ashen oak
#

But I'd be just as happy statically linking this stuff, though I've never really done that in C#

lucid iron
#

You can just make a shared project

#

When u build it becomes 1 dll

ashen oak
#

As long as I don't have twenty copies of CollectionExtensions.cs

lucid iron
#

Does make ur dll bigger ofc

ashen oak
#

Yeah I'm not terribly worried about that for this, at least not at the moment

#

Maybe I'll just convert this after all

lucid iron
#

The personcore kind of mod is like

#

A dll with api for other C# mod authors

ashen oak
#

Yeah, that sort of thing I would absolutely break out into a proper mod

uncut viper
#

i thought usually the intent with a core mod was not necessarily that or even the opposite, and just happens to be used by other people

lucid iron
#

But I think it's better to name it by what it does in that case

ashen oak
#

Sure, but how do you name "a glob of stuff shared between my mods"? I really don't want to make multiple core mods just so they have separation of concerns

uncut viper
#

most core mods ive seen (admittedly just in the stardew and minecraft communities) have all just been like. "this is a collection of stuff i personally use for all of my mods, so i made it a common mod thing for myself. you can technically use it"

lucid iron
ashen oak
#

Like sound dev principles are great and all but they have to make sense from an end user perspective too

lucid iron
#

Or u know, some boilerplate to copy

brittle pasture
#

SpaceCore at this point is not really a core mod, but a framework in its own right
I haven't seen a real 'core' mod in SDV, not after the downfall of AtraCore anyway

uncut viper
#

thats a different thing altogether tho i was just responding to you saying thats what a personcore mod was

ashen oak
#

Boilerplate is a nonstarter for me, I've been down the road of updating twenty copies of something when I change it and no thanks

lucid iron
#

Time to make yer own c# template

ashen oak
#

(why is this red)

uncut viper
#

(i agree abt Spacecore tho)

lucid iron
#

Hm I'm not sure about the features of these other core mods actually

ashen oak
#

Calcifer as well

lucid iron
#

Ik the one dalion has (dalionheart?) did have user facing stuff involving hoppers

velvet narwhal
#

(doesn't understand the differences between core and framework, is it just user vs author?)

brittle pasture
lucid iron
#

So u could install that just for this 1 thing, without anything else from dalion

brittle pasture
#

I know the first two have users that aren't their authors

uncut viper
#

i dont think other users using your core makes your coremod suddenly a framework, personally

#

i think its about intent in making the coremod in the first place

ashen oak
#

Framework is already kind of a nebulous term, like anything you build on top of could be considered one, but some folks use the term to mean only systems large enough to have their own API, so to speak

uncut viper
#

if you make a mod with a bunch of stuff you just toss at it bc someone might use it, id call that a framework. if you make it because you have your own mods that you are actually making or have released and want to consolidate the duplicated code between them, thats a core mod

ashen oak
#

Since we're talking open source (in my case, anyway) anything I make that is shared between my own mods I have to assume someone else might also use

brittle pasture
#

true, and the line can be blurry

ashen oak
#

And I write it with that in mind because otherwise it feels a bit like the coding equivalent of running around in my underwear

#

(derogatory, not fun)

uncut viper
#

BETAS for example is undoubtedly a framework, bc i use none of it. if i had several different NPC mods though and each of them had custom triggers written in them and i decided to put all those triggers into one DLL that i could just set as a requirement for all my NPC mods, that would be a core mod

lucid iron
#

i think framework in sdv also carry additional meaning

uncut viper
#

other people could still take my core and use it for themselves, but i made it bc me and my mods needed it

lucid iron
#

it has to have features for content pack authors

#

not just C# gang

ashen oak
#

And and, slipping from simple shared code into frameworkland can be very fast. I had a glob of shared code, then I was like "I really want to be able to patch a function and add configs to enable/disable it with literally one attribute and no other work" so I wrote that, and that is pretty frameworky tbh

#

(yes it uses strings, don't judge me)

#

Hmm, I can see that

brittle pasture
#

hmm does that make Extra Animal Config my core mod since my animal mods are the only users for about 80% of its current features

lucid iron
#

you put torpedo trout slingshot ammo in extra machine config selph

brittle pasture
#

๐Ÿ˜ญ

#

chue out here exposing my lies

uncut viper
# lucid iron i think framework in sdv also carry additional meaning

(i also agree with this too, bc really a core mod can have framework features too in the literal sense of having things that are. yknow. a framework for you to build off of. but when Framework means something Specific in the SDV community i think itd be better to call those things in your core mod like, utilities or somethin instead)

lucid iron
#

yea library Bolb

ashen oak
#

Eff it, I'll just make it a core mod, deal with it SDVpuffercool

calm nebula
#

Yeah

uncut viper
#

librarys a good word for it

calm nebula
#

AtraCore does have content mod facing features

#

It did also in 1.5.6 I just never documented them and then just killed that entire feature anyways in 1.6 for being unnecessarily unperformant

#

(Prismatic draw masks on any object in the game. So many transpilers.)

brittle pasture
#

is that the same thing as the recent prismatic anything mod I saw

#

(as in the same idea)

wanton pebble
#

Not really able to VC currently, but If need be I can send you some example code - and by example code I don't mean "my own mod", but more like "I'd code the equivalent of Abigail's gifts in your mod in the different patch structure for you so you can see how it would work", with some annotations to help explain

ashen oak
#

Looping back around, do y'all tend to have different solutions for different mods, a shared solution with a project per mod/shared, or both

#

(this is assuming VS or a similar build architecture)

brittle pasture
#

I keep everything separate, but I do keep some common classes in a common directory which gets included in each project individually

uncut viper
#

my solution is i keep a Helper.cs file in my dotnet template with the small code stuff i share and it just gets ppackaged into each mod

calm nebula
#

I would also recommend a shared library

ashen oak
#

Is it a matter of personal preference or do you see a concrete benefit? I'm kinda leaning toward a shared solution now but I would probably break out anything with assembly dependencies on other devs'mods into different solutions

#

(Just so folks checking out my source didn't have to grab a bunch of stuff for Bob's Mod if all they want to mess with is ThisLittleMod)

calm nebula
#

Refactoring is a bitch if you have a shared lib and separate solutions

#

I don't find having to fork all of someone's mods a problem

ashen oak
#

True, almost as much as if you boilerplate it

#

I've run into this issue before, when grabbing a mod repo and it referenced stuff in unexposed parts of another dev's mods (not through reflection but directly) and the thing I wanted to rebuild had nothing to do with any of that

#

I ended up pivoting to literally patching their mod instead of modifying it but ugh

calm nebula
#

You can select all projects and disable them

ashen oak
#

I'll give it some more thought. I think it'll come down to what exactly I'm sharing between projects

#

I have Big Goalsโ„ข but right now a shared solution with a shared library for "core" stuff and another each for, e.g, my patching framework (lower-case f) is probably the way to go

#

It's been maximum ADHD fun, though, setting out to do something simple like "let's fix the UI scale graphics offset issue in the Love of Cooking alpha" and finding myself a week later learning how to generate entire types at runtime

calm nebula
#

Yeah, I had a decently sized shared prkect that was mostly "stuff I wish was in dotnet"

#

God

#

Span Split Enumerator in net 9 my love

#

I'm very happy about this

#

Despite not getting to use dotnet 9

ashen oak
#

Or at least in .NET 6. Just simple stuff like math interfaces

#

"This is a nice little class, lemme generic it off of a number type NOT SO FAST"

calm nebula
#

I'm alllll the way back in framework for work rn

uncut viper
ashen oak
#

Anyway I'll spare y'all my tinkering with a duck typing generic since it better belongs in p-o-t

ashen oak
# uncut viper (i am curious about this patching framework (lower-case f))

Shortish version: I'm writing a collection of bug fixes for base game and various mods/mod interactions and I really wanted a way to just write a patch function or two and have it automatically group them into a config-toggleable patch group without updating any mod entry code. Kinda like Harmony's patch classes but even lazier

#

It mostly works but is pretty gross as it relies on strings due to the "types in attributes break on Android" thing

ashen oak
calm nebula
ashen oak
lucid iron
#

oh is it like additional annotations then Bolb

ashen oak
#

If that's a specific thing then I'm not familiar, but yeah it's custom attributes similar to Harmony's

#

I dunno how generally useful this will be compared to a better organized patch collection (e.g., DaLion's) but for our server it's been nice when a player says "huh, these two mods aren't interacting well" and just go "brb" and fix it in a single function

#

(rather than, say, declaring an entire class for one prefix, as some such collections do)

brittle pasture
lucid iron
#

its cus you didnt clean the poop selph

uncut viper
lucid iron
#

they r hold revolution for better living conditions

ashen oak
#

Is PoopMod yours as well?

uncut viper
#

(i know cuccos dont get angry after being thrown but i think itd be funny)

lucid iron
#

they should get angry like metal heads

#

and explode

#

(this is a joke not a feature request)

brittle pasture
ashen oak
#

Brb, upgrading to iridium muck shovel

brittle pasture
#

(side note, I looked up 'poop' on Nexus and found some very... cursed mods. 2 of them by aedenthorn even)

drowsy hemlock
#

Guys, how do I make my furnace emit light like a furnace? (Only emit light while it is melting some ore)

ashen oak
brittle pasture
velvet narwhal
#

since selph did the evil animals i might make "bongo your cats" a mod

ashen oak
#

I still have "put hats on everything" on my mod queue, maybe it can quiet angry animals (or enrage them further)

lucid iron
#

selph did u end up pushing that emc fix for beta

brittle pasture
#

ah woops, I totally forgor

lucid iron
#

i keep remembering things i was gonna do after publishing the mod

brittle pasture
#

but last I checked I think the only thing that broke was the crafting page transpiler

lucid iron
#

yea i can just go comment that out and build it's not a problem

#

or just test in 1.6.8 tbh

brittle pasture
#

hmm I don't think you may even need to rebuild, but I don't rember how I handled that exception

drowsy hemlock
brittle pasture
#

which framework? machine data is vanilla

#

if you're using PFM, I imagine it has its own settings for that

#

(but I recommend using vanilla machine data)

drowsy hemlock
drowsy hemlock
calm nebula
#

Well

uncut viper
#

you can make vanilla machines with vanilla machine data with content patcher

calm nebula
#

Yes and no

uncut viper
#

you CAN do it with C#. but you can also just use content patcher

calm nebula
#

You can make machines with content patcher for 1.6

#

Which mobile does not have

brittle pasture
#

modding on mobile sounds like you're modding 1.5?

uncut viper
#

(oh i thought they just meant they were writing their jsons on mobile. if you are actually modding the mobile game then ignore me)

drowsy hemlock
brittle pasture
#

as mentioned, in 1.6 you can make vanilla machines with just CP, no C# needed

#

I don't think a lot of us here (still) use PFM so help might be limited

drowsy hemlock
#

Is it possible to add this light using the 1.5 cp?

brittle pasture
#

need clarification, are you modding 1.5 or 1.6?

drowsy hemlock
#

1.5

brittle pasture
#

got it, in that case you have to stick with PFM

#

and are you modding for the PC version or the Android version? I imagine the latter

#

you can post your code here for ppl to look, but keep in mind that we might be able to help fix problems and typos with your code, we likely won't be able to help with actually getting your mod to run to Android if it doesn't

#

!json

ocean sailBOT
#

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

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

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

brittle pasture
#

I hope the all caps message will make people not on the beta not download it

lucid iron
#

its not on fire so it won't work

uncut viper
#

im submitting a bug report literally as we speak bc it broke my 1.6.8 playthru

velvet narwhal
#

there isn't really a gif that doesn't make my eyes hurt blingee-style SDVkrobusgiggle

brittle pasture
#

if I have to guess you enabled AlternateFrameProducing but didn't add a frame for it

#

what does your sprite file look like?

#

also Button forgot to throw in my congratulations for this (wasn't here yesterday lol). this is so useful; in fact this should be part of CP (but I see why Pathos might not want it). one problem I had with Chicken Feed (before I just switched to C#) was adding compat with animals that may be enabled/disabled by config, and there's no way to know whether an animal is enabled or not, leading to warnings in the console when I tried patching them (and bug reports). Will definitely consider this for future mods

uncut viper
#

i can also see why it might not be wanted; i feel like Pathos generally likes to keep a mods personal stuff to its own scope, and since my mod grabs config from non-CP mods too, it's actually SMAPI itself that I have to reflect into to grab things, so it'd require a change to SMAPI itself. but luckily i do not have to maintain the strict standards of scope and non-interdependability required to keep something like SMAPI or CP ultra stable and can do whatever crimes i want SDVpuffersquee

#

(the dynamic tokens are the only thing that would actually just require a change to CP itself, but i can definitely understand not wanting to try and make those public to other mods too. its a scope nightmare, and they are kinda very inefficient since they always need to say "im ready to update!" regardless of whether or not the token actually changes due to the way CP handles "checking for updates" vs "Actually recalculating the values" so its just Bad. trying to officially support that would be a nightmare of a change, i think)

calm nebula
#

In the config. Say I write a new config mid game

uncut viper
#

like, just update the config, or add an entirely new config setting mid-game?

calm nebula
#

Either

uncut viper
#

the GetValue function grabs the value from the config based on the input given to the token, so it always grabs the updated, and tries to cache the value for the UpdateContext function to check later for a change, though lookin at my code again to answer this I see I can make that better, so I will probably do that later

brittle pasture
# drowsy hemlock

and those are the only two sprites?
the culprit is probably the ProducingAnimation block on your code, which needs sprite 2 to 7. Try removing it

drowsy hemlock
uncut viper
# uncut viper the GetValue function grabs the value from the config based on the input given t...

its definitely not the ideal way to do things, but i struggled to find a better way to do it since the token depends entirely on the input, and i assumed in the api documentation where it said stuff about how dynamically calculated values are fine too as long as the calculation itself didnt change, that it would be fine enough and not break things. and it hasnt broken things in my testing, though i did not test every single possible usecase or load order issue or update propogation path etc

#

if a config setting does not exist when the token is initialized, the token just returns an empty list of values atm. if it does exist and gets changed, the value gets changed and updated at the next UpdateContext check

brittle pasture
uncut viper
#

dynamic tokens are different though their UpdateContext check always returns true at the moment because otherwise they get updated one UpdateContext late

#

becauses the dynamic token it checks does not get its value updated in time for the UpdateContext call

brittle pasture
#

The working animation is expecting frames 2-7 but you only have frames 0 (rest state) and 1

drowsy hemlock
brittle pasture
uncut viper
#

(if you had a better idea for the dyamic tokens thing i am all ears i tried everything i could think of to get around that but could not figure anything out whatsoever that didnt lead to the "theyll be one update late" consequence)

drowsy hemlock
#

I had tried before without the frames and the light didn't work, I added the frames and it started working but the furnace was invisible, now I removed the frames and it's working perfectly ๐Ÿค”

calm nebula
#

So within CP

uncut viper
#

i think you asking me that has made me realize that the UpdateContext check for the config token might also accidentally always be returning true bc of incorrect assumptions about how tokens work that I never realized I needed to correct, so its good that you did ask lol

#

(which also doesnt break anything if it does. just inefficient for no good reason)

green patrol
#

another mod making question, for fruit trees and crops, do those use a 16x16 pixel tile grid like objects, or a 16x32 pixel tile grid like machines?

uncut viper
#

"Pathoschild is typing" SDVpuffersweats

velvet narwhal
#

me when i was lost in the sauce of fixing green squigglies, "1 fear"

brittle pasture
velvet narwhal
#

trees are........ a strange beast

green patrol
#

yeah I did but I can make an argument for both >_<

drowsy pewter
#

?

#

everything uses a 16x tile grid

velvet narwhal
#

are you talking about the tree sprite itself?

green patrol
#

yes yes like the actual tree and crop sprites

drowsy pewter
#

crops and trees are just whatever multiple of 16 gets to the full dimensions

#

put a 16x16 grid over the vanilla tilesheets and you'll see

green patrol
#

oh so I can just put it over a 16x16 then gotcha

velvet narwhal
#

i would look at the unpack, TerrainFeatures for trees and you set the 16x16 grid to see what gets lined up to what

green patrol
#

I wasn't sure if like, it was one full grown tree = one tile in the grid or not ๐Ÿ˜“ never done crops/trees before, only objects

brittle pasture
#

six thousand four hundred and eighty, where are my big trees

drowsy pewter
#

in my dreams ๐Ÿ˜”

velvet narwhal
#

yeah where's my 8x scale trees i can't be the only one

drowsy pewter
#

im applying to schools, wrapping up a big research project, and getting ready to move. So thats where ive been

brittle pasture
#

ah, life. gl in all of them!

drowsy pewter
# green patrol I wasn't sure if like, it was one full grown tree = one tile in the grid or not ...

grids are for your convenience and the overlay you use is arbitrary. I recommend 16x for everything unless you really need it different.

so for example you say you're using 16x32 for machines, which is fine. But if you set it to 16x16, now you can see the lines between machine sprites AND you can also see the one tile of collision at the bottom of each machine, and judge if it feels right. The 16x16 grid adds more info. Same for crops and trees

#

putting a 16x16 grid on a fruit tree sheet, i can see the 3x3 tile space where fruits need to spawn, the 2x tile tall part where the player might overlap with the sprite, the 1x1 spot where the player collides with the tree, and the 1x1 spot thats the tree "stump"

uncut viper
ruby rapids
#

@velvet narwhal Thank you for the coding help on FellowClowns PC mod! Since I am new to CP coding I am trying to learn what all of it means code means so I can edit it myself. I just taught myself what TargetFields are. I need to read up on what the stuff in the {{}} means. For now I plan to physically replace the images until I figure out how to understand the code of this.

velvet narwhal
ruby rapids
#

@golden basin Hi Fellow! This is AhCuteArt from Nexus. I am trying to learn CP to replace your portraits because I know you update regularly. Progress on the portraits is slowly coming along, but there are tons of Nyapu retextures to do. LOL

golden basin
ruby rapids
#

@golden basin Ah, it's good to know that the portraits aren't being updated. I am just in the habit of deleting the old mods and replacing the new ones so there aren't any issues. (Thus having to replace the pictures everytime ๐Ÿ˜…). So creating a CP file will save me time in the long run.

finite meadow
#

Hello agian! yesterday I spent a bunch of hours here. Had nice people helping and caused probably 2-5 headaches. I'm ready agian lol. Long story short, custom farm, but fish won't appear. 1.6 override fish tag in tiled doesn't work with it, and all what I tried ended up in only sun fish in water, but after fishing for the first time a single sunfish, all fish disappears from water, and it will only give trash at 100% rate. This is the current log https://smapi.io/json/none/1e865345157c42099303ca43ae563df8

calm nebula
#

Don't do river, do Mountain

#

There is a reason behind this

finite meadow
#

it was intended to be beach but didn't work

calm nebula
#

You need to find a map that does not have....beach should work

#

Map that does not have zones was how it was supposed to end

velvet narwhal
#

i copied straight from the beach farm and it's set to ocean SDVpufferthinkblob

finite meadow
#

hello there, yeah aviroen was helping me yesterday but we didnt manage to make it work

#

it loaded, but same outcome

#

day 1 then went to sleep/reload map, notice no fish in water anymore

#

this is with the current json

calm nebula
#

The sunfish is special

#

It is the first fish

#

Hey, why not copy beach farm

#

Oh wait you did, hmm

velvet narwhal
#

maybe i needed to add the fishareaid into the randomized fish?

#

i assume because i didn't add it to the list it's set to 'null' so it's not applying?

finite meadow
#

so what instead of null?

#

Ocean? farmid_ocean?

velvet narwhal
#

no p e wait it's already in there

#

confusion

finite meadow
calm nebula
#

Can you check what you get for crab pot

finite meadow
#

crab pot is fully functional

#

beach loot

velvet narwhal
#

in the actual tiled data, you have the map property FarmFishLocationOverride Ocean 1.0 or whatever <chance> you want, yeah?

finite meadow
#

thought I deleted it

#

just checked it's there

velvet narwhal
finite meadow
#

it has both fishing override and crabpot

#

do I delete both?

calm nebula
#

delete it

finite meadow
#

reloading

#

same outcome, pots still work as intended

velvet narwhal
#

is it... the forward slash...?

calm nebula
#

I don't think so?

velvet narwhal
#

i don't even know if sekun's data/locations works properly if this one isn't working, but i can't compare unless default farm doesn't get green rain spawns?

finite meadow
#

I added more tags and still didn't work at all

velvet narwhal
finite meadow
#

trying

#

same outcome

velvet narwhal
#

welp

wise berry
#

My shot in the dark would be changing the "Id" field to something unique

#

Right now it's identical to "Default" and I don't know if that'd be an issue

finite meadow
#

what could I change it to_

wise berry
#

Hmm anything really, maybe use your mod's id

finite meadow
#

the farm name?

wise berry
#

Yeah

velvet narwhal
#
{
    //
    // Summary:
    //     A key which uniquely identifies this farm type. The ID should only contain alphanumeric/underscore/dot
    //     characters. This should be prefixed with your mod ID like Example.ModId_FarmType.
    public string Id;```
finite meadow
velvet narwhal
#

oh

#

is this it?

#
{
    for (int x = 47; x < 63; x++)
    {
        base.objects.Add(new Vector2(x, 20f), new Fence(new Vector2(x, 20f), "322", isGate: false));
    }
    for (int y = 16; y < 20; y++)
    {
        base.objects.Add(new Vector2(47f, y), new Fence(new Vector2(47f, y), "322", isGate: false));
    }
    for (int y = 7; y < 20; y++)
    {
        base.objects.Add(new Vector2(62f, y), new Fence(new Vector2(62f, y), "322", y == 13));
    }
    Building b = new Building("Coop", new Vector2(54f, 9f));
    b.FinishConstruction(onGameStart: true);
    b.LoadFromBuildingData(b.GetData(), forUpgrade: false, forConstruction: true);
    FarmAnimal starterChicken = new FarmAnimal("White Chicken", Game1.multiplayer.getNewID(), Game1.player.UniqueMultiplayerID);
    FarmAnimal starterChicken2 = new FarmAnimal("Brown Chicken", Game1.multiplayer.getNewID(), Game1.player.UniqueMultiplayerID);
    string[] chickenSplit = Game1.content.LoadString("Strings\\1_6_Strings:StarterChicken_Names").Split('|');
    string chickenNames = chickenSplit[Game1.random.Next(chickenSplit.Length)];
    starterChicken.Name = chickenNames.Split(',')[0].Trim();
    starterChicken2.Name = chickenNames.Split(',')[1].Trim();
    (b.GetIndoors() as AnimalHouse).adoptAnimal(starterChicken);
    (b.GetIndoors() as AnimalHouse).adoptAnimal(starterChicken2);
    base.buildings.Add(b);
}```
wise berry
#

That's the meadowlands farm ain't it

velvet narwhal
#

yeah but there's no cases after 7

#
    {
        switch (type)
        {
        case 0:
            return "Farm";
        case 1:
            return "Farm_Fishing";
        case 2:
            return "Farm_Foraging";
        case 3:
            return "Farm_Mining";
        case 4:
            return "Farm_Combat";
        case 5:
            return "Farm_FourCorners";
        case 6:
            return "Farm_Island";
        case 7:
            if (Game1.whichModFarm != null)
            {
                return Game1.whichModFarm.MapName;
            }
            break;
        }
        return "Farm";
    }```

// Game1:
```public static string GetFarmTypeID()
{
    if (Game1.whichFarm != 7 || Game1.whichModFarm == null)
    {
        return Game1.whichFarm.ToString();
    }
    return Game1.whichModFarm.Id;
}```

```public static string GetFarmTypeKey()
{
    return Game1.whichFarm switch
    {
        0 => "Standard", 
        1 => "Riverland", 
        2 => "Forest", 
        3 => "Hilltop", 
        4 => "Wilderness", 
        5 => "FourCorners", 
        6 => "Beach", 
        _ => Game1.GetFarmTypeID(), 
    };
}``` ![SDVpufferthink](https://cdn.discordapp.com/emojis/280082838773301258.webp?size=128 "SDVpufferthink")
#

ignore me for awhile i'm digging into the guts of the game

finite meadow
#

tried adding id to modid_Ocean but nothing happened

#

or am I using the wrong farm type

velvet narwhal
#

it might or not be something associated to additionalfarms, i cannot understand this code well enough

finite meadow
#

idk what im doing at this point

velvet narwhal
#

i'd set it aside again cause this is apparently a bigger problem than me being wrong about syntax?

rancid temple
#

So what's the problem? Trying to get beach fish on a custom farm?

velvet narwhal
#

yeuh

rancid temple
#

Is it a swap or an additional farm?

velvet narwhal
#

additional

calm nebula
#

Additional

#

Remove the requirement for a fish zone maybe

#

I haven't found anything else

brittle pasture
#

what was the value of the FarmFishLocationOverride property again?

velvet narwhal
#

that got removed from the tmx

finite meadow
velvet narwhal
finite meadow
velvet narwhal
#

what happens if you debug warp Farm_ChuChu.TinyBeachFarm

#

like, place something down in your original farm, then warp

#

is it still there

finite meadow
#

oh

#

let me see

#

shouldnt do tht cuz

#

i placed crabpots and well, they were there for 7 days

#

soo

velvet narwhal
#

yeah i'm trying to see if it's loading a completely separate instance instead

finite meadow
#

trying

#

I remember in 1.5 water starting day 1 would give you anchovy so as soon as I see the sunfish ik im doomed

velvet narwhal
#

you warped and the crab pots are still there?

finite meadow
#

map reloading worked

#

placed 20 furnaces

#

slept/reloaded

#

all good

velvet narwhal
#

i mean in the smapi console SDVkrobusgiggle

open dock
#

quick question, what the texutre height and width of the Modern Lamp

calm nebula
calm nebula
#

Sorta

old edge
#

Hello

calm nebula
#

If you roll trash or a hard fish it gets replaced with sunfish

old edge
#

Where can I find the C# class that handles the inventory bar that appears on the top and bottom of the game screen?

finite meadow
#

FarmFishLocationOverride could work I read yesterday but not with custom farm

lucid iron
#

Toolbar

old edge
#

Is it InventoryMenu.cs?

wise berry
ocean sailBOT
#

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

lucid iron
#

you want the hotbar right

#

it's Toolbar.cs

wise berry
#

Away from home right now so I don't have the files I'm afraid

rancid temple
lucid iron
#

inventorymenu is the backpack

finite meadow
rancid temple
#

Try removing the quotes around null for ItemId

#

"ItemId": null not sure what happens when it gets an error item, might just default to trash

velvet narwhal
#

SDVpufferthinkblob i ripped that straight from beach

#

wait double checks

finite meadow
#

ill try

velvet narwhal
#

(nevermind, apparently vs22 added those)

finite meadow
#

so like

#

do I remove the whole tag

#

or replace null

velvet narwhal
#

just remove the " around null so that it looks like "ItemId": null,

finite meadow
#

OH ok didnt realize

#

trying

old edge
#

Ok. Yeah I needed the toolbar.cs, because I have an item I added that when triggered it asks a question but it interferes with the toolbar you can't click it when holding said item.

finite meadow
velvet narwhal
#

i hijacked a different mod and it did not work SDVpufferthinkblob

rancid temple
#

Is that a mod that makes fish visible?

finite meadow
#

even the char is doomed look at the eyes, she knows it

#

yeah

#

it shouldnt even be sunfish there, but see what happens after I get 1 sunfish

velvet narwhal
#

it'll always be sunfish

finite meadow
#

WAIT

#

after removing '' from null

#

now I something in smapi console

velvet narwhal
#

also: re, warping to the Farm_<uniqueid> doesn't exist

#

(sorry sekun i've hijacked your mod)

finite meadow
#

oh I think it is something nothing related to this mb

#

downloaded that to test something some hours ago

#

I dont think thats causing the issue

calm nebula
#

...

#

Okay

#

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

rancid temple
#

Bold assumption

calm nebula
#

Remove every other mod except CP and your own and visible fish

#

I don't think spouses island is the problem

finite meadow
#

but see this is what happens after fishing once, all fish gone, only trash

calm nebula
#

But there is a nontrivial chance you have a different mod causing an issue

velvet narwhal
#

i am testing alongside with just sticking the fishdata and it isn't going through SDVpufferthinkblob

finite meadow
#

removed all mods except visible fish

#

testing

rancid temple
#

Do you only fish up trash as well?

finite meadow
#

only trash

velvet narwhal
#

(yes i'm only getting trash)

rancid temple
#

Mk, just wondering because Visible Fish has A LOT of complaints about no fish being visible in various locations

finite meadow
#

removed all mods, im sure it wasn't another mod causing it

#

same outcome SDVpufferdizzy

#

oh no, visible fish indeed works, it shows all sunfish around water before fishing 1

velvet narwhal
#

SDVpufferthinkblob it's saying my data/location patch applied, but i cannot warp to it's internal name

rancid temple
#

For farms you don't generally set a CreateOnLoad, so they don't actually have a location

calm nebula
#

Temporarily change the ignorefishdatarequirements to true

rancid temple
#

It's just there for the location data

#

Only reason I could think to set that would be if you wanted multiple farms lol

velvet narwhal
calm nebula
#

Just a heads up: I don't care to debug code when I cannot see it

finite meadow
#

yeah, didnt work

calm nebula
#

Or, you know, the logs I asked for

#

I'm going to sleep.

#

If it was actually broken we would have every third map maker in here trying to figure it out

finite meadow
#

what is this madness SDVpufferdizzy

calm nebula
#

So clearly you're doing something wrong

velvet narwhal
#

nevermind don't mind me

#

is trash just... overwhelming?

finite meadow
#

lets see

#

trying

velvet narwhal
#

yeah it does work

finite meadow
#

So like using that template

#

manually entering the beach fish?

#

I could work with that anyway cuz it looks like a cool idea to have a modded farm with variety of fish different than in x zone at valley

#

I like that tbh

#

I just wonder, so we have to give up the season part of it then

velvet narwhal
#

you don't have to

#

the condition i set you can have specific fish spawn during whatever season

#

welp that confusion is over i go back to staring at my empty csp canvas SDVpufferclueless

finite meadow
#

trying

velvet narwhal
#

that ain't the farm

finite meadow
#

oh

#

not the custom farm?

velvet narwhal
#

the farm you were working on? that log is linked to SVE's frontier farm

finite meadow
#

mb

#

I was taking examples from frontier

old edge
#

Why is it 2.0?

finite meadow
#

uploaded the wrong one hold on

#

I was checking what SVE did to make it work, for some reason I posted their json, im malfunctioning SDVpufferdizzy

old edge
#

Thanks chu, it was fairly easy to add a check if the player mouse is within the bounds of the toolbar. Finally can work on something other than c#

velvet narwhal
#

line 90 has a ]

old edge
#

Is that for a custom farm map?

velvet narwhal
#

yeah found out the fish stuff worked, it's just trash is overwhelmingly prevalent, could probably get around it by setting object data to -1 but that's too much for my brain right now

finite meadow
#

oh wAoWwwww

old edge
#

Yeah In the beginning only trash is in the water since Stardew is polluted by joja. I will be creating a new custom ring now

finite meadow
#

this was the attempt 45

#

I guess I'll have to create more fish templates and specify season but the outcome is amazing, you can tell the diff by visiblefish working there

#

maybe, it's even better than what vanilla offers, I could put some unusual fish there

old edge
#

I think it took me 200 attempts to make my code work just now lol

finite meadow
#

Aviroen

velvet narwhal
#

yessum
read: i spent an entire 12 hours realizing my harmony patch wasn't even going through

finite meadow
#

can't thank you enough, you're truly amazing

old edge
#

Coffee

finite meadow
old edge
#

Yeah I'm working on adding light to an object but the light_source context tag doesn't work as expected....

#

Yes I mainly work on Cape stardew

finite meadow
finite meadow
#

Also, this is the entire map. It's supposed to be a challenging map cuz of the limited space, but in exchange has both stone/wood renewable resources

#

not the top stumps tho

#

it surely has been giving me a headache ๐Ÿ˜„

old edge
#

I haven't tried any custom farms yet. Definitely will try yours have you checked if it works with easyfarmswitcher yet?

finite meadow
#

Not really, I was actually finishing it, I needed to get the fish part done which is what caused the most trouble, now I just want to edit the farm creation png and finish testing before releasing

#

maybe changing a bit of the shape of the bridge tiny island, and that will make it. I was thinking in adding a custom cave but uhhhhhhh

old edge
#

I'll try it

#

Oh it's probably not on nexus yet hah

finite meadow
#

nono i havent released it

#

soon I hope, on nexus I have tiny beach farms tho

torpid holly
#

Okay is anyone really good with tiled?

#

And making game maps?

finite meadow
#

I use it very often

tiny zealot
#

what's your question?

torpid holly
#

I wanted to know if I could commission someone to make me a map for a 1.6 challenge thats custom :DDDD

#

id be able to pay

finite meadow
#

I have some in nexus you dont need to pay for

torpid holly
#

I tried asking and I only got artists who didnt understand

uncut viper
#

!commissions

ocean sailBOT
torpid holly
#

and I know there are, but I want something 100% custom thats all

old edge
#

There's a few people that do commissions like me

torpid holly
#

Ive tried and no ones gotten back to me or gotten confused

#

๐Ÿ˜ฆ

#

its been a nightmare

old edge
#

I am open right now

#

I have a Kofi page with the details since no one got back to you Ive been using tiled for 2 years

torpid holly
#

oooh pls send me in a dm

#

and we can work out things

lucid iron
#

what is the color of stamina

velvet narwhal
#

hex #4FE69D ? isn't it attached to the sky

uncut viper
#

isnt it just like almost pure green. the titular staminaRect

lucid iron
#

yea but health is already green

velvet narwhal
#

oh you mean like, other games

lucid iron
#

the reason why i ask is cus was considering floating number for stamina recovery

tiny zealot
#

i think Game1.staminaRect is a 1x1 white rectangle

uncut viper
#

i think i would wonder why it was anything but the same green as the stamina bar, even if thats also used for healing numbers

velvet narwhal
#

is health green? i thought it was red

lucid iron
#

when you get healed by fairybox

uncut viper
lucid iron
#

the number is lime green

uncut viper
#

if not green i would go with electric yellow

#

like a battery

velvet narwhal
#

i just vaguely remembered the stamina being attached to the skybox for no reason, if i'm wrong on that then i can wipe that from brainram

tiny zealot
#

while we're at it, get atra in here to complain about the pixel in the moon that is used for the particle effects when the farmer eats/drinks

lucid iron
velvet narwhal
#

atra sleep aSDVpufferbonk

uncut viper
#

thats my favourite pixel

lucid iron
#

electric yellow sounds fine too

#

oh btw ichor did u encounter shenanignas with making menu child of gmcm Bolb

#

i got bug where doing this doesnt restore daytimemoneybox and toolbar when you exit gmcm, but im not sure if its gmcm quirk or stardewui quirk

odd ginkgo
#

Has anyone tried to replace character spritesheets, and the game only loads the spring-summer-fall sprite, not the winter one?

lucid iron
#

its cus you didnt replace winter sprites

calm nebula
#

What about a moon?

lucid iron
#

there's an appearances system added in 1.6

odd ginkgo
#

I tried to, I am replacing both Char and Char_Winter

#

hmmm I see though, it's more complicated than I thought

lucid iron
#
Stardew Modding Wiki

If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...

odd ginkgo
#

thank you

lucid iron
#

now if you dont want to add new outfits just doing EditImage on winter sprite should work

odd ginkgo
#

cool, appreciated, time to give it another go

lucid iron
#

you can do patch export Characters/Abigail_Winter while in game to see what game thinks abigail's sprite ought to be

#

perhaps u got targets wrong bolbthinking

finite meadow
brittle pasture
#

5 minutes late to the convo but I'd have blue popup for stamina recovery, and a sickly yellow for stamina drain

round dock
uncut viper
#

blue is for magic damage!

brittle pasture
#

blue has too many positive connotations. Use purple for that

round dock
brittle pasture
round dock
#

Tater toss mechanic where instead of tater tossing them lovingly, they toss you SDVpufferwoke

round dock
round dock
lucid iron
#

mr ape stole all the colors for damage

brittle pasture
#

(use blue!)

lucid iron
#

i stole blue from the mana mods

uncut viper
#

(told you it was magic)

brittle pasture
#

that looks better in my very biased opinion

uncut viper
#

i would personally not clock that as stamina

lucid iron
#

yea i also think its magiks

brittle pasture
#

hmm maybe a different green shade then

#

cuz that yellow still feels negative to me

#

maybe because it is one of the damage popup when hitting monsters

#

monsters, not animals, bleh. Those goose got me

lucid iron
#

man i have no idea what the api would be like blobcatgooglyblep

#

if someone else want to make their own trinket ability

uncut viper
#

if you just make all your classes public ill just reflect my way into whatever i need if the api isnt good enough /j
(i dont know what id want out of a trinket api either)

calm nebula
#

It needs to tell me how much the trinket fetches at auction

#

Wait.

#

Wrong type of trinket sorry

#

(I wouldn't know eithrr.)

lucid iron
#

Well the main feature of this framework is that how the trinket draws/moves is independent of their abilities

#

I think people would use this in C# if they don't want to do the draw but do want to do the ability

#

Maybe it could be some api that takes delegates blobcatgooglyblep

lucid mulch
uncut viper
#

its not but it makes things easier if i dont need to reflect literally everything

#

just enough private/internal to make it clear im not supposed to be there. but not private enough to make it a pain after i break in

lucid iron
#

yall going to jail for reflection crimes

lucid mulch
#

internals are easy to fix with the IgnoresAccessChecksToGenerator library, can just specify the assemblies in your csproj that are now accessible

#

privates are more fun with publiciser, but the two hacky solutions dont play nice together

finite meadow
#

Aviroen, you around?

#

forgot to ask what line to add for weather conditions ๐Ÿ˜„

brittle pasture
lucid iron
#

i do still want to do that for motions, but the ability stuff ended up being event based

#

its good to have real deadline for this at least, which is 1.6.9 release

#

stops me from feature creep AnnelieStare

velvet narwhal
brittle pasture
#

(it's rain)
(but yes read that page)
(it's good)

uncut viper
#

(just memorize it you'll probably need it a lot)

scenic scroll
#

got this comment from polyamory sweet creator regarding a custom npc not working: "Downloaded it, looked at it, it looks like the Character is still in 1.5 format. They work, kind of, but also don't fully work all the time. The fix isn't super hard, the character just needs a 1.6 character entry."
anyone able to help me with a character entry?

uncut viper
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

uncut viper
#

Data/NPCDispositions is no longer used and the tutorial and wiki page linked in that bot command will tell you what the new formats should look like

#

(the new format also absorbed Data/spousePatios and Data/spouseRooms too)

scenic scroll
#

ty ty - im still confused just for clarity i should update the dispositions file to data/character for 1.6 and the room? or do you recommend just re doing the character from scratch

uncut viper
#

you can keep all the dialogue and sprites and stuff (though if you have conditional appearances theres a new system in 1.6 you can use instead) just the dispositions and spouse patio/room being moved into a Data/Characters edit is the main thing

scenic scroll
#

oh perfect thank you so much

raw pond
#

If anyone could help at all I'd be grateful. Just a small question;
I'm using MenuChanged to check if there is a new menu and if so; switch things around (currently just sorting chests). However, you can see the slight stutter when it sorts it right after changing the menu.
It seems that MenuChanged runs after rendering. Do I have to use Rendering and have my own logic to check if the menu changed in there? Or is there a better way

cunning grove
#

im losing my mind.
im trying to add a spouse room for my custom npc and i have no idea WHAT im doing wrong but every time i open the game to test it, smapi gives me an error saying that "NPC SpouseRoom can't be found in stardew valley/content/portraits/spouseroom.xnb"
i genuinely have no idea why it's looking there of all places for it, can someone tell me what im doing wrong?

formal crown
#

Did you set the MapAsset field?

cunning grove
#

i did, im really not sure why it's not working, im sure i just made a typo somewhere because i know for a fact that everything is right

formal crown
#

!json

ocean sailBOT
#

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

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

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

formal crown
#

So that we can see your code

#

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

formal crown
#

Also this just in case

cunning grove
#

for the json validator, it says there aren't any errors

formal crown
#

It's not to find .json errors, its for us to see your code (well in this case at least)

cunning grove
#

ah my bad, never done this before

#

i assume that means you want the link it gave me?

formal crown
#

Yes

uncut viper
#

you're currently just trying to define an NPC named "SpouseRoom" instead of changing the SpouseRoom field inside your Andrew entry

formal crown
#

I'd like to see the Disposition.json as well, but if you're setting the MapAsset only-- What Button said

uncut viper
#

you should just define it in your Disposition json instead with the rest of your character data

#

(assuming your disposition is using the 1.6 format)

cunning grove
#

that makes total sense

#

in my defense, the guides online did not specify that at all

uncut viper
#

which guides?

cunning grove
#

well honestly the closest thing to a guide i could find was what little description of spouse rooms there was in the custom npc page on the modding wiki, ive actually mostly been using other mods as references

uncut viper
#

that guide does link to the NPC data page though, as well as a full NPC template

cunning grove
#

i must be blind then, as if this situation weren't already embarrassing enough ๐Ÿ’€

formal crown
#

You dont know how often mod authors misread and mistype things, its fine SDVpuffersquee

uncut viper
#

its a lot of text! easy to miss things

#

the SpouseRoom in entries mistake is more of a content patcher in general mistake though, if you end up needing to edit specific fields in specific t hings later on you might wanna look over the content patcher editdata docs

cunning grove
#

i think the funniest part about that is the fact that i copy and pasted that entire thing from someone else's mod that works perfectly fine despite that spouseroom mistake

uncut viper
#

which mod?

cunning grove
#

sve ๐Ÿ’€ i just copied some of lance's data

uncut viper
#

i don't see a patch like that anywhere in Lance's file, but there is literally 0% chance something written like what you had can work in any mod

#

so i think you mightve just copy pasted the wrong thing into the wrong place by mistake

cunning grove
#

that's entirely possible, ive fumbled a lot of things like that in the past

uncut viper
#

easy to do with an NPC mod for sure, theres a helluva lot to do to make one

cunning grove
#

i think my biggest plunder was probably when i was trying to make a custom recipe and attach it to a letter, i think i wound up struggling with it for a solid six hours before realizing i just spelled something wrong ๐Ÿ’€

#

stupidity and determination is a dangerous combo

cunning grove
gilded comet
#

PLUNDER

#

THATS AWESOME

formal crown
gilded comet
#

anyways. this happensss i get a lot of errors from spelling mistakes you're not alone :)

formal crown
#

(I'm getting the log)

ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Home Single Language, with 7 C# mods and 1 content packs.

lucid iron
#

Is the stuck parts TAS

formal crown
#

Yes

cunning grove
lucid iron
#

I think you better use the other way to animate

uncut viper
#

is it because you set Loops to like a fuckton

lucid iron
#

TAS need to have some fade set or else they get stuck like that yea

#

Other way = Frames

formal crown
#

๐Ÿ˜… I mean, I'm using it for the drill part but using only that for every part of it means I have to make so many frames

lucid iron
#

How many loop did u put

formal crown
#

9999 or such, its in the json link

uncut viper
#

(like literally a million)

#

(i dont know what interval does either, is that also important)

lucid iron
#

I wonder if u could do 2 WorkingEffects

#

One with the drill one with the vents

formal crown
#

I checked the vanilla code, it only works on one WorkingEffect ๐Ÿ˜…

lucid iron
#

Scammed

formal crown
#

I admit, its from ILSpy but it probably wont misreconstruct the code to change that much?

uncut viper
#

nah it wont show code thats just blatantly wrong

lucid iron
#

The other thing I recall being important on TAS is AlphaFade

formal crown
#

I'll try setting that and try again

uncut viper
#

though you only have one WorkingEffect anyway?

#

oh wait i misread

#

forgot you were responding to chu's idea ignore me

lucid iron
#

Worst case I guess you do just make n x m frames LilyDerp

#

If you use something to script the combination it can't be that bad

uncut viper
#

(what the heck is SortOffset)

formal crown
#

(Where to place the TAS on the machine, offsetting based on its collision box)

uncut viper
#

SortOffset on the machine data wiki page says to look at the temporaryAnimatedSprite entry in event commands b ut that doesnt have a sort offset :v

#

ah, i see

formal crown
#

Wait no sorry

#

I confused with PositionOffset

uncut viper
#

"The tile Y position to use in the layer depth calculation, which affects which sprite is drawn on top if two sprites overlap."

formal crown
#

Yeah ๐Ÿ˜…

uncut viper
#

i guess thatd be the depth in temporaryAnimatedSprite then

formal crown
#

After setting the AlphaFade, it no longer stays there after machine is gone but the animations still start late SDVpufferthinkblob

lucid iron
#

What's the WorkingEffectChance

uncut viper
#

1

formal crown
#

Mine is set to 1

lucid iron
#

Perhaps the TAS only shows up after 1 interval passes

uncut viper
#

can you just put like one frame of it in LoadEffects to make up for the WorkingEffect starting late

formal crown
#

I'll try

#

Nope

uncut viper
#

i know not enough about machines to be able to help any further with that specific issue SDVpufferpensive

formal crown
#

I suppose I'll have to try make the large amount of frames, it was worth a shot nyaShrug

formal crown
#

Well at least it works and animates smoothly now SDVpufferowo

frigid hollow
#

So if I wanted to have a building with a config option for it's exterior would I would just use one texture for it and have a separate EditImage that then changes that texture instead of trying to directly have a dynamic token in the building's texture?

#

like this doesn't work (very well at least)

uncut viper
#

why doesnt that work well?

frigid hollow
#

it's not changing when i change the config

#

or change season or run patch update, i think i'd have to reload the game for it to change?

#

it works on the name and desc but according to lookupanything the texture is still the same one

uncut viper
#

hm. does it update if you dont use a dynamic token there but just use a When condition to change the Texture field with EditData specifically?

frigid hollow
#

this is the texture in the blueprint so i'm assuming that's why it doesn't work

uncut viper
#

having one texture with a conditional EditImage would (i think) work but iirc EditImage is not the cheapest operation to do so if you can avoid it i think its recommended

#

(also just to be clear, was {{Building}} a dynamic token or a config token?)

frigid hollow
#

i tried it with both

#

Building is config

#

though maybe my dynamic token sucks?

#

this is correct though maybe

#

okay i changed the texture directly on the blueprint, reloaded, and it's still using the old one

#

i'm guessing which texture to use is just per-building bc of the skins thing

uncut viper
#

maybe an editimage is just the way to go then

frigid hollow
#

or i just make this building have skins instead of it being a config, though that seems like it could be annoying if you change your mind and then have to rebuild and move all your animals SDVkrobusgiggle

#

(unless you can just change skins from the carpenter menu and i haven't realised that)

#

ooh wait you can with the painting thing, that's how you do the pet bowls! i can avoid editimage after all!

uncut viper
#

funnily enough if the paint mask specifically is updated that will cause the texture to reset which im pretty sure would make your dynamic token work lol. idk a lot about paint masks tho

calm nebula
calm nebula
# formal crown

You know, I'm not sure that effects are removed when the machine is

vernal crest
#

There's not a way to filter Nexus search results so that mods dependent on a particular mod (Portraiture) aren't shown, is there?

rancid temple
#

Don't think so, Nexus search is worse than Discord

vernal crest
#

Poop. Didn't think so either.