#making-mods-general

1 messages · Page 259 of 1

lucid iron
#

You don't need 300 tho

#

The point is to have a better tiled thing

uncut viper
#

for fog specifically you can probably just copy the MineShaft code

#

and just dont draw it in the AboveAlwaysFrontLayer method

rancid musk
#

Cloudy Skies doesn't have anything that would render beneath the world, at this point. Not really the point of it.

faint ingot
rancid musk
#

Hmm. Wonder if I should make location specific layer overrides.

faint ingot
uncut viper
#

it was directed at chu

faint ingot
#

oh gotcha

uncut viper
#

i shoulda said sorry

faint ingot
#

np

lucid iron
#

Oh yeah i do that for light rays already

uncut viper
#

why do ur light rays use fog code

lucid iron
#

It do draw in the draw above always front

uncut viper
#

i was talkin specifically for drawing parallax fog below the map layers tho

lucid iron
#

Ig i can just, reverse patch bathhouse fog code too yes

uncut viper
#

thats steam not fog smh /j

lucid iron
#

For below i was gonna use Game1.background

#

Like make subclass of that and set it on warp in

hallow prism
#

note that optional dependancies are pretty cool, like having a hasmod to adds specific features

violet grotto
#

After who-knows-how-long in the making, I have finally released my Fashion Sense pack: Adventurer's Armor and Clothing!
This pack offers a whole lot of modular clothing items, which you can combine and color to your heart's content.

I offer you robust plate armor for knights, sturdy leather hats for cowboys, fancy attire for nobles and many other different accessories to adorn your outfit for the next adventure!
https://www.nexusmods.com/stardewvalley/mods/32523

Nexus Mods :: Stardew Valley

A fairly big FS pack with many modular parts to create your own adventurer outfit!

#

Whew, finally got that ouot of the way.

unreal spoke
#

Congrats on the release! These look amazing, but I’m sure you’ve gotten that a lot. SDVkrobusgiggle

faint ingot
violet grotto
#

I think I may add a few more pieces to that pack later, but I'm gonna shift my focus on Visual Enemy Variety again.

#

Bats will be the next enemy I'm gonna make variants for.

hot gale
lucid iron
#

Aw yea scarfs

violet grotto
#

Hmmm, I might just do that.

#

Though I didn't really add scarves.

#

It's more like bandanas and collars.

tiny zealot
#

ooh, more hats to add support for

violet grotto
#

I think I'm gonna have to disappoint you.

#

This pack doesn't actually include any hats. It's mostly accessories, so that folks can easily mix and match them together.

tiny zealot
#

aw heck

violet grotto
#

Unless you can somehow detect FS accessories

tiny zealot
#

i certainly could. i already detect hats

rocky copper
tiny zealot
#

might be a down-the-road sort of feature though (the hats, not you, harrison)

rocky copper
#

Lol. It does work for me, too, though

violet grotto
#

(I don't know if you need anything for that)

tiny zealot
#

i probably don't need anything from you about it, but thank you! SDVpufferheart

#

(the process involves acquiring the mod and figuring out how FS reports the items back to me through its API, so i can add the correct strings to my data files)

faint ingot
#

If you end up making something for this please @me so I don't miss it, I need to focus elsewhere for a little bit. I should mention I do have a small c# component in my mod so I could add it there if that works for you. Thank you in advance if you end up working on this, if you don't then no worries.

lucid iron
#

It's open source (MIT) tho people are free to yoink bits of it for their own mod

faint ingot
#

gotcha thanks

tawny ore
#

I love the screenshot/banner

uncut viper
#

under no circumstances should you get it confused with a mod that adds map properties tho /lh

lucid iron
#

Hey there one (1) map prop in it, the fruit tree thing

uncut viper
#

i thought you told me the only one you had you deprecated

lucid iron
#

I forgor about that one

uncut viper
#

wow misleading

lucid iron
#

Adds a few map related features, no strong design theme just whatever I happen to want.
This is my get out of jail free card

woeful iron
#

I'm starting out with content patcher until I get the hang of things

#

I have "content.json" and "manifest.json". SMAPI loads the mod, but complains that there is no content.json

uncut viper
#

they must be in the same folder. if they are, then double check its actually a .json file. do you have file extensions visible?

woeful iron
#
❯ ls
content.json  manifest.json
tawny ore
#

It needs to specify that it is a content pack for Content Patcher

woeful iron
#

I copy and pasted and edited the manifest:

{
  "Name": "Axolotl Valley",
  "Author": "Axolotl-Logic",
  "Version": "1.0.0-beta-1",
  "Description": "It's a secret! Brought to you by Axolotl-Logic.",
  "UniqueID": "AxolotlLogic.AxolotlValley",
  "UpdateKeys": [],
  "ContentPackFor": {
    "UniqueID": "Pathoschild.ContentPatcher"
  }
}
#

From that page

tawny ore
#

Does your content.json file have content?

woeful iron
#

... whoops, must not havev saved. :🤦:

#

The file is there, just empty as you said

#

Okay, onto the next error message, thank you! I'll struggle with it a bit first

proud wyvern
#

isn't it also allowed if it's absolutely necessary for the mod to function? like, it's the core of its whole premise?

woeful iron
#

... so is content patcher exclusively about modifying existing assets? Like if I wanted to introduce, for example, a new item or NPC, would I need to use something else?

uncut viper
proud wyvern
#

not really, no

#

SMAPI doesn't need to do update checks to function, i'd argue

tawny ore
proud wyvern
#

neither does my mod loader for Cobalt Core

uncut viper
#

im just reiterating what their guidelines say

proud wyvern
#

and yet we've obtained permission

uncut viper
#

take it up with nexus, not me

latent mauve
#

"Your mod requiring it to function is not a substitute for asking permission." is the takeaway here, I think.

uncut viper
#

i dont think a random no name mod would get the same exceptions SMAPI would

latent mauve
#

Permission is still required, regardless.

tawny ore
uncut viper
#

"Files (especially executables) that connect to the internet to download or send information and/or files are prohibited unless where it is crucial for the functioning of the mod/utility. Please note that "auto update" functionality does not qualify as crucial and that we reserve the right to moderate and/or remove any files/tools/utilities/mods that communicate with the internet. If your tool's/app's functionality depends on the ability to send and receive information/files, please contact staff or send an email to support@nexusmods.com laying out your reasoning and providing the source code for your tool/app."

#

this is the exact wording of their guidelines

blissful panther
proud wyvern
#

yeah just found that paragraph

brittle pasture
uncut viper
#

(right, that is what i meant by exception, pathos got permission but as shockah says, SMAPI can just be used offline, too)

woeful iron
#

Okay, so like the Character file?

lucid iron
#

!npc

ocean sailBOT
#
Creating a Custom NPC

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

woeful iron
#

Data/Character.x something or other?

tawny ore
#

Have you unpacked the game's data already?

lucid iron
#

NPC has a lot of parts

tawny ore
#

Your edits will mirror the vanilla assets

lucid iron
#

The Data/Characters is only one bit

woeful iron
#

That's the extent of it

lucid iron
#

! unpack

woeful iron
#

Was following this

#

most recently

lucid iron
#

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

latent mauve
#

The unpacker is safer, as xnbcli doesn't always unpack things correctly for Stardew Valley.

lucid iron
#

We recommend stardewxnbunpack

woeful iron
#

@latent mauve Yeah it was struggling with the one file I wanted to look at

latent mauve
#

Well, the point is to use the unpacker (StardewXnbHack) to get ALL the files. 😛

#

That way you don't have to worry about "oh, this references this other file so now I need that one too"

uncut viper
#

this slideshow is 7 years old

latent mauve
#

Which is pretty dang common for text (Strings files)

grand gale
#

Where can I access the junimo chest's items?

lucid iron
#

The global inventory?

brittle pasture
#

Game1.player.team.GetOrCreateGlobalInventory("JunimoChests")

royal stump
#

Game1.player.team.GetOrCreateGlobalInventory("JunimoChests"); is how the chest itself accesses an IInventory, yeah

grand gale
#

thanks SDVemoteheart

woeful iron
#

Okay, unpacking! Exciting.

woeful iron
#

Unpacking files for Stardew Valley 1.6.15 (24356)...
Effects/ShadowRemove.xnb => Effect isn't a supported asset type.
Effects/ShadowRemoveMG3.8.0.xnb => Effect isn't a supported asset type.
#

Seems like a warning

uncut viper
#

thats normal

#

you dont need those

woeful iron
#

Oh my goodness, Fireredlily

#

The sheet!

#

That google sheet is really neat, but I'll start with this one: https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC

Stardew Modding Wiki

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

#

Oh so THIS wiki

#

I didn't realize there was a separate modding wiki

lucid iron
#

Yeah it's separate bc main wiki focus on vanilla more

woeful iron
#

Now I need to write up what I need for graphics assets from my partner

#

I'm a coder she's a writer/illustrator, we both love Stardew Valley

#

Thanks for all the help folks!

hot gale
#

What's the map name for the museum in town?

urban patrol
#

ArchaeologyHouse

hard fern
#

archaeologyhouse

#

damn

hot gale
#

ty ty

woeful iron
#

Here's a question, am I starting off too big with an NPC? Should I aim way smaller for first mod?

#

I have some hobbiest game dev experience

#

and professional SE

lucid iron
#

You should make the mod you want to use as your first mod

urban patrol
#

i say make whatever you have passion for because that will carry you through learning hard stuff

woeful iron
#

Okay, awesome

lucid iron
#

And all mods really

woeful iron
#

It's good advice, but I can come up with dozens of ideas that I find interesting

#

But yeah, NPC is most motivating

uncut viper
#

if it helps, nothing about an NPC is technically challenging

urban patrol
#

i’m making NPCs as part of my first mod and it’s a lot of moving parts but it’s worth it when i see them in the game functioning ❤️

uncut viper
#

it just requires motivation

#

and persistence

woeful iron
#

Oh, okay, I have that in spades

uncut viper
#

its just a lot of moving parts as nic says, thats really the only reason why its not recommended as a first mod usually

#

new modders usually vastly underestimate the amount of work required

hard fern
#

an npc is a complex project in terms of "there's a lot you have to do" but so long as you're determined, and know what you plan to do, there shouldnt be an issue

uncut viper
#

it is a lot of work, but none of it is challenging work

hot gale
#

Will NPCs use buses etc when traveling with their schedules or is tht something I need to code in for them to use

uncut viper
#

(unless you struggle with art or dialogue/story writing, but thats not NPC specific)

hard fern
#

im still fighting the dialogue devil

lucid iron
#

For NPCs you just use npc warp

#

They don't "use" the bus

hot gale
#

Gotcha, damn

#

Wondering if it's even worth it to add a handful of NPCs just to make my meadery location feel 'alive'

hard fern
#

depends on if you really want to tbh

hot gale
#

I wish I could just plop some down and assign them some basic AI to wander and shit

hard fern
#

😔 if only it were that simple haha

brittle pasture
#

if you dont need them to be full fledged NPCs you can use CC or MEEP

hot gale
#

Oh?

lucid iron
#

If they don't need to wander then map patch is sufficient

hot gale
#

I mean I have the NPC dispositions and sheets etc done, they are imported they just stand there though haha

#

I think I might just omit them, I don't know if it's worth the effort also additional load for no real reason

sour sleet
#

Um, my sofa is not sittable even though I've edited the ChairTiles. Any reason why this might be?

#
    "Action": "EditData",
    "Target": "Data/ChairTiles",
    "Entries": {
        "Lilybrook_misc/1/1": "1/2/right/couch/0/1/false/Maps\\Lilybrook_misc"
  }
},
``` This is my entry
hot gale
#

Is it a custom couch?

sour sleet
#

Yep

hot gale
#

Ahh gotcha

faint ingot
faint ingot
hot gale
#

I was reading over this page and overlooked that

faint ingot
#

example schedule entry630 {{ModId}}_LocationName 13 6 2 square_5_3

uncut viper
#

you just conditionally patch the dialogue

#

there is no way to alter the order that keys are checked in

#

they will always follow the priority listed in that wiki page

#

just add a different dialogue line with a different key.

#

she will say both, as appropriate

#

you cant make "fall_23" less specific than fall 23rd bc thats what the key does

#

but you can just add more keys

#

if you dont want it tied to any one date then you can just reuse the same dialogue for every day of the week and patch it in and out as necessary

sour sleet
#

Can anyone help me figure out why my map string is appearing like this?

#

Never done a map string with i18n before so maybe that's causing a problem?

#

And this is the tile property within Tiled

calm nebula
#

Did you add your message to strings/stringsfrommaps

sour sleet
#

All good, fixed now 🙂

#

Can you have Tile Data that's more than one tile on Tiled?

#

So a long rectangle for example?

faint ingot
#

No I think you just do multiple squares instead

hot gale
#

Thats what I do ^

lucid iron
#

You can do a selection yes

faint ingot
#

Oh nevermind then, I yield the floor to the experts : )

lucid iron
#

As long as it's at 16x16 grids the game will recognize it fine

sour sleet
#

Oh that's good to know!

lucid iron
#

It just never appears in unpacked maps

#

Always converted to 1 square

hot gale
#

Anyone know why there are random tiles placed and/or missing compared to Tiled

hard fern
#

SDVpuffersweats i was about to ask about the bathtub

#

did you forget the daytiles? or mis-type the index number

hot gale
#

ohhh I did forget to wipe the daytiles and stuff, I just copied the trailer from town

#

Thanks!

hard fern
#

since it seems to happen around thr window... idk for sure tho

#

sigh

hot gale
#

cringe

hard fern
#

oh goodie it's gone

hot gale
#

that was lickity split

uncut viper
#

was it another person trying to ping everyone with a discord link. second one in like 5 min. i love when they assume a big server like this allows anyone to ping everyone

hot gale
#

Yeah

marble nova
#

Hi hi! I am a very very very beginner for this, just trying to start my first mod - I am following the list on the wiki, but I'm already getting tripped up on one of the very first steps - It says I need .NET 6 SDK. The download page for that says it's no longer supported, but do I download it anyways? Additionally, do I need the Installer one and the Binary one, or just one of them?

hot gale
#

All fixed, thanks shrimp :D

hard fern
#

aha, i was right XD

#

for once

summer sluice
#

uh i forgot to do a thingy

uncut viper
#

i know it is, but that aint gonna make it not look silly to me to assume a 250k member server wouldnt have a safeguard in place for pinging everyone

#

sunday the 0th. seems right to me. time to post to nexus

summer sluice
#

also the bed isnt even there

#

incomplete map rushing too hard

#

cant even close game

rancid musk
#

Can't believe you banished yourself to the land before time

lucid iron
#

Did you explode draw loop

summer sluice
urban patrol
#

behind the scenes lewis is frantically rushing to stuff things in cabinets and sweep the floor before you get there

lucid iron
#

Is ur smapi full of red rn

summer sluice
#

but ik what i did wrong

lucid iron
uncut viper
#

if it was erroring and the draw functions were filling the stack trace that would be exploding the draw loop

marble nova
rancid musk
#

I'm going to assume there's a missing map property and/or critical path tile used during new game logic to position things, and it broke the entire new game logic and just dumped you into the game without running any of it.

rancid musk
uncut viper
marble nova
uncut viper
#

you're following the C# guide, but you might not need C#

#

what is your mod idea?

marble nova
#

Adding a couple new characters and an extra area where they live

uncut viper
#

then you can definitely just use Content Patcher

summer sluice
uncut viper
#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

uncut viper
#

first bullet point

#

(though also keep in mind, one new character is a lot of work. "a couple" is a lot more)

#

(all technically easy work, but just a lot of it)

summer sluice
marble nova
summer sluice
#

tho i was obviously failing bc i wasnt looking at things correctly

marble nova
#

I tend to be good at repetitive tasks and stuff like excel, but I'm not super knowledgeable at other computer stuff and technology tends to break at my touch so. It's nice to have somewhere to ask questions haha

summer sluice
#

knowing where to go to find assistance (like searching thru discord to see if anyone else had the same issues) is unfathomably helpful

summer sluice
#

i think

#

awwwww yeaaa i can now throw foliage everywhere

#

..and make the other 80% of the map

sour sleet
#

Can warps be done in just the json or do they have to be in the Map Properties in Tiled as well?

uncut viper
#

content patcher's AddWarps stuff is adding them to the map properties

sour sleet
#

Ah gotcha

#

Thanks

summer sluice
#

real

marble nova
#

okay, second question: the tutorial says to add a manifest.json file, but it doesn't tell me how to make one?

#

Like it has the stuff that needs to be in it, but not how to make the file itself

wanton pebble
#

I'm not coding too hard right now, but I should ask - is there a way to get the value of the KissSpriteFacingDirection field in Data/Characters for an NPC?

#

I reaaaaaaallly don't want to have to add in whatever weird exceptions there will be per NPC, but I will if I need to

urban patrol
lucid iron
#

!json

ocean sailBOT
#

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

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

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

lucid iron
#

Most data files for sdv modding is json, which are just plain text files

#

Pick one of the mentioned text editors

marble nova
#

thanks!

iron bronze
#

Can someone explain to me like i'm 5 how to fix this? or help point me in the right direction of where to post? Thank you!

lucid iron
#

Is it your mod?

iron bronze
lucid iron
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

lucid iron
#

Usually just reinstall it

urban patrol
wanton pebble
#

Yeah I was looking to derive the value for Date Night Redux because someone finally used that field with a romanceable character and it caused a flipped kiss sprite with DNR

#

Ah well. I need to get back to coding it and learning C# soon, just some stressful life stuff going on that's made me instead go with decompress stuff rather than complicated writing XD

lucid iron
#

Maybe custom kissing mod expose something, im not familiar

sour sleet
#

Is there a reason why tiles are appearing in game on my custom map but aren't there in Tiled? They're tiles I've deleted previously

wanton pebble
#

Game can't place what isn't there

#

I'd check to make sure you've rebooted the game since editing and that you're editing the right map and the right patch is happening

sour sleet
#

All of those checks I've done. All my new edits to it are showing correctly but some of the tiles I've deleted are still showing in game

lucid iron
#

if its your custom location, then it can only be your fault

#

if its a vanilla location, could be other patches happening

sour sleet
#

It is a custom location

dusk mulch
#

I am trying to add a new tab to the inventory, where is the data for it? (I am using C#)

urban patrol
sour sleet
#

The tiles definitely aren't there on Tiled, so strange

urban patrol
#

yeah i've had that issue before, so annoying

reef kiln
#

Did you make sure there are no properties adding the tiles? For example I edited a map to remove a lamp once but at night it kept reappearing because the map had tile properties to add a lamp at night.

sour sleet
urban patrol
#

did you start from a vanilla map? maybe there are invisible tiles or something that are showing up in game

sour sleet
#

I placed a building down as a test and then removed it. 2 tiles of it remain in game

rancid musk
dusk mulch
#

When you press E.

rancid musk
#

That's the game menu. Inventory is only one part of it

dusk mulch
#

Okay, where can I find the data for it though?

uncut viper
#

when working in C#, you have to abandon the idea that there is a nice easy to edit data model for everything you want to change

dusk mulch
#

So... Are you saying I have to make my own data model?

rancid musk
#

"data" is meaningless in this context.

#

There's no data model. It's all hard coded.

#

Anyways, I've got a mod that's going to be released at the end of the month called Better Game Menu that has an API for easily making custom tabs for the game menu. That'd be where to start.

lucid iron
#

if you are lucky there's a hard and annoying thing to reflect into and change

#

GameMenu didnt even have that until it became Better DokkanStare

rancid musk
#

As someone who has written PRs for most of the mods doing custom game menu stuff, let me confirm that adding a tab to it with harmony is hard and annoying.

uncut viper
#

making your own data model is called making a framework

#

but you can't just "make" one

#

you need to rewrite everything to use your model instead of the vanilla stuff

#

that's what Khloe did for the game menu

dusk mulch
#

I am now rethinking about moving to C#...

rancid musk
#

What are you even wanting to accomplish with your mod? Why do you need a custom game menu tab?

dusk mulch
#

I was going to have a tab that you could check if it was open or closed, what stock it had, etc.

rancid musk
#

So... the phone, but as a menu I guess?

dusk mulch
#

You can't access the phone until kind of late into the game so...

#

At least I don't think you can

wanton pebble
#

....can't you buy it day 1?

faint ingot
#

so make a mod that gives you a phone at the start of the game : P

lucid iron
#

isnt the phone hardcoded to hell too

wanton pebble
#

Yeah, 2K gold from Robin

lucid iron
#

can only call some randos

wanton pebble
#

Nah, you can call shops for hours

lucid iron
#

all shops?

wanton pebble
#

all vanilla shops.

dusk mulch
#

there goes that idea

wanton pebble
#

mod shops will need some code chicanery

sour sleet
lucid iron
#

yea thats hardcoded as hell to me too

rancid musk
#

For some reason I was thinking the phone was de-hardcoded in 1.6

lucid iron
#

BetterPhone

rancid musk
#

But I think that was incoming calls?

dusk mulch
#

im moving back to CP. someone else can torture themself with C#

lucid iron
#

well its prob not that bad, u can do it with some combo of BETAS MMAP Better Crafting

#

on a new phone BC unrelated to vanilla

reef kiln
# dusk mulch there goes that idea

That happens too me all the time. Have a great idea for a mod...... find out I need to learn c# to make it. Bye bye mod. You at least went a step further then me. And started c#.

rancid musk
lucid iron
#

no u only have 5mbps cable out here

dusk mulch
reef kiln
brave fable
#

it happens, i've made a few things before realising 'oh that's already in the game? if only i played far enough'

lucid iron
#

3 whole ass deps just for 1 phone Sleepden

rancid musk
brave fable
#

i'm sure i saw a mod that did something similar, maybe i just dreamt it up

lucid iron
reef kiln
#

You could put in the dial up sound.

dusk mulch
#

im just going to make a More Achivements mod

rancid musk
lucid iron
#

DOS in sdv

dusk mulch
#

SDV in SDV?

rancid musk
#

(You know I wonder how awful it would be to somehow load Stardew inside of Stardew and make it a minigame. You could get a Stardew arcade machine to play some Stardew while you're playing Stardew.)

reef kiln
#

Inception? How many layers would you add.

lucid iron
#

well would u try to load SMAPI inside of arcade

#

i dunno if it'll like that

rancid musk
#

-# Alternatively embed an SNES emulator and load up Harvest Moon

fierce vault
#

Hi... I'm trying to add a custom path as a new object, but in reading the wiki, I'm not entirely sure how to format my new season stone path.

#
"Changes": [
    {
        "Action":"Load",
        "Target":"{{ModID}}_TownStonePath",
        "FromFile":"assets/{{season}}_White_stone_path.png"
    },
    
    {
        "Action":"EditData",
        "Target":"Data/FloorsAndPaths",
        "Entries": {
          "ID": "{{ModID}}_WoodFloor",
          "ItemId": "{{ModID}}_WoodFloor",
          "Texture": "{{ModID}}_WoodFloorTexture",
          // Additional fields etc
         }
    },            
    ]
}
reef kiln
lucid iron
#

you also need a Data/Objects entry

rancid musk
#

It just makes me think of how the original Animal Crossing had all those emulated NES games.

lucid iron
#

in yakuza its tradition to just let you have entire games

dusk mulch
fierce vault
#

I know, but I'm having trouble finding a mod which demontrates how to put the commands in visually

lucid iron
#

wrong link oops

fierce vault
#

Maybe the stuff from the wiki is supposed to be obvious to someone who has a better understanding of fromatting already?

lucid iron
#

so the things wiki lists in a table usually translates to 1 entry

fierce vault
#

Just not sure how to format everything

native saddle
#

Does anyone know if the custom backpack (Return of Custom Backpack) framework does well in multiplayer?

reef kiln
#

That's an example of how to add a path.

fierce vault
#

Ok. I'll take a look

#

I'll let you know if it works

dusk mulch
#

Are the achievement icons hardcoded?

hard fern
fierce vault
hard fern
#

(if you mean the weird smiling stars)

dusk mulch
#

It doesnt say anything about it on the wiki

hard fern
#

oh i dont know that

dusk mulch
lucid iron
fierce vault
#

Where would it be in the unpacked?

lucid iron
#

here's cobblestone path for example

"8": {
  "Id": "8",
  "ItemId": "411",
  "Texture": "TerrainFeatures\\Flooring",
  "Corner": {
    "X": 0,
    "Y": 128
  },
  "WinterTexture": "TerrainFeatures\\Flooring_winter",
  "WinterCorner": {
    "X": 0,
    "Y": 128
  },
  "PlacementSound": "stoneStep",
  "RemovalSound": "hammer",
  "RemovalDebrisType": 14,
  "FootstepSound": "stoneStep",
  "ConnectType": "Path",
  "ShadowType": "None",
  "CornerSize": 4,
  "FarmSpeedBuff": -1.0
},
#

Data/FloorsAndPaths

#

its the very data you are editing

fierce vault
#

Oh, that is all exactly what I need

#

Thank you

dusk mulch
#

oh. these freaky faces get slapped onto the star

fierce vault
#

lol

dusk mulch
#

Is there a way to index a texture for an achievement?

fierce vault
#

One question about the Item id though. Since this is a new item, do use a mod id instead or something?

rancid musk
# dusk mulch oh. these freaky faces get slapped onto the star

Looks to be random, seeded based on the achievement's name. cs if (this.currentTab == 5 && drawColor) { int startPos = Utility.CreateRandom(Convert.ToInt32(nameParts[0])).Next(12); b.Draw(Game1.mouseCursors, new Vector2(c.bounds.X + 16 + 16, c.bounds.Y + 20 + 16), new Rectangle(256 + startPos % 6 * 64 / 2, 128 + startPos / 6 * 64 / 2, 32, 32), Color.White, 0f, new Vector2(16f, 16f), c.scale, SpriteEffects.None, 0.88f); }

dusk mulch
rancid musk
#

"seeded based on the achievement's name"

dusk mulch
#

oh.

lucid iron
#

what is the point of this mr ape...

tiny zealot
uncut viper
#

i mean i think its a fun feature

dusk mulch
brittle pasture
#

strategically naming all my achievements in a way to ensure they all get cool glasses face

rancid musk
#

"Yes my achievement name did need to have 47 spaces after it"

rigid oriole
#

i need past me to tell current me why she wrote a transpiler to insert switch cases when she could have instead easily made a prefix

lucid iron
#

ive never been more tempted to ping ConcernedApe in my whole life to ask about this

uncut viper
#

also, keep in mind your achievements will be very incompatible with any other mod that adds achievements, since they are int keyed

rigid oriole
#

i did learn about labels from it which was cool

#

now i make the occasional baby if statement with transpilers

brittle pasture
#

we do things not because they are easy, but because we thought there were no easier ways

rigid oriole
#

but seriously what was I on 😭

lucid iron
#

in my first few mod i usually go

#

transpilers go brrr

#

and then a day later i remove all of them for postfixes

uncut viper
#

i still like to defer to a transpiler if its possible

#

but at this point not even a transpiler is enough for me i need something more hacky and ingrained

rigid oriole
#

i was going to end up with an absurd number of switch cases

tiny zealot
#

my first question about patching a function is "can i do this with a postfix"

rancid musk
#

I was reading again, it's not achievement name, it's achievement id.

vernal crest
rancid musk
#

The local variable names tricked me up

rigid oriole
#

i have converted to a nice little custom api for the handlers instead

lucid iron
#

my first question is are there fun net events i can steal for this

brittle pasture
#

well that does make things easier, no need for 47 spaces

dusk mulch
#

To get an achievement do I need to set a Trigger action/GSQ? (I get the 2 mixed up)

uncut viper
#

no need for spaces, however good luck finding an int that works when it needs to be sequential (iirc) and also if someone else wants the glasses you'll be fighting them for it

rigid oriole
#

i vote we switch to a consistent hashing ring where each achievement id is assigned to the next icon around the hashing ring /j

uncut viper
#

you cant grant an achievement with CP

rigid oriole
#

what if you could with betas /lh

uncut viper
#

someone would get mad at me when someone releases a mod that auto grants all steam achievements without realizing it bc they already had them unlocked

dusk mulch
uncut viper
#

i said cant

#

cannot

brittle pasture
#

time for secret notes framework but for achievements

uncut viper
#

in fact it might even throw an exception without a framework regardless

dusk mulch
#

oh

uncut viper
#

bc it will always try to grant the platform-specific achievement i.e. steam or gog

#

and i dont know what that does if it cant find one

lucid iron
#

just add powers instead tbh

dusk mulch
#

Then why even have CP documentation for achievements!?

brittle pasture
#

if you don't mind your custom achievements being in the powers tab you can add them there

uncut viper
#

you'd need to circumvent that with a patch

lucid iron
#

its basically same thing gameplay wise

uncut viper
#

because you can alter the data of the existing ones?

reef kiln
#

Are steam achievements linked to the I game ones? Would modding them allow me to unlock the steam one too?

uncut viper
#

yes

#

source: accidentally gave myself the infinity weapon achievement illegitimately. rip.

dusk mulch
uncut viper
#

that is difficult to do in CP anyway

brittle pasture
#

powers don't need to do anything

uncut viper
#

you're extremely limited in what a power can "do" without C#

brittle pasture
#

they can just be a pretty icon thatc lights up

uncut viper
#

the power itself on the tab does literally nothing. its just an icon that essentially says "you have this mail flag"

brittle pasture
#

and yeah you'd be limited with what you can fire with mail flags and trigger actions (and stats?)

uncut viper
#

(its not always a mail flag, but the point stands)

brittle pasture
#

which to be fair there are lots of things you can do with frameworks and mail flags

dusk mulch
#

thats it, im just going to make my own farm

uncut viper
#

editing Data/Powers or Data/Achievements cannot do anything that you cannot already otherwise do with CP

#

its just mail flags but fancy icon

hard fern
#

have fun in tiled? i guess XD

reef kiln
dusk mulch
uncut viper
#

a flag is a binary thing

#

you either have it or you dont

#

there is nothing to stack

lucid iron
#

u can unset it i guess

reef kiln
#

Shoot, another mod I can't make.

lucid iron
#

dunno if u get += amount of hp or not

tiny zealot
#

there are player stats though, if you want a sort of stackable memory item

uncut viper
#

however be aware that you need a dependency to use player stats in a CP token

#

otherwise you either need EMP or a trigger action middleman

tiny zealot
#

ah, true

uncut viper
#

using a trigger action that checks stats to send a mail flag to use in a token is possible, just annoying to have to do

brittle pasture
#

...I was halfway through typing up a pure CP solution before realizing there is no "+max hp" buff

#

(to be clear said solution wouldnt allow indefinite stacking anyway, but maybe up to 5 or 6 is fine)

uncut viper
#

do you count CP frameworks as pure CP

brittle pasture
#

(you need to write out every flag)

#

yes

uncut viper
#

are you only discounting c#

brittle pasture
#

you'd need spacecore for buff on eat

uncut viper
#

because BETAS has an action that can set your health and override the max

brittle pasture
#

and flag on eat

#

wait it does?

brave fable
uncut viper
#

though, I can't remember if I have a tokenizable string for the current max

uncut viper
reef kiln
#

I just wanted a balance why to get more HP. Didn't need infinity. Just some way to get more a few time. Kind of like stardrops. But every way I could think of does not work. So when you mentioned the flags I wondered if I could add that one more than once.

calm nebula
#

I mean you can permanently add a max health buff lol

#

It's doable

#

Just do a trigger action every morning

brittle pasture
#

that is my solution yeah, the snag was that there is no max health buff (in vanilla)

lucid iron
#

terrible times

uncut viper
#

BETAS can't actually do it at the moment either anyway because it's a Setting action not an Adding one

brittle pasture
lucid iron
#

its slightly panoramic

uncut viper
#

unless there's a player stat for Max hp

reef kiln
brave fable
#

i mean you can do anything you want hahah

lucid iron
#

yea im in C#

uncut viper
brave fable
#

i guide others to a treasure i cannot claim myself.... (cooking food other than crab cakes)

uncut viper
#

(tbf that's basically half my mods too, being frameworks that I do not use)

rancid musk
#

I guide others to a treasure I cannot possess (clickCraftingRecipe transpilers)

brittle pasture
#

wait you cook those?
I have stacks of 50 from killing crabs in skull cavern

#

and 100 spicy eels

brave fable
#

i need to get to the crabs and serpents somehow lol

#

that's where cooking the spicy eel and crab cakes come in

calm nebula
#

I could have sworn

uncut viper
#

you often do

calm nebula
#

Does the tea not

brittle pasture
#

max energy

brave fable
#

max energy yes, max health no

tawny ore
#

I mean, my frameworks require you to have some artistic talent to use them. This is what happens when I use my own framework

tiny zealot
reef kiln
#

I have only cooked spicy eel once. To get perfection. Now I have to do it agian because of the steam achievements.

uncut viper
#

you guided yourself to a treasure you could and do possess

#

we should all be so lucky

reef kiln
brittle pasture
#

outside of EMC and furniture machine every framework I made I use
(which is 3/5 now that I actually do the math so not that impressive I suppose)

#

wait no, I do use EMC in the poop mod

uncut viper
#

sounds like you need to make more frameworks

rancid musk
#

Using your own API is good.

lucid iron
#

so i think this chunk thing is about tiling the bg and picking random non default chunks to draw

brave fable
lucid iron
#

what is it for...

brave fable
uncut viper
rancid musk
#

Randomly running around in my test save. I'm sure this is meant to be like this /s

fierce vault
lucid iron
#

nice mangrove

rancid musk
#

(Clearly I removed a mod that edited this map after saving, once, but it's still funny)

reef kiln
#

What mod other then SVE edits that map?

uncut viper
#

the Forest? a lot of mods I'm sure

lucid iron
#

its cindersnap

#

everyone lives there

reef kiln
#

Yay but whatever mod it was made it bigger, not just added a building or warp.

lucid iron
#

terrible times

fierce vault
#

Do I need any corner value like: "CornerSize": 4, when my paths are regular, randomized, stone? Can this be removed? Also, I'm not sure what the 4 is even refering to.

vernal crest
#

Are you using the wiki page for reference?

fierce vault
#

I've been using that, and a few other things

#

I already forget which page it may be from, so I'll need to look through several of the relevent ones again.

vernal crest
#

Well as the wiki page says the 4 is the number of pixels that the corner is the size of.

fierce vault
#

Oh

dusk mulch
#

Is there a way to spawn a shed on farm creation without FTM?

fierce vault
#

I need to open more tabs for all the current reference pages

#

Do I need this corner value though?

vernal crest
#

Do your paths have a decorative border?

rigid oriole
#

shoutout CA for making the utility method sparkleWithinArea

brittle ledge
#

question, are there really no commands to cancel or complete a special order?

brave fable
#

Utility.makeTemporarySpriteJuicier() gives life to my dry, parched bones

royal stump
fierce vault
dusk mulch
#

Then I guess I will need to make do with what I got

vernal crest
# fierce vault They do not

You're making a stone path, right? Why not just copy the vanilla one and then test it and adjust the values if needed?

rigid oriole
calm nebula
#

But yeah

rigid oriole
#

seems like SpecialOrder will add one by id

calm nebula
#

There may be an action command too

vernal crest
#

There is

rigid oriole
#

remind me in 2 hours to update wiki debug commands

patent lanceBOT
#

mmmmmmmmmmm I'll think about it (#6586438) (2h | <t:1742526737>)

vernal crest
#

You can add or remove one by id with an action

royal stump
#

there's add/remove SO actions, but not a complete afaik, yeah

brittle ledge
#

thank you

#

CompleteSpecialOrders completed it but didn't remove it from my journal FYI

fierce vault
rigid oriole
#

debug commands do tend to be pretty barebones

brittle ledge
#

I would still like to lodge a complaint SBVLmaoDog

rigid oriole
#

thanks for the heads up

fierce vault
#

The issue I have is that it is very hard to find the examples I need through the folder for some reason.

vernal crest
#

Are you struggling to find the right file in the Data folder?

fierce vault
#

Yes. I'm not really sure how other people find stuff the content unpacked folder, because I can't just search the keyword and then find the data reference I need.

vernal crest
#

Usually by looking at the name of the Target they're editing in their mod

#

Or reading the name of the file on the wiki page

#

But you can also do a "find in files" search to search for a word or phrase across an entire folder or set of folders

brave fable
fierce vault
brave fable
#

they'll search all text files for whatever you're after, which includes maps. super simple!

sour sleet
#

I'm concerned with my NPCs having the same birthdays as other NPCs whether they be vanilla or from other mods. Is there a limit to who can share each date?

rigid musk
#

how would i patch a tile property on the back layer with cp :L i cant figure out how id do the formatting

#

there is not a limit to who can share each date

#

(take it from someone who has a really large amount of npcs... ive seen four birthdays on the same day before lmao)

sour sleet
#

Good to know, thanks Lily SDVpuffersquee

rigid musk
#

vibincat happy to help always :D

lucid iron
rigid musk
#

such speed chu...

lucid iron
#

under "MapTiles": [

rigid musk
#

thank you SDVpufferheartSDVpufferheart hopefully it works or else i will go insane

#

I don't think I've ever had so many people so sad they couldn't use a warp rune before lmao

#

ive already done so many things for 1.1.0 and yet none of the main things that need to be done... how does one even design an arena that's cool

#
            "LogName":"WalnutRM Warp to Qi Room",
            "Action":"EditMap",
            "Target":"Maps/QiNutRoom",
            "MapTiles":{
              "Position": {
                "X": 1,
                "Y": 6
              },
              "Layer": "Back",
              "SetProperties": {
                "TouchAction": "MagicWarp AngelOfStars.Mrqifriendable_QiRoom 2 4 angelofstars.officeunlock.mail"
              }
            },
        },```
#

does this look right :L

lucid iron
#

maptiles is a list

#

otherwise seems fine

dusk mulch
#

i think i need a break from modding

rigid musk
rigid musk
uncut viper
#

[] instead of {}

rigid musk
#

OH

vernal crest
uncut viper
#

and the things inside the list must be in a {}

rigid musk
#

you know I thought it would be that... but i wasnt sure

rigid musk
uncut viper
vernal crest
lucid iron
#

i omit the surrounding Content

tiny zealot
brittle pasture
#

except for major festivals probably

fierce vault
#

So, my custom paths mod has no smapi errors, but it didn't show in the game. I mixed the examples people sent, the example of cobble stone paths I found in the content json, and stuff from the wiki into this, and because I could find no clear all encompassing example of what the content json needed, I certainly must have just combined everything in the wrong way. Here it is:

sour sleet
#

!json @fierce vault

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.

fierce vault
brave fable
#

did you also add an entry to Data/Objects ?

sour sleet
#

It's best to upload you JSON to the website that governor linked

fierce vault
#

I deleted that entry when combining stuff...

brave fable
#

you need a held-item version as an entry in Objects in order to actually use it ingame

reef kiln
fierce vault
#

Ok, what issues does linking the file cause? I can try the smapi command if I do it again.

lucid iron
#

its hard to read

fierce vault
#

Ok. gotcha

brave fable
#

and it isn't validated, which the web parser will try and do

fierce vault
#

I'll make some edits and see if it works

#

These are the errors I got:


[Content Patcher] Can't apply data patch "WhiteTownStones > EditData Data/FloorsAndPaths #2 > entry #2" to Data/FloorsAndPaths: failed converting String value to the expected type 'StardewValley.GameData.FloorsAndPaths.FloorPathData': Error converting value "ParcySnippet.TownStonePath_TownStonePath" to type 'StardewValley.GameData.FloorsAndPaths.FloorPathData'. Path ''..

[Content Patcher] Can't apply data patch "WhiteTownStones > EditData Data/FloorsAndPaths #2 > entry #3" to Data/FloorsAndPaths: failed converting String value to the expected type 'StardewValley.GameData.FloorsAndPaths.FloorPathData': Error converting value "ParcySnippet.TownStonePath_WoodFloorTexture" to type 'StardewValley.GameData.FloorsAndPaths.FloorPathData'. Path ''..```
brave fable
#

!log SDVdemetriums

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.

uncut viper
#

as blueberry says you should upload a full log to smapi.io instead, but your last patch is wrong. you just went right into adding data about your floors and paths before giving it an entry key

fierce vault
#

Sorry, I was trying to figure out how to put the log with personal data removed. It said it was invalid to just paste of portion of it in the validator.

rough lintel
#

can i do this in keg machine rules, or do i need to use selph's extra machine config to add a second input? "Triggers": [ { "Trigger": "ItemPlacedInMachine", "RequiredItemId": "(O)271", "RequiredCount": 1 }, { "Trigger": "ItemPlacedInMachine", "RequiredTags": "category_fruit", "RequiredCount": 1 } ],

lucid iron
#

if you do this it means u can use (O)271 or any fruit as input

#

is that what u want

rough lintel
#

no i want it to be AND

#

271 AND a fruit

lucid iron
#

need EMC

rough lintel
#

gotcha!

lucid iron
#

u can look at cornucopia's various mayos

rough lintel
#

true!

#

what about, when i want the result to be named {thing i put in there} Soju

#

bc wine does this in its outputrules "ItemId": "FLAVORED_ITEM Wine DROP_IN_ID",

lucid iron
#

need to set preserve id

#

check cornucopia's picked eggs

rough lintel
#

thank u!

latent mauve
#

Two questions, both of which I feel like the answer is probably "yes", but I want to make sure I'm not doing more work than necessary:

  1. In order to have a 3x5 furniture object that has seats only in the center tile, would I need to use Furniture Framework?
  2. If the object was previously added via CP, do I need to completely erase it/recreate it as a FF object instead?
#

Also 3rd question that I just thought of: Is it possible to use i18n tokens in Furniture Framework for Display Names?

uncut viper
#

Furniture Framework (right now) does not use CP at all, so you cannot use any CP tokens inside of it, which includes i18n tokens, as those are just a CP thing

#

(i know the author has been working on a rework for a while though to let it use CP, though)

vernal crest
#

Could you use a LocalizedText tokenisable string to call another asset that you could use i18n in?

lucid iron
#

i thought leroy made it CP

uncut viper
#

if FF supported that, sure. but the docs say it doesnt

uncut viper
#

the current version on nexus does not use CP

#

only an in development branch on github

vernal crest
#

Though if it doesn't work then that obviously doesn't make it translatable haha

lucid iron
#
{
  "Action": "Load",
  "Target": "{{ModId}}/i18n",
  "FromFile": "i18n/default.json"
},
// chinese
{
  "Action": "Load",
  "Target": "{{ModId}}/i18n",
  "TargetLocale": "zh-CN",
  "FromFile": "i18n/zh.json",
},

then u can [LocalizedText {{ModId}}/i18n:YourKeyHere]

uncut viper
#

well, you cant with FF

rough lintel
#

if i have regular unflavored soju (which is just made with (O)271 ) and flavored soju (which is made with (O)271 and a fruit), do i need to set something somewhere as "UseFirstValidOutput": false, so it like... checks if u have a fruit and doesnt just default to the og?

uncut viper
#

unless the docs themselves are mistaken

vernal crest
lucid iron
#

for 1 what if you add m o d u l a r couch

#

my couch should be arbitarily long

reef kiln
vernal crest
#

I didn't realise it was possible for something to not have support for tokenisable strings

rough lintel
#

oh okay!

lucid iron
#

the middle pieces are sittable

uncut viper
#

nothing supports tokenizable strings unless its done on purpose

rough lintel
#

so i dont need the "UseFirstValidOutput": false,?

uncut viper
#

you have to parse the token, after all

lucid iron
#

and theres end pieces that r not

uncut viper
#

but if your code never calls the parser, it wont be parsed

fierce vault
uncut viper
#

instead of

"Entries": {
  "ID": "blabla",
  ...
}

you need to give it an entry key.

"Entries": {
  "MyFloorPathDataId": {
    "ID": "blabla"
    ...
  }
}
fierce vault
#

Oh, that's for the mod id right?

uncut viper
#

otherwise, its just taking "ID" as your entry key, and trying to use the string "blabla" as the entire set of floor and path data

vernal crest
#

I am seeing an entry key: "{{ModId}}_TownStonePath": {

uncut viper
#

you've done it correctly in your first Data/FloorsAndPaths edit

#

but not in the second one

#

so see further down

fierce vault
#

Oh, the second one

vernal crest
#

Oh yes the json validator link one

latent mauve
#

Yeah, for my case, I'm looking at the HxW furniture swing bench

#

Which has pillars on the two sides and the only actual 'seat' that the character can sit on without looking wonky is in the middle

#

(Making it FF compatible with fixed seats would be a personal edit)

lucid iron
#

the swing should be infinitely long then

#

it'll be great trust

fierce vault
#

So like this right? ``` {
"Entries": {

      "{{ModId}}_TownStonePath": {
  "Action":"EditData",
    "Target":"Data/FloorsAndPaths",
    "Entries": {
      "ID": "{{ModID}}_TownStonePath",
      "ItemId": "{{ModID}}_TownStonePath",
      "Texture": "{{ModID}}_WoodFloorTexture",
    }
  }```
rough lintel
#

do i need the ItemId AND the PreserveId for a wine, or does the ItemId set the PreserveId?

"ObjectInternalName": "{0} {{ModId}}_FlavoredSoju",
"ObjectDisplayName": "[LocalizedText Strings/Objects:Soju_Flavored_Name %PRESERVED_DISPLAY_NAME]",
"PreserveId": "DROP_IN_PRESERVE",```
fierce vault
#

Oh wait, some example mod ids are left in

#

I'll fix that

lucid iron
#

you can't use FLAVORED_ITEM for modded items

#

it only supports the vanilla artisan goods

#

PreserveId is the path for mods

rough lintel
#

oh ok

#

so i can ........ ignore the ItemId field?

#

like just delete it, or do i just have {{ModId}}_FlavoredSoju in there

odd ginkgo
#

how would you make a map patch happen immediately after an event? I'm currently using HasSeenEvent but that only updates the map the next day, after a game save

#

i've dug myself into a hole haha

uncut viper
#

if you set the patch update rate to OnTimeChange or OnLocationChange, it'll change upon those two things instead. are either of those quick enough?

odd ginkgo
#

Yes!

fierce vault
#

OK, this is the only error I got now: ```[Content Patcher] Ignored WhiteTownStones > invalid: must set the Action field.

odd ginkgo
#

okay, thank you

odd ginkgo
#

extra thank you, I was just searching for that page

fierce vault
#

I'm not sure what I missed for that error to happen

uncut viper
#

one of your patches doesnt have e.g. "Action": "EditData"

#

either due to just forgetting it straight up or misplaced braces or what have you

fierce vault
#

Hmm, I'll look again, but I'm having trouble

uncut viper
#

specifically its the one where you're adding white town stones

fierce vault
#

Yes, that mod has yet to work

uncut viper
#

ah, ignore me, just me confusing the number of >s in that kind of error again

#

and what just one means

fierce vault
#

Would it help if I upload the content json again?

uncut viper
#

(i forgot that WhiteTownStones would be the name of the mod and not CP's auto assigned name of that patch)

#

i mean technically yes though it'd just be more eyes looking for the same misplaced braces

reef kiln
#

Yes, your latest.

uncut viper
#

or missing action field

fierce vault
#

I need more eyes

#

Mine are failing

uncut viper
#

then sure, send it

sour sleet
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 12 C# mods and 4 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

fierce vault
uncut viper
uncut viper
fierce vault
uncut viper
#

why not just Portraits/RubyLilybrook

vernal crest
sour sleet
uncut viper
sour sleet
#

Ahh I understand

uncut viper
#

if you removed the texturename field you had before then its just Portraits/RubyLilybrook and Characters/RubyLilybrook etc you want

reef kiln
uncut viper
sour sleet
#

Thank youuu

vernal crest
fierce vault
uncut viper
#

the game will look for Portraits/{{NAME}} by default. the TextureName field you were using overrides that and makes it look somewhere else

uncut viper
#

once you closed that last }, it closed the patch. also, Load patches have no entries

reef kiln
#

Line 57

fierce vault
#

ok

vernal crest
#

Unless it's intentional that you're just using the vanilla one for now, in which case ignore me :)

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 11 Home, with 12 C# mods and 4 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

fierce vault
#

The png I specified doesn't count?

uncut viper
sour sleet
uncut viper
uncut viper
fierce vault
sour sleet
#
      "Action": "Load",
      "Target": "Characters/RubyLilybrook",
      "FromFile": "Assets/{{Target}}.png"
   },
``` this is what I have now
uncut viper
#

if i had to guess, null in a texture in a vanilla entry means itll use the default, which i guess is TerrainFeatures\\Flooring

#

but you presumably want to use your custom one

vernal crest
uncut viper
sour sleet
fierce vault
#

So, this? : "Texture": "TerrainFeatures\\Flooring",

#

Oh, it should be the asset actually right?

#

I fixed it wrong

patent lanceBOT
uncut viper
# sour sleet But isn't my target already correct?

well.. okay, then my initial incorrectness stems from the fact that this wouldve been incorrect for the way you originally had it if you havent changed your folders since then SDVpuffersquee how sure are you that that is a .png and not a .png.png?

#

i think it wouldve been incorrect anyway?

#

idk it doesnt matter now

#

one of the two ways wouldnt match if the fromfile has not changed. your fromfile is currently looking for Assets/Characters/RubyLilybrook.png

sour sleet
#

Double checked just now and it's not

#

It's within a folder though, will that make a difference?

uncut viper
#

(another reason for using standard conventions: less confusing when someone else tries to parse it SDVpuffersquee)

dusk mulch
#

remind me in 24 hours to Make that mod idea you thought about

patent lanceBOT
#

yeah, yeah you'd like that, wouldn't you squint (#6586570) (24h | <t:1742613283>)

dusk mulch
#

what do you mean by that

uncut viper
#

change your fromfile to Assets/{{Target}}/{{TargetWithoutPath}}.png if you really want to keep your folders like that

sour sleet
#

What's the conventional set up?

uncut viper
#

i meant the convention for the portrait load

sour sleet
#

Oh

uncut viper
#

basically, base your fromfile off of the target, not vice versa

#

for things like this anyway

#

if its a completely made up target it doesnt matter

tiny zealot
#

most mods of my acquaintance use TargetWithoutPath and not Target in their FromFiles

uncut viper
#

that is also true

vernal crest
#

You also don't have to use a token. You can just write out the FromFile path in full.

#

Especially if you're only loading one thing anyway.

uncut viper
#

thats also true, if you're gonna use a token you might as well put all of them in one line

tiny zealot
uncut viper
#

thats the main benefit of the token

sour sleet
#

Ah ok, I will try writing it out in full and see if that loads them

vernal crest
#

I don't like using the tokens because I don't like naming my files the same thing as my Target

uncut viper
#
"Action": "Load",
"Target": "Characters/RubyLilybrook, Characters/RosieLilybrook, Characters/TracyLilybrook, Portraits/RubyLilybrook, Characters/RosieLilybrook, Characters/TracyLilybrook",
"FromFile": "Assets/{{Target}}/{{TargetWithoutPath}}.png"
#

you can do this

fierce vault
#
System.InvalidOperationException: Error parsing '}}_Town_stone_path.png' as a tokenizable string````
uncut viper
#

otherwise theres no reason to use the token really

fierce vault
#

What did I do wrong now?

uncut viper
#

mismatched number of {{ and }}

fierce vault
#

Oh, I'll see if I can find it...

uncut viper
#

somewhere around one of your ModId tokens

rigid oriole
uncut viper
#

looks like probably your Load patch for TownStonePath

#

which would be season actually

#

I just assumed it would be ModId

fierce vault
#

Does this look wrong? { "Action":"Load", "Target":"{{ModID}}_TownStonePath", "FromFile":"assets/{{season}}_Town_stone_path.png" },

uncut viper
#

if thats whats in your content.json, are you sure you saved the file?

fierce vault
#

I'll run it again

uncut viper
#

otherwise, send the whole json

fierce vault
#

ok

sour sleet
#

All good now, thanks for your help SDVpufferheart

rigid oriole
#

alright, added 19 new debug commands to the wiki page

deep cypress
#

So, a shoe is not an item, but a shirt is an item???

rigid oriole
#

that actually took me so long I need to stop working for the night lol

brave fable
#

what do you mean by one is an item?

fierce vault
#

ohh

#

I see one of the issues

#

I found the missing {

deep cypress
#

I think my problem stems from programming whilst ill. A patch on item is applying to shirts, but not to shoes. I reckon cause the origical methid in item what I am patching. does not call the shoes.

brave fable
#

Boots have a number of override methods without calling base within, so if you're patching a method on Item then you may also need to patch the override on Boots

deep cypress
#

Hmmmmmm.... that may be it too.

#

Yes, you are quite correct, I shall there proceed! To patching!!! To glory!!! And a red dawn!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

rancid musk
#

So has anyone started making a newer shinier GMCM based on Stardew UI yet?

lucid iron
#

only focustense himself kyuuchan_run

#

i guess it'd be a PR of some sort to CP right

rancid musk
#

Though I guess if Stardew UI is installed it isn't much effort to just make your own config UI. It's just... not centralized that way.

lucid iron
#

the solutions in StarControl and AFishingSea are to patch GMCM to just open into a stardewui menu

#

i suppose with BGM you can be the person to do that khloe

tiny zealot
lucid iron
#

make a tab that takes arbitrary IClickableMenus that happen to be config menus most of the time

#

then a C# mod could use whatever they want there

rancid musk
#

I mean we could make GMCM its own tab using Better Game Menu. That's something I haven't really talked to casey about yet, since it's more effort on that end.

lucid iron
#

it could be made to take GMCM/SpaceShared ui menus if we can expose it in api

#

or i guess, if GMCM registered to the BGM config tab when available

rancid musk
latent mauve
#

Well, I've officially stretched beyond Content Patcher and made my first FF content pack. Hopefully it works. xD

(It did not work)

spring marlin
#

random idea i just had: Smaller fish ponds, like cute little 3x3 ones, probably much more expensive, maybe from the wizard for a lot more than the normal ones, or even cute little 1x1s that aren't a structure but rather something you can break with your pickaxe

lucid iron
#

this one affects og fish ponds by default, but the way it works means you can use it to make a even smaller 3x3 pont that cost more if desired

calm nebula
#

Good morning!

latent mauve
#

"Missing or invalid format, skipping Furniture pack" SDVpufferwaaah

latent mauve
#

Well, it loads now but I can't actually sit on my furniture.

#

So something's still wrong somehow, but it's not throwing errors

fierce vault
#

I gave up on my custom paths for today at least after spending hours trying to get it to work.

#

Sometimes a break is needed

#

Hope you can figure your issue out later.

sour sleet
latent mauve
#

I can get CP sittables to work just fine, I just needed FF sittables instead so it doesn't have me sit in midair. >_<

latent mauve
#

I'm starting to think FF seats don't work if you only have one rotation.

sour sleet
#

Oh my bad haha, I’m using CP

crude plank
#

I can't wait for Better Game Menu it's going straigth into the must have qol category

latent mauve
#

Going to bed now, but I managed to get only one of the furniture seats working: for the only furniture item that has at least one rotation.

#

So definitely something wrong with the setup for furniture with a rotation of 1, because everything else is functionally identical.

#

There are no examples of seats with only one view either.

amber adder
#

(Am I getting tagged in her multiple times or is my discord just tripping? Every time I scroll up I don't see anything)

rigid oriole
#

Try checking your inbox?

amber adder
#

(Okay I'm going with discord is tripping- good to know)

dusk mulch
#

omg i just had an idea for a mod

#

can someone evaluate it to see if it is good or not

gentle rose
#

sure, shoot

dusk mulch
#

so a postal center that you can visit and you can sort the mail between spam and real mail to get a bit of gold once per week

#

like a little mini game for a bit of gold

gentle rose
#

oh, some people might enjoy that! but depending on the kind of minigame, it would definitely require c#

dusk mulch
#

how is there not a minigame framework yet? i feel like that would be popular

#

i will figure something out

gentle rose
#

how would you make a minigame framework

brave fable
#

the same reason there's not a catch-all do-anything menu framework hahah

#

every game is going to be different

dusk mulch
#

true…

gentle rose
#

games kind of have to be developed, they're too dynamic

brave fable
#

is IMinigame not enough for you..

#

so greedy

crude plank
#

I don't think adding the game would be the hard part, making the game would mean actually coding a little game

dusk mulch
#

oh god does that mean i need to get back into C#

gentle rose
#

eat your monogame and be grateful, there are starving children in gotoro

dusk mulch
#

i really want to make this

#

C# is the same syntax as JSON right? {} to open/close a function?

brave fable
#

i'd absolutely suggest you ignore the whole SDV side of this and instead lookup a guide to making funny little games

#

since the moment you say 'i will make a minigame' you're no longer in the mindset of making a sdv mod, you are now making a game

dusk mulch
#

i already have an idea of what the game to be, just have a conveyor belt that you can move left to right with A and D or arrow keys

#

then left is spam and right is mail

#

ok i think before i even THINK about making the minigame i should make the actual building first

brave fable
#

and all journey of the prairie king is, deep down, is a guy you move with WASD and enemies spawn in from 4 places

#

and then you look at StardewValley.Minigames.AbigailGame.cs

#

and you see the full horror

dusk mulch
gentle rose
#

you're going to need a lot of those too...

#

spawn randomising for the packages

#

textures obviously are just something everything needs

dusk mulch
#

i don’t need path finding, just spawn randomising, textures, and mental strength

brave fable
#

i mean obviously start small and focus on the most basic feature first

dusk mulch
#

true

brave fable
#

but you're gonna need foundational knowledge even before it starts scaling

dusk mulch
#

yeah…

gentle rose
#

path finding is honestly pretty simple in prairie king and you'll need the packages to follow a path too

dusk mulch
#

oh true

gentle rose
#

anyway yeah, I recommend learning actual monogame first

dusk mulch
#

let’s slow it down so i can go make the manifest first

#

uh

crude plank
dusk mulch
#

what is a monogame? i have seen it in logs and stuff

gentle rose
gentle rose
dusk mulch
#

is there documentation that can help me with this?

dusk mulch
gentle rose
#

honestly I haven't taken a close look at how IMinigame (the game's integration) works yet

crude plank
brave fable
gentle rose
#

oh god, I'm gonna go look it up now

dusk mulch
#

so uh… is there documentation?

gentle rose
#

for monogame yes, for IMinigame no

brave fable
#

wdym. iminigame has documentation

#

there it is

dusk mulch
dusk mulch
gentle rose
#

god I knew what I was about to get and still hoped KEK

uncut viper
#

to be clear Person, you know you're not actually asking for stardew documentation or help here, right? this plan of yours is literally to make a game

#

like its not something you "just" do and its not something you'd "just" put in the game at the end

dusk mulch
brave fable
#

i've started and abandoned like 3 different minigames at this point hahah

#

the pipeline from wondrous idea to abysmal regret comes at you fast

gentle rose
#

I may try to plug my solitaire implementation into stardew and see how it goes

brave fable
#

maybe 4 actually, that cooking thing started off bold

uncut viper
#

this channel can help with stardew specifics but otherwise you're kind of just entirely on your own bc minigames are that freeform

dusk mulch
#

fun… i will be wandering off into the abyss now to go cry myself to sleep after multiple failed attempts /j

brave fable
#

i was thinking of picking up UFO 50 in the last steam sale for inspiration and then i decided i absolutely will not do that

uncut viper
#

you should do that

#

please make mea Mooncat stardew arcade machine

marble verge
#

Good morning. The JSON validator complains about having dots in Dynamic Token names. Is this actually a problem, or something I can just ignore?

brave fable
#

it's a problem, yes

marble verge
#

I've since changed them into underscores, but I just wanted to double-check.

#

For my education, is there a particular reason why it's problematic?

brave fable
#

The token name should be alphanumeric with no special characters.
given the error, i'd take it to mean no undersccores either. i put together a content pack with some badly-named dynamic tokens and CP didn't log any issues, though

#

at a guess, i'd assume something to do with query formatting in tokens

marble verge
#

The underscores don't appear to trigger a warning 🤔

uncut viper
#

im not saying underscores will cause problems, but dont take the validator as the source of truth

#

it doesnt matter what the validator says if Content Patcher doesnt like something

brave fable
#

if we can't trust the validator in this cruel world, what can we trust

#

other than cp

marble verge
#

Hrm. Well, CP doesn't seem to have a problem with underscores (or dots, for that matter), so I guess I'm safe. Thanks!

uncut viper
#

maybe not now, but if CP ever does any parsing related to those characters in the future (like how it uses | for |valueAt and such), then you'll be shit out of luck with a lot to update

marble verge
#

Point taken.

dusk mulch
#

Does the latest monospace version still support the microsoft net 6.0 framework?

idle otter
#

hi!! what programming language is used in making mods?

dusk mulch
#

CP is easier imo.

hallow prism
#

it's not really a specific language, more a formatting

#

it's coding adjacent 😄

#

content pack is indeed more friendly to new modders 🙂

unique sigil
#

(also most mods out there are content packs! and you don't need any programming knowledge to make content packs with Content Patcher, just good reading comprehension /lh)

idle otter
#

tysmm all

dusk mulch
#

Does anyone know what version of monospace SDV uses?

#

Or can we use the .NET 8.0 framework instead of the 6.0?

brave fable
#

we're limited to .NET framework 6.0

dusk mulch
#

I keep getting this error

#

I am using .NET 6.0 and monospace 5.1 (i tried 6.1 but i kept getting the error so i tried 5.1 just in case)

uncut viper
#
if (!chest.GetMutex().IsLocked())
{
  chest.GetMutex().RequestLock(() =>
  {
    chest.ShowMenu();
    Game1.activeClickableMenu.exitFunction += chest.GetMutex().ReleaseLock;
  });
}

is there a reason that this just... wouldnt release the lock, but only if i actually interact with the items in the chest? if i just open the chest but dont touch anything and then close it, the lock does correctly release

gentle rose
dusk mulch
gentle rose
gentle rose
dusk mulch
uncut viper
gentle rose
dusk mulch
gentle rose
#

I would try it the other way around but I have no idea if it would make a difference SDVpufferthinkblob