#making-mods-general

1 messages · Page 91 of 1

lucid iron
#

u need mod to make your own chest

#

expandable storage

subtle pewter
#

I’m curious does anyone know of a framework to add new monsters to the game? I’ve been looking for one to no avail. There appeared to be one prior to 1.6 but the update broke it and the author appears to have abandoned it. I considered that possibly content patcher could do this but it doesn’t appear to be the case.

velvet narwhal
#

it's not really a cp-friendly one, but there is FTM

lucid iron
#

you are thinking of monster the framework probably

brittle pasture
#

Farm Type Manager allows spawning monsters that are reskins of vanilla ones, with their own sprites and loot

lucid iron
#

for actual custom monsters

atomic vale
#

Quick question: how do you mark where a quarry is on a farm map?

rain basalt
subtle pewter
#

Thankyou all for the quick and helpful responses!

rain basalt
tender bloom
#

!mapmaking do a ctrl-F on the maps wiki page to find lists of properties

ocean sailBOT
#

If you want to make mods that add or edit maps:

  1. Use Tiled to edit .tmx or .tbin files.

  2. Refer to the Maps wiki page for details on how maps work in Stardew Valley.

  3. Content Patcher allows you to create custom locations through editing Data/Locations

  4. Vanilla Maps can be edited via Content Patcher as well: EditMap

atomic vale
frozen elm
latent mauve
#

It's on the Farm Data page

old edge
#

You can also alter the stats of the monsters as well like attack,defense using FTM.

rain basalt
#

then you add string to map properties labled SpawnMountainFarmOreRect then in blank box add area in data format 2 3 10 15

#

just remember first tile is 0 0

atomic vale
#

A custom map I am using is just not working for the quarry

rain basalt
#

are the tiles in the tile sheet labled as dirt for the zone your doing

atomic vale
rain basalt
#

think spawnable t needs to be there as well

rain basalt
atomic vale
#

the FTM QuarryTileIndex is on the right tiles

rain basalt
#

tile data for the tiles themselves

atomic vale
rain basalt
#

so you need to open tile sheet properties

atomic vale
#

have

rain basalt
#

select tile

#

click add button on botom

#

string name it Type

#

then in new string type Dirt

#

and save

#

it will then update all map tiles that use that tile to Dirt on map

#

save map and try again

#

also if your doing water make sure its labled as well or fishing wont work properly ^..~

atomic vale
#

thx

rain basalt
#

get it working?

atomic vale
#

yea

rain basalt
#

👍

lucid iron
#

is read book -> set Book_<BookName> stat vanilla behavior

calm nebula
#

Yes

brittle pasture
#

technically it's just <BookName>

#

assuming BookName is the item ID

lucid iron
#

oh i didnt realise all books started with Book_ oops

uncut viper
#

it also doesnt just set it it increments it

#

may or may not be important to you

lucid iron
#

not in my case, i just wanted to let people set a custom book for their animal catalogue equiv

#

wonder if it's better to let ppl use mail flag think

uncut viper
#

there is a benefit to mail flags over normal book stat behaviour in this case

#

as there is no PlayerStat CP token

lucid iron
#

yea hm

#

both PecoSmile

#

reading books dont set a mailflag?

uncut viper
#

not unless its your first book

#

they only increment stats

#

and their powers are controlled in their appropriate places by checking those stats

#

the achievement for reading all the books is literally just one big "if Stat1 and Stat2 and Stat3 and..."

rain basalt
#

🤔 have a strange question when doing multiplayer are you loading onto the hosts data and pulling your maps or are you pulling there maps

ivory plume
rain basalt
#

thanks Pathos

lucid iron
#

can u register custom actions to answerDialogueAction

calm nebula
#

You almost certainly don't need to

#

Use the delegate form of that method

lucid iron
#

I wanted to override Marnie_Purchase

#

Harmony time sleep

calm nebula
#

Enjoy!

lofty ruin
brittle ledge
#

farmer 23 13 0 22 11 0 Aven here's your problem

#

your NPC's name needs to be at the front of the three numbers, not the end

#

(Also, it is suggested that you append your NPC's internal name with a prefix or suffix, such as {{ModId}}.Aven, so that if anyone else names their NPC the same, it won't cause SMAPI to barf.)

knotty phoenix
#

Anyone know what the title ID is for the song that plays in Sandy's shop? That one spreadsheet doesn't have it listed

uncut viper
#

you can also check its Data/Locations entry

tender bloom
#

I thought the . causes problems

uncut viper
#

dont all {{ModId}}s have a .?

#

or the vast majority of them anyway?

tender bloom
#

I thought NPCs use _

#

I think lemurkat said in some events there’s weirdness with .? But it’s possible that’s been fixed

calm nebula
#

Pinged you to the thread with context

tender bloom
#

lol

#

Apparently don’t worry about it

calm nebula
#

Hi classical Mathperson!

tender bloom
#

Hello my slightly better memory

#

Makes sense that quantum computers can do more 😛

calm nebula
#

What have I said before?

#

I have a photographic memory and I use it badly?

latent mauve
#

I've seen both . and _ used in NPC Names, but I think it's more likely to impact a filename than actual text in most cases.

#

?

tender bloom
#

I have a slightly less photographic memory but it’s debatable if I use it well 😆

latent mauve
#

I could totally be wrong though, events are not something I've messed with

tender bloom
#

It seems like it was a problem once and isn’t anymore

#

We’ve come a ways

calm nebula
#

I mean like

#

Afaik all computers are quantum now

tender bloom
#

Not in the “quantum computer” sense

calm nebula
#

We have to consider quantum effects when designing transistors

brittle pasture
calm nebula
#

All computers are quantum

brittle pasture
#

is my computer which is made from arranging rocks in an infinite desert quantum

clever sinew
#

…is it looked down upon to comission/buy sprites instead of drawing them yourself?

latent mauve
#

Not at all!

#

There's even a list on the wiki of artists and coders who take commissions

lofty ruin
clever sinew
clever sinew
tender bloom
brittle ledge
clever sinew
tender bloom
#

Obviously people could go inactive but it’s all mostly new as of the last year or two

tepid escarp
#

Are you able to control a spouse’s schedule for just being in the house instead of them walking around. Say, telling them to spawn at a certain time and do a certain animation?thanks 🙂

clever sinew
#

I just truly have an aversion to be the kool aid femme busting in out of nowhere

brittle ledge
brittle ledge
calm nebula
#

That said, uh

#

Commissions can get expensive

#

Depends on how much you expect to spend

clever sinew
#

Yes they can!

calm nebula
#

You can also consider checking itch.io for free to use game assets

latent mauve
clever sinew
#

Currently i have my eye on two itch.io packs

calm nebula
#

(Check the license first.)

clever sinew
#

Mods are technically non-commercial right? I would probably double-check with the asset creator but

clever sinew
uncut viper
#

the definition of commercial use will also likely vary by license

teal bridge
#

Mods are whatever the author says they are.

uncut viper
#

DP can be considered commercial

latent mauve
#

Nexus does provide benefits for a set amount of unique downloads, and there is a Donation Points system (that you can opt out of), so you likely will need to ask.

#

You technically do get compensated if you pass benchmarks, even if it's not directly monetary

calm nebula
#

It's funny because "mods" is also a term we use at work. It's a synonym of "blue wire"

clever sinew
#

Huh. Okay, glad I was going to ask them anyway then

#

This is why we ask questionssss

brittle ledge
#

Never hurts to ask!

teal bridge
latent mauve
#

Yep, just mentioning it because most people don't realize that may count as compensation

#

It depends on how strict the license for commercial use is. 🙂

tepid escarp
brittle ledge
#

funny enough, I made a mod with an itch pack and I didn't even consider the premium stuff... but on the other hand, it wasn't a thing when I made the mod SDVpuffersquee

clever sinew
#

Oh both of these are commercial licenses anyway

#

Well

ivory plume
#

