#making-mods-general

1 messages · Page 416 of 1

scenic pecan
#

yeah rest sure did do do that

#

How do i open the decompiled folder in vsc?

#

do you know how to do that?

lucid mulch
#

tbh I don't export files out of ILSpy at all and do all my searching and navigating in it, because I love ILSpy's searching and analysis tools

gentle rose
brave fable
#

(unless you mean vsc to be visual studio community 2022, which is fine)

#

(aka. visual studio)

brave fable
#

anyway, the goal of all this decompiling and such is to give you the full codebase to look over for your project

#

you'll want to make a new separate project following the getting-started guide on the wiki as a launchpad, and from there work out spawning monsters, and then spawning monsters on crops harvested

#

spawning monsters is fairly trivial, you'd just use something like new Bat("Bat", new Vector2(12, 24) * Game1.tileSize) to make a bat at the given map pixel position

#

getting the entry point to spawn monsters to be on crops spawned is the harder part, so once you've sorted the monster spawns we can give that a look

plucky girder
#

Mod idea
Amar that divides up the introduction quest by mods

brave fable
#

!modideas SDVpuffercowboy

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

drowsy pewter
#

i have a mod idea, open world stardew

#

oh wait i cant make that joke anymore

gentle rose
#

(but also I'm not convinced that's strictly possible without some cursed harmony patches on content patcher, since the game doesn't know which mod each NPC came from)

drowsy pewter
#

you'd probably just care about expansion mods with a significant amount of npcs in one region, so it may be a manually mantained list

brave fable
#

honestly bewildering why i keep doing this to myself. it should be studied

#

i was thinking about doing some hakama to go with it but that was so many hours ago

drowsy pewter
#

I'm also wondering why you're doing this to yourself

brave fable
#

noone else has made yukata in the five and a half years this mod has been up. thion k of the roaylties

obtuse wigeon
#

NPCs sort of work with open world, their pathing is very muchbroken as they tend to want to go through the wilderness instead of town to get to the busstop for instance

brave fable
#

fonoty d[p

calm nebula
brave fable
#

bug: ur sleeves dont get drunk

calm nebula
#

Wow! That's a lot of frames for a cat

brave fable
#

oh wait they do but they dont show the meat behind them so its less red

gray bear
#

what is happening

obtuse wigeon
#

the format in CP pack should match the Content Pacther version in the manifest right? so rn with CP 2.8.0 being released, the format should be 2.8.0 too

gray bear
#

yeah

obtuse wigeon
#

perfect thank you

lucid mulch
#

in general yes, though it only really matters if you need the features in the newest version

gray bear
#

a slightly lower version should be fine yeah

obtuse wigeon
#

I just noticed the wiki was out of date and had 2.7.0 so I was just going to update it, but I have forgotten my wiki acc login details so I may not be able to

lucid mulch
#

so for 2.8 for example going from 2.7 to 2.8 would only be relevant for using Range |step, but it doesn't have migration checks ensuring you can only use it on the correct version

obtuse wigeon
#

Gotcha thank you!

#

It seems the format in the code blocks on the wiki don't actually exist on the page but in a seperate location

lucid mulch
#

pathos being a mediawiki god has it templated

agile flame
#

just need a quick help please i can't seem to find the right format for tools and items and furniture i read the wiki but still not sure how they should look and chatgpt can't think straight so can someone help please? here is my current format

{
  "Astraios.Motrin.NightmareMayhem_DreamAxe": {
    "ClassName": "Axe",
    "Name": "Dream Axe",
    "DisplayName": "Dream Axe",
    "Description": "Made for the dream world, this axe slices through even the thickest wood as if it were mist.",
    "UpgradeLevel": 4
  }
}
{
  "Astraios.Motrin.NightmareMayhem_NightmareFragment": "Nightmare Fragment/150/-300/Crafting -20/Nightmare Fragment/A shard of nightmare energy, pulsing faintly. It can be fused with others."
}
{
  "Astraios.Motrin.NightmareMayhem_DreamgateBed": "bed/1 2/1 1/1/0/-1/Dreamgate Bed/A special bed used to enter the dream world./0/Mods/NightmareMayhem/dream_bed"
}

obtuse wigeon
#

(code blocks use 3 backticks, the key below escape, ` )

drowsy pewter
#

Please don't ask chatgpt for any help with modding

obtuse wigeon
#

also please don't use chat gpt it's useless for stardew

lucid mulch
#

do ```json if you want it to be colour coded

agile flame
drowsy pewter
#

Fine I'm just saying don't

lucid mulch
#

AI developed code isn't allowed on this discord

agile flame
agile flame
lucid mulch
agile flame
#

image not code

lucid mulch
#

it explicitly says code as well

agile flame
#

also i took the format from gpt

drowsy pewter
#

to answer your question, tools and items and furniture have different formats. You'll want to look at each individual wiki page as well as look at the unpacked game files to learn how the format is

#

Okay

#

thats the problem lol

#

Have you unpacked the game files

agile flame
#

thank you

drowsy pewter
#

!cp

ocean sailBOT
drowsy pewter
#

start with this

obtuse wigeon
#

if you need to unpack the files

#

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

drowsy pewter
agile flame
#

thank you so much

drowsy pewter
#

You're definitely welcome to come ask for help if you're not sure where to start

agile flame
#

Believe it or not im like 60% done with the code im great at c# just got no experince in making sdv mods although i have a friend who has been making mods for like 2 years

dusky sail
#

Everyone starts somewhere. I think the best way to learn is to just start doing it yourself

agile flame
#

wish all codding communities were like this

lucid iron
#

If you want you can put the content edit bits on C# too

agile flame
#

never got used to writing good comments

obtuse wigeon
#

Writing useful comments is also something I struggle with too, just remmeber it's better to have too many comments than not enough, being annoying is easier than being confusing

agile flame
#

last community i was in clicking a link even if it was verfied was prohibited they used to hack you thru making you their friend for years and then rating you taking all of your stuff and your account and selling them that is completly different from what i have seen here

modest dagger
#

bruh

blissful panther
#

I can't help it. I have to take part.

calm nebula
#

Can someone explain plz

blissful panther
#

Remember the mayo meme mod explosion?

#

It's... that, but tortillas.

lucid mulch
#

You dont have to make a tortilla mod, you can always release something else

dusky sail
#

Im kind of scared of whatever tortilla mod requires MEEP and BETAS

calm nebula
#

Sounds awesome!

#

I could do with a tortilla

obtuse wigeon
#

I've got 4 packs in the freezer, I'll send you some via bluetooth

lucid mulch
#

how is it that I procrastinated with releasing speedy solutions and accidently released it after 5 months during a meme frenzy

fading walrus
blissful panther
obtuse wigeon
#

Speedy Tortilla solutions, It just optimises the tortilla, thats it, just the tortilla

fading walrus
obtuse wigeon
#

I have been trying to dismantle the blur to figure it out but it's so very hard

lucid mulch
#

its a certified ShareX™ blur you wont defeat it

obtuse wigeon
#

"Baby popadoms with something" is what I've got for the desciption so far, which I know is probably not even close

verbal narwhal
#

if I register a custom tile action, is writing a content pack json that informs about where the tile action should take place and specifies on which map and provides a new tmx enough? or do you need to enter a custom property to the tile on the correct layer in tiled on that tmx too?

#

oh man I am so confues about this

oblique meadow
#

Ok. I’m sorry. I just woke up. Normally I understand those words but I’m struggling with the way you put them together

#

Can you rephrase? I’m not sure I understand

lucid iron
#

You can do an EditMap MapTiles to add the tile action

#

Sample

verbal narwhal
#

but what do you write in your c#?

#

to make it read that?

gentle rose
drowsy pewter
#

I assumed they were working together but.yeah i was also confused

drowsy pewter
#

i spent real minutes of my lifespan on that

blissful panther
drowsy pewter
#

LMAO

#

You poor thing

gentle rose
obtuse wigeon
#

Whould this work how i expect? It would load the data files in Data/mod.one/data.json only when mod.one is present? Dynamic tokens are still new to me

  "DynamicTokens": [
    {
      "Name": "SupportedMods",
      "Value": "mod.one, mod.two, mod.three"
    }
  ],
  "Changes": [
    {
      "Action": "Include",
      "FromFile": "Data/{{SupportedMods}}/data.json",
      "When": {
        "HasMod": "{{SupportedMods}}"
      }
    }
  ]
drowsy pewter
#

I was thinking of animating it so it works with confused tortillas

#

but i think my mod users would prefer i work on actual mods

lucid mulch
#

FromFile wont split like that I dont think

gentle rose
dusky sail
#

a token can only ever be one value im pretty sure

obtuse wigeon
#

If they don't understand that tortillas come first they don't deserve your mod

lucid mulch
#

and the patch split logic runs before dynamic tokens evaluate

gentle rose
drowsy pewter
#

Lmaooooo

gentle rose
lucid mulch
obtuse wigeon
dusky sail
#

oh hm

#

i am always learning new things

obtuse wigeon
#

oh wow that was a lot of replys bahaha

gentle rose
#

sinz, while you’re here, are tbins more performant than tmxs in stardew?

lucid mulch
#

yes

#

thats why SpeedySolutions turns all tmx into tbin

obtuse wigeon
gentle rose
gentle rose
obtuse wigeon
#

Ahh okay gotcha

gentle rose
#

(how come they’re more performant, not how come you’re using the better version, obviously)

lucid mulch
#

tmx files first deserialize their XML into the TMXMAp format and then do all sorts of deeply nested hell to transpose that contents into a Map instance.
while TBin deserializes directly into the Map instance

gentle rose
#

interesting

lucid mulch
#

and Binary deserializion from reading a stream is faster than xml decoding, along with smaller file sizes

gentle rose
#

makes sense all in all

lucid iron
tiny zealot
#

snarfing a binary directly to a class instance is a lot faster than even just the xml parsing step (famously zalgo), i would guess

lucid iron
#

If you want to look at the code path it's GameLocation performaction iirc?

lucid mulch
#

the biggest one is avoiding the data transformation, and for SpeedySolutions once its a tbin I can just in-memory cache the TBins as a immutable cache as deserializing that binary data structure is faster than deep cloning a Map instance

verbal narwhal
#

I just cannot seem to understand that

#

oh I will do that

gentle rose
#

where is the tbin format from, anyway? monogame? ik casey made the tiled tbin support plugin but idk what was used until then

verbal narwhal
#

but I think I rewrote too much of my code and now I myself dont really understand it anymore

lucid iron
#

How much do you know about functional programming

lucid mulch
#

its the native format of Tide / xTile

gentle rose
#

ah, I see

verbal narwhal
#

are you asking me, chu?

lucid iron
#

yea

cold elk
#

is there a sprite sheet, as place holder? like a all greyed out NPC for mod creators to try

lucid iron
#

like are you aware of the concept of passing around a function (delegate) as an object

gentle rose
#

haha stardew is the only non-demo game on the xtile/tide home page SDVpuffersquee

verbal narwhal
#

if so, I have taught myself c# by only looking at tmodloader mods and tmodloader code - so I understand what things can do and which syntax they use but I am missing out on many terms

finite ginkgo
lucid iron
#

then ill avoid too much terminal comp sci brained words SDVpufferchickluau

lucid iron
verbal narwhal
#

why do all the things have multiple cryptic names

gentle rose
#

well they’re things you can call

verbal narwhal
#

yeah callables I understand

lucid mulch
#

fun fact function delegates and events was arguably the first feature of C# and its difference from java

gentle rose
#

delegate is also a direct description but a little more technical iirc

verbal narwhal
#

passing around a function (delegate) as an object
but his sentence was like dead

#

but I mean I get it

lucid iron
#

yes well, terminal comp sci brained Dokkan

verbal narwhal
#

disciplines are like that

#

but I can show you my current confusing code that tries to enable easy registering for frog tanks

lucid mulch
#

we literally call it code, if it wasn't at least partially cryptic would we be doing it justice

verbal narwhal
#

but I dont know if this works and if a simple cp.json would work + a tmx

#

that is true

lucid iron
#

quick walk through of the code path i speak of tho
GameLocation.checkAction - this is the method used whenever player tries to interact with a tile
and somewhere inside there:

// game attempts to read the tile property Action from layer Buildings
tileActionString = doesTileHaveProperty(tileLocation.X, tileLocation.Y, "Action", "Buildings");
// a bit later, game calls performAction on the value
return performAction(tileActionString, who, tileLocation);

later, in GameLocation.performAction

// tries to fetch a registered tile action to call, instead of falling into vanilla logic that lives in the rest of GameLocation.performAction
if (registeredTileActions.TryGetValue(tileActionString, out Func<GameLocation, string[], Farmer, Point, bool> callableTileAction))

registeredTileActions is a dict that can be added to via GameLocation.RegisterTileAction

verbal narwhal
#

and it also makes it cool and myserious

lucid iron
#

callableTileAction is the thing you give to game via GameLocation.RegisterTileAction and so all the behaviour post interaction happens inside there

#

you don't have to worry about how the interaction happens, since that is a vanilla game system

verbal narwhal
#

but I feel like this makes sense if I hardcode it

#

but how to not hardcode that?

agile flame
# fading walrus What kind of hellhole-

its called hypixel skyblock a gamemode inside a server inside minecraft i place it at a worse state than cod players like if you ask anyone who plays why do you play they say its addicting i never asked anyone and said i love it all are addicted

lucid iron
#

hardcode what ConfusedAnime

verbal narwhal
#

an example tile with that action so that the content pack can edit that?

lucid iron
#

Well you do have to add the Action from the content side yes

#

I don't think hardcoding means what you think it means tho

verbal narwhal
#

hardcoding is specifing a location to a script instead of making it... transitive?

lucid iron
#

Hardcoding in context of sdv modding is usually locking the logic inside C# code that cannot be changed easily

gray bear
#

when editing a building with content patcher is it possible to just, change it's size? can't say i saw a mod that did that

tender bloom
#

Instead of making it a variable?

verbal narwhal
#

ah yes

tender bloom
#

Size should be part of building data yes

gentle rose
#

also I’m not sure what you mean either by specifying to a script or by transitive

tender bloom
#

Maybe I’m too math brain but transitive makes no sense to me

lucid iron
#

You can easily change where the tile action is applied, and the tile action callable gets to know which tile it is called from

#

So I wouldn't consider this hardcoding

verbal narwhal
#

making it require a specifyable object?

obtuse wigeon
gentle rose
obtuse wigeon
#

oh wait it might be C# hadn on ill checlk

lucid iron
#

Anyways i am abscond now i hope other people can help you out

tender bloom
#

“All windows are 1 tile wide” is hardcoding to me

verbal narwhal
#

ah i only know the linguistic meaning of transitive

lucid iron
#

My pond mod need c# to fix draw nonsense, not the size

verbal narwhal
#

but I have a masters degree in latin so

#

uh

lucid iron
#

You can just change the size it's a field

gentle rose
tender bloom
#

“This object can have bomb radius specified by context tag to any number” is not-hardcoding to me

gray bear
gentle rose
#

the maths meaning is if a=b and b=c then a=c

gray bear
#

so if i were to uh, make the pet bowl 1x1 instead of 2x2, would that be a targetfield edit

tender bloom
#

I think so yeah

verbal narwhal
#

e.g. enjoy

gentle rose
#

(I think. I’m not awake enough to words rn)

verbal narwhal
#

you cant just say "I enjoy"

tender bloom
#

I’m not 100% sure what that would do to the actual image bit

verbal narwhal
#

you have to say I enjoy "something"

tender bloom
#

Since it’s both 2x2 footprint and 2x2 image rn

verbal narwhal
#

or maybe need is better than enjoy

gray bear
#

i'd assume i'd need to provide a different texture

verbal narwhal
#

because honestly, english doesnt seem to have many transitive verbs

#

i mean you can say "i'd prefer not to"

#

weird language

tender bloom
#

I don’t think all non-hardcoded things require an input variable. For example, if it’s a property like “glowing” and it’s just that you add a context tag to make something glow, the C# function behind it won’t need an input variable because it’s a binary state of being

#

(Ignore that light glows have details to them for the purpose of this analogy)

verbal narwhal
#

but it has to make something glow, right?

tender bloom
#

It’s implied by the context tag being on the object

verbal narwhal
#

honestly that might be a really good thing to talk about

tender bloom
#

It can be a function in the object’s class, for example, and thus have access to the instance by default

verbal narwhal
#

because this might be the same reason why im confused

gentle rose
verbal narwhal
#

oh pet is great for that!

tender bloom
#

Yeah, that’s a better example

gentle rose
#

I’d say hardcoding = tying functionality to a specific value. so if I wrote something that made chairs glow, that’s hardcoded, but if I made everything with the context tag glow_item glow and gave that context tag to chairs, that’s not hardcoded

gray bear
#

actually how would a smaller pet bowl texture look like thonk i experiment

lucid mulch
#

for me non-hardcoded is data driven

gentle rose
#

so similar, yeah

tiny zealot
#

hardcoded to me means baked into the code. you have to change the code to change the behavior

urban patrol
#

(linguistics and latin mention 🔥🔥🔥)

gray bear
#

i don't think i understand how buildings work

tiny zealot
#

but obviously a whole lot of things are "hardcoded" so typically the term applies when it's something that could (or, in one's opinion, should) not be baked in

obtuse wigeon
#

it may be easier to make a custom pets bowl thats 1x1 rather than modifying the existing ppet bowl

gray bear
#

custom building? would that even work tho

lucid mulch
#

its a sliding scale, so while you can make almost anything prismatic fairly easily data driven, the speed and offset are hardcoded

obtuse wigeon
#

pet bowls are just buildings in the game I think, if their function isnt hardcoded to just the specific vanilla ones you should be able to define a new one using CP similar to any custom building

gray bear
#

i think their function might be hardcoded

#

or not? wonder if setting it so buildingtype would work

obtuse wigeon
#

unrelated to pet bowls, can I define a custom json dictionary in a content pack? so that if the token is equal to the key, it uses the value instead?

gray bear
lucid mulch
#

so.. i18n?

obtuse wigeon
gray bear
#

i'll try that out

gentle rose
verbal narwhal
#

ok so I register my tileaction
I write out what my tileaction does
spawn frog, be clickable once per day etc
i write something that parses on the buildings layer for the property action with my custom tileaction string as value

is that it?
is an additional tmx enough?
or does that need a content pack json q.q

obtuse wigeon
lucid mulch
#

no one said i18n is exclusive for translations, its a keyvalue store

gray bear
#

how would adding a custom buildings with cp code even look like

verbal narwhal
#

I dont know why, I have read so many times through the content pack and content patcher wikis and tutorials and readme and it just makes my head spin

obtuse wigeon
gentle rose
gentle rose
obtuse wigeon
gray bear
#

i was sure uw ere gonna suggest ur one lmao

gentle rose
obtuse wigeon
#

my one is a mess and should never be used as a reference SDVkrobusgiggle

gray bear
lucid mulch
lucid iron
#

Thus you don't need a whole tmx, just editmap maptiles is enough

gray bear
#

buildings have a lot of fields...

verbal narwhal
#

ok! so I say if event seen edit map and swap in -

twilit quest
#

Why is this letter triggering multiple times, please?

    "Action":  "EditData",
    "Target": "Data/TriggerActions",
    "When": {
        "Query: {{DLX.Bundles/DaysSincePurchase:glymr.BrokenFarmhouse.FixUp25}} > 0": true,
        },
    "Entries": {
        "glymr.BrokenFarmhouse.Upgrade03Mail": {
        "Id": "glymr.BrokenFarmhouse.Upgrade03Mail",
        "Trigger": "DayStarted",
        "Condition": "{{FarmhouseUpgrade |contains=3}}",
        "Actions": [
            "AddMail Current glymr.BrokenFarmhouse_UpgradeMail_03 now",
                ],
        "MarkActionApplied": true,
            },
        },
    },```
verbal narwhal
#

ok i will read again editmap maptiles

lucid mulch
#

almost all of them are optional, I'd recommend doing an unpack with the cli argument to ignore defaults

gray bear
#

wih the what

lucid iron
#

Bea what's the goal

verbal narwhal
#

oh maybe what I wrote is actually already working then schmoovin

gray bear
#

im making a pet bowl that is 1x1 instead of 2x2

verbal narwhal
lucid iron
#

Just make it OX\nOO collision then

obtuse wigeon
lucid iron
#

That's less hassle than changing the dimensions

gray bear
#

those are the collison stats for the bowl though

agile flame
#
{
  "Action": "EditData",
  "Target": "Data/Weapons",
  "Entries": {
    "DreamSword": "Sword/75/120/0/0/3/Dream Sword/A blade forged from condensed nightmares. It vibrates with haunting energy."
  }
}

that is right format right?

lucid mulch
#

CP doesn't have a method of iterating over the values in a set to do that style of All-in-one include even if you solve your KV lookup problem

agile flame
gentle rose
gray bear
#

do BuildMaterials default to nothing?

agile flame
#

i have been looking for such thing for 3 days

lucid iron
#

If you were Canadian it would have been obvious (/joke)

gray bear
#

thonkies

tiny zealot
gentle rose
lucid mulch
agile flame
tiny zealot
gentle rose
#

ah, I see

lucid mulch
#

neither do the other 1.6 item pages outside of Items umbrella page itself

agile flame
gray bear
#

hey @oblique meadow do you know anything about adding custom buildings? perhaps this task too large for me

oblique meadow
#

Yeah. It’s not super hard. What do you want to know?

lucid iron
#

Hm the watering tile on a pet bowl might be hardcoded

gray bear
lucid iron
#

You could probably make it 2x1 but not 1x1

gray bear
#

oh noes

obtuse wigeon
gray bear
#

my code didn't immediately break so that's nice

tiny zealot
#

(C#) so, Utility.ForEachItem iterates over everything in the world, which is great, but at the moment i care only about items in chests and inventories. is there a similarly convenient call to do that, or a good way to check the context of the current item in the big iteration? or do i just need to extract the parts i care about from the big pathos implementation

gray bear
gray bear
#

inchresting

brittle pasture
twilit quest
#

@gentle rose Can I have multiple conditions?

gray bear
#

yeah i think the water is indeed hardcoded

#

pain

#

or is uh, just doesn't work

brittle pasture
#

(I’m sure you can do something with ForEachItemContext but it was more convenient for me to just do it manually than type testing everything in the list)

gray bear
obtuse wigeon
#

Looks like you may have the collision a bit bugged

gray bear
#

is this a collision map issue or...

            "Action": "EditData",
            "Target": "Data/Buildings",
            "Entries": {
                "{{ModId}}_Pet_Bowl": {
                    "ID": "{{ModId}}_Pet_Bowl",
                    "Name": "Small Pet Bowl",
                    "Description": "Pet bowl but smaller. what more can I say?",
                    "Texture": "{{ModId}}/Data/Buildings",
                    "BuildingType": "StardewValley.Buildings.PetBowl",
                    "Builder": "Robin",
                    "BuildDays": 0,
                    "BuildCost": 5000,
                    "CollisionMap": "\n          OX\n          OO\n        ",
                    "DrawShadow": false,
                    "Size": {
                        "X": 1,
                        "Y": 2
                    },
                    "SeasonOffset": {
                        "X": 0,
                        "Y": 32
                    },
                    "SourceRect": {
                        "X": 0,
                        "Y": 0,
                        "Width": 16,
                        "Height": 32
                    }
                }
            }
        }```
#

i have no idea how the collision map works

obtuse wigeon
#
"CollisionMap": "
  OX
  OO
",

I think this would work

gray bear
#

vscode code did not like that

obtuse wigeon
#

"CollisionMap": "OX\nOO",
or this

gray bear
#

ah ok ty

#

still walkable thonk

obtuse wigeon
#

Oh wait I think X\nO is right because the size is 1 x 2

#

I was going off vanilla size and forgot you changed it

gray bear
#

right, size thonk

obtuse wigeon
#

(It may need a game reload and new building, not sure if this is a persistant setting or not)

gray bear
#

uhm so u can't like, walk trought it but it does do that

#

is that just a setting. it also won't fill with water and i am scared

gentle rose
obtuse wigeon
#

give "SortTileOffset": -1 a try

#

or -1.5

#

I think thats the right field for making it draw lower

gray bear
#

doesn't seem to do anything, but might need to reload

calm nebula
lucid iron
#

U need positive number

calm nebula
#

I swear that was added 1.6.9

gray bear
#

oh yeah 1 works, yay l_party_ila

#

still, no water though

tiny zealot
gray bear
#

how can i make u real

lucid iron
#

Did u copy the tile property

gray bear
#

o

#

there are 3, do i need them all?

verbal narwhal
#
    "Format": "2.8.0",
    "Changes": [
        {
            "Action": "EditMap",
            "Target": "Maps/spouseRooms",
            "MapTiles": {
                "Position": { "X": 1, "Y": 15},
                "Layer": "Buildings",
                "SetProperties": {
                    "Action camiska.SebFrogTank"
              }
            }
            "When": {"HasSeenEvent": "9333220"},
        },
    ]
}```
#

like this?

lucid iron
#

Location name not needed

lucid mulch
#

looking at the PetBowl code, it looks like for Watered state it offsets the texture by the intended width of the texture

verbal narwhal
#

cool thanks!

#

maptiles, position refers to the position on the maps/spouserooms.tmx, right?

#

not the position in the actual farmhouse?

lucid mulch
#

dont forget to close the MapTiles object

lucid iron
#

Yeah position on spouse room tmx

#

Set properties should be a dict too

brittle ledge
gray bear
lucid mulch
limpid talon
#

gang I need help I know it's been a while OK so,
I'm finally getting into custom NPC heart events (more importantly, in custom locations) and I swear I've looked at every tutorial on this earth (even page 2 of google) and there's not a single way I'm getting this event into the game at the current rate I'm going.
Does anyone know where to get a good tutorial (On implementing the event, not the actual scripting of it) that isn't years out of date and is actually comprehensible 😭

tiny zealot
#

if it's in a location you added, make sure you did a blank load to Data/Events/yourlocationhere

gray bear
#

my sourcerect is 16x32 since i made it 1x2

lucid mulch
#

then the watered state is the 16x32 region to the right of it

gray bear
#

i think, i see the problem

#

nope ok

verbal narwhal
gray bear
#

ok i have, figured it out haj_party_comic

dusky sail
#

Slurp

gray bear
#

since it works like that i can prolly do a 1x1

obtuse wigeon
#

does the bowl specifically need to be 1 x 2? or does 1x1 also work?

#

beat me to it

gray bear
#

i check

lucid mulch
#

yeah theres nothing hardcoded to the size in the PetBowl code, other than the hardcoded relative position of the water texture

gray bear
#

oh it, just stays watered? sweats

lucid mulch
#

most of the code is just figuring out the correct sort depth to ensure it renders on top

gray bear
#

i slept and water still there

obtuse wigeon
#

do you have a pet currently?

gray bear
#

oh i dun

#

first one doesn't even love me enough

lucid iron
#

I looked again and i was wrong about the hardcoding Sleepden

obtuse wigeon
#

I think it only empties when you have a pet

lucid iron
#

So you can make 1x1

gray bear
#

nice

lucid iron
#

Just debug build another one

gray bear
#

another pet?

lucid iron
#

But yeah if u do u need to adjust the tile property

#

Another bowl

limpid talon
lucid mulch
#

lookup anything will tell you if its actually watered I think, but yeah the bowl will only empty if theres an assigned pet that drinks it

gray bear
#

need moar pets

obtuse wigeon
#

ye just build another pet, they come in kits nowadays DIY animal

gray bear
#

relationship with pets isn't configureable with cjb cheats

#

is there a console cmds somewhere

obtuse wigeon
#

is it not? I thought it was

gray bear
#

can i just delete the old bowl

obtuse wigeon
#

probably

lucid mulch
#

you can have more than one pet bowl building

obtuse wigeon
#

it should automatically reasing the pet to a bowl if theres enough bowls

lucid mulch
#

particularly if you are cheating with build commands

gray bear
#

yes but atm i can't have more than one pet

calm nebula
#

There is a for that

gray bear
#

looks like u can't demolish ur first pet bowl

calm nebula
gray bear
#

oh! thank you atra

#

!!! unless im mistaken tho there isn't a way to demolish ur first ever pet bowl buildings?

agile flame
#

can i make a quest with a penalty and timer in normal stardew valley or do i need some sort of a framework or c#?

gray bear
#

cukeblink did i miss an important field or is that hardcoded

lucid mulch
#

ah yeah that part is hardcoded to be 1.5 tiles offset from the top left corner

gray bear
#

can't win em all

lucid mulch
#

so you could do 2x1 easily enough then

gray bear
#

the people wanted a smol

soft lance
#

Hello everyone.

#

I'd like to ask a question.

#

We have gone from tortilla's, to them being in our drinks, our mayonesee, now as a blanket

#

What has happened to our world 🙏

gray bear
#

fish taco

lucid mulch
#

time to unrelease Speedy Solutions, the community went too far and doesn't deserve the game to be performant anymore

lucid mulch
#

I barely tolerated the tortilla meme grind, but combining it with the previous stupid meme of grandpa is a step too far

soft lance
ornate trellis
#

sometimes I dont know when yall in here are serious or joking

latent flame
#

-# (i assume SinZ is joking)

brittle ledge
#

Sinz, your performance mod looks great and I'm totally using it if I ever play the game again

#

Actual No More Lag

gray bear
#

me neither bc im also working on a tortilla mod rn
mod very good

ornate trellis
#

anyway, just came in here for a general question to the C# people because I had a spontaneous thought. how hard coding wise would it be to, like, make a lil building with the function like a pet fountain were it would let several pets drink from it? just a random thought i had cuz of Bea and the general thought of an army of pet bowls on a farm kinda looking cluttering

soft lance
#

jk

gray bear
#

no SBVMischief /j

brittle ledge
#

tortilla meme >>>>> mayo meme

#

hot controversial take, I know 😌

soft lance
#

I suck at art design

#

i dont think clouds relate to the mod so Ima remove that

gray bear
#

nah ur cooking

soft lance
#

not sure what im missing though

#

(im not pro at details sadly)

gray bear
#

maybe sea bg?

soft lance
#

yeah..probably lol

ornate trellis
#

have some fish floating around

oblique meadow
#

Color the clouds. Give them a slight colored tint to make them look more like coral. And put some small sea creature silhouettes in the background. Also, outline or dropshadow your title so it pops more. It blends in too much with everything else

#

You want the title to be the focus and everything else to be supplementary.

round dock
#

Oh wait, I think that's what already used.

#

Although, you could use the squidfest letter bg

soft lance
soft lance
#

where is that stored in game files

#

i can convert from xmb to png

gray bear
#

is anyone accepting C# comissions to like, fix an annoying thing in my smaller pet bowl mod

round dock
#

Still in LooseSprites

turbid oak
#

Well, I've only made two little practice mods but today I feel ready to start work on Pierre Hates You. I expect it to potentially take weeks and I may make more micro mods on the side. Just to be clear, every file that I'll need to edit is somewhere in the unpacked content, right?

soft lance
#

Only contains these

ornate trellis
#

its a seperate file

soft lance
#

do you know its name?

#

thats the letters.xmb

ornate trellis
soft lance
#

o

round dock
#

No, it's literally in the LooseSprite's folder

#

That and trout derby

soft lance
#

squidFestLetterBG.xnb

found

gray bear
#

i want this text to show up where the bowl is, but it's hardcoded

stark spindle
verbal narwhal
#
{
  "Format": "2.8.0",
  "Changes": [
    {
      "Action": "EditMap",
      "Target": "Maps/spouseRooms",
      "MapTiles": [
        {
          "Position": {
            "X": 1,
            "Y": 15
          },
          "Layer": "Buildings",
          "SetProperties": { "Action": "camiska.SebFrogTank" }
        },
        {
          "Position": {
            "X": 2,
            "Y": 15
          },
          "Layer": "Buildings",
          "SetProperties": { "Action": "camiska.SebFrogTank" }
        },
        {
          "Position": {
            "X": 3,
            "Y": 15
          },
          "Layer": "Buildings",
          "SetProperties": { "Action": "camiska.SebFrogTank" }
        },
        {
          "Position": {
            "X": 1,
            "Y": 16
          },
          "Layer": "Buildings",
          "SetProperties": { "Action": "camiska.SebFrogTank" }
        },
        {
          "Position": {
            "X": 2,
            "Y": 16
          },
          "Layer": "Buildings",
          "SetProperties": { "Action": "camiska.SebFrogTank" }
        },
        {
          "Position": {
            "X": 3,
            "Y": 16
          },
          "Layer": "Buildings",
          "SetProperties": { "Action": "camiska.SebFrogTank" }
        }
      ],
      "When": { "HasSeenEvent": "9333220" }
    }
  ]
}

can i make this "if any player that exists (but isnt necessarily playing right now) in the world has seen event"?

#

or do i need to make that in c#?

soft lance
ornate trellis
#

👍

soft lance
#

tysm

gray bear
#

Lucy this might be more of a #making-mods-art thing, i would say maybe turn up the saturation on the background tho

oblique meadow
# soft lance

Small feedback. From a colorblind guy. The text is getting lost. They blur together

gray bear
#

contrast should def go way up

oblique meadow
#

It's good. Its just...a lot of bright mingling together

limpid talon
gray bear
#

contrast would help

oblique meadow
limpid talon
#

that's fair, do you have any idea what the exact problem would be though? All I've changed is trying to add this cutscene

oblique meadow
#

Don't know specifically since I can't see your code but it looks to be focused around Data/Events/Custom_CityApartments4

limpid talon
#

my god I had a look and my smart butt managed to produce the exact same codeblock twice

oblique meadow
#

That would do it

stark spindle
#

@gray bear sorry which specific mod is it?

limpid talon
#

hehehe

gray bear
stark spindle
gray bear
limpid talon
#

alright I've now removed the double codeblock, new issue is that the cutscene still won't play whenever I enter the loading zone with 2 hearts, does anyone have any ideas?
The smapi logs show up completely empty
(context, I've followed every tutorial on the planet and didn't understand a single one of them)

obtuse wigeon
# gray bear

You should publish it, it's certainly a mod I've been too lazy to make myself bc I never build in even numbers

gray bear
#

i should figure out i broke it first

vital lotus
#

Wait I'm actually not sure how the format should be 👀🤔

obtuse wigeon
verbal narwhal
#

ahh

gray bear
verbal narwhal
tiny zealot
#

hey you should know i just published this. thanks (?)

gray bear
#

ichor ur the hero we deserve

obtuse wigeon
brittle ledge
#

your preconditions require 2 hearts + the NPC on that map, are they there?

limpid talon
#

yes :)

brittle ledge
#

Have you already viewed the event on that save?

limpid talon
#

nope, and i start a new save on every test anyway

brittle ledge
#

I assume you use CJB to set their hearts?

limpid talon
#

yes that's right

gray bear
brittle ledge
#

And the event plays when you use debug ebi, it's just not triggering naturally?

obtuse wigeon
#

Ahhh ye descriptions are needed on skins too

limpid talon
#

I haven't gotten the event to trigger a single time, since I'm not entirely sure if I've even implemented it correctly

true coyote
#

So, for the animals that show up outside marnie's, is it possible to set it to one mods sprites? Right now it randomly chooses a sprite from all mods that change the cow, in my mod list, or vanilla

brittle ledge
#

Use debug ebi youreventname to run the event (ignoring preconditions), you can test with that.

limpid talon
#

alright let me give that a try

brittle ledge
#

You should see 'sent command, but there was no output' in the log and the event should start ingame if it's working.

limpid talon
#

firing up stardew rn, will report back :3

obtuse wigeon
#

Time to dig through 16 mods source code, this is certainly one way of improving with C#

limpid talon
#

the cutscene is playing with the debug command! it's very broken but that's ok I probably just scripted it wrong

#

now I wondering why it's not showing up naturally...

latent mauve
#

Just to check, but your NPC name in the preconditions is the Internal ID and not just the display name?

limpid talon
#

Is this correct? Or should it be modid_Babey

latent mauve
#

How is that NPC defined in your Data/Characters entry?

limpid talon
#

I'm presuming i need modid now that I'm looking at it lol

#

I've been on the custom map grind lately so I've gotten used to prefixing everything with Custom_

brittle pasture
#

if you’re using CustomLocations that’s deprecated

limpid talon
#

yeah i am, I've been meaning to switch that over at some point

latent mauve
#

The NPC's internal name should be your key in the Data/Characters entry, so yes, {{ModId}}_Babey is what needs to go in the precondition

lucid mulch
#

since 1.6 / cp 2.0 the constraint that the old CustomLocations functionality that locations had to begin with Custom_ was removed anyway

limpid talon
#

the cutscene is completely working now! thanks guys

lucid mulch
#

as that was just originally there to ensure it didn't clash with TXML/vanilla added locations which was made mute by Data/Locations having the native functionality

limpid talon
#

I do have a tutorial waiting for when i do plan to switch everything over, so I'll get to that when it starts to pose a serious problem

lucid mulch
#

using CustomLocations will become mildly annoying once you want to actually use Data/Locations for your map as it'll clash with CustomLocations editing the same entry

limpid talon
#

mmm that's fair

neat gazelle
#

Hi, quick question: with content patcher, how do you force the config stuff to require an integer?
More info: this

        "FloatX": {
            "AllowValues": null,
            "Type": "Int",
            "Default": 15,
            "Min": 2,
            "Max": 19,
            "AllowMultiple": false,
            "AllowBlank": false
        },

nets this

08:20:48    WARN    Content Patcher    Ignored KTG's Slime Hutch Interior > Floating Horizontal: invalid X: that token isn't restricted to integers.
08:20:48    WARN    Content Patcher    Ignored KTG's Slime Hutch Interior > Floating Vertical: invalid X: that token isn't restricted to integers.
#

the examples in Pathoschild's author guide don't cover interger values

#

I don't think? haven't found it, I should say

obtuse wigeon
#

I don't think you can specifically, but I seem to remember people using Query to return an int value

gaunt orbit
#

is there a context tag for big craftables?

#

or maybe I should just check for placeable since sprinklers might not count as craftables SDVpufferthink

brittle pasture
#

sprinklers, torches and crab pots are some non-BC placeables

#

probably some other as well

gaunt orbit
#

jack o lanterns

lucid mulch
#

Query doesn't return int values, it does however turn off context validation so it can be used in places that normally require int/bool checks

gaunt orbit
#

crab pots count as machines though I think

brittle pasture
#

no they are (O) Objects

#

yes it’s cursed

gaunt orbit
#

do they not have a machiens entry anyways?

#

that's evil

lucid mulch
#

They use the crab area rules from data/locations but what those actually give is hardcoded

brittle pasture
#

nope, all their logic is handled in DayUpdate

drowsy pewter
#

yes its horrible

#

horrible things

#

thought you were calling me salty about crab pots and i was like yeah you're right

gaunt orbit
drowsy pewter
#

im salty about salt

brittle pasture
#

LMAO
no rock salt emote so table salt is the closest

brittle pasture
#

but the drop logic still reads from Data/Fish directly

lucid mulch
#

I might be confusing it for the crabpot trash table

brittle pasture
#

yeah crab pot trash chance is dehardcoded

gaunt orbit
#

aaah

#

that's terrible

#

still better than 1.5 though

brittle pasture
#

the specifically annoying thing about crab pot is you can’t reorder entries because Data/Fish is a dict

#

so any fish you add has to beat the vanilla fish first

#

you also can’t just add any arbitrary items because they have to be in Data/Fish

drowsy pewter
brittle pasture
#

also if you take the Mariner profession the game completely redoes how it picks crab pot fish

tiny zealot
#

selph why would you curse me with this knowledge

brittle pasture
#

I have many thoughts on the crab pot code as someone who stared into the abyss a little too long

#

the darkness must be spread

gaunt orbit
#

lowkey giving me flashbacks to that one time in 1.5 that I tried modding the fishing rod to fish up non-object items

neat gazelle
#

i think slime hutch maps and content patcher might just be cursed 😭 could well be coder stupids, too.
I can replace the map, but I can't do anything about where the game spawns the water troughs for the slimes, or ensure the slime incubator that the vanilla hutch comes with spawns. Looking at how other coders handled it, and I keep seeing "didn't" or map overlays.

lucid iron
#

Hardcoded iirc

#

How much do u want to fix it

neat gazelle
#

and my map overlays aren't working, even when I scraped trying to do a positioned map edit and went for an all over map overlay

drowsy pewter
#

i denounce the tortilla trend and further shenanigans. my lawyer is advising me to keep all information of my alleged involvement under wraps

lucid iron
#

Ok but cornucopia cooking will add more tacos right, to use all these tortillas

drowsy pewter
#

...we have a quesadilla

obtuse wigeon
#

For the token nerds (/pos), Is this a valid token syntax?

   "LocalTokens": {
      "ModName": "PlaceholderName",
      "{{ModName}}Extra": "AnotherPlaceholder"
   }
verbal narwhal
#

is the spouseroom data loaded after the farmhouse_marriage data (and farmhouse_2marriage?

neat gazelle
#

Quesadillas are lovely

lucid iron
#

Spouse rooms are a kind of dynamically applied map edit by the game

neat gazelle
#

Now craving cheese quesadillas

lucid iron
#

It should come after the marriage versions of the farmhouse yea

verbal narwhal
#

but if i do an editmap "Maps/spouseRooms",
"MapTiles"

it didnt load and i wondered if the patch applies it to the wrong spot because the spouseroom is so 6x10?

or do I need an on asset requested? (I thought i dont need that if i let cp handle that)

lucid iron
#

You can patch export the spouse room asset to see if your tiledata made it in

#

I also dont know which room is seb room there

verbal narwhal
#

the one in the middle left coluimn

turbid oak
#

Advice for where to start on a mod this big? I already made a mod that just makes Pierre nonsocial if you're a Joja member. I'm thinking of potentially making this as more small mods that go together but not sure how else to break it up. My only other mod experience is giving unique dialogue when a specific item is given to a specific character. Not sure if I should continue making micro mods to learn/practice skills before I start this one or not.

tiny zealot
#

my advice is not to break it up into little components unless you want people to use only some of them

#

for tackling the project, i would just pick one small piece and implement that (you have done this). then pick another small piece and add it in to the mod you already have. then pick another small piece, etc.
just do one thing at a time, get it working, check it off the list, move on

#

you'll learn things as you go and maybe want (or need) to revisit earlier pieces later. that's fine, although try to avoid doing that unless it's need

turbid oak
#

Also, everything I need to change is somewhere in the unpacked content files, right?

tiny zealot
#

all the stuff in your image is probably doable with data/content patcher, yes

#

when you get down to tacks, especially about the SVE stuff, there might be some tricks involved (SVE has a bespoke, closed-source C# component which may be doing some of the work, about the mayorship in particular)

lucid iron
#

The c# sauce is on GitHub

#

I PR'd it and everything

tiny zealot
#

oh, my mistake. i remember not being able to find it, but i may only have tried once

lucid iron
tawny ore
#

I find it funny that Pathos reformatted SVE

#

I'm sure there was discusson beforehand

#

If I'm going to continue to PR SVE for compatibility updates, I can at least make it better to look at

  • Pathos probably
obtuse wigeon
#

I mean, short and to the point, it's effective at least

severe spruce
#

I'm just gonna send out a request to new mod devs to please make sure filename paths have the correct casing, windows doesn't care but mac, linux and android do

obtuse wigeon
#

ahem RSV ahem

lucid iron
#

Good thing that i just kebab case all my stuff then

obtuse wigeon
#

they fixed it ik

tawny ore
#

I thought SMAPI fixes that for mods mostly

obtuse wigeon
#

not entirely, many things still have issues

drowsy pewter
#

hmm i havent got complaints

tiny zealot
#

a lot of stuff in stardew modding land is not case-sensitive, until it is by surprise for this one thing ha ha gotcha

lucid iron
#

Ik audio is a big one

tawny ore
#

Is that exclusively a C# mod issue, or does it also affect Content Patcher mods?

lucid iron
#

The absolutefilepath token is case sensitive for some reason

brittle pasture
#

I think CP normalizes file paths for you?

obtuse wigeon
#

I think CP mods aren't effected, but I know some smapi ones are

lucid iron
#

So i have to go rename ppl's ogg files sometimes

obtuse wigeon
#

(It's still good practice to follow the same casing though)

tawny ore
#

Once/if mods use a GitHub build system, that could be a thing that gets checked for

verbal narwhal
#

chu, and everyone else

thank you so much with bearing with me and my underdeveloped programming language understanding

sobble_pray ❤️

I finally got it to work and am almost there

(I accidentally freed the frogs in the new code)

lucid iron
#

Freedom

#

Liberty for all froge

lucid mulch
#

Smapi partially doesn't care about case sensitivity but only fixes a handful of places, it's in general safe to assume it always matters because it provides does

verbal narwhal
#

I mean I have also included a command in my mod to spawn them in a 1x3 area

so frogalypse could be turned into reality

autumn tide
#

hey! uhh how would one make an NPC move faster in an event? I want an npc to run somewhere rather than using the defualt walking speed

EDIT: wait just found it, nvm!

turbid oak
severe spruce
#

currently tweaking some mods to work better together, is there a way to stop NPCs from getting stuck on each other at map entrances?

tiny zealot
#

is the entrance the BusStop in particular

severe spruce
#

it's the most common one for sure

#

there's a few others as well but not as important

tiny zealot
#

i haven't really seen NPCs get stuck on each other during schedule navigation except at BusStop, typically trying to get to the desert festival

severe spruce
#

I thought it was the warp to RSV being too low at first but moving it up didn't fix it, not to mention NPCs coming from the valley also kept getting stuck at the entrance

tiny zealot
#

the issue on that one is usually that there's a mod editing the bus stop that didn't get the 1.6 memo that the map is wider now

severe spruce
#

honestly any mod that stops NPCs from colliding with each other would be great

tiny zealot
#

so they warp in from Town onto a map that is (1.5-era) narrower than expected, and then i'm not 100% on the exact details but they can't navigate to the next warp so they just give up

#

it's not that they are blocked by collision with other NPCs, it's that they can't proceed

severe spruce
#

I see

obtuse wigeon
#

The NPCs in my game don't collide with each other, Might be due to non destructive NPCs mod

autumn tide
#

how can I add a temporary bush to a map for an event? I want a character to freak out after something happens and then run and hide in the bush. if it's possible to add the bush shaking animation thing (that plays when you interact with the bush) when the NPC runs into it, that'd be great!

verbal narwhal
#

if I want the same thing that now loads onto the map be applied to a furniture, wherever it might be placed, I can just use basically my Action property as tile/furniture property?

(I have read and learned a new word in the wiki called scope creep)

#

I think this now needs MMAP, right?

lucid iron
#

spacecore or calcifer or mmap yea

#

Im sure a 4th framework will make this eventually

obtuse wigeon
#

2 cakes, or in this case hopefully 4 cakes eventually

#

I see why people prefix local tokens, this has become confusing very quick

limpid talon
#

do you guys have any idea why the event keeps looping on the dialogue box? this event is from a fork

gaunt orbit
#

source generator thing now handles GMCM configs. It registers all standard option types, enums, and pages. It also handles the gmcm events, config reading & writing for you. It also provides some optional hooks in case you want to add your own stuff.

lucid iron
#

Checkered DokkanStare

latent mauve
#

I've seen that one happen at least twice

hollow dust
#

hello, do you guys know to override a location's catchable fish, specifically how the "farmfishoverride" works on farm map property, but for custom location

urban patrol
#

note that your character will have trouble pathing into the bush, so warp them away right before they get there, maybe?

#

or play around with the viewport to hide that awkward transition

urban patrol
urban patrol
#

this is obviously horrible for compatibility but i assume that’s what you want SDVpufferthumbsup

hollow dust
#

ouh thanks youuuuuuSDVpufferheart SDVcharpam

agile flame
#

does anyone have a video or a wiki post that shows how to turn a c# into a dll without using visual studio im using visual studio code but i can't seem to make it a dll problems happen and i have .net 6 rn

lucid iron
#

Just do dotnet build

agile flame
limpid talon
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.

agile flame
#

quick question that might be dumb does smapi need to be in mods

limpid talon
#

ah right

limpid talon
urban patrol
limpid talon
#

the event gets stuck after the dialogue box in the chessyes event

urban patrol
#

does the same thing happen with chess no?

#

oh wait i see. you shouldn’t use switch event with a fork

#

the fork does the switching for you

limpid talon
#

uhhhh ok chessno just redirects to chessyes which then does end (cause chessno is currently broken)

#

oh

brittle pasture
limpid talon
#

i was just copying an elliott event for this, so i used what he used

urban patrol
#

have you read the wiki page for how forks work?

#

i can explain if it doesn’t make sense to you

limpid talon
#

I did, but i had a hard time comprehending lol

urban patrol
#

yeah they’re complicated lol (and soon to be deprecated in favor of GOTOs)

limpid talon
#

oh jeez

urban patrol
#

so the way forks work is that the label you have after the fork command will shunt the event to the labeled event. if it doesn’t get shunted, then the event continues to play while skipping the label command. so you can make chess yes the default, write the chess yes script in the rest of the original event, and just have chess no as a separate event

#

does that make sense?

tiny zealot
#

"soon" meaning when 1.7 comes out, which could still be years away

limpid talon
#

that makes sense. I plan to have a lot more branches that come off the ChessYes event though, where you actually get to play a few moves. Would it still be smart to have Chessyes be the default?

urban patrol
#

it’s up to you, but i think i would make chess no the default then, yeah

limpid talon
#

okay ^^ thank you! I'll get on fixing it then after i get off work

urban patrol
limpid talon
#

oh I will! Thank you ^^

urban patrol
#

(also in there is monty 7 hearts, under farm, which has multiple forks like you’re describing, but it’s a complete mess so only use it as an example at your own risk)

limpid talon
#

loll I'll have a look too

agile flame
ornate locust
#

forks are scary

autumn tide
urban patrol
#

those are just event commands! and that’s how i learned, went in knowing nothing and then tried to get things i’d never used before to work for me

ornate locust
#

I was worried about temp maps, but I found it very easy when I recently did one for the first time

urban patrol
#

yep! the only iffy thing about it imo is if you try to fork inside of one, the fork needs to go in Temp

gritty sandal
#

So :v I'm trying to add this flooring right? It's xnb and unless I wanna corrupt my save I need to content patcher it thingy. I used a guide (ish) a friend (idk if she consider me friend) to base the terrain features off it cuz for the tilesheets it worked and I observed it and figured out what she did

neat gazelle
#

I think I'm ready to throw in the towel on moving the slime water troughs around in the slime hutch, but if anyone knows how to set the slime incubator to spawn at least (and preferably only) once, just using content patcher, can you point me in the right direction for that?

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.

obtuse wigeon
#

Use the first link to paste your json into then send the URL here

gritty sandal
brittle pasture
neat gazelle
#

it is, and it isn't loading in new buildings.

gritty sandal
#

Oh

fathom rapids
#

why is your file xnb

gritty sandal
#

Cuz

#

It's how I got it

#

From naver

fathom rapids
#

you can unpack it

obtuse wigeon
gritty sandal
uncut viper
#

CP is actually capable of loading xnb files

gritty sandal
#

Dumb it down-

obtuse wigeon
uncut viper
#

your zip file however seems to contain neither

fathom rapids
gritty sandal
fathom rapids
gritty sandal
#

Here is the one I tried to make :v

uncut viper
#

its literally fine if it goes through content patcher

lucid iron
#

Can u editimage with an xnb

uncut viper
#

yes

lucid iron
#

Like putting xnb in the fromfile

uncut viper
#

yes

lucid iron
#

Nice that works then Sleepden

fathom rapids
neat gazelle
lucid iron
#

I'd just do that n not worry about it

brittle pasture
uncut viper
#

that doesnt make it a bad idea

brittle pasture
lucid iron
#

You can patch export the loaded pngs later

neat gazelle
fathom rapids
# gritty sandal

okay so your first problem is. Do you understand what the "FromFile" field actually does?

brittle pasture
#

you’ll need a data change to Data/Buildings

uncut viper
# gritty sandal

your manifest is called manifest .json with a space instead of manifest.json

#

you also dont need that When condition

fathom rapids
# gritty sandal No

it points to the file you want the mod to load, starting from the folder the content.json is in

uncut viper
#

actually that When condition is keeping your mod from exploding further

#

bc you've written targets that dont exist

gritty sandal
#

....

fathom rapids
#

which in your case is Assets/TerrainFeatures/Flooring.xnb and Assets/TerrainFeatures/Flooring_winter.xnb

uncut viper
#

(dont exist in your assets folder that is)

gritty sandal
#

OH SO I DIRNT HAVE TO WRITE ALL THIS?

uncut viper
#

Liliet, her FromFile isnt the problem

fathom rapids
#

it is?

uncut viper
#

she's using the target token.

gritty sandal
#

Uh u can call Me a she

uncut viper
#

assets/{{Target}}.xnb will become e.g. assets/TerrainFeatures/Flooring.xnb

#

(noted, apologies!)

fathom rapids
#

first of all its case sensitive on mac

gritty sandal
#

Nah it's fine

fathom rapids
#

second, their target field causes their fromfile to target like 20 things

#

(i did not count)

uncut viper
#

which is a case sensitivity issue, and not anything todo with not understanding what FromFile is

fathom rapids
#

while they only have 2

uncut viper
#

yeah, which is fine*, because of the When condition

fathom rapids
#

they literally said that they dont understand what FromFile does

uncut viper
#

the extras just wont do anything

#

the When condition keeps the specific target patch from applying if the thing they wrote in the Target does not exist in their folder

fathom rapids
#

i would say its a problem when a person doesnt understand their own code

uncut viper
#

that is a problem. but its not whats giving her errors.

#

aside from maybe the case sensitivity issue

gritty sandal
#

Uh smapi said this is not a smapi mod

uncut viper
#

dont know what platform she's on

#

your manifest, as mentioned, is named incorrectly, so it cannot find a manifest

fathom rapids
#

yeah you have space after 'manifest'

#

just saw it

#

it's named "manifest .json" rather than "manifest.json"

gritty sandal
#

I fixed it so should it work now?

uncut viper
#

give it a shot

#

see what else pops up in the log, if anything

fathom rapids
#

if the "when" condition only prevents specific patches from loading, then yeah. I haven't really used the multi-Target way of doing things

gritty sandal
#

IT WORKEEDDD

uncut viper
#

im assuming you're not on linux (just educated guess) and your zip doesnt have that weird .MACOSX folder, so the case sensitivity probably doesnt matter if its a personal use mod

gentle rose
#

what else would it do?

gritty sandal
#

Well idk if it did hut there's no red

#

I didn't know smapi was so case sensitive-

uncut viper
#

SMAPI isnt, its OS dependent

obtuse wigeon
#

SMAPI isn't linux and Mac are

uncut viper
#

SOME things are case sensitive but file paths are not

gritty sandal
#

Who knew it'd flat out say it's not a mod if there is a typo or sum

uncut viper
#

UNLESS you';re not on windows

#

thats not case sensitivty thats just wrongly named

gritty sandal
#

Thank u for ur time a_mafubow

uncut viper
#

case senstivity = uppercase and lowercase sensitivity

gritty sandal
#

All of u

uncut viper
#

i.e. MANIFEST vs manifest

#

make sure it actually works in game too though ofc and not just the main menu

#

the asset might not have been requested yet and might only throw a warning when the game tries to load it

obtuse wigeon
#

If I doesn't work, we will be able to help further, paths were the first mod I made I think, I have an inherant love for them

gritty sandal
#

IT DIDN'T CJANGE THE PATH SOBS

#

It's not throwing any errors but it ain't working

neat gazelle
obtuse wigeon
uncut viper
#

and do you have any other mods that might be conflicting?

brittle pasture
gritty sandal
gritty sandal
#

Does it affect the paths?

uncut viper
#

ideally test it on a very minimal mod list

#

no, it affects the order in which mods edits are loaded and applied

uncut viper
#

since you are Loading yours, they might be editing it back after

gritty sandal
#

Ok I'll remove the soft season change and try again

uncut viper
#

unless you meant paths as in like, in game paths

#

and not file paths

#

in which case i dont know what every mod changes

neat gazelle
gritty sandal
#

Uh I meant actual paths

brittle pasture
gritty sandal
#

Like cobble stone paths and shits

#

It's not working SOBS

obtuse wigeon
#

I'm looking at making a content pack for Iconic Framework to freeup some keybinds, the docs for making an iconic framework pack states it needs a parameterless method or parameterless constructor, currently I'm on trying to get the Automate overlay to work, is internal class OverlayMenu : BaseOverlay parameterless or is the : BaseOverlay a parameter?

uncut viper
#

type patch summary Sera.PlaceHolderXXX into your SMAPI console and share the log

#

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

neat gazelle
brittle pasture
#

a “parameter” is what you pass into a function, like void DoStuff(int number) accepts a parameter number of type int

obtuse wigeon
#

Ahh okay gotcha

brittle pasture
#

(also I looked into the Iconic Framework docs and I’m pretty sure what you want to do is use the keybind settings + CMCT to grab the Automate overlay keybind)

obtuse wigeon
#

Looking further down I think I found what I need but it has paramenters

brittle pasture
#

(I’m assuming you’re using the pure content pack approach to add a keybind to toggle the Automate overlay)

lucid iron
#

I thought iconic works by reflection anyways

obtuse wigeon
#

I'm doing this to free up keybinds, It is a lot easier to go with a keybinds but accessing not often used things directly is the option I would prefer to go with for this

lucid iron
#

Not by simulated key press

brittle pasture
#

it has a keybind option

obtuse wigeon
#

Either keybind, method or constructor are the options it supports, whether that uses reflection I have no idea

brittle pasture
#

hmm it seems like Automate does have a EnableOverlay function in the mod entry

#

it’s not static though

obtuse wigeon
#

I'm not sure what static specifically means in this case, but I'm going to take a guess and say it means that it can't be called

brittle pasture
#

I’m pretty certain you’d need a PR to Automate if you don’t want to go the keybind route

obtuse wigeon
#

Gotcha, the API is a bit more sophisticated for C# so it may be possible to do it for that instead of a PR but I don't know it well enough, so that's one of the integrations I shall be leaving

brittle pasture
#

with enough reflection it is totally possible to make a C# companion mod that registers that action
but at this point a PR to add that to the base mod is an infinitely better solution; pathos is very welcoming of contributions

obtuse wigeon
#

Don't PRs also include the code that needs to be changed to facilite something like this? or is just asking nicely with reference to the framework and the API acceptable enough?

uncut viper
#

a PR would be you making the desired changes and submitting them for consideration

late pewter
#

Oh I'm liking htee art for this fish mod, do let me know when it comes out. I've seen a few fish mods, but haven't always liked the art for them.

brittle pasture
#

just “asking nicely” is a bug report /lh

obtuse wigeon
#

Ahh okay, I don't know C# enough to even begin to make a change to be submitted for consideration, it's not the worst thing to not have included, it's a rarely used feature by me atleast

lucid iron
#

I actually think automate should disable this feature and roll it into data layers instead

#

Sadly I don't remember if the data layers API change went anywhere

uncut viper
#

i would disagree very

obtuse wigeon
#

I personally do prefer adding it to data layer too as it's the kind of thing that thematically fits imo

hidden locust
#

hello!

#

I tried to add a new rule to the keg that uses 5 of a specific fruit as input, but in game it always outputs wine. Is there any way to make it use my custom rule instead?

#

sorry if it's a dumb question

gaunt orbit
#

make sure to reorder it in front of the wine entry with MoveEntries

hallow prism
#

yeah it's a question of rules priority

gaunt orbit
#

bc otherwise the game will hit the wine entry first and not look for anything else

lucid iron
hidden locust
#

thanks, I will try that!

lucid iron
#

Tho it is not like it is happening anytime soon Sleepden

brittle pasture
#

pls… i need my fishing zone overlay…

lucid iron
#

Soon™

#

Actually did auto layers release already

brittle pasture
harsh echo
#

whoops

gritty sandal
#

Uh... Can someone break down where tf u get the coordinates and shit from please-

obtuse wigeon
#

A mode called DebugMode can help you, when activated, it lists the corodinates, locations, and a few other details if a song or event is playing, or in a menu

round dock
#

Debug mode my beloved henriettabawk

obtuse wigeon
#

By far one of the most useful mods I've used, there would've been so many broken locations without it

hot gale
#

What is 'big' for a C# mod? My .dll is 300kb

lucid iron
#

It doesn't matter very much

obtuse wigeon
#

content patcher is 326kb so not the biggest, but size doesn't matter, what matters is how you use it

hot gale
#

Cool

lucid iron
#

You can code in a way that's very size inefficient in terms of instructions ofc

#

Or code in a super size efficient way that is terrible perf

obtuse wigeon
#

I'd certainly prefer a larger file size if it means it isn't as performance intensive

hot gale
#

Just wanted to make sure it wouldnt get 'too big'

obtuse wigeon
#

it's stardew, my nearly 700 mod pack is only 2.3GB, size is not an issue at all I can promise you that

lucid iron
#

A single hd portrait is probably bigger than ur whole dll kyuuchan_run

hot gale
#

I know assets can rack up the size of a mod itself, I was just curious if there were any limitations to the actual size of the dll specifically - thanks for the calrification y'all

obtuse wigeon
#

to my knowledge there is no size limitations besides the storage you have on your computer (or ram, ram is probably the first storage based bottleneck)

agile flame
#

so im trying to test run my mod but i need the cs to be turned into dll i try to do this like a million ways all fail and it seems like there is a problem with smapi a missing file called stardewmodingapi.dll but even after downloading a new smapi install still isn't there so what can be the problem i can find this specific file in the stardew valley folder but i assume there should be one in smapi and one in stardew valley so can someone help me real quick

gaunt orbit
agile flame
tender bloom
#

Have you set up the nuget?

#

It sounds like possibly you missed some of the setup

gaunt orbit
#

is your csproj the same as what the wiki shows?

tender bloom
#

Either that or the game is in a weird place

agile flame
agile flame
#

alr 1s

turbid oak
#

Where is the main dialogue file in the unpacked content?

agile flame
#
<Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- Target the .NET Framework used by Stardew Valley / SMAPI --> <TargetFramework>net452</TargetFramework> <!-- Ensure C# 8.0 features are available --> <LangVersion>8.0</LangVersion> <!-- Disable implicit .cs inclusion to avoid duplicates --> <EnableDefaultCompileItems>false</EnableDefaultCompileItems> <!-- Build configuration --> <Configuration Condition=" '$(Configuration)' == '' ">Release</Configuration> <OutputPath>..\bin\</OutputPath> </PropertyGroup> <ItemGroup> <!-- Explicitly include your mod source files --> <Compile Include="nightmaremod.cs" /> </ItemGroup> <ItemGroup> <!-- SMAPI and XNA references --> <Reference Include="StardewModdingAPI"> <HintPath>..\..\smapi-internal\StardewModdingAPI.dll</HintPath> <Private>true</Private> </Reference> <Reference Include="Stardew Valley"> <HintPath>..\..\Stardew Valley.exe</HintPath> <Private>true</Private> </Reference> <Reference Include="Microsoft.Xna.Framework"> <HintPath>..\..\smapi-internal\XNA\Framework\Microsoft.Xna.Framework.dll</HintPath> <Private>true</Private> </Reference> <Reference Include="Microsoft.Xna.Framework.Game"> <HintPath>..\..\smapi-internal\XNA\Framework\Microsoft.Xna.Framework.Game.dll</HintPath> <Private>true</Private> </Reference> <Reference Include="Microsoft.Xna.Framework.Graphics"> <HintPath>..\..\smapi-internal\XNA\Framework\Microsoft.Xna.Framework.Graphics.dll</HintPath> <Private>true</Private> </Reference> <Reference Include="Microsoft.Xna.Framework.Input"> <HintPath>..\..\smapi-internal\XNA\Framework\Microsoft.Xna.Framework.Input.dll</HintPath> <Private>true</Private> </Reference> </ItemGroup> <ItemGroup> <PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="4.4.0" /> </ItemGroup> </Project>

turbid oak
gaunt orbit
# agile flame ``` <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <!-- Target the .NET Frame...

yeah this is super wrong. I'm not sure where you got this but it should look like this

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        <EnableHarmony>true</EnableHarmony> <!-- only if using harmony -->
        <Version>1.0.0</Version>
    </PropertyGroup>
    <ItemGroup>
        <PackageReference Include="Pathoschild.Stardew.ModBuildConfig" Version="4.1.1" />
    </ItemGroup>
</Project>
gentle rose
agile flame
#

is there like a wiki for this part

gentle rose
agile flame
gentle rose
#

well, I suggest not asking this friend again. clearly they’re hallucinating their answers and don’t seem to know much about stardew modding.

gaunt orbit
#

...anyways, why don't you fix the csproj and see if it builds

gritty sandal
#

Do every cp path mod use the same codes and coordinates?

tender bloom
#

The wiki should have exactly what you need, the link wren sent

#

What do you mean by path mod?

agile flame
#

i regret making a sdv mod in first place too complicated making a game from scratch was way easier but eh

uncut viper
#

(like floorings)

gritty sandal
tender bloom
#

Like the paths on the ground you can place?

agile flame
#

ye i opened the wiki

#

idk how do i find these parts of the wiki

#

i try to search it up but nothing pops up

tender bloom
#

If you’re making new paths then you don’t need to target the exact same coordinates

gaunt orbit
hot gale
#

Making a game from scratch was easier? gandalf_laugh

tender bloom
turbid oak
tender bloom
#

There isn’t one dialogue file, there’s like a million

gritty sandal
#

And u don't need contentjson for AT mods?

gaunt orbit
#

can you imagine if all dialogue was in one file 💀

tender bloom
#

Not a man lol

tender bloom
#

It doesn’t do content.json like CP, but you do need json files

turbid oak
gentle rose
tender bloom
#

Each NPC has their own dialogue file

gaunt orbit
turbid oak
obtuse wigeon
gentle rose
turbid oak
tender bloom
#

Characters/Dialogue/Abigail.json

#

(for example)

obtuse wigeon
#

(I've just noticed that my profile on the wiki is blank, is that allowed to be edited? thinking of putting a list of my mods on it)

brittle ledge
gritty sandal
#

May I ask what configschema means when coding?

#

I'm dissecting contentjsons to understand better

turbid oak
tender bloom
#

configschema is about setting up the format for the configurations

obtuse wigeon
violet valley
#

How do I make monsters spawn in my map? SDVpufferwow

tender bloom
#

so if you have configurations like: "ShirtColor": "purple" for example, you have to define a) what config options even exist, and b) what are the allowable values

round dock
agile flame
#

i can tag you when i publish it

hot gale
#

They go to another school you wouldnt know them type energy

brittle ledge
gritty sandal
#

Poeple rarely make new stuffs from scratch right? Specially if it's retextures and stuffs

lucid iron
#

People make new pixel art from scratch all the time

agile flame
lucid iron
#

I feel like you are asking about something else though, elaborate?

gritty sandal
agile flame
gritty sandal
#

I fear my English isn't Englishing

brittle ledge
agile flame
lucid iron
#

Craftables are a little special in that adding new ones that function the same may not be possible

#

Due to hardcoded things

hard fern
#

SDVpuffersweats um ok does anyone know how to get appearances to work with HD portraits? like, can spacecore do that...

gritty sandal
#

Let's take paths for example. Poeple usually don't make new paths right? They can just replace the vanilla one with a different texture right?

lucid iron
#

You can make new paths easily

#

It's got a data model