#making-mods-general

1 messages · Page 486 of 1

pine elbow
#

now where do I put item quality for the Meats?

lucid iron
#

If you want to combine your i18ns then do whatever you want

tiny zealot
#

you can tell content patcher to sub in values by nesting your tokens and passing them along

lucid iron
#

No rule that says 1 dialogue can only have 1 i18n token call

autumn tide
#

?

#

WAIT nvm i thought of a another solution

tiny zealot
#

"{{i18n:the-first-key |subkey={{i18n:the-other-key}}}}" and then use {{subkey}} inside the first value

tiny zealot
#

you can do this to pass arbitrary expanded values to your i18n, which is also how you access values of your CP tokens inside

#

it's just that i18n is a CP token 😉

autumn tide
#

okayyy I'm gonna send my code here in a sec bc my brain is short circuiting

brittle pasture
pine elbow
# brittle pasture meats? what's the context

I will show a diagram for what I am thinking of

if its the OTHER Context than I am making a Mod that adds a machine where can make Meat without Killing your livestock by instead converting your livestock's Produce INTO meat

autumn tide
#

would like to clarify that i coded this MONTHS ago so it might be a mess

brittle pasture
#

as mentioned just put the Quality field into the output (unless you have a more complicated use case)

uncut viper
#

pls use json uploader

autumn tide
#

..yeah will do the question block is giving me a headache

#

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

autumn tide
#

i should replace the topics with mail flags

#

or there might even be a 'question asked' thing

autumn fog
#

is there a way to make a shop sell an item on a random day of the month?

autumn tide
gray bear
#

yes

#

do you have shop code ready?

autumn fog
#

ive coded most of the shop just adding items now (but i havent added the tile to the map yet lol)

lucid iron
autumn tide
#

just set the conditions to DAY_OF_MONTH {{now make a custom token that's random number from 1-28}}
IGNORE I'M WRONG

calm nebula
lucid iron
uncut viper
autumn tide
#

ohhh okay

#

hm

autumn fog
lucid iron
#

What I'd do is probably a trigger action day ending with 1 RANDOM check

#

On success 2 mailflag one for "sell it today" and one for "has sold this month"

#

Block further activation of the trigger action with the "had sold this month"

autumn fog
#

ok, time to read a lot of wiki then lol

lucid iron
#

Flip "sell it today" to false at end of day

uncut viper
#

you'd also need another trigger action that excludes the random but checks if it hasnt sold this month in order to guarantee it happens at least by the end of the month

lucid iron
#

Flip "has sold this month" to false at end of month

uncut viper
#

otherwise you could potentially never get it

lucid iron
#

Yeah maybe it could be any random dayofmonth 28

gray bear
#

sounds,,, complex

lucid iron
#

Yep.

uncut viper
#

if you wanted to get fancy with it you could reuse SYNCED_SUMMER_RAIN_RANDOM

#

which increases the odds as the month goes on

lucid iron
#

Honestly I think if you don't wanna overcomplicate things

#

Just RANDOM on the shop cond is fine

autumn tide
uncut viper
#

itd coincide with rain though unless you did even more fancy complex mail flag stuff to change that

#

the season doesnt matter

lucid iron
#

All the extra nonsense is just to enforce "only 1 sold this month"

autumn tide
#

HMMM so just set a 'has got this for this month' flag and then do random?

#

..or just do random on it's own so it's still v unlikely

autumn fog
lucid iron
#

Nah just SYNC_RANDOM 0.035 chance or something

#

I forgor the exact order of args pls check wiki game state queries

autumn tide
#

(this has officially become too complex for me good luck spring SDVpufferheart)

lucid iron
#

You can also use the gsq button mentioned

lucid iron
#

Which will make your thing more likely to be sold as month goes on

#

It does mean u can get multiple a month ofc

#

Gotta decide if that's alright

gray bear
#

honestly my knowledge of trigger actions is uh, limited. i too wish you luck spring

autumn tide
#

godspeed 🫡

gray bear
#

◀️ has no idea what's going on

autumn fog
#

SDVpuffercry i didnt think it would be so complicated ahah

#

uh so SYNCED_RANDOM day <i havent touched keys yet 😭> 0.035 or something

calm nebula
#

Just make it always available, have a purchase action that marks a mail flag that makes it unavailable

#

And reset that once per season

uncut viper
#

'ANY "RANDOM 0.1, !PLAYER_HAS_MAIL Host HasSoldThisMonth Received" "!PLAYER_HAS_MAIL Host HasSoldThisMonth Received, DAY_OF_MONTH 28"'
use that as a condition for a Trigger Action on DayStarted to send two mail flags to the host received inbox: HasSoldThisMonth and ShouldSellToday
then in the shop condition, use PLAYER_HAS_MAIL Host ShouldSellToday Received
then on DayEnding, remove the ShouldSellToday mailflag
on the last day of the month DayEnding, remove the HasSoldThisMonth flag too

uncut viper
#

(with my method you'd ofc also want to change the random chance if you want and modid prefix your mail flags)

autumn tide
gray bear
#

should be the same as the main question block it seems

gray bear
#

lemme

#

same keys

autumn tide
#

oh, is it not?

gray bear
#

it is

#

i don't know what you're #$q code looks like

autumn tide
#

OH okay good

autumn tide
#

i am very lost lol

gray bear
#

that's your i18n?

autumn tide
#

OH no, that's a regular content file thing

#

SDVpuffersweats i def know what's happening

gray bear
#

you don't have the question bit on here, just keys

autumn tide
#

..oh?

rose sequoia
#
[18:25:47 WARN  Content Patcher] Ignored EnglishClub > Adding npcs jsons (from code/npcs/fran.json) > Load Characters/schedules/{{ModId}}_Fran: the Priority value 'Early' is invalid: expected one of [Medium, High, Exclusive, Low] or a simple offset like 'Medium + 10'.
[18:25:17 WARN  Content Patcher] Ignored EnglishClub > Adding npcs jsons (from code/npcs/fran.json) > EditData Characters/schedules/{{ModId}}_Fran: the Priority value 'Medium' is invalid: expected one of [Default, Late, Early] or a simple offset like 'Default + 10'.

????

#

why is the log saying contradictory things ?

#

or am I dumb ?

autumn tide
gray bear
#

smapi confused....

#

share the code?

rose sequoia
gray bear
#

values are Medium, High, Exclusive, Low

autumn tide
#

i should prob try to mod less rn bc i'm sick-

calm nebula
#

Being sick is the best time thoigh

gray bear
#

wait they aren;t- smapi lies

autumn tide
tiny zealot
#

there are two different priority enums with different names: one for loads and one for edits

#

betise is using the wrong one by mistake

autumn tide
gray bear
gray bear
#

it changes depending on action?

uncut viper
#

yes, because only one Load can ever apply

tiny zealot
#

yeah load priority uses different words than edit priority

gray bear
#

ooh

uncut viper
#

you cant have a "Late" load because there is only one load

tiny zealot
#

it is a bit confusing because they're both called Priority and they otherwise look the same, but button's reason ^ is why

gray bear
#

kinda annoying tbh

autumn tide
uncut viper
#

well it is documented and the error message does spell out exactly what was wrong

tiny zealot
#

also they are numerically in different order, so that + and - behave as one might expect

#

for loads, high numerical value wins and is applied, so e.g. "High + 10" makes sense as being higher than High and applies first

gray bear
#

what makes u need priority again

tiny zealot
#

for edits, low numerical value is applied first, so e.g. "Late + 10" makes sense as being later than Late and applies last

autumn tide
#

hmm can questions repeat?

tiny zealot
gray bear
#

right, yes! i literally do this SBVWahSob

tiny zealot
#

before priority was exposed to content packs, the only way to do patch order was false dependencies (neither system is ideal or should be considered generally superior to the other)

#

although patch priority is the first sort, and load order (created by false dependency) only breaks ties, so patch priority supersedes

calm nebula
#

(+ you couldn't do no exclusively loads at al)

final arch
#

that doesnt english very well :p

calm nebula
#

Sheku I'm sick so

#

Give me some grace

final arch
#

oh get well soon SDVpufferchickhug

autumn tide
#

sick and moderately delirious modding is honestly a little entertaining

#

like "awww look at how stupid i am it's so cute"

calm nebula
#

I've got "internet girl" by katseye playing in the back of my head

autumn tide
#

aka my normal playlist bc literally at least half of them are about the gay™-

#

what can i say i play sdv it fits

sleek aurora
#

Got a guide to creating cooking recipes?

sleek aurora
#

Thank you

karmic gust
#

is there a console command to mark an event as unseen?

#

I'm not seeing one on the wiki but I might be overlooking it

royal stump
karmic gust
#

ah okay, yeah I skipped over that. I thought it just marked it as seen

#

thank you!

heavy pewter
#

Do I need to make a mod for PC or a mod for mobile is enough for Mod Author role?

uncut viper
#

a mod for any platform would qualify, i should think

#

you do need to be a higher server level though

dire canopy
#

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

digital herald
#

I think I got the mod to host multiplayer runs quite well. However, the mod is completely different than the mod I started with.
I removed a lot of features, and only implement the one that needed to keep the server working well.
I will look into releasing the mod if anyone wanted to use it. https://github.com/icyavocado/stardew-smapi-mod-skeleton/blob/main/src/AlwaysOnServer/ModEntry.cs

The mods will host an always on server, paused when noone connected.
When an user connected to the server, it will send you the mods in nexus link so you can download them.

lucid iron
#

If they wanted to

digital herald
lucid iron
#

I was wondering bc sometimes i have to make configs host only

digital herald
#

Yep, you have full access to host via browser. I haven't figured out how to get sounds working yet.

#

I have been leaving the host running since I started the development, to make sure nothing weird happens. But I wont be able to catch all the bugs. For example, it stuck on Spring 1 of Year 3 (Gram Ghost) - however, if a client connected, the bot should pass out correctly after time runs out.

rose sequoia
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.26200.0, with 3 C# mods and 1 content packs.

rose sequoia
#

does someone know why this happens ?

#

last time there was a log to say mismatching something but not this time ?

#

can I force apply ?

urban patrol
#

loads are exclusive priority and don't show as Applied in the log

#

even when successful

#

can we see your schedule json for her to find out why it's not applying

cyan marsh
#

how best to deserilize a chunk of NPC Data

rose sequoia
#
        {
            "Action": "Load",
            "Target": "Characters/schedules/{{ModId}}_Fran",
            "FromFile": "assets/blank.json"
        },
        {
            "Action": "EditData",
            "Target": "Characters/schedules/{{ModId}}_Fran",
            "Entries": {
                "Mon": "830 Saloon 40 17 0 {{ModId}}_Fran_Reading/1400 Town 40 72 0/1530 {{ModId}}_EnglishClub 7 8 0 square_6_3_1/1700 bed",
                "Tue": "1100 Saloon 40 17 0 {{ModId}}_Fran_Reading/1500 bed",
                "Wed": "1000 {{ModId}}_EnglishClub 7 8 0 square_6_3_1/1400 Town 40 72 0/1800 bed",
                "Thu": "830 Saloon 40 17 0 {{ModId}}_Fran_Reading/1400 Town 40 72 0/1530 {{ModId}}_EnglishClub 7 8 0 square_6_3_1/1700 bed"
            }
        },
urban patrol
#

!json can you please use the site

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.

rose sequoia
#

oh yeah sorry

lucid iron
#

Data/Characters or something else

cyan marsh
#

yeah

#

I don't have a json on hand... gimme a sec to generate one

#

or would you like to see the data model?

lucid iron
#

Well if it is json you can use newtonsoft.json right

#

Add that as nuget if not a mod, add via reference if mod

cyan marsh
#

var npcdata = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawnpcdata);

#

can't use that.. i don't think

urban patrol
#

@rose sequoia the schedule looks right to me. what behavior are you seeing in game?

urban patrol
#

does your blank.json have a set of {} only?

lucid iron
#

This will let you do using newtonsoft in mods

rose sequoia
#

i mean I use the same blank.json for 3 other characters and they work correctly

urban patrol
#

oh you need a default

rose sequoia
#

ohhhhhh

urban patrol
#

right now it doesn't know what to do on friday/sat/sun

#

use all 7 days or have a "spring" in there

cyan marsh
rose sequoia
urban patrol
#

idk exactly how the game parses schedule data, but maybe not, if it can't find a default. i don't know

#

never assume the game will work the way you think lmao

cyan marsh
rose sequoia
urban patrol
#

do they have all 7 days?

cyan marsh
#

do those give you a better idea to what I mean @lucid iron

rose sequoia
urban patrol
#

wack i would expect errors on the other days

hard fern
#

i wonder if it only matters if it is that day

#

like a character with no sunday schedule wouldn't cause problems if it isnt a sunday?

urban patrol
#

if that's not the issue, can you try doing a patch export

#

patch export Characters/schedules/YourModIdHere_Fran

lucid iron
#

Just change the generic type

#

Can make a ContentPatcherMock class for that

#

With string Action, Dictionary Entries etc

cyan marsh
#

var npcdata = JsonConvert.DeserializeObject<DataModels.NPCCharacterDataModel>(rawnpcdata);

#

like that?

lucid iron
#

Yeah assuming the fields all match up

#

I do recommend using newtonsoft just to be consistent with smapi

cyan marsh
#

I got the CP stuff.. I generated the json.. now I need to get it back into the app x3

#

who doesn't use Newtonsoft?

lucid iron
#

C# has native json i thought

cyan marsh
#

been using NS since i started

#

i wouldn't know if it did

rose sequoia
#

thx

tight rivet
#

c#'s native json isn't that great, iirc

cyan marsh
#

looks like smooth sailing from here

gentle rose
#

for me I was able to load custom data models via the data pipeline without needing to do any of my own deserialisation stuff thanks to pintail (including nested data models), so if you're doing data pipeline stuff that may actually be an option?

lucid iron
#

I think coriel is not doing a mod

#

Cus it's the npc creator

cyan marsh
#

NPC Creator 4

tight rivet
#

Me: I should work on making these mods compatibile.

gentle rose
#

ah

tight rivet
#

Also Me: I should make work for myself and make these mods compatible with upgradable casks

#

also also me: why do I have no time for anything????

cyan marsh
#

someone made a web version.. so i need to make sure NPC Creator works better than that

lucid iron
gentle rose
lucid iron
#

It is some type shenanigans i thought

tight rivet
#

more seriously, custom cask mods are interesting, and I'm not sure how to approach compatiblity yet

lucid iron
#

Pintail is when u got 2 mod apis

gentle rose
#

anyway, back to optimisation hell

#

time to see if I can dispose a texture from the content pipeline and if so, what the consequences are

#

hopefully fun ones

lucid iron
#

Can you not

brittle pasture
lucid iron
#

:')

brittle pasture
#

aka the PFM situation

lucid iron
#

But also I don't think you can do that without yeeting the whole content manager

gentle rose
#

you actually can dispose individual assets!

lucid iron
#

yeah but dont textures have the funny propagation deal

#

That was my concern

tight rivet
gentle rose
lucid iron
#

When a texture is reloaded

#

All other known loaded instances get their data overwritten

#

So they r never disposed

gentle rose
lucid iron
#

I dunno what would be the consequences if u went and did that

calm nebula
#

Tbh I think you could manage it if thr asset wss only used by you

gentle rose
#

time to look into what does that and break it

lucid iron
#

Anyways iro if u want to make it not persistent you could use the temporary content manager

calm nebula
#

The game assumes it can just update. I think you can manually remove....or that yeah

lucid iron
#

Game1.temporaryContent or smth

#

That goes away when you warp

gentle rose
#

the question is if the texture gets properly gced

calm nebula
#

It does get dispose then yeah

lucid iron
#

Idk why u r concerned about memory tho wasn't the problem that it takes 3long to load

#

Did u look at reducing the size yet

calm nebula
#

Fwiw I last recall skiasharp handling thr png decoding

#

And premul

gentle rose
calm nebula
#

I wonder if you could do a thing to load the data off the main thread

lucid iron
#

Crimes 😌

calm nebula
#

And then make the texture2d on the main thread

#

How crime chue

#

My paraole says I no crime

lucid iron
#

Say iro I had a related thought™

gentle rose
#

go on

#

I used to have those

#

(thoughts)

lucid iron
#

What r u gonna do about NPCs with 108 portraits

gentle rose
#

throw avi into the road

lucid iron
#

Someone had this problem the other day and they were gonna do hacks with change appearance
-# ||presumably for high res booba||

gentle rose
#

I have appearance support

lucid iron
#

If u will assert full control over the dialogue box draw portrait

lucid iron
#

Then maybe it'd be good to dehardcode the $h $l whatever

gentle rose
#

I view "don't" as a valid response to "how do I give my character 108 HD portraits"

lucid iron
#

Then ppl can use full 4096 width for their stuff

gentle rose
#

hmm, might do

calm nebula
#

Actually iro how mad would you get if portraits didnt get loaded at all until the portraits box openrd

gentle rose
#

so, not at all

#

(for some perspective, the "lag issue" is a single stumble on first interaction with an npc that even on my potato is half a second, and my potato takes .1s to load certain json assets)

#

(so even if people notice it, I'm not too fussed)

calm nebula
#

Can you spread the work out over a few ticks

lucid iron
#

Yeah i suggested that

#

Since the pngs r frames in an anim

gentle rose
#

yeah probably, though I'm not convinced it will feel different

#

hmm, I guess it might tbh

lucid iron
#

Well for me it'd fit under the update tick

uncut viper
#

how wouldnt it

lucid iron
#

Cus it was 12ms to load

#

So it'd be invisible

gentle rose
# uncut viper how wouldnt it

mostly because on my potato it's enough to span multiple ticks even at the most atomic level, and I forget not everyone's computers are like that SDVpuffersquee

uncut viper
#

right, but... if you're doing less per tick, then each individual tick will change faster

lucid iron
#

Yesterday i discovered the horrors of texture swapping

gentle rose
#

texture swapping?

lucid iron
#

I don't think this affects ur mod cus it's portraits

#

But it seems like having to switch what textures r being drawn in a row has cost and was noticable on grass

uncut viper
#

if you really care about this minor lag issue (which i dont think you should) i think you would get more benefit out of both spreading the work out and also prefetching the portraits by guessing when they might be needed

#

rather than strictly on demand

lucid iron
#

Macro version of the cpu cache problem YuniShake

uncut viper
#

browsers already do this for many things

#

just take after them

gentle rose
#

slight problem, I am completely blanking on how to spread this to the next tick SDVpuffersquee I guess I'm not in the headspace for programming today (I'll figure this out dw)

calm nebula
#

(Fwiw, reasoning i suggest is because dialogue box takes a few ticks to appear anyways)

#

Also because past atra looked into suppressing appearance changes for npcs not on thr same page as you are

lucid iron
gentle rose
#

my real issue is past iro being a dumbass, btw

lucid iron
#

Let's say there's 5 frames which are 5 assets

gentle rose
#

who decided "I'll just do this via linq for now and fix later"

lucid iron
#

If u only load a frame when it's actually time to draw it then it's gonna be different tick by default

gentle rose
#

oh my god what was I thinking with this code. throwing this entire part away immediately

lucid iron
#

Another ez way is to just do a bunch of delayaction

#

Or put stuff in a queue to process in updateticked

gentle rose
#

okay much less noticeable stutter now that I'm not being a dumbass

humble timber
#

lmao

gentle rose
#

50ms on my potato aSDVpufferparty

gaunt orbit
gentle rose
#

wren do you want to do my performance stuff for me

gaunt orbit
#

Don't tempt me

gentle rose
#

yup, down from nearly 500ms to 50ms

so probably safe to say would be undetectable on functional computers

lucid iron
gaunt orbit
#

It's too bad the monogame asset pipeline works the way it does bc otherwise we could just do what minecraft does and bake everything into a giant texture atlas

lucid iron
#

I am in my Color[] enthusias5 phase

whole raptor
#

Is there some kind of trick to make Nexus not completely destroy the quality of an image in media tab..? SDVpufferthinkblob

lucid iron
#

After my netfield phase

calm nebula
#

Dont worry sooner or later you'll find out that you can get even faster with pointers and shared arrays

lucid iron
#

Oh no im becoming atra circa 2023

gaunt orbit
#

Doesn't work on banner images though

whole raptor
#

Oh, neat, thanks

lucid iron
#

Yeah i don't really understand what the point of arraypool rent is i just did it cus smapi does it SMCPufferjail

gaunt orbit
lucid iron
#

I really wish monogame textures have native "copy rect to rect" but it doesn't seem to exist

#

Only found copy array to rect

gaunt orbit
#

I thought it did have blitting

#

Maybe only for buffers?

calm nebula
#

Dont you make a rendertexture and draw from one texture to another

lucid iron
#

Is that really the best way...

calm nebula
#

In theory that would all be 100% gpu side

gaunt orbit
#

Rendertexture is a graphics buffer so operations are done on gpu instead of cpu, which will usually be faster

lucid iron
#

I just copy the color[] one row at a time it seems a little silly

#

This isn't a particularly hot path so I might just leave it

round orbit
#

Does anybody know if there are any mods out there that make all floors infested floors?

brave fable
#

#making-mod-recommendations strikes again

round orbit
#

I think it would be really fun to try doing a run through The mines, SC, Dangerous Mods, etc. in such a situation (no staircases ofc)

gaunt orbit
#

Yeah. If it's not hot or causing lag, no reason to fret over it. You can always profile it later if you need to

lucid iron
#

Do u want to make the mod

lucid iron
round orbit
#

Nah was just wondering if there are any mods out there that do that or could let you configure something like that quickly

lucid iron
#

But i guess it'd be dependent on hardware slightly?

gaunt orbit
#

True

uncut viper
lucid iron
#

But maybe even a potato igpu is better than cpu for this

round orbit
gaunt orbit
#

If you're using VS it has a cpu flame graph you can use

lucid iron
#

I am not SDVpufferpensive

brittle pasture
#

I wonder if that channel being nested between 4 other mostly vanilla gameplay channels instead of the "Game Modding" section hurts visibility

brave fable
#

#mods-howcase once again sadly overlooked

hard fern
#

i wonder?

gaunt orbit
#

Yeah, especially with the showcase being down here

lucid iron
#

Then i can hide that entire section

#

😌

uncut viper
hard fern
#

i support moving all of the modded channels up instead to usurp the regular stardew gameplay channels

brave fable
lucid iron
#

Is it a crop hat

uncut viper
#

in reality i will likely have the channel completely muted and hidden no matter where it is so i dont care

brave fable
#

i think maybe a month ago i would've said 100% keep #modded-stardew in the sdv category, but at the same time now i've been in there a bit there's a lot of orange names there

#

at the same time though probably a lot of people just immediately hide the entire modding category so would totally miss the actual gameplay channel

uncut viper
#

doesnt help that a lot of people in there refuse to come in here even though theyre talking about making their mods

urban patrol
#

it's v funny to me that every time i've been in modded stardew it's been an entirely different crowd to in here

brave fable
#

people avoid jumping channels in general, it's like how certain people here will merrily post in #programmers-off-topic but not #town-square even though they have a 99% overlap in topic (cats and videogames)

brittle pasture
#

town-square scares me every time I merely peek at it

lucid iron
uncut viper
#

tbf if posting about those topics was not allowed in programming-off-topic then i wouldnt post them there

lucid iron
#

That's important part of ecosystem

calm nebula
#

Also programming off topic has bitching ablit version control

uncut viper
#

but i dont really understand if there is a limit to what can be posted there?

brave fable
#

but aside from the odd question about finding new mods there's not been any complaints i've noticed about where modded-stardew lives so it's probably fine

uncut viper
#

i dont really get what it is

brave fable
#

i'm just surprised so many people have the modding category unmuted to ask for suggestions here SDVdemetriums

uncut viper
#

i dont have any real evidence or data to back it up but in my limited experience of seeing other peoples discords i dont think people tend to really mute things

#

not on a category wide basis

calm nebula
#

You start with the entire server ummjted

#

I think we are happier than most to.mute

lucid iron
#

I wish I knew swedish

#

Then i can name me mods like ikea

brave fable
#

these days the onboarding for discord often asks that you disable half the channels in the server completely, but i'm not sure if this server uses that system

uncut viper
#

chu please go to #town-square if you want to lament your lack of swedability

calm nebula
#

Also I will say I think the average age of #town-square is 14

brave fable
#

atra you did say that

#

your memory is failing SDVpufferpensive

calm nebula
#

You may ask me if I meant median instead

uncut viper
#

dont think most in town square would understand when people compare terminal emulators

calm nebula
brave fable
patent lanceBOT
calm nebula
#

Please bluebs

#

I DO touch grass

brave fable
#

i'm revoking your auth tokens

uncut viper
#

be honest did you make that channel and pre-fill it with chat history just now atra

patent lanceBOT
calm nebula
#

No that was bluebs

brave fable
#

button, i....

gentle rose
#

why outside when perfectly good inside exists

calm nebula
#

It's old history but bluebs was once green and I never was

#

To be fair I was also not afraid of a green bluebs

#

....at least after a while

uncut viper
#

fake channel

#

in unrelated news im running out of reasons to procrastinate on CMCT 2.0.0

#

someone give me a new reason please i dont want to work on the mod right now

calm nebula
#

No

#

:whip:

#

Go work on mod

lucid iron
#

I expect delivery by end of sprint button

uncut viper
#

thats a good enough reason thank you

gentle rose
#

I don't think I've ever had a todo list be this close to being complete, spooky

uncut viper
#

how long is this sprint

calm nebula
#

The adults are deciding Christmas cookies

#

4 more days

brittle pasture
#

meanwhile I'm still procrastinating on releasing crop appearance even though chu did all the hardwork

#

look I'm still coughing from a cold two weeks ago

uncut viper
#

maybe i should release the update right around christmas, that way if it breaks existing mods it happens on the holidays when no one will be playing stardew anyway SDVpufferowo

brave fable
#

ah yes our office is closed for the holidays. no love of cooking bugfix until operations resume in the new year

lucid iron
#

That's a good reason to delay Dokkan

gentle rose
#

ew now I have to do a git rebase

calm nebula
#

Toooo late now unless you make DH or Zoe do it

brave fable
#

i have friends in high places 😌

calm nebula
#

😆

#

So do I but I wont contest it

brave fable
cyan marsh
#

i'm missing something silly >:

#

namespace NPC_Creator_NT.DataModels
{
    internal class FriendsAndFamilyModel
    {
        public Dictionary<string, string> FriendsAndFamily { get; set; }
    }
}
``` I use this to list all the relationships an NPC has.. but I can't seem to pass it
`FriendsAndFamily = NPCRelationLibrary,` NPCRelationLibrary is a Dictionary<string, string> and yet I can't seem to get it in there
uncut viper
# whole raptor 2.0? 👀

not really anything that content packs would likely get use out of (theres some trigger action stuff and better error handling/reporting though) but its a complete from-the-ground-up rewrite included and thats before the new stuff for C# mods to use, so it gets a major version bump bc im not 100% confident it wont break an existing thing

brittle pasture
cyan marsh
#

showed you relavent code already

#
Cannot implicitly convert type 'System.Collections.Generic.Dictionary<string, string>' to 'NPC_Creator_NT.DataModels.FriendsAndFamilyModel'```
royal stump
#

FriendsAndFamilyModel contains a dictionary, but it isn't a dictionary in & of itself

whole raptor
royal stump
#

you'd want like familyModel.FriendsAndFamily = otherDictionary or otherDictionary = familyModel.FriendsAndFamily, depending on context

cyan marsh
#

is it perhaps my NPCCharacterDataModel then?

#

this is the code for the json

uncut viper
cyan marsh
#
            DataModels.NPCCharacterDataModel NPCDatum = new DataModels.NPCCharacterDataModel
            {
                DisplayName = CD_DISPLAYNAME.Text,
                BirthSeason = CD_BDAYSEASON.Text,
                BirthDay = (int)CS_BIRTHDAYDAY.Value,
                HomeRegion = CD_HOMEREGION.Text,
                Language = CD_LANGUAGE.Text,
                Gender = CD_GENDER.Text,
                Age = CD_AGE.Text,
                Manner = CD_MANNERS.Text,
                SocialAnxiety = CD_ANXIETY.Text,
                Optimisim = CD_OPTIMISM.Text,
                IsDarkSkinned = CD_DARKSKIN.Checked,
                CanBeRomanced = CD_ROMANCE.Checked,
                LoveInterest = CD_NPCLISTLOVE.Text,
                Calendar = CD_CALENDAR.Text,
                SocialTab = CD_SocialTab.Text,
                CanSocialize = CD_CANSOCIALIZE.Checked,
                CanRecieveGifts = CD_ALLOWGIFTS.Checked,
                CanGreetNearbyCharacters = CD_GREETOTHER.Checked,
                CanCommentOnPurchasedShopItems = CD_COMMENTITEMS.Checked,
                CanVisitIsland = CD_VISITISLAND.Checked,
                IntroductionQuest = CD_INTRO.Checked,
                ItemDeliveryQuests = CD_ITEMDELIVERY.Checked,
                PerfectionScore = CD_Perfection.Checked,
                EndSlideShow = CD_ENDING.Text,
                SpouseAdopts = CD_ADOPT.Checked,
                SpouseWantsChildren = CD_WANTSKIDS.Checked,
                SpouseGiftJealousy = CD_GIFTJEALOUS.Checked,
                SpouseGiftJealousyFriendshipChange = (int)CD_FPLOSS.Value,
                SpouseRoom = null,//Not Implemented
                SpousePatio = null,//Not Implemented
                SpouseFloors = null,//Not Implemented
                DumpsterDiveFriendshipEffect = (int)CD_FPADJUSTDD.Value,
                DumpsterDiveEmote = emoteValue,
                FriendsAndFamily = NPCRelationLibrary,//Not Implemented
                FlowerDanceCanDance = CDCanDance.Checked,
                WinterStarGifts = wintergifts, //not implemented
                WinterStarParticipant = CDWinterStar.Checked,
                UnlockConditions = null,//Not Implemented
                SpawnIfMissing = true,//Not implemented
                Home = DefaultHome, //single home implemented
                TextureName = null,//No implementation
                Appearance = null,//Not Implemented
                MugShotSourceRect = null, //No implementation
                Size = new PointModel
                {
                    X = 16,
                    Y = 32,
                },
                Breather = true,
                BreatherChestPosition = null,//No custom implementation
                BreatherChestRect = null,//No custom Implementation
                Shadow = null, //No custom implementation
                EmoteOffset = new PointModel
                {
                    X = 0,
                    Y = 0,
                },
                ShakePortraits = null, //Not Implemented
                KissSpriteIndex = (int)KSFrame.Value,//Placeholder
                KissSpriteFacingRight = false, //placeholder
                HiddenProfileEmoteSound = null, //No customization
                HiddenProfileEmoteDuration = -1, //Default
                HiddenProfileEmoteStartFrame = 16,//placeholder
                HiddenProfileEmoteFrameCount = 4,//placeholder
                HiddenProfileEmoteFrameDuration = 200,//Placeholder, default
                FormerCharacterNames = null,//not implemented                
            };
#

sorry

#

hmm

#

hang on

royal stump
#

is FriendsAndFamily there a field with the type FriendsAndFamilyModel?
if so, I think you'd need to use something like this
FriendsAndFamilyModel = new() { FriendsAndFamily = NPCRelationLibrary }
I'm not sure about the exact syntax during creation like that though

#

it may be better just to make that field a dictionary, if that's what it should be set to

cyan marsh
#

yeah just thought of that

#

perfect... i was just being dumb xD

#

appreciate the head smack

#

trying to both be able to load character data and implement more of the data

whole raptor
cyan marsh
#

btw, how useful is the Spouseroom and Patio fields?

uncut viper
#

i dont think something like that would even be feasible

whole raptor
#

Yeah, that too 😅

uncut viper
#

technically possible, maybe, with some extreme reflecting and very convoluted syntax, but feasible, very much not

brittle pasture
#

probably depends on how useful you feel the ability to define the spouse room and patio is

uncut viper
#

far easier to just edit whatever patch theyre using the token in and replace it with your own Random

royal stump
#

I imagine most people making new marriable NPCs wouldn't want the default room or patio, but idk personally

cyan marsh
whole raptor
#

Yeah, definitely doable, but if I see a minor dialogue with 30 random options I usually just decide it's not worth it SDVpuffersquee

uncut viper
#

i would say if the intent is to make an NPC creator, then every aspect of the NPC is kinda critical

#

(save for LoveInterests)

brave fable
#

ideally i'd imagine an NPC creator would cover all the available fields, with the less-common ones available but maybe collapsed under an expanded-options section

cyan marsh
#

until i know how to do it, it's not implemented

#

basically, I need someone to make me a test spouse room and Patio

uncut viper
#

why do you even have LoveInterests implemented

cyan marsh
#

some people want it

uncut viper
#

it literally does nothing

brittle pasture
#

it does literally nothing

cyan marsh
#

i know right?

#

but i was demanded to have it in

#

Friends and Family actually has uses

whole raptor
#

If a demand is dumb why fulfill it? SDVpufferthinkblob

hard fern
#

🤔 i think if someone wanted it enough, it wouldn't be so hard for them to just put it in themselves manually

brittle pasture
#

hot take: it's okay to tell your users they're idiots

tight rivet
#

I mean there's always a chance it'll be removed as an unused field in 1.7 too

#

(or later updates)

cyan marsh
whole raptor
#

I'm honestly curious how it survived 1.6 SDVpufferthinkblob

uncut viper
#

its of far much less importance than the spouse room and patio

latent mauve
#

"*The Love Interests field is not used in the base game or any mods, and so will not be coded." and move on with your day, LOL

cyan marsh
#

i agree.. perhaps I should put out a bounty for a sample spouse room

brittle pasture
#

or just look at one of the dozens marriageable NPC mods already out?

tight rivet
latent mauve
#

_>

uncut viper
#

its not a difficult thing to do. the wiki will tell you exactly what the format of the data is

latent mauve
#

Vanilla uses Abigail as the default spouse room

#

So unless you really want a specific one for an example, you could do the same.

uncut viper
#

Flower dance partners are now based on the LoveInterest field in Data\Characters, if set.
i found this quote from Pathos in the 1.6 alpha thread. i guess this did not survive for whatever reason

#

since that is definitely not true now

latent mauve
#

Button, that would have made my life so much easier if it was implemented. LOL

uncut viper
#

thats the only mention of LoveInterest in Pathos's entire chat history so i dont know what happened to it

calm nebula
#

Am I actually white

brittle pasture
#

why is your name white

calm nebula
#

Did blueberry actually

uncut viper
#

^ Pathos's reasoning for not removing it

calm nebula
#

Ahhhahah

#

Oh my god

uncut viper
#

atra got banned

latent mauve
#

Oh, that's a thought, do things like UI Info or other accessibility mods actually display the Love Interest?

calm nebula
#

Blueberry come back here i heed your opinion on standing desks

brittle pasture
uncut viper
#

Lookup Anything would in its debug view, but no mod normally looks at it as far as i know

urban patrol
#

i do like the concept of love interest being a cool little secret if you want to go code diving

brittle pasture
#

debug view doesn't show data fields I think (unless that's also set on the instance?)

uncut viper
#

i thought it just showed every field

brittle pasture
#

like an animal's house type for gods know why

uncut viper
#

every one that could be displayed anyway

#

oh i misunderstood what you meant

#

yes its not just in the data

#

its on the NPC

#

NPC.loveInterest

brittle pasture
#

there's a couple fields that are just mirrored from the data and never changed, whose only purpose of existence is to frustrate framework makers like me specifically

calm nebula
#

I dont ask anything of thr vanilla game anymore

#

I just ask aboit cookie plans and standing desks

cyan marsh
#

ugh.. imma stop for now.. my cat keeps destroying my code DX

urban patrol
#

is changing "dried blueberrieses" and "blueberries wine" a C# problem?

brittle pasture
#

no the game has something for that now

#

hold on

#

uh I can't find the wiki reference yet but look at Strings/Objects

urban patrol
#

aha

brittle pasture
#

specifically the cranberry wine thingamajig

latent mauve
#

Jelly does it too

urban patrol
#

found it! thank you

#

yep i saw jelly and juice in there too

lucid iron
urban patrol
#

although i don't think they can become juice

brittle pasture
#

hmm fascinating
maybe a "just in case" thing

latent mauve
whole raptor
brittle pasture
#

livestock needs their daily dose of too

lucid iron
#

oh i fixed it

#

RenderTargetUsage.PreserveContents MikuBear

calm nebula
#

Or that

lucid iron
#

my :miku used to be 3sSmolMiku but after watching symphogear it is now MikuBear and i have mixed feelings about that

whole raptor
cyan marsh
#

mccry i'm frustrated.. i'm glad you all helped me out...

#

but my cat won't get off my keyboard

calm nebula
#

Give up. Buy a dummy keyboard

cyan marsh
#

i did

latent mauve
#

I had someone comment on Pelican Valley Loft today asking if I would be updating it to be compatible with 1.7

cyan marsh
#

Sergeant Sprinkles wants to give me attention

latent mauve
#

(I love you, NPC mod authors, but you are living in the future and I haven't gotten there yet)

brittle pasture
#

ok but will you /s /lh

dire canopy
#

Hello everyone! I need some help with a convertion from PFM to CP:

            "RelativeFrameIndex": [1, 2, 3, 4, 5, 6, 7], 
            "FrameInterval": 15,
        },
        "WorkingOutdoors": false,
        "ReadyAnimation":{ 
            "RelativeFrameIndex": [7, 8, 9, 10, 11, 12, 13, 6], 
            "FrameInterval": 10,
        },```
I've got this machine that has an animation from when it's working and from when it's ready, can regular CP handle the ready animation?
latent mauve
#

I do intend to keep it updated, though, it's a CP mod, so that's not hard. xD

brittle pasture
#

(hmm didn't know PFM has ready animations before I implemented my own version)
the vanilla game doesn't but Extra Machine Config does

#

it even has sound!

urban patrol
#

okay i got wine to work fine but i still get Dried Blueberrieses even when i tried adding this:

    "Action": "EditData",
    "Target": "Strings/Objects",
    "Entries": {
        "Jelly_Flavored_(O)258_Name": "{{i18n:Jelly_Flavored(O)258_Name}}",
        "Juice_Flavored_(O)258_Name": "{{i18n:Juice_Flavored(O)258_Name}}",
        "Wine_Flavored_(O)258_Name": "{{i18n:Wine_Flavored(O)282_Name}}",
        "DriedFruit_Flavored(O)258_Name": "Dried Blueberries",
    },
    "When": {
        "BlueberryCount": "Multiple"
    }
}```
in the unpacked data there are zero mentions of dried cranberries that i can model it off of 😔 there's only ` "DriedFruit_Name": "Dried",`
#

classic weedses

latent mauve
#

Yeah, it'd probably just be Dried Fruit, which doesn't care what fruit it is

#

for most things

brittle pasture
#

you're missing a _ after Flavored

latent mauve
#

good catch, Selph

urban patrol
#

ohh love it when the fix is that dumb

#

yay now it works thank you

dire canopy
brittle pasture
#

the android dev has a EMC version that works on the Android SMAPI beta apparently

#

which I linked on the description

dire canopy
#

i'll check your mod, maybe switch from PFM to yours

brittle pasture
#

it's highly recommended either way, CP style machines are more compatible in 1.6

dire canopy
#

I have this thing that converts the Input Identifier into the item (e.g. pufferfish roe into pufferfish), can this be implemented easily in your version?

brittle pasture
#

you can use DROP_IN_PRESERVE in the ItemId field

dire canopy
#

I'll try it out, thanks

gentle rose
dire canopy
#

that grants you buffs?

brittle pasture
#

nope
that's a C-sharpin

#

better crafting has "run trigger action on interacting with big craftable" so you can maybe do something with that

#

or spacecore with furniture

gaunt orbit
#

That's an interesting idea though- machines which process items into buffs

dire canopy
#

Or just on touch

brittle pasture
#

I imagine 1.7 would make that easier with the new running actions on receiving item/instant consume items (I may be misremembering what it does)

#

but yeah check out better crafting/spacecore?

drowsy pewter
cyan marsh
#

for the WinterStarGifts field, how would mutiple gifts looks like

brittle pasture
#

WinterStarGifts is a list (ie. [])

cyan marsh
#

like this? "Id": "ItemA", "ItemId": "IdA", "Id": "ItemB", "ItemID": "IdB",

brittle pasture
#

so you can add multiple entries (as objects surrounded by {})

#

no

cyan marsh
#

ahh

calm nebula
#

Isn't it your bog standard listek of item queries with conditions

cyan marsh
#

how would the model appear

dusky sail
#

[] contains a bunch of {}s. and each {} has one set of "Id", "ItemId", and any other relevant item fields such as stack size

vernal crest
#

You can look in Data/Characters, Clint has entries for it

royal stump
#

a single item entry would look like this, if fully expanded with every field (copied from the unpacked data)

"WinterStarGifts": [
  {
    "Condition": null,
    "Id": "IridiumBar",
    "ItemId": "(O)337",
    "RandomItemId": null,
    "MaxItems": null,
    "MinStack": -1,
    "MaxStack": -1,
    "Quality": -1,
    "ObjectInternalName": null,
    "ObjectDisplayName": null,
    "ObjectColor": null,
    "ToolUpgradeLevel": -1,
    "IsRecipe": false,
    "StackModifiers": null,
    "StackModifierMode": "Stack",
    "QualityModifiers": null,
    "QualityModifierMode": "Stack",
    "ModData": null,
    "PerItemCondition": null
  }
],```
but if you trim out all the default stuff, that can just be something like
```json
"WinterStarGifts": [
  {
    "ItemId": "(O)337"
  }
]```
brittle pasture
#

item spawn fields basically (as noted on the wiki)

cyan marsh
#
public WinterStarModel[] WinterStarGifts { get; set; }``` i did this
#

as i just need this

#

i guess my cat won't let me code.. he was out of the way.. but the minute i start working on it.. he's back

#

imma go to bed for now

wind quarry
#

I'm a very neophyte mod maker (personal modding mostly) and I'm trying to make a spawned item from animals have no collision (the animals keep getting stuck on it and causing jitters). Is there any way to make the item have no collision? The mod is a mixture of Content Patcher and C# so I'm comfortable witha solution that requires either of those. Thanks in advance!

brittle pasture
#

harmony patch Object.isPassable probably

wind quarry
#

I just classified it as a fertilizer in the json and that seemed to work. I had a lot of issues with trying to get harmony to work earlier when I tried. Thanks, seems like the fertizlier trick worked haha

brittle pasture
#

wouldn't that also make your item usable as fertilizer on dirt

wind quarry
#

Yeah, it's still not working well. Been trying to figure it out for the last few days. It's for a "manure fertilizer" mod I'm working on. So it kind of works, but the manure needs to get processed first, so yeah, the fertilizer fix doesn't work when I actually tested it

brittle pasture
#

lol what I did for my own manure mod was making them debris

versed wyvern
#

Is there anywhere I can look at how the Secret Note unlock mini-event where you find Krobus in the bushes in winter is controlled? There's a sprite oddity I was wondering about and I'm guessing it's a hard-coded thing

uncut viper
#

it isnt Krobus and it is hardcoded

#

like that entire event

#

its split across 4 or 5 different functions in Town.cs

brittle pasture
#

I too had the same issue that if I made every animal produce manure the entire coop/barn would be cluttered with impassable poop

uncut viper
#

in the decompile

#

mgThief_<whatever>

wind quarry
#

Ah, I see. Yeah, I tried the debris but then it just hoovers to me when I walk near it because of my magnet ring haha

tiny zealot
#

the event part of the magnifying glass thing specifies Krobus as an event actor but that's because that's the name of the spritesheet (and the character)

uncut viper
#

its not even an actor, its just a TAS

brittle pasture
#

as I said harmony patching isPassable is an option, but I'm not 100% sure that would make the manure still be able to get picked up by hand

uncut viper
#

(its not an actual event either)

uncut viper
#

if character is animal and o is your object, false?

versed wyvern
#

I see, so it's not something that could be simply ripped out and turned into a more normal event

uncut viper
#

it is not no

tiny zealot
# uncut viper (its not an actual event either)

???
"520702/a 11 23 11 24/t 600 1600/z spring/z fall/z summer": "winter_day_ambient/-1000 -1000/farmer 10 23 1 Krobus 26 23 3/viewport 24 23 clamp true/addQuest 31/skippable/move Krobus -2 0 3/pause 1000/emote Krobus 16/jump Krobus/pause 500/speed Krobus 8/move Krobus 20 0 1 true/move farmer 2 0 1 true/move false/playSound shadowpeep/warp Krobus -1000 -1000/pause 500/emote farmer 8/pause 1000/end"

uncut viper
#

theres not even any dialogue or messages in there?

#

is that just for the bus stop portion? the town portion isnt an event

tiny zealot
#

correct but it's the part where you see him run off and enables the bush etc in Town (this fires at BusStop)

brittle pasture
#

I'm very much always interested in immersive animal mods

vernal crest
#

Mmm manure cakes

versed wyvern
#

Wait, would we be able to actually give the player the Magnifying Glass with regular commands? Could dummy out the Bus Stop trigger and do a replacement event if so

#

But I wouldnt know if the mini-event sets any other flags or anything that need to exist

tiny zealot
#

yeah it's just controlled by a mail flag

#
  "MagnifyingGlass": {
    "DisplayName": "[LocalizedText Strings\\StringsFromCSFiles:SkillsPage.cs.magnifyingglass]",
    "Description": "",
    "TexturePath": "LooseSprites\\Cursors",
    "TexturePosition": {
      "X": 208,
      "Y": 320
    },
    "UnlockedCondition": "PLAYER_HAS_MAIL Current HasMagnifyingGlass",
    "CustomFields": null
  },```
#

(Data/Powers)

wind quarry
#

Sorry, I'm still working on it, got it to work with harmony so we'll see if it actually functions.

I'm not sure, I haven't actually looked up any of the other mods, I just think of mods and then try to build them myself for fun, haha.

versed wyvern
#

henyaPog Potential workaround unlocked, thanks for the info

autumn tide
#

Okayyy would there a simple way to make dwarf’s sprites taller (the same as normal npcs) or is it hardcoded or some shit?

#

Cause dwarfs sprites are shorter

brittle pasture
#

you can change the NPC size in the data (the dwarf is merely an apple and a half tall, aka 24 pixels)

#

obviously you'd need to load new sprites for them

autumn tide
#

oooh okay! that i can do

autumn tide
#

they're so teensy SDVkrobusgiggle

#

getting the proportions right in a style where the proportions are stylistically off is sooo hard-

dire canopy
#

Do you know what's the format of "Frames": in WorkingEffects?

#

I had this "WorkingEffects": [ { "Id": "Default", "Condition": null, "Sounds": null, "Interval": 100, "Frames": 8, "ShakeDuration": -1, "TemporarySprites": null, } ], game complained

#

[Content Patcher] Can't apply data patch "More Fish > Include (from Data/Machines.json) > Hatchery Data > entry #1" to Data/Machines: failed converting entry to the expected type 'StardewValley.GameData.Machines.MachineData': Error reading integer. Unexpected token: StartObject. Path 'WorkingEffects[0].Frames[0]'..

urban patrol
#

idk machines but try a list maybe? that error looks like it’s trying to index it

royal stump
#

the "frames" field inside effects is a list of integers, yeah
e.g. in this post the other day

dire canopy
#

ty both

dire canopy
#

it works, but not in the new one

#
        {
            "Id": "Default",
            "Condition": null,
            "Sounds": [
            {
                "Id": "dropItemInWater",
                "Delay": 0
                },
            {
                "Id": "waterSlosh",
                "Delay": 1
                },
            ],
            "Interval": 100,
            "Frames": null,
            "ShakeDuration": -1,
            "TemporarySprites": null
            }
        ],
        "WorkingEffects": [
        {
            "Id": "Default",
            "Condition": null,
            "Sounds": null,
            "Interval": 150,
            "Frames": [0,1,2,3,4,5,6,7],
            "ShakeDuration": -1,
            "TemporarySprites": null,
        }
        ],
        "WorkingEffectChance": 1,```
dire canopy
#

I have to close the game and start again so the animation works

brittle pasture
#

it's a weird thing where if LoadEffects don't run frames then WorkingEffects don't run

dire canopy
#

thank you

brittle pasture
#

just make it identical to WorkingEffects

dire canopy
#

Worked like a charm

heavy pewter
dire canopy
#

thanks

pallid patio
#

hello! I am having issues when trying to code a crop because my smapi log keeps saying that the key already exists somewhere. Not really sure why this is happening. I've changed the seed name to caltrop seeds_TEST and that had no issues, but when i change it back, the error also comes back

#

I'm trying to get this to work with the machine terrain framework so it grows in water but I've been dealing with the same problem for like 9 hours now 🙁

vernal crest
pallid patio
#

i was following the vanilla for my other files and wasn't really sure how to format it since this is the only file affected by it

#

this is my content.json

vernal crest
#

Oh you're using Json Assets. Why?

pallid patio
#

thats how I was using my other files. Is it better to not use json assets?

vernal crest
#

JA is deprecated, so yeah it's better to not make new mods for it.

pallid patio
#

ohhh i didn't know that

vernal crest
#

Also, your IDs should ideally not have spaces in them and also should be unique. The convention is to prefix them with your mod's unique ID.

pallid patio
#

I see thank you!

vernal crest
#

I think once you follow that you will stop having issues with the error about your key already existing.

urban patrol
#

does anyone know location forage well? i'm looking at the unpacked data for beach forage and confused why sometimes it uses Condition for the season, with Season being null, and sometimes the opposite

#

is it because Season can only take one season at a time?

#

also, is there anything that handles not spawning forage on dock tiles? i see that it skips Buildings and water tiles

devout otter
urban patrol
#

i see! thank you

abstract inlet
#

I made a custom barn map, but sometimes animals spawn in the void outside the map. i've seen this on some other custom maps, but is there a way to stop them from doing that?

urban patrol
#

maybe try filling the void with invisible or black tiles on the Buildings layer?

abstract inlet
#

I have a boarder of black tiles, but they spawn past it.

vernal crest
#

They all need to be buildings

#

Not just a border

#

I had the same issue with monsters in the monster hutches

abstract inlet
#

Sorry, i don't quite understand what you mean by they all need to be buildings?

vernal crest
#

The areas you don't want your animals to spawn on need to have tiles on the Buildings layer

#

Like Nic said

abstract inlet
#

so this is what i'm seeing. the dog is technially outside the map completely, so i should extend the map and add back tiles past that in the building layer?

vernal crest
#

No, probably not.

#

Did this barn already exist with animals in it before you made your custom interior map for it?

abstract inlet
#

it did, i'm not sure if the same happens on a new barn, i will have to test that

vernal crest
#

Is your custom map smaller than the old one was?

abstract inlet
#

just checked, it was. that makes since

vernal crest
#

Then in this instance it's probably just spawned based on the size of the old one. If sleeping another day doesn't fix it, you might need to use Let's Move It to grab your dog and move it inside the bounds of your barn. But you shouldn't see any new issues pop up.

abstract inlet
#

i have played a season in game just dealing with it. so sleeping won't help.

#

I'm not familar with let's move it

#

where can i find it

vernal crest
abstract inlet
#

thank you

woeful lintel
#

another day, another user who cannot read

autumn fog
#

grandpas evaluating my mod testing world 😭

vernal crest
#

Ah ha yes I've experienced Grandpa being disgusted at me achieving literally nothing because I accidentally set the year too late

#

That is how I learned you can debug endevent Grandpa lol

autumn fog
#

lmaoo

#

i actually got 2 candles

brave fable
#

i hear you get the third candle by activating windows SDVdemetriums

autumn fog
#

probably bc i have a million gold and 8 hearts with 2 people

vernal crest
#

Not in the chat box, in the SMAPI console

autumn fog
#

oh

vernal crest
#

Are you trying to test your mods without using console commands?

autumn fog
#

too used to minecraft commands 😔

#

uh i havent really needed them lol

vernal crest
#

Not even patch reload?

#

To reload your mod?

#

I can't imagine testing without console commands. I use them to warp to NPCs, to change friendship levels, give me money, warp to locations, test trigger actions, reset trigger actions, export the assets I'm editing to check that my edits have worked, build on the farm, clear the farm to make space for said buildings...basically everything. I do almost nothing manually.

autumn fog
#

oh yea i use patch reload

#

ive just been using cjb to warp and stuff but console commands are probably beter practice lol i just didnt really think of it before)

vernal crest
#

I use CJB for some stuff but debug warp is way faster for me than searching CJB for places to warp to

autumn fog
#

isnt there meant to be a bunch more commands like i see on the wiki?

vernal crest
#

Do you have the ConsoleCommands mod installed?

autumn fog
#

oh i need another mod

vernal crest
#

It is automatically installed when you install SMAPI, along with Save Backup, but a lot of people delete it.

autumn fog
#

i didnt delete anything when i installed it

vernal crest
#

If you just rerun the SMAPI installer it should install it again

autumn fog
#

ok SDVpufferthumbsup

vernal crest
#

I also don't think I normally see the commands show up when I type help

#

Oh no, it is there under Console Commands

autumn fog
#

its there now !

vernal crest
#

Sweet

gray bear
#

@outer glacier

blissful panther
#

Thanks!

gray bear
vernal crest
#

Lol I missed the actual spam

obtuse wigeon
#

damn I've been trying to grab a new set of the spam images but I seem to not be quick enough

gentle rose
obtuse wigeon
#

oh yes please!

gentle rose
#

dmed it to you

blissful panther
#

(Are you trying to report the domains linked in them or something? SDVkrobusgiggle)

gentle rose
#

(I just forwarded one of them to another server at some point SDVpuffersquee)

obtuse wigeon
#

(My goal was to match checksums and meta data, but they are not the same, I never thought of checking and reporting domains👀 ty for the idea )

gentle rose
#

(if you can get an OCR library to scan the images that might be effective? but a lot of computation SDVpuffersquee)

red egret
#

Hello, how do i make compat with Big Apricot?

gray bear
#

in what way

obtuse wigeon
#

(OCR was the route I was going to go with, espeically given I've used it before, computation isn't a major issue thankfully XD)

red egret
#

To show the big apricot instead of the small one on a portrait if that mod is installed

vernal crest
#

Why are you putting an apricot on a portrait?

red egret
#

Oclarina made me

obtuse wigeon
lucid iron
#

I think you don't really have a choice besides include the textures in ur mod folder

vernal crest
#

Well, it's oclarina's big apricot so just tell him to give you the texture lol

gray bear
#

yeah make an edit and then condition it™

red egret
#

Condition how?

gray bear
#

you can check for mods the player has

lucid iron
red egret
#

Oo

lucid iron
#

You could maybe use this thing

#

But yeah regardless of where tx u gotta have When HasMod etc

gray bear
#

they're not using the apricot texture as is iirc

#

doing the fruit before face portraits

red egret
#

I will check it out, ty

gray bear
lucid iron
#

Then u probably have no choice once again sleep

gray bear
#

this won't help with what you're doing

lucid iron
#

Well this is also the kinda meme spritecompositor would help with

gray bear
#

oh? 👀

lucid iron
#

Oh it's furniture?

#

Ok just use mmap draw layers then YuniShake

gray bear
#

that would help if people use a fruit retexture of any kind

lucid iron
red egret
#

I thought of just making an alt image with a big apricot but decided to complicate things for myself

vernal crest
#

Yeah

lucid iron
#

What fudge wants is basically just like that but with fruit

vernal crest
#

If it's a painting, you can use the vanilla texture and it will automatically pick up any retexture mods

lucid iron
#

It would be a painting furniture with a custom base and a fruit (springobjects) draw layer on top

red egret
#

Can i just say
If Big apricot is installed, show the other portrait?

lucid iron
#

Sure that's also hasmod stuff

gray bear
#

yeah that's simple

red egret
#

Ok cool

lucid iron
#

I can't give u the json rn but maybe in like 10hrs sleep

gray bear
#

goodnight chu!

red egret
#

Np xD i will try something

vernal crest
#

The MMAP way is best because it gives you compat with any retexture mod

#

(Animal textures by Elle)

red egret
#

Oh yea these pics

#

Where you choose bg and frame?

vernal crest
#

Yeah that is a separate feature but using the same approach

red egret
#

I used something like that on my Minimalistic cats but not mmap, just CP

#

It worked too

vernal crest
#

The frame and background thing? They could, but the texture mod compat part needs MMAP

red egret
#

So it means if you have Elle installed, the animals will automatically become hers? Otherwise it's vanilla?

vernal crest
#

Correct

red egret
#

Ooooo

#

I'm also working on some animal pics but just vanilla

red egret
vernal crest
#

Here is another example, this one using Qute Animals. The only change between the two pictures is that I enabled Qute Animals. I have no specific compat for it in my json.

vernal crest
red egret
#

Oh i meant yours

#

Lemme check

vernal crest
#

Oh, this is an unreleased mod

red egret
#

I see

vernal crest
#

Still very WIP

red egret
#

Okok

#

Two cakes haha

#

Mine will look a bit different

vernal crest
#

Mine is a museum mod primarily

#

This is just an aspect of it

red egret
#

Anything dynamic and i freak out. I like my things stable and simple

vernal crest
#

I've been working on it since Button released CMF in June

red egret
#

Whoa it will be big

vernal crest
#

And will probably still be working on it next June lol

red egret
#

Well yea i've been chipping away at mine for a long time, meanwhile releasing others

vernal crest
#

Hmm, I have made the whole frame and background thing so complex that it's not actually easy to show the json for just the animal

red egret
#

XD

#

Dw, i will then do it the easy way

#

I learn only slowly

#

For me it's a big win when i managed to make it configurable for frames, bg and the content

vernal crest
#

But this is mine for just the animal (I removed the other rotations):

{
            "LogName": "Add 32px animal sprites",
            "Action": "EditData",
            "Target": "mushymato.MMAP/FurnitureProperties",
            "TargetField": [ "{{ModId}}_{{LT_AnimalName}}Photo", "DrawLayers" ],
            "Entries": {
                "{{ModId}}_{{LT_AnimalName}}_Rotation.0": {
                    "Id": "{{ModId}}_{{LT_AnimalName}}_Rotation.0", // Standing, forward
                    "Texture": "Animals/{{LT_AnimalVanillaId}}",
                    "SourceRect": {
                        "X": 0,
                        "Y": 0,
                        "Width": 32,
                        "Height": 32
                    },
                    "DrawPosition": "1, 3",
                },
            },
            "When": {
                "LT_AnimalSize": "32"
            }
        },
red egret
#

What does chu's do?

vernal crest
#

Plops a chicken on the Oak End Table lol

red egret
#

Haha lemme see

vernal crest
#

An animated one, it looks like

#

I have no clue what it looks like, I've never tried actually running the example in game. I just read the json and looked up the furniture Id.

red egret
#

And all the rugs and joja furniture?

vernal crest
#

Unrelated, just there as examples of other features of MMAP

red egret
#

Aha

lucid iron
#

It's a rotating chimkin

#

But yes for ur usecase you'd keep the portraits as they are

#

And add a draw layer that uses Maps/springobjects as the texture

vernal crest
#

Basically how it works is if you have your picture frame as a separate image, you can have the vanilla fruit texture on one draw layer and the frame on another one, and then the fruit can change without the frame needing to.

tight rivet
#

Today in "huh, this mail seems never to work"

#
  "{{ModId}}_Mail_Demetrius_Fiber_Moss": "(no translation:{{DemetriusMail01.Text}})[#](no translation:{{DemetriusMail01.Title}})",
  "{{ModId}}_Mail_Robin_ArtisanMachines": "(no translation:{{RobinMail01.Text}})[#](no translation:{{RobinMail01.Title}})",
  "{{ModId}}_Mail_Marlon_Foodstuffs": "(no translation:{{MarlonMail01.Text}})[#](no translation:{{MarlonMail01.Title}})"```
#

this is from the patch export

#

_>

vernal crest
#

What does your json look like?

tight rivet
#

isn't my mod, so I'm in the process of troubleshooting to report it atm

#

otherwise I'd be able to fix it by now

#

(a lot of my current modding efforts is compat patches, since I'm in a playthrough)

vernal crest
#

How did they manage to get the mod id token inside a patch export

#

Did they Load their mail or somethign

tight rivet
#

god only knows becuase I can't figure out what mod even loaded it

#

no trigger for it in triggeractions

vernal crest
#

Do a find in files search for Robin_ArtisanMachines or something

heavy pewter
#

Guys, Is it just me? Or constructing a custom item in c# is dang hard

lucid iron
#

Are you putting the item data into the data models first

calm nebula
#

Hard is a concept that really depends on your worldview

#

But there can be many steps

#

What did you try

heavy pewter
heavy pewter
lucid iron
#

Yeah so to make an item purely in C# you need to do these things

  1. Do AssetRequested stuff and populate Data/Objects with entry for your item at "youritemid"
  2. Then, you can do ItemRegistry.Create("(O)youritemid")
#

You get an Item afterwards

#

You can also just do this stuff in content patcher if you want

#

C# only for custom effects

calm nebula
#

Wiki has a guide for CP yeah

#

You can also register the item in CP and just add effects in c#

heavy pewter
#

So as of now, I'm still using a wood as a place holder. Lets say I made a custom item entry in CP, will this mod recognize the custom id? Or do I still need to tweak the snippet so that it will recognize the custom item made by CP

tiny zealot
#

presumably you want to check against the id of the item you are creating instead of (O)388

heavy pewter
#

I'm still confused about qualified id, is the "{{ModId}}_blah" also considered a qualified id?

vernal crest
#

The qualifier is the part in parentheses

#

(O) for an object, (F) for furniture, (BC) for Big Craftable, and so on

#

So for your {{ModId}}_blah item to be qualified it would need to be (O){{ModId}}_blah

heavy pewter
#

if (item.QualifiedItemId.Equals("(O){{ModId}}_blah")

So the snippet should look like this

vernal crest
#

No, you can't use the ModId token in your C# mod. You need to write your unique ID out in full

heavy pewter
merry river
#

I am trying to get pathos' translate event files script to work and it does output i18n keys but for vanilla characters only. my npc's lines remain untouched. is that script still up to date?

vernal crest
vernal crest
merry river
#

i'll check nomori's tool then!

heavy pewter
calm nebula
#

Just fyi but .Equals is java-like, in c# it's more idiomatic to see ==

#

(It's in pat because c# defaults the two to two different things.)

#

.Equals is locale aware. == is your locale unaware string compare

heavy pewter
vernal crest
calm nebula
#

(As I said - just fyi.)

#

I'm telling you because the behavior is subtly not the same

heavy pewter
lucid iron
#

Depending on what you want to do it might be entirely possible in content

heavy pewter
#

I just need a different item to replace the wood

lucid iron
#

Wood...

#

Hm if u make a big craftable

#

You can put all the logic for the shop opening inside the interact method

#

It doesn't really change the part where you gotta create the item ofc

#

Here r some examples for how 2 edit data in C#

calm nebula
#

Some places ban placing items though

lucid iron
#

I don't have a Data/Objects one

calm nebula
#

Like the mines

lucid iron
#

They would be Dictionary<string, ObjectData> i think?

gaunt orbit
#

Yes

west thunder
#

Are the lower three rows (minus the perching sprite) completely useless?

#

And does this apply to all bat sprites in the game?

lucid iron
#

Yes basically blobcatgooglyblep

west thunder
#

Now, WHAT THE HELL ARE THESE SPRITE SIZES?

#

Oh, poor naive Radicalvice thought the game's entity spritework only consisted of 16x16, 16x32 and 32x32.

#

Oh, how one was wrong.

lucid iron
#

It is pretty doomed yes blobcatgooglyblep

lucid iron
red egret
#

Can i put in two conditions, like if player has this mod AND also this config is chosen?

merry river
#

"spring_Mon": "{{Random: {{i18n:Spring1}} && {{i18n:Spring2}} && {{i18n:Spring3}} && {{i18n:Spring4}} |inputSeparator=&&}}"

is it possible to randomize dialogue with i18n like this?

vernal crest
merry river
vernal crest
red egret
#

When

merry river
#

the queries are different when it's a condition field though

vernal crest
#

Then void's example shows you how

west thunder
#

You're asking a person who made Optifine resource packs for Minecraft mobs.

merry river
west thunder
#

Yes, I'd love to, but I'm terrified to think of how much time it'd take to do that.

red egret
#

is this right?
"When": { "Elliott": "Apricot",
"HasMod |contains= Oclarina.BigApricot": true, }

hard fern
#

Are you turning elliott into a big apricot

red egret
#

yes

merry river
red egret
#

all thanks to Oclarina i complicated this for myself beyond belief

west thunder
#

They're turning everyone into fruit, I'm pretty sure.

merry river
#

i would LOVE to know what is happening here though hahaha

red egret
#

you will see soon, void 😄 (i hope)

lucid iron
#

It's a mod that let you randomize monster looks

west thunder
#

Pray tell, is there, like, a tutorial?

lucid iron
#

There's an author guide but u can just follow the existing packs

west thunder
#

Would one consider this an easy process?

lucid iron
#

Visual Enemy Variety is simpler

vernal crest
#

I recommend looking at Visual Enemy Variety first

#

Monster Mash uses more features

#

I found it pretty easy

lucid iron
#

It's you making a content mod and writing some jsons

#

Feel free to ping if questions

vernal crest
#

It helps being able to poke chu when needed

west thunder
#

Just happened to have VEV installed, actually.

#

I'm looking over it right now and...

#

Yeah, this is piss easy, I'll probably give these dudes variety.

#

Do I gotta name all my variation files texture_(number)?

vernal crest
#

I am definitely going to have to adjust Monster Mash more

#

Nope, I haven't named any of mine like that

west thunder
#

oh my god you made monster mash

#

So, I can just name them whatever, so long as I reference them properly in the .json files?

vernal crest
#

Yep yep

red egret
#

Can someone please look at my code?

vernal crest
#

Can you use the json validator please?

red egret
#

i did and it said its ok

vernal crest
#

No, I mean instead of putting your entire file in here

red egret
#

oh sorry

vernal crest
#

And please explain what help you need

west thunder
red egret
#

the pictures arent loading at all

lucid iron
vernal crest
lucid iron
#

VEV was originally going to be an AT mod, which is why the files are named that way

red egret
#

oh sh.t! that part, ok thanks!

#

i forgot to change it from the last mod

#

IT WORKSSSS MUHEHE

#

one last thing

#

can i change the item description when it displays the apricot?

vernal crest
#

You need a mod to change the description of furniture. MMAP can do it and maybe SpaceCore can?

red egret
#

ouch

#

big stuff

lucid iron
#

It's not that scary to use dependencies

#

Especially cus these r just "add another EditData" level of dep

#

Spacecore do indeed have furniture descriptions

vernal crest
#

It's not scary at all. Just download mod, use feature. Hopefully remember to add dependency to manifest.

red egret
#

yeah to use its ok but but to code

vernal crest
#

This is my descriptions using MMAP:

{
            "LogName": "16px Animal Furniture Data",
            "Action": "EditData",
            "Target": "mushymato.MMAP/FurnitureProperties",
            "Entries": {
                "{{ModId}}_GoatPhoto": {
                    "Description": "{{i18n: photo.description}}",
                },
                "{{ModId}}_GoatSculpture": {
                    "Description": "{{i18n: sculpture.description}}",
                },
            },
            "When": {
                "LT_AnimalSize": "16"
            }
        },