(Generally non-commercial licenses aren't considered open-source because they can have unintended effects, like not allowing a non-profit to distribute CDs containing the code at cost because people technically buy the CD.)

calm nebula
#

(Pathos is still typing)

ivory plume
#

(Pathos is no longer typing.)

calm nebula
#

I feel like if I were to do a noncommercial license I would explicitly explain that noncommercial means a certain dollar amount each year

clever sinew
#

Yep no physical or digital redistribution…

calm nebula
#

Like, "commercial means revenue above $1m/yr"

clever sinew
#

But otherwise we are good

#

Hooray!

hallow prism
clever sinew
#

Schroedinger would be elated

teal bridge
#

There are two ways to look at this depending on your risk tolerance - either

  1. anything that doesn't explicitly say it's available for commercial use, shouldn't be used to make money or receive non-monetary compensation, no matter how indirect the mechanism might feel to you; or
  2. the proliferation of licenses and legal rules have gotten so damn complicated that no matter how hard you try to follow the rules, someone who's committed to screwing with you is going to find a legal way, so you may as well just roll the dice if anything's ambiguous and be prepared to lose an income stream.

The only exception is stuff like Creative Commons and MIT/Apache licenses which really are free-as-in-speech.

calm nebula
#

Maybe pathos typed that into a text editor so we wouldn't get the "Pathos is typing" thing

ivory plume
calm nebula
#

Speaking of typing, I should do duolingo

hallow prism
#

if we don't see the pathos typing, is the pathos typing in the forest still happening?

calm nebula
hallow prism
#

bonne chance avec le hibou

clever sinew
#

Depends on whether you subscribe to objective or relative philosophy i guess?

#

Not philosophy. Idk the word

brittle ledge
teal bridge
#

I guarantee the lawyers would have a field day with that.

clever sinew
brittle ledge
#

Nonprofit and noncommercial aren't the same thing to me, though, if a nonprofit was pulling in a cool 1mil, I wouldn't consider them noncommercial.

ivory plume
#

(You can set any license restrictions you want (including noncommercial), they just won't be considered an open-source license.)

teal bridge
#

Yeah, and what we call non-profits are almost invariably, famously non-transparent with their income and distributions.

#

If a license claims to be or appears to be free for "non-profit" but not "non-commercial" then a commercial company can spin off a non-profit entity and pull all kinds of shenanigans.

calm nebula
#

Also I'm pretty sure the $1mill/yr revenue number is what VS considers "commercial"

brittle ledge
#

(There's a nonprofit in one of my other circles that has something like a 2.5 million budget and uses the art they pay for in things like merch - definitely would not consider that a noncommercial use)

calm nebula
#

(Again, I'm not really thinking of a modding context here anyways.)

brittle pasture
#

on the other end of the spectrum, this reminds me of some minor drama back in Factorio land of a modder using a non-commercial license. and they do mean non-commercial, as in "you're not allowed to make YouTube videos if your channel is monetized. even if the video itself is non-monetized"

#

anyway qq, is using Saving event safe for "stuff I want to do at day's end but after newDayAfterFade"

teal bridge
#

I probably wouldn't? The timing may work out that way, but I see nothing in the way of guarantees that saving will always happen when you want it to (offhand: what about co-op play?) or, more importantly, that saving can't happen at any other time (there are mods that try to implement quick-save with varying degrees of success).

soft wolf
#

Can Read/WriteSaveData not handle classes that have enums in them?

lucid iron
#

are your enums public

brittle pasture
#

ah yeah quick saving mods will be a problem (not that they aren't problems now SDVkrobusgiggle)
I'll just do it in DayEnding like Yoba intended and workaround the newDayAfterFade logic

soft wolf
lucid iron
#

did you check the actual save file to see what serialized string got written out

soft wolf
rain basalt
#

Important question farm maps what is the most popular save tbin or tmx

lucid iron
#

tmx

brittle pasture
#

tmx by a galactic mile

lucid iron
#

power of being able to rotate your tiles

lucid iron
#

but i think its just normal newtonsoft.json serde

soft wolf
#

Save:

private void OnSaving(object sender, SavingEventArgs e)
{
    if (!Context.IsMainPlayer)
    {
        return;
    }

    this.Helper.Data.WriteSaveData("kristianskistad.BetterJunimosForestryRedux.HutStates", hutStates);
    this.Helper.Data.WriteSaveData("kristianskistad.BetterJunimosForestryRedux.HutMazes", hutMazes);
    this.Helper.WriteConfig(Config);
}

Load:

private void OnSaveLoaded(object sender, EventArgs e)
{
    Config = this.Helper.ReadConfig<ModConfig>();
    if (!Context.IsMainPlayer)
    {
        return;
    }

    // load hut mode settings from the save file
    hutStates = this.Helper.Data.ReadSaveData<Dictionary<Guid, HutState>>("kristianskistad.BetterJunimosForestryRedux.HutStates") ?? new Dictionary<Guid, HutState>();

    // load hut maze settings from the save file
    hutMazes = this.Helper.Data.ReadSaveData<Dictionary<Guid, Maze>>("kristianskistad.BetterJunimosForestryRedux.HutMazes") ?? new Dictionary<Guid, Maze>();
}
lucid iron
#

u wrote hutStates but tried to read Dictionary<Guid, HutState>

rain basalt
#

K thanks wanted to make sure I used correct setup for my map loads allowing custom maps for this project

lucid iron
#

use same type on read and write

soft wolf
lucid iron
#

oh i see implict types

#

is HutState an enum then think

soft wolf
#

Yeah, there is an enum in HutState

lucid iron
#

would give writing just a Dictionary<string, string> a shot

#

i think i tried to use BitArray in Read/WriteSaveData and that also didnt work so there prob are limits

soft wolf
#

Oh, found it!
{"dfeb39a4-9050-4c8e-a300-2ab30ba484bb":{"ShowHUD":false,"Mode":"Crops"},"3627e9d3-b8b2-4135-ba48-76659a08edaa":{"ShowHUD":false,"Mode":"Forest"},"8f3996ea-872b-415e-a4c9-e06dce63cca1":{"ShowHUD":false,"Mode":"Orchard"}}

#

So it looks like it is saving properly. That's the enum, 'Mode'

#

And orchard is what it should be, but when I load it's not set to that.

lucid iron
#

what's generating this Guid

#

is it the location

soft wolf
#

It's the building's guid

#

Generated by the game when it's placed

lucid iron
#

is that a constant across save loads think

#

i thought it was regenerated

brittle pasture
#

SDVpufferlurk if it's per building data why not just put it in modData

soft wolf
lucid iron
#

i think they wanted per building instance in the world

#

oh yea modData would be the easiest place

#

i read customfields oops

soft wolf
#

I base a lot on those guids sadly

#

Well, not base things on them, but pass them around a lot.

lucid iron
#

well if its like, in ur code

#

u can just pass around the building instance

soft wolf
#

I could, but man would that be a lot of re-writing lol literally almost every method uses the guid.

lucid iron
#

yea well, not like code works as it is

soft wolf
#

Everthing does except saving loading T_T

#

Which is a big deal. Bah.

#

Though all I really need to do is change how the HudState is stored. Will look into modData.

brittle pasture
#

Also seconding rewriting, it's a pain now but modData is so much more convenient and your future self will thank you for it

ivory plume
#

(This is good enough for the SMAPI 4.1.0 release highlights, right? SDVpufferpensive)

fickle totem
#

Hm yes, I particularly like that part with the stuff right there, very good improvement

rain basalt
#

lol

#

“ Lots of Stuff and Everything “

tender bloom
#

the classic "user thinks mod is broken when translation is breaking the mod" experience

soft wolf
lofty ruin
#

Why don't some event endings end normally? Like fade to black and stuff. Is it a problem in the code when the event obviously ends but you have to skip in order to leave the cutscene?

tender bloom
#

Vanilla or modded?

#

in short, yeah probably a bug

lofty ruin
#

Custom mods

#

Is there a way to fix it?

tender bloom
#

Examine the last bits of the event script and cross-reference vanilla events that work until you figure it out

#

events are persnickety little beasts

soft wolf
#

If I have an Item class, that I know is a seed, how do I check if it will grow in the current location's season?

teal bridge
#

I think you'd have to check CropData. Via DataLoader.Crops, and read its Seasons.

brave fable
#

something like this?

GameLocation location = Game1.currentLocation;
Season season = location.GetSeason();
string seedId = Crop.ResolveSeedId(item.ItemId, location);
if (Crop.TryGetData(seedId, out var cropData))
{
    if (cropData.Seasons.Contains(season))
        return true;
}
calm nebula
#

Is there a probe argument on hoedirt.plant

brave fable
#

nope, but you'd need a hoedirt instance anyway which would be a nuisance

teal bridge
#

There's a canPlantThisSeedHere but yeah, getting HoeDirt sounds more difficult than the alternative already.

calm nebula
#

You can just init a captive hoedirt and keep it in a field somewhere

royal stump
#

SDVpufferlurk seems like GameLocation.CanPlantSeedsHere might help? it takes an item ID and tile

brave fable
#

oh that looks pretty perfect, more comprehensive than just a season check too

teal bridge
#

You need a tile location, though. I guess it depends on whether this check is being done in an actual planting context or for something like a shop.

brave fable
#

public bool CheckItemPlantRules(string itemId, bool isGardenPot, bool defaultAllowed, out string deniedMessage) tho 🥳

teal bridge
#

Yeah, guessing that is the shortcut to the snippet you posted 5 minutes ago

royal stump
#

yeah, looks like that part doesn't have to* use the tile, CanPlantSeedsHere does tile checks in combo

hard fern
#

What exactly does setting an npcs "friends and family" do? Im not quite sure

royal stump
#

I remember that affects who they greet when passing by with popup "hello" messages and such, but that's about it

uncut viper
#

they can greet em when walking around. plus some other things maybe

#

but all very minor if anything yeah

brave fable
#

including any value (even null or "") in NPC friends-and-family lets them expose gift tastes in rare dialogue

#

if you set a value (translated string), they'll use it in the dialogue

tender bloom
#

they might let you in on loves and hates

hard fern
#

Ahh

#

Thats neat

brave fable
#

author's note:

rancid temple
#

Why the quotes, it's so much worse with the quotes

lucid iron
#

did he have a dad in canon

brave fable
#

chu he canonically wouldnt exist without a dad

lucid iron
#

maybe he's pelican jesus

hard fern
#

... I have like 50 modding wiki tabs open

brave fable
#

ok CP + C# data model load/edit question for tokens

sweet sphinx
#

can I do this? for AdditionalConsumedItems
"ItemId": "(O){{ModId}}_CopperDust, (O){{ModId}}_IronDust, (O){{ModId}}_GoldDust, (O){{ModId}}_IridiumDust",

lucid iron
#

i dont think so? depends on the context

rancid temple
#

ItemId is either one item or an item query

#

But that's only in certain contexts

sweet sphinx
#

ah, query?

rancid temple
#

Where are you trying to use it?

sweet sphinx
#

machine, big craftable

#

custom machine

rancid temple
#

In an output rule?

sweet sphinx
#

uhh, input I think

lucid iron
#

you should just make 4 output rules

sweet sphinx
#

this is the part that in vanilla would be coal

rancid temple
#

Yeah, an item query is like a conditional choice between the provided things

lucid iron
#

if you need these as fuel, then you need extra machine config

#

its not a thing vanilla supports

sweet sphinx
#

yes it does? I did it with only gold dust before

lucid iron
#

you cannot have different fuel in 1 machine

rancid temple
#

You can do it for the entire machine, but not per item

#

So you could make one machine that accepts gold dust, but in CP alone not one machine that accepts gold dust, iron dust, copper dust, etc

sweet sphinx
#

nah, it so that I can put in gold dust and a carrot and get a gold plated carrot, and then put in copper dust and a carrot and get a copper plated carrot

lucid iron
#

if u dont want to use emc then the only choice is to have 4 machines, one per kind of dust

sweet sphinx
#

i feel like 4 machines is rather excessive/obtuse, so how do I use EMC?

lucid iron
#

emc is a content patcher extension, add it to your dependencies and then follow the docs on how to set it up

#

these r just custom fields stuff

brave fable
#

i forget if i asked already but i also dont remember an answer so w/e SDVdemetriums
so since i can't use Load to populate my complex data model with tokenised values, i've tried with ```json
{ // content.json
"Action": "Include",
"FromFile": "assets/Data.json"
}

```json
{   // data.json
    "Action": "Load",
    "Target": "{{PATH}}/Data/Data",
    "FromFile": "assets/Blank.json"
},
{
    "Action": "EditData",
    "Target": "{{PATH}}/Data/Data",
    "Entries": {
        "MyCoolTile": {
            "X": 53,
            "Y": 22
        }
    }
}

for this data model:

public record class ModData
{
  public Vector2 MyCoolTile;
}

but this gives a friendly warning:

[Content Patcher] Can't apply data patch Data > assets/Data.json > Data #2 > entry #1" to Mods/blueberry/Hikawa/Data/Data: failed converting entry to the expected type 'Microsoft.Xna.Framework.Vector2': Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'Microsoft.Xna.Framework.Vector2' because the type requires a JSON string value to deserialize correctly.

To fix this error either change the JSON to a JSON string value or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'X'..

how am i meant to format this file to patch the data into my model correctly?

uncut viper
#

i think vector2s are weird in CP in some way

#

have you tried "MyCoolTile": "53, 22"

lucid iron
#

whats your equiv of this like

internal static void OnAssetRequested(AssetRequestedEventArgs e)
{
    if (e.Name.IsEquivalentTo(BazaarAsset))
        e.LoadFrom(() => new Dictionary<string, BazaarData>(), AssetLoadPriority.Exclusive);
}
#

is it Dictionary<string, ModData>() or something else

brave fable
#

ModEntry.Instance.Helper.GameContent.Load<ModData>(AssetManager.DataAssetName);

brave fable
#

why doesn't this work for Point

lucid iron
#

i think it is some silly thing with Vector2 yea

uncut viper
#

i also had to do this recently

#

dunno why. i think pathos said something about looking into it at some point

#

iirc its supposed to work both ways but just doesnt right now

#

(and i think its specifically bc CP itself is supposed to override something abt serialization in the Vector2 class or w/e so thats why its not for Point)

#

(or maybe its SMAPI. idk)

sweet sphinx
#

fuck it, I might as well make 4 machines, I'm so, so tired

latent mauve
#

Nice thing about making those machines though, is it sounds like you'll be able to copy/paste most of the code for them.

brave fable
#

localtokens...... soon..

sweet sphinx
clever sinew
hard fern
#

who is elliott's "Daddy" i do wonder

#

we dont see any of the other relatives of marriage candidates XD

sweet sphinx
#

likely either his sugar daddy and/or partner

brave fable
#

well that's technically correct, but 'elliotts daddy is probably his daddy' isn't a very satisfying answer

knotty phoenix
#

clint

tender bloom
#

I assume Blueb edited the data 😛 and I also assume Elliott is originally from somewhere else, so we don't know any of his family

tiny zealot
#

doesn't he say he moved to pelican town to find inspiration for his writing?

lucid iron
#

does game ever use Action OpenShop

brave fable
#

not in maps or code, no

lucid iron
#

but it is common in mods right blobcatgooglyblep

#

for theri custom shops

brave fable
#

i use it for mine

tiny zealot
#

i use it too, but to open a vanilla shop

lucid iron
#

for some reason i thought that command showed a message when the shop is not open

#

but i must be remembering one of the vanilla's unique shop actions monS

rancid temple
#

Thought that was set in the shop data and was just part of opening a shop

lucid iron
#

oh i see bolbthinking

rancid temple
#

Oh yeah, it's set per owner lol

#

Not sure I understand the bolded note though

#

So one owner entry is for the message and then every other owner doesn't get one?

brave fable
#

from the DesertTrade entry in shops:```json
"Owners": [
{
"Condition": "SEASON_DAY Winter 15 Winter 16 Winter 17",
"Portrait": null,
"Dialogues": null,
"RandomizeDialogueOnOpen": true,
"ClosedMessage": "[LocalizedText Strings\\Locations:Desert_Trader_Closed]",
"Id": "Closed",
"Name": "AnyOrNone"
},
{
"Condition": null,
"Portrait": "",
"Dialogues": [ /* ... */ ],
"RandomizeDialogueOnOpen": true,
"ClosedMessage": null,
"Id": "AnyOrNone",
"Name": "AnyOrNone"
}
]

#

it's in an owner entry i guess

lucid iron
#

hm i guess that does mean the OpenShop time args dont trigger special message

tiny zealot
#

hat mouse's shop closed message is handled in the Forest map code when it checks the tile, because the shop unlocks after you get an achievement and is never closed after that point

brave fable
#

oooh IceCreamStand even gets more than one ClosedMessage. how exciting

rancid temple
#

Hm, so then does IceCreamStand only have one working message or is that note on the wiki wrong lol

brave fable
#

aaaa why is this vector2 s11n even a problem i dont wanna rewrite 150 entries

uncut viper
#

probably quicker to write a script to do it for you

brave fable
#

i would if i expected to ever need to do this more than once

calm nebula
#

Vector2 sin?

brave fable
#

there aren't 11 letters in i

lucid iron
#

booberry i have a stupid idea

rancid temple
#

Looks like if open and close time are used then it just doesn't work?

brave fable
#

is the idea 'create a class that's just X and Y and then parse it to vector2'

rancid temple
#

Trying to open a shop and having no feedback about being outside the time is kind of wild

calm nebula
#

Well usually in game the shopkeep walks awat

brave fable
#

it gets worse, you still get the 🤚 cursor

lucid iron
#
public class BogusVector2 {
    public float X {get; set;},
    public float Y {get; set;}
}
public class MyData {
    internal Vector2 ActualVect2;
    public BogusVector2 Vect2 {
        get => ActualVect2,
        set {
            ActualVect2 = new Vector2(value.X, value.Y)
        }
    }
}
#

i did some of this cus i started with a list and decided that naw i actually just want 1 thing

rancid temple
lucid iron
#

after ur done u can patch export it back out maybe

#

to achieve converting all the stuff

latent mauve
brave fable
#

see i did think of that dumb solution myself, but it seems just as much effort making sure all that works than it does to just rewrite vectors as strings and then revert the commit later if it's ever fixed

lucid iron
#

PecoSmile then yea just slap together a python script to do it

#

or w/e u prefer

uncut viper
#

theres a third option which is make a PR to SMAPI/CP to fix it

brave fable
#

i'll take the unskilled labour approach

rancid temple
#

I never knew you could do Vector2's in such a plain way, I was doing chu's way this entire time lmao

lucid iron
#

wait as in this business with the backing fields yggy

#

atm {"X": 1, "Y": 1} style seems borked so u have to 1,1

rancid temple
#

Well, not fully your way, yours seems still like more intelligent than I would do lmao

lucid iron
#

but u are supposed to be able to do the {} way, it still works for things like rectangle and point at least

rancid temple
#

I was doing that but just fully converting it from whatever was provided back to a Vector2

lucid iron
uncut viper
brave fable
#

it's not working ☀️

uncut viper
#

its so simple surely this would be an easy PR for someone such as uhh. chu

lucid iron
#

this code in here looks correct though think

#

i guess i should poke it though

teal bridge
#

I'd check if the CP content pack and a regular SMAPI config behave the same way - just to be sure they're using the same/similar serialization strategy.

brave fable
#

maybe that should've been a script after all 🥳

teal bridge
#

The Vector2Converter is there and registered but sometimes people use JsonConvert directly, and that's not necessarily going to use it.

calm nebula
#

(I've noticed it too. Smapi suddenly not using my custom jsonconvertors)

#

Have I debugged it? No

#

Will I debug it? No

lucid iron
#

config seems fine actually, weird

calm nebula
lucid iron
#

2 yrs ago think

calm nebula
#

( @ivory plume ... should this use SMAPI's fancy Vector2Converter and Friends? )

uncut viper
#

that sure is a big switch statement in JToken's ToObject

ivory plume
calm nebula
#

sooo like

#

it should probably do the primative switch case, but it also should probably use the smapi jsonserializer magic....

lucid iron
#

can mods generally access smapi's jsonserializer?

teal bridge
#

Generally that's done via asset loading.

#

.json files loaded through the content API go through SMAPI's serializer.

lucid iron
#

i have a dum thing where i turn object to a type determined at runtime LilyDerp

teal bridge
#

...a cast?

calm nebula
#

where the hell is vector2dconvertor again?

brave fable
#

are you searching for vector2converter or vector2Dconverter

calm nebula
#

what is a securitycriticalattribute

teal bridge
#

I think it's ancient CAS stuff.

calm nebula
#

well then

teal bridge
#

Yeah, like I said... ancient.

ivory plume
#

(SMAPI is old, sorry. 🧓)

tiny zealot
#

@ivory plume i regret to report a regression in build 24308. (same error about tile size 64px; but this time for my 80x64 tilesheet it only complains about the width)

teal bridge
#

(Hey, I'm not criticizing, obviously I'm old enough to have a vague recollection of what [SecurityCritical] actually does.)

ivory plume
tiny zealot
#

ah, very good. thanks

teal bridge
#

Because the converter works for config files and presumably JSON files loaded through the content API - just not CP.

calm nebula
#

it's weird that my custom jsonconvertors just stopped working one day though 😦

#

(no I have not debugged more, or checked against smapi later versions, or whatever.)

#

(this was like three months ago and I was so emotionally defeated I just closed my laptop and walked into a sunset)

teal bridge
#

I think I use a custom converter in Radial Menu (for colors, IIRC) so either it's just your method that stopped working or there was something very recent.

lucid iron
#

so why does the string work LilyDerp

brave fable
#

(cough) how dumb is it to create a machine data entry and craftable instance to handle arbitrary item trades

rancid temple
lucid iron
#

u could just use ur own asset, but have it be Dictionary<string, GenericSpawnDataWithCondition>

#

or List<GenericSpawnDataWithCondition>

brave fable
#

i like the idea of having the game do all the work tho

lucid iron
#

yea doing this means u just use item query

brave fable
#

oh i see, just my own data and use whatever the machine uses for querying

silver pelican
#

Hawo! Are there any mods (frameworks or similar that lots of mods depend on) that would break for the 1.6.9 update?

lucid iron
#

ig u would do Dictionary<string, GenericSpawnDataWithCondition> and the string is qualified object id

#

u can ofc just use the machine model here too but best to keep it out of vanilla if theres no real machine

uncut viper
#

that said, backup everything etc etc and all that

silver pelican
#

Ama be redi to start a new farm kwkwkwkw.

rancid musk
#

I have to say, the code that spawns ores is an absolute mess.

next plaza
#

Patches for 1.6.9:
SpaceCore changes - Guidebooks, tweaks to totem warp object extension data field (new ability to set them not consumable), a few bugfixes.
GMCM changes - New trigger action for opening a mod config menu (spacechase0.GenericModConfigMenu_OpenModConfig modid) for uses like SpaceCore guidebooks, tweaks to use the child menu system where possible (ie. not on the title menu).

I took out the 0 schedule fix from SpaceCore, so don't expect that

#

These should be going up on Nexus tomorrow around the time of launch (thanks Pathos! I'll be at work)

rancid musk
#

Do we have a time of day for when the launch is happening?

uncut viper
#

quick whats casey's job schedule, we can reverse engineer the patch time

latent mauve
#

Will those work on the beta for tonight, casey?

next plaza
#

It should, I just tested on the build that's currently out

latent mauve
#

awesome

ivory plume
#

(The current game beta is identical to the final release, aside from one minor fix that'll be released later tonight.)

next plaza
rain basalt
#

does that fix include the 64 sizeing fix lol

rancid musk
#

It's possible I'm not releasing my own 1.6.9 builds tonight like I had planned because I got caught up deciding to add a new trigger action for spawning ores for no other reason than I felt like it. I'll just... push my 1.6.9 builds tomorrow whenever the update goes live, if I can time it.

next plaza
rancid temple
#

More cakes, infinite cakes

lucid iron
#

romance of the three (location spawnables) kingdoms

rain basalt
#

gotta love bugs

calm nebula
tiny zealot
#

so far (not finished checking), of my mods only Lacey needs an update, and it's not critical so i'm not worried about timing

tiny zealot
rancid musk
#

(Well maybe it did but it wasn't documented at least)

next plaza
#

Oh I'm aware

#

I was just giving you a hard time

rancid musk
#

I'm actually using Item Extensions API too, so people can spawn stuff from that.

next plaza
#

Nexus, really, of all times to go down

rancid musk
#

Would you rather it went down tomorrow? 😛

ivory plume
#

Yeah, Nexus likes to go down right before major Stardew updates.

next plaza
#

Yes, because I won't care tomorrow

calm nebula
#

why before though?

lucid iron
#

if it goes down tmr then it'd be better for support channel

next plaza
#

Well I guess it would cause Pathos issues, so yes I care

next plaza
# calm nebula why before though?

Pathos suggested a workaround so I could upload the files and set up descriptions now, and he can just move the file to the right section tomorrow

calm nebula
#

people be impatient

calm nebula
rancid temple
#

As if people won't go to the support channel if Nexus goes down tomorrow

latent mauve
#

GMCM icon is still missing from title screen, is that expected?

next plaza
#

It's working fine for me

latent mauve
#

hmm

next plaza
latent mauve
#

it's definitely still clickable but not visible for me

next plaza
#

Do you have any UI recolors?

lucid iron
#

did game have any way to convert 0800 to 8:00AM

calm nebula
latent mauve
#

nope, but I do have Mod Update Menu which may be interfering maybe, since that's not visible either

#

lemme grab a log so you have my mod list

tiny zealot
uncut viper
#

the GMCM button is not there for me either

lucid iron
#

+1 for gmcm button

rain basalt
#

button not there but if i click area it pops up

latent mauve
ocean sailBOT
#

Log Info: SMAPI 4.1.0-beta.5 with SDV 1.6.9 build 24308 on Microsoft Windows 10 Home, with 14 C# mods and 10 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

latent mauve
#

Mod Update Menu is confirmed broken, but that's fine since it just won't load

lucid iron
calm nebula
#

that's amazing amounts of hardcoding tbh

lucid iron
#

terror

calm nebula
#

especially for things like, ngl, there's format strings for

rain basalt
#

ghost button

rancid musk
#

GMCM is shy

next plaza
#

What does the assets folder look like for y'all?

lucid iron
latent mauve
rain basalt
#

same

lucid iron
#

its not a windows/linux path thing at least

uncut viper
#

(ditto)

rain basalt
next plaza
#

Hmm

lucid iron
#

should i try building from the repo

next plaza
#

That's a fresh build

rancid temple
#

I gutted my mods list, still not showing for me

next plaza
#

I guess I'll try updating my SMAPI

rancid temple
next plaza
#

(Goodbye autocomplete for smapi commands SDVPufferCry )

calm nebula
uncut viper
#

you're not even using latest smapi atra

next plaza
#

Bleh, nexus is still down so no smapi update

calm nebula
#

(I'm also on 4.0.8)

uncut viper
#

i didnt know old smapi even worked with 1.6.9

calm nebula
#

oh come on, do I need to be using latest smapi 😛

next plaza
#

I'm on a weird in between of 4.0.8 and 4.1

#

One that has my autocomplete PR in it

uncut viper
#

atra taking refuge with the people who submit bug reports for mods when theyre 3 versions behind

calm nebula
#

I think I'm on 4.0.8 proper at the moment

brave fable
#

only 3 versions. amateur

rain basalt
#

lol someone submitted an issue with another mod on my greenhouse mods but the strange issue is i had an injector line for custom maps that replace greenhouse.tmx so not sure why the mods bugging for them

calm nebula
#

yeah, maybe murdering all mods on major versions is actually a good idea then

uncut viper
#

im not sayin you need to murder em
but if i ever get asked why a mod of mine isnt working and i see you have outdated anything relevant, you're on thin ice buddy /lh

latent mauve
#

I'm on SMAPI 4.1.0-beta.5

#

if it matters

calm nebula
#

(but atra, Stardew hasn't even ever see a major version update!)

#

(yes. I know.)

latent mauve
#

Skull Cavern Elevator is still registering as broken too, so that's fun. 🙂

calm nebula
#

that's amazing

#

pathos what did you break

#

also why is more stuff loading now?

next plaza
#

How did you get the SMAPI update

#

I know there are more rewriters in latest smapi

latent mauve
#

Nexus is working for some of us

next plaza
#

Ah

uncut viper
#

nexus is working for me so

calm nebula
#

I live in a different area than you do

next plaza
#

Nexus hates me, personally

#

Got it

uncut viper
#

you could compile from the repo

next plaza
#

Effort

rain basalt
#

east coast nexus is working ^..~

calm nebula
#

catbox'ed it, dm'ed you

rain basalt
#

one of you known as DeathTr1be on nexus?

next plaza
#

Hmm, the button object definnitely exists

#

And the draw is being called

ivory plume
calm nebula
#

GMCM isnt' drawing its button on screen no more

next plaza
#

GMCM doesn't render in latest SMAPI

#

In older SMAPI it's fine

ivory plume
#

How old is the SMAPI that works?

next plaza
#

I'm not sure on my end, but 4.0.8 was working for atra

ivory plume
#

Well, there's... a few changes in 4.1.0.

latent mauve
#

4.0.8 was also the last version where Skull Cavern Elevator worked

calm nebula
#

(4.0.8 is the actual 4.0.8, pathos, not some fork.)

next plaza
#

Uh, Pathos

calm nebula
#

(I know I do that too.)

next plaza
#

Does 4.1.0 not end the spritebatch after OnRendered

calm nebula
#

fuck you vs

#

does anyone remember off the top of their head where the stupid blasted nuget cache is

next plaza
#

On windows it's ~/.nuget I think?

#

Hmm, it looks like SMAPI should still be ending the sprite batch

rancid musk
#

%USERPROFILE%/.nuget yeah

ivory plume
calm nebula
#

what the fuck is wrong with fucking nuget

#

whyy

#

stop it

rancid musk
#

I wish I knew why that package does that

next plaza
#

Well, ending the spritebatch (and beginning again so it doesn't crash) didn't work

ivory plume
#

SMAPI 4.1.0 is for Stardew Valley 1.6.9 though, and there's a lot of changes in 1.6.9. So it could also be a change in the game?

rain basalt
#

Updates game breaks everything we all panic 😱 somehow gets fixed at some point

calm nebula
#

no, pathos, I didn't change the game version

tiny zealot
#

atra apparently was running 4.0.8 on 1.6.9

calm nebula
#

just the smapi version, I was doing a lazy

ivory plume
#

I didn't realize 4.0.8 would still work with 1.6.9.

velvet narwhal
#

I thought the save serializer broke smapi SDVpufferthink

#

(Which is why it needed the update)

rain basalt
#

I’ll wait for tomorrow scrap and re install everything then submit issues with official releases

calm nebula
#

how the fuck do I disable packagesourcemapping AGAH

#

okay, finally fucking built

ivory plume
#

There's 128 commits in SMAPI 4.1.0; I can redo the release if you track down the cause, but otherwise it'll probably need to wait until after release day at this point.

#

(I'm way behind schedule on mod preparations for 1.6.9.)

next plaza
#

All the bug reports I'll get...

rancid temple
#

Time to disable comments

velvet narwhal
#

(Nothing new...)

next plaza
#

Dang it, I needed to finish some S&S stuff tonight, desty's gonna be upset

hard fern
#

SDVpuffersweats looks like stuff is exploding

tiny zealot
ivory plume
#

Hmmm.

rain basalt
next plaza
#

This didn't fix the issue.

            if (this.IsTitleMenuInteractable())
            {
                this.Ui?.Draw(Game1.spriteBatch);
                Game1.spriteBatch.End();
                Game1.spriteBatch.Begin();
            }
#

I assume it would have if that was the problem

ivory plume
#

That's not intended, but it's most likely Game1.spriteBatch that's being passed in anyway.

tiny zealot
#

(i can't think of an instance offhand where a passed spritebatch isn't Game1.spriteBatch)

next plaza
#

Hmm, I wonder

lucid iron
#

is there something special about the main menu

#

since gmcm itself works fine, once u click on the invisible button

calm nebula
#

it's not just you, casey

tiny zealot
#

could it be something more pedestrian, like whatever flag that prevents the GMCM button rendering while the vanilla UI buttons are popping in one by one isn't cleared

brave fable
#

okay you two, enough off-topic chat, keep it in #making-stardew-valley

next plaza
#

So, here's something interesting

calm nebula
#

guess who's little performance counter isn't showing up either

next plaza
#
                var rt = Game1.graphics.GraphicsDevice.RenderTargetCount > 0 ? Game1.graphics.GraphicsDevice.GetRenderTargets()[0].RenderTarget : null;
                var rt2 = Game1.game1.uiScreen;
                var rt3 = Game1.nonUIRenderTarget;
                this.Ui?.Draw(e.SpriteBatch);
ivory plume
#

There's one change in SMAPI 4.1.0 that might be relevant? SMAPI now overrides this:

/// <inheritdoc />
public override bool ShouldDrawOnBuffer()
{
    // For some reason, screen positions are UI-scale-adjusted in non-UI mode in the specific case where [a] UI
    // mode is not 100%, and [b] zoom level is 100% (which causes this method to return false). That can cause
    // issues like mods' world overlays being mispositioned with that specific combination of settings.
    //
    // It's not clear why that happens, but there's little reason not to just using the buffer consistently and
    // avoid the issue.

    return true;
}
next plaza
#

rt is a different render texture than rt2

#

So it sounds like SMAPI is drawing on a different render target than the right one

ivory plume
#

(Possibly related to that block I just posted.)

tiny zealot
#

i think that might be it

#

my shader mod has a postfix on ShouldDrawOnBuffer which forces it to return true but only during gameplay since it broke the title screen otherwise

#
        public static void Game1_ShouldDrawOnBuffer_Postfix(
                ref bool __result)
        {
            if (Game1.gameMode == Game1.playingGameMode) {
                __result = true;
            }
        }```
ivory plume
#

I could do the same in SMAPI, though now I'm wondering what else setting that might break.

latent mauve
#

also Casey, unrelated, but I love this. xD

lucid iron
#

good feature

next plaza
#

Used to GMCM only had a dummy option

#

Interestingly, the i18n for it already exists

#

Wonder when I broke that

velvet narwhal
#

i dun got the funny meow SDVpufferpensive

next plaza
#

Wait

tiny zealot
#

(in hindsight, i knew i had seen GMCM's title screen button not rendering before, but i couldn't find it searching on discord. it must have been while i was figuring out the postfix for Nightshade, and not something someone else posted about)

next plaza
#

That might be a GMCM bug

#

The options themselves should be fine

#

That page is from a test I did once, and those have meow

calm nebula
#

casey why do I have a tooltip

#

(see behind the menu)

next plaza
#

Is that in game or title menu?

#

I'm assuming in game

calm nebula
#

in game

next plaza
#

And that would be because of how tooltips are handled

latent mauve
#

Mine was from clicking Generic Mod Config Menu from the invisible gear on the title menu

next plaza
#

With the new child menu usage

#

(Since when there's a child menu the parent menu isn't updated)

velvet narwhal
calm nebula
#

(that's hilarious)

velvet narwhal
#

(oh hi roku kyuuchan_wave )

rancid temple
#

Hullo, I thought someone else had mentioned it around then too, but I can't remember if it was before I mentioned it or not

next plaza
#

Why are you getting the wrong hover text

velvet narwhal
#

you're the earliest mention from what i can see

latent mauve
#

the hover text is from the meow, my mouse just moved when I screencapped

next plaza
#

Oh, okay

#

Crisis averted

latent mauve
#

sorry for the accidental panic xD

calm nebula
#

I'm getting the right hovertext

next plaza
#

I made that page link while testing some stuff and apparently left it in on accident

calm nebula
#

(including with the zooms intentionally mismatched)

next plaza
#

Nexus loads, hooray

ivory plume
#

(I'll finish preparing the cantorsdust mod updates, then I'll add the SMAPI fix for the title button thing.)

next plaza
#

Okay, the new versions are on Nexus under Old Versions if anyone wants to get it from there. (Pathos is moving it for me tomorrow when it's time)

#

(I also moved the 1.5.6 versions to no longer be in the main section)

ivory plume
next plaza
#

Hooray!

#

After 1.6.9 releases I'm going to be taking a break from modding for a bit besides any bugfixes. Not sure how long it'll be - it won't be several months or anything long like that I don't think. I probably won't be checking this discord too much, so ping me for anything important

uncut viper
#

are pictures of my cat important enough?

sweet sphinx
#

absolutely

next plaza
#

Always

uncut viper
vernal crest
#

A break sounds like a really great idea, Casey. I hope you will be able to take a break as well, Pathos.

ivory plume
#

(Right after a game update is about as busy as it gets for me, sadly.)

next plaza
#

Clearly you need to release the update and then ignore nexus, leaving them to the wolves

vernal crest
#

(So when things settle down after that we kick you out for a while? Noted. /j)

ivory plume
#

I can just imagine coming back from break to "999+ notifications", and just being like welp I'm retired now.

next plaza
#

That's when you clear your notifications and only answer new messages

velvet narwhal
#

just come in with a "hi, i'm back, what broke? /lh"

lucid iron
#

Say casey did you ever fix the spacecore animation + localized textures thing

next plaza
#

Nope, forgot about it

#

Gone to bed now so definitely won’t be happening tonight

ivory plume
#

Okay, I think I'm ready for tomorrow unless I forgot something. puffer_sweat

lucid iron
#

Panic. 👀

brave fable
#

i feel like panic should come before release day

silver pelican
#

We will panic with u if ever xd

teal bridge
#

10 releases on the same day, what could possibly go wrong?

ivory plume
#

(Technically 44 releases.)

velvet narwhal
#

i was gonna say it's definitely more than 10 based on the support tiers SMCKekLmaoDog

teal bridge
#

Yeah, those monorepos are multiple, but I wasn't going to count up all the mods in each.

silver pelican
#

Speaking of smapi & releases, mobile players also feel anxious about the update on smapi for android devices (afaik ZaneYork's release was 2023)

teal bridge
#

The Nexus uploads alone will probably take hours.

velvet narwhal
#

myuu just said it very plainly SDVkrobusgiggle

calm nebula
ivory plume
#

(Unfortunately I don't think anyone knows whether ZaneYork will return, who will update the Android port, or whether it's even possible.)

calm nebula
#

for the shopmenu item blah changes

#

brain is dead

#

the struct->class

teal bridge
#

Android SMAPI is already deprecated, I don't think 1.6.9 is making it... more deprecated?

ivory plume
#

(1.6.9 adds more optimisations like ahead-of-time compilation which make it more difficult.)

ivory plume
teal bridge
#

Yes, but I mean, Android users have already been stuck on 1.5, haven't they?

ivory plume
#

Yep.

velvet narwhal
calm nebula
#

(also JA needs a recompile too, I probably should have mentioned that to casey when she was here, huh.)

#

same reason

ivory plume
#

I'll add a quick Shop Tile Framework build to the list for tomorrow, though the full update will be during the later 'keeping the lights on' update wave.

calm nebula
#

does it need any changes from what's in her repo at the moment?

#

one second

velvet narwhal
#

oh yknow i'll just take your support tiers and give you a log

ivory plume
#

I haven't really done anything in that repo since the 1.6.0 beta fixes; it's due for my usual refactor pass when I first take over maintenance.

calm nebula
#

(I just happened to have it open b/c Aquarium)

#

(...sorry)

silver pelican
calm nebula
#

train station looks like it should be fine

#

at least, I don't see any obvious major issues

#

(I do spot an issue with audio but that's not a big deal)

ivory plume
#

Thanks! I added a Shop Tile Framework alpha to the list; it'll probably be towards the end of the day since it's at #11 though.

calm nebula
#

(we love you Pathos!)

velvet narwhal
ocean sailBOT
#

Log Info: SMAPI 4.1.0-beta.5 with SDV 1.6.9 build 24309 on Microsoft Windows 10 Home, with 88 C# mods and 39 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

ivory plume
#

Thanks! Better RNG already has an update ready for tomorrow. I could probably add a rewriter to fix TMXLoader in SMAPI 4.1.1, though unfortunately rewriting the other broken mods isn't really possible with SMAPI's current rewrite system.

velvet narwhal
#

t'was part of the huge list for the tech support to tell me what major frameworks i should go and check for (lessen the burden i hope SDVkrobusgiggle )

clever sinew
#

......I have another asset use question 😭

#

well

#

hmmm

#

maybe not actually

calm nebula
#

...my json converters live?

rancid musk
#

(I'll probably update the decompile repo if you want another PR. I've been doing it locally against the patches anyways.)

rancid musk
ivory plume
#

Sure! SDVpufferheart

clever sinew
#

(And considering whether this is even worth it)

rancid musk
#

IANAL, but online usage sounds more like something for display in a web browser versus digital distribution being not in a web browser

clever sinew
#

Y e s, and also this person uploaded sprites which I know belong to the pokemon company and is billing them as royalty free

#

So i'm not gonna touch that, actually

#

thank you though!

rancid musk
#

Clearly you need sprites of Pals instead.

ivory ridge
#

How does the texture overlay feature of CP work in regards to mod compatibility? Is it good practice to go for that rather than replace a whole texture? I'm currently retexturing the wood on trees and cutting the leaves out since I'm not changing that

languid aurora
#

is StardewXnbHack not working on the most recent SDV beta or is it just me?

ivory ridge
#

So I've got something like this for each tree

languid aurora
#

I just used it yesterday on build 24307 or else I would assume it was me

calm nebula
#

what's the error message

lucid iron
#

You definitely have 1.1.1?

languid aurora
#

Oh, nvm, I see there's a v1.1.1

#

Surprised 1.1.0 worked yesterday somehow

calm nebula
#

!unpack

ocean sailBOT
#

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

calm nebula
#

(I just wanted to see the repo changes)

languid aurora
#

Maybe I ran it before I updated SMAPI to the beta version, actually

ivory ridge
#

Actually glad you just posted that since I've been using xnbcli and didn't know StardewXnbHack existed

languid aurora
ivory ridge
#

Yeah, I'm downloading it now

#

I seem to get an error on running it

calm nebula
#

make sure smapi is updated to latest

#

-beta 5 or something

ivory ridge
#

Yeah, that was my first thought, but I did that

#

Although it may not be the beta

#

I'm on 4.0.8

calm nebula
#

you need to be on the beta

latent mauve
#

That is indeed not the beta

#

You should be on SMAPI 4.1.0-beta. something

#

Mine was beta.5 when I downloaded SMAPI beta earlier today, but I dunno if there's a new one already

vernal crest
# ivory ridge

You should be using 1.1.0 instead because you're not on the beta

latent mauve
#

Yeah, use whichever version of xnbhack corresponds to your SDV and SMAPI version

ivory ridge
#

Yeah, switching over to 1.1.0 fixed it, thanks

brave fable
#

any idea why the cp token {{SHRINE}} resolved to ShrineTrees > [0] > Key: Custom_Hikawa_Shrine , but {{ID}} didn't resolve in ShrineTrees > [0] > Value > [0] > Id SDVpufferfush
{{ID}} is 100% ready since it's used in the {{SHRINE}} token

ivory ridge
#

Oh man, that's definitely more convenient than xnbcli lmao

hard fern
#

😔 xnblci said no when i tried to unpack data/characters.xnb

ivory ridge
#

I haven't even updated it since I first installed it

#

Which was apparently in 2021 lmao

tiny zealot
#

xnbcli can't handle the data model assets. it worked back in 1.5 when everything was string->string

ivory ridge
#

Okay I've finished recoloring all the trees, I'm done for the night lmao

#

Hopefully I'll have this mod finished by December

brave fable
#

{{ID}} is resolved in string keys, why not in string fields on values SDVpufferfush

ivory ridge
#

I'm unfortunately useless on that, but what editor are you using? I've been using Notepad++ and it's possibly a bit inadequate

brave fable
#

this is visual studio since i'm mainly working with c# builds, but you can use Sublime Text or VSCode for just doing json fluff

ivory ridge
#

I've had Visual Studio installed for months and I still haven't used it tbh

brave fable
#

vscode is more capable, sublime is lightweight and sleek but asks you to pay money sometimes

ivory ridge
#

Especially weird since I'm a CS major

#

I've mostly been doing MIPS this semester though

#

I've also been using GIMP for years and should probably acquire (pirate) a copy of Photoshop at some point but I am unfortunately lazy

teal bridge
#

Not the place to discuss that. (Keep it legal.)

vernal crest
#

Yeah rule 9

latent mauve
#

There are lots of lovely Photoshop alternatives if you'd prefer not to enter the Adobe subscription cycle. I've gotten pretty used to Krita for a lot of what I used Photoshop for.

calm nebula
#

(if you're willing to pay a little money I hear affinity designer is good)

teal bridge
#

I'm a fan of Affinity. Not free, but far less abusive than Adobe price-wise.

brave fable
#

photopea is almost perfect if you want something portable and web-based

vernal crest
#

Affinity is also free for 6 months right now

#

I used Affinity Photo for a couple of months before getting too cross at it crashing on me and moving on to Aseprite.

teal bridge
#

It is not really ideal as a pixel art program - but then neither is photoshop.

#

(Never had Affinity crash on me, mind you.)

brave fable
#

photoshop works pretty darn well for me

calm nebula
#

even for commercial use?

lusty halo
#

Most art programs are decent for pixel art, it's pixel animation that's a pain in the cough to do, so for that I bought Aseprite. (unfortunately, animation in general is a pain and you do need apps that explicitly say "we do animation".

clever sinew
#

does anyone know if "any vegetable" (category -75) can be used as an ingredient in cooking recipes?

velvet narwhal
#

i think the general categories except for uhhhhhhh flowers will show appropriately

#

i can re-check the message for that one though

clever sinew
#

I just wanted to doublecheck before I have to spend ten minutes testing it

#

Thank you

brittle pasture
#

only fish, eggs and milk work unfortunately

clever sinew
#

dang

brittle pasture
#

(and wild seeds, with a special hardcoded -777 ingredient)

clever sinew
#

oh well, specific vegetables it is

#

woe is me /s

velvet narwhal
#

i commit the cardinal sin, i make my hobby project a dehardcode of crafting/cooking recipe SDVpufferpensive

brittle pasture
#

if you want you can use SpaceCore for "any vegetables" in recipes

vernal crest
clever sinew
#

it is truly not worth it, I was just looking at categories and was curious

#

noted though

vernal crest
woeful lintel
#

@lusty halo I see you're looking into making Furniture with CP, if you have issues with how your Furniture rotate, I can help: I've looked into the game's code and it's quite the mess so it can be hard to understand with only what's in the wiki.

#

Uh, I just checked the guid from MathPerson and it's doing a pretty good job explaining these issues...

brave fable
#

any vegetable works with any recipe iirc, it just doesn't have any display text/icon (except with love of cooking ig)

#

maybe i patch it into default cooking menu

lusty halo
brittle pasture
#

yeah it's like a couple lines in a postfix, the reason I haven't done it is because SpaceCore exists and we could use that instead (all hail SpaceCore)

brave fable
#

ah well then we have the opposite problem of spacecore recipes don't appear in love of cooking

brave fable
#

maybe i'll just make the id values the non-token part and assume every id starts with the token value and join them later

rancid musk
#

Actually it should be pretty easy to patch that in, I just went to look again

#

stares at the un-released 1.6.9 build of Better Crafting

clever sinew
#

The thing is, with all this discussion, all I can think of is maybe changing vegetable medley to take any vegetable

#

Or for veggie pizza, I suppose

#

I don’t even know what i’ll do for that from vanilla crops. Maybe that’ll be a cornucopia recipe

#

Broccoli maybe?

#

Hmm

latent mauve
#

I've seen artichokes used on veggie pizzas before

rancid musk
#

It should make all of these work with the exception of icons for Meat and Cooking. ... and I really should rename Meat to Animal Product

velvet narwhal
#

mmmmmmmm meat

#

but what about bug meat?

brave fable
#

are you implying i can use wool as a meat substitute

knotty phoenix
#

what are the chances of 1.6.9 changing anything about how CP works

rancid musk
calm nebula
#

Exactly how my cooking goes normally

rancid musk
#

Old family recipe. Makes the best giant red Xs you've ever had

rancid temple
#

10 gold and junk is the recipe for getting in my car and going to taco bell

brave fable
#

i always enjoyed a good home-made 🚫

royal stump
#

(personally, my only content issue was that some tool names moved to another file)

rancid temple
#

There was the removal of some unused in vanilla files, that could cause an issue if you were using them, but they were all things that were really oddly sized so it would be weird if you were

brave fable
#

i'm afraid if you were using any of the pre-sdv1.0 spritesheets your mod deserves to be incompatible

rancid temple
#

Lmao, harsh but fair

hard fern
#

SDVpuffersweats pre 1.0?

inner harbor
#

Whats the 1.6.9 status of Farm type Manager btw? Anyone know?

rancid temple
#

Seems to still be working

hard fern
#

SDVpufferflat i finished all my spring dialogue

#

SDVpuffersweats for only 12 lines it was a lot

strong star
#

excuse me, do you know how does the command world_freezetime stop the time? i've looked up the update functions (likeGame1.shouldTimePass()) of the game, but found that no one is set false when the command stops the time.

calm nebula
#

That command actually just resets time back ten minutes every ten minutes

atomic current
#

hello! i've been told to message here for any modding help
so this is my first time creating a custom npc for stardew and im having a difficult time making sense of this error log while i was testing the NPC's schedule:

ocean sailBOT
atomic current
#

what does it mean? i've just been following the wiki's documentation so idk what i'm doing wrong 😭

calm nebula
#

The way arrival schedules work is that the game simply subtracts the amount of time needed to travel to thar location

#

In particular, your npc needs to leave at 1330 to make 1600

#

Npcs travel slower and maps are bigger than you think

#

You're giving your npc too many way points

#

Look at how many vanilla has

atomic current
#

ohhh i see, thank you! i'll try adding them one by one for now lol

strong star
calm nebula
#

If you do that, things like buffs don't count down iirc

#

Why

#

Why do you need this?

strong star
# calm nebula Why do you need this?

do you mean why do i need freeze the time? i often use this command, and want to make a small mod that have some shorter commands, so that i can use them more easily

calm nebula
#

Could just make your command call thar command

strong star
#

wow, really? thatll be really good! at first i wanted to do so, but i can't find some relative apis on wiki

vernal crest
royal stump
#

relatedly, I'm finally done documenting the weird triggers/actions/GSQs I added to EMP a few months ago SDVpufferdizzy
should be ready to go up when the update happens

blissful panther
#

Okay... time for the big final 1.6.9 compatibility push for everything. SDVpufferfear

lusty halo
#

So, Stardew will update to 1.6.9 and I've reached 1,696.9 "play" hours... SDVpufferchickcool (or however you read/write hours in English)

rain basalt
#

WB esca I came back recently as well SDVpufferheart

vernal crest
#

Reading Furniture.cs CatHuh

lusty halo
#

WB to all returners. I also am like the wind, I disappear for months, then post a couple images for feedback, then I update all my mods and disappear again.

tall wind
#

I get an error when I use ObeliskWarp in the map properties, does anyone know what it is?

#

[game] Saloon (10, 10) has unknown warp property 'ObeliskWarp 20 20 Custom_TestMap', parsing with legacy logic.

#

Why is that?

vernal crest
tall wind
#

Oh, sorry I noticed that and tried to fix it as per the Wiki, but I still get the same error message.

tiny zealot
#

wow, my ILSpy decompile of 1.6.9's GameLocation.performAction is... well

calm nebula
#

That's how it works, it accidentally got caught up in the npc pathfinder systems

#

And yes I'm amused

vernal crest
#

So it's just always going to have that error message? Does it still work?

tall wind
#

Errors still appear.

calm nebula
#

Yeah, works fine for intended purposes, I don't recall if npcs will try to take that warp

vernal crest
tiny zealot
#
                    case 7:
                        switch (actionType[0])
                        {
                        case 'B':
                            break;
                        case 'G':
                            goto IL_07af;
                        case 'k':
                            if (!(actionType == "kitchen"))
                            {
                                goto end_IL_00be;
                            }
                            goto IL_19a5;
                        case 'K':
                            if (!(actionType == "Kitchen"))
                            {
                                goto end_IL_00be;
                            }
                            goto IL_19a5;
                        case 'M':
                            goto IL_07ee;
                        case 'D':
                            goto IL_0813;
                        case 'J':
                            goto IL_0828;```
and so on
tall wind
#

Are you saying that the Obelisk Warp action property is not currently functional?

calm nebula
#

It works for players

#

I don't recall what npcs will try to do

#

But you will always have that warning

lucid iron
#

huh my decompile looks normal

tall wind
#

Oh, I touched the tiles to try it out and the warp worked fine.
But it's quite disturbing when the warning text is always there...

lost hull
#

would adjusting time/time requirements be a content patcher or c# mod? speaking of things like crop growth, fence decay, day length and the like

tiny zealot
#

(my ILSpy may be old. i typically never update stuff until it's actually necessary)

lucid iron
#

i have 8.2.0.7535

tiny zealot
#

mine is 7.2 so that could be it. oh well

lucid iron
#

khloe said decompile repo update soon-ish SDVpufferthumbsup

tiny zealot
#

that's what i typically use. but i needed to crack open the 1.6.9 beta for myself to fix a harmony patch, so

calm nebula
#

See post I linked

lucid iron
vernal crest
#

Is it going to be helpful if I put info about the hardcoded name-related things in the name field for furniture on the wiki? Things like if the name has TV in it, the placement restriction is 0, etc.

blissful panther
#

(Huh. I didn't know this was the case, but apparently Smart Building can pick up furniture with the things on it still on it. SDVkrobusgiggle)

calm nebula
#

Gentle reminder other things can also have things on them

tiny zealot
blissful panther
#

Most of my mods are thankfully effectively 99% there, it's just that every single one will need a rebuild for 1.6.9 because of the shared project.

tiny zealot
#

ouch

lucid iron
#

not too late to separate your repos

next plaza
#

If you separate your repos you lose history

#

Do I really want to lose that?

#

Also, jsut remembered to push the last 1.6.9 fixes to github

atomic current
#

hello! i'm back again with another question, this time with sprite animations (for custom npcs)
how do you animate something like willy's fishing animation where the size is like 16x64? because ive noticed that you can only usually show a 16x32 sprite per animation frame. is there a way where you can change the size of the animation sprite instead?

velvet narwhal
atomic current
#

oh.. is there no way to just do it in json?

velvet narwhal
#

adjusting the data/character size might come about unintended glitches, it might skew your entire character sheet rather than the indexes you'd like

atomic current
#

hmm wait
how does willy's fishing animation work then? i just wanted to replicate something like that because the size of my animation is the same as his

velvet narwhal
#

willy's is hardcoded

atomic current
#

ah

vernal crest
#

Are you wanting to do it in a schedule or an event?

atomic current
#

in a schedule

#

my character fishes too

vernal crest
#

Then yep SpaceCore it is

#

Or your own C# of course

velvet narwhal
#

the realistic workaround, is that the npc does not move at all during fishing

#

you set the data/character size during that day, set a 0 schedule, and set the animationDescription

#

but the moment the npc moves, you'll get the overskewed character sheet

vernal crest
#

Do you mean "not move at all during the day"? Because I doubt many people are going to make their NPC pace back and forth while fishing anyway

velvet narwhal
#

yeah, like, no schedule movement at all

vernal crest
#

And I don't think you even could

velvet narwhal
#

just fish, from dawn until dusk SMCKekLmaoDog

#

oh forgot one extra stipulation on that* loading a completely different spritesheet that has the same size index as your fishing sprites

atomic current
#

ohhh

#

how does that work?

velvet narwhal
#

it might look extremely weird, but whatever height your fishing sprite is, offset all of your sprite indexes by that amount

#

so instead of every frame being 16x32, it's 16x45 or whichever you put, make sure that the npc is at the bottom of each index

#

and then that might be fine, but again, unintended glitches are highly probable

fathom hound
#

I can’t find the mod author notes for 1.6.9 release, trying to see what I need to update for all my mods

#

Am I blind or tired, or both?

vernal crest
tiny zealot
#

aba wins the fastest fingers award

vernal crest
#

And you don't have any C# mods do you so, nothing I think

velvet narwhal
#

checks history

vernal crest
#

Hmm I don't like this whole closing and then having to open tabs thing

velvet narwhal
#

hmm fish pond color hmmmmm

fathom hound
latent mauve
#

Oh right, I should probably pull myself out of the beta branch now that my testing is done

fathom hound
#

True

#

Thanks for reminding SDVpufferheart

royal stump
#

summary of EMP's next update today, in case anyone wants access to some C# events/logging in a content pack SDVkrobusgiggle

  • Adds game state queries: Can Player Move, Is Player Free, Is Split Screen, Is World Ready
  • Adds trigger action: Log Message
  • Adds triggers: Game Launched, One Second Update Ticked, Returned to Title, Save Loaded, Time Changed
#

(also I guess ArgUtility has an "argument name" param now, which is the only reason this is incompatible with 1.6.8)

blissful panther
#

That's the kind of tiny change that's resulted in this:

#

Upload API, Nexus... please... SDVpufferwaaah

lucid iron
#

wait nexus doesnt have one?

blissful panther
#

Not an official one, at least!

lucid iron
#

i kind of assumed people with 50 mods have some auto deploy setup tbh

calm nebula
#

To be fair when you upload mods twice a year

#

Or zero times a year

lucid iron
#

well, i'll amend that to "i assumed pathos had some auto deploy setup for the pathos-waves"

rancid musk
#

In fairness the ArgUtility argument name parameter is largely handled by rewriters. It's just the one to parse an enum is broken because the rewriters are not good at generics.

whole raptor
royal stump
blissful panther
#

I'm tempted to just shove these files onto Nexus as the current versions of my mods' main files right now ahead of 1.6.9 launching...

royal stump
#

same, just resisting the urge and leaving all the necessary tabs open SDVpufferchicksweatsip

blissful panther
#

I have given in.

#

I am no longer resisting the urge.

iron ridge
#

Time to figure out how to read save files on switch

tiny zealot
inner harbor
#

I uploaded mine last night, just in case.

#

(Hope it works)

#

Need Farm Type Manager to update properly so its good to see you here, Esca

blissful panther
#

The coloured slime feature has made it in to the 1.6.9 update too, by the way!

inner harbor
#

Nice ill get onto that event this week (gotta make some custom sprites and a map first). Working on making Victoria a fully fledged NPC.

blissful panther
#

And... every mod uploaded. Now we wait and sweat.

clever sinew
#

I asked in the wrong channel so i’ll throw it in here — the new dialogue keys are optional right?

#

For accepting gifts?

latent mauve
#

I need to update my mod to add the EMA dependency for the fancy new EMA features now that 1.6.9 is upon us, but that can wait, since my current mod won't break in the 1.6.9 wave.

tiny zealot
latent mauve
#

Finally, Useable Community Center will have LedgerBook technology!

clever sinew
#

Cool thank you

latent mauve
#

(thanks rokugin, you're the best)

inland cedar
#

Is there an advanced player here playing with Market Town and seeing the CP not loading the grange display on the festival day?

next plaza
tiny zealot
#

(i am paranoid and it's not critical. the current release works)

blissful panther
#

hg changes, on the other hand... /j

brittle ledge
whole raptor
brittle ledge
#

Wow, you did better with spoilers than I did SBVLmaoDog

velvet narwhal
#

aSDVnukelurk (i am now freed to clean up my 1.6.9 folder)

ivory plume
proven vigil
#

Woohoo!

blissful panther
#

It has happened.

velvet narwhal
whole raptor
#

Not for me SDVkrobusgiggle

latent mauve
#

I had to close and reopen Steam for it to find the update. 😉

blissful panther
#

It initially didn't for me, I just forced it to verify the game files.

velvet narwhal
#

oh i had to turn off beta

blissful panther
#

Quicker than restarting Steam!

tiny zealot
#

well, now my spouse room divides by zero, so i'm glad i waited

DivideByZeroException: Attempted to divide by zero.
   at StardewValley.Extensions.FrameworkExtensions.AddTileSheet(Map map, String id, String assetName, Int32 tileSize) in D:\GitlabRunner\builds\Gq5qA5P4\1\ConcernedApe\stardewvalley\Farmer\Farmer\Extensions\FrameworkExtensions.cs:line 146
   at StardewValley.GameLocation.ApplyMapOverride(Map override_map, String override_key, Nullable`1 source_rect, Nullable`1 dest_rect, Action`1 perTileCustomAction) in D:\GitlabRunner\builds\Gq5qA5P4\1\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\GameLocation.cs:line 1661
   at StardewValley.Farm.addSpouseOutdoorArea(String spouseName) in D:\GitlabRunner\builds\Gq5qA5P4\1\ConcernedApe\stardewvalley\Farmer\Farmer\Locations\Farm.cs:line 1377
   at StardewValley.SaveGame.loadDataToLocations(List`1 fromLocations) in D:\GitlabRunner\builds\Gq5qA5P4\1\ConcernedApe\stardewvalley\Farmer\Farmer\SaveGame.cs:line 1944```
etc.
blissful panther
#

...oh no.

ivory plume
#

(I'll look into that after the initial update wave.)