#making-mods-general

1 messages · Page 220 of 1

hard fern
#

emotes decrease the seriousness of a message by 15% for each emote

calm nebula
#

Yup

rancid temple
#

If everyone donates just 10 cents today, we could buy needy Button's nitro

latent mauve
#

I'm just gonna chime in to say that I read Button's response as a little harsh too, so, little tone tags or emoji definitely help

uncut viper
#

usually i do try to use emotes to that effect but sometimes if im tired or busy or just particularly lazy and just typing i just wanna type and hit enter and move on quickly

lucid iron
#

(can i ask about the context of this wiki change? just curious)

brittle ledge
#

but also it helps to assume good intent and that people in here aren't dressing you down for no reason kyuuchan_nod2

dusk mulch
hard fern
#

😭

#

i have to fish my cat out of my trashcan

dusk mulch
latent mauve
#

I think for me it was the multiple uses of "there is no reason to" that got me, LOL

uncut viper
reef kiln
brittle ledge
#

what if we just gift you a month of Nitro SDVpuffersquee

lucid iron
#

what if you are gifted nitro against your will, is this where friendship ends forever

dusk mulch
latent mauve
#

That reminds me

rancid temple
#

Gift Button nitro today, tomorrow the only spiderbuttons on the server will be spiderbuttons2

latent mauve
#

I wanted to play with making more train cart tops at some point

uncut viper
#

(i just dont really care for Discord enough as a company to want to support them, so I'd just much rather not have money given to them on my behalf. the one time I did have nitro is when they gave it for free)

latent mauve
#

Fishes on ice/visible food being transported by train

hard fern
#

SDVpuffersweats ive somehow been walled by... naming one of my items in my mod?

lucid iron
#

i think i have nitro still out of sheer inertia

#

they have added zero relevant features to me past the cross server emotes in all these years

lucid mulch
#

Cross server emotes are a mistake anyway, nothing else in Nitro is worth using, and the few things that are can be spoofed with third party clients

uncut viper
dusk mulch
#

How would I edit the data to add a new string into stringsfrommaps because they need quotation marks for the ID's but I need quotation marks for the entries.

lucid mulch
#

\"

uncut viper
#

you can escape quotation marks with a backslash

dusk mulch
#

"/"?

lucid mulch
#

had to escape the escape for discord to show it

uncut viper
#

if a quotation mark has a backslash before it, the game will not treat it as a quote and will instead just treat it like any other character

dusk mulch
#

ohhh*

tawny ore
#

I think I mainly keep Nitro to boost my own server

calm nebula
lucid mulch
#

server boots are also a meme and not worth imo

latent mauve
calm nebula
#

Very directly

latent mauve
#

Language is a complicated beast. /lh

devout otter
dusk mulch
#

So like this?
"\"Campstring1\" \"Test\",

#

oop

#

forgot to add the end

uncut viper
#

what do you want the final string to look like when it appears in game

lucid iron
#

hm one "progressional info" thing i thought of for lookup anything way back is to have machine recipes reveal themselves only after you have triggered them

dusk mulch
#

"Test"

uncut viper
#

is Campstring1 the key?

dusk mulch
#

Yes

uncut viper
#

dont escape the quotes around the key, those need to be quotes

#

"Campstring1": "\"Test\""

calm nebula
dusk mulch
#

Oh, oops.

#

Thank you!

calm nebula
#

The only reason I would get nitro is that the knitting server has cute emojis

uncut viper
#

with content patcher you CAN actually also do "Campstring1": '"Test"'

lucid iron
#

i could do this in machines mod now i suppose, but its got some troubles

  • when people install mods that didnt populate the trigger id or the output id, they get rearranged and idk whats what anymore
  • do ppl want this even? i kind of dont personally lol
devout otter
uncut viper
#

you can also do Campstring1: '"Test"' but please dont

lucid mulch
#

any sane json parser (SMAPI using newtonsoft is not one of them) will scream at that if you are comfortable with every tool hating you

lucid iron
#

is there a "sane" json parser in C#

rancid temple
#

Just forego syntax checking and use jsonl SMCKekLmaoDog

lucid mulch
#

System.Text.Json is a sane json parser

lucid iron
#

ah so the people demand the insane parser of newtonsoft

uncut viper
lucid iron
#

yea indeed, its not looking up of anything anymore blobcatgooglyblep

lucid mulch
#

SMAPI predates STJ being viable, and too much relies on the madness that only newtonsoft can offer

rancid temple
#

Well, there's always Stardew 2

uncut viper
#

(also, Person, keep in mind that if you use t hat other way with single quotes and non-escaped doublr quotes, that means single quotes will then need escaping instead)

lucid iron
#

the first point is prob not solvable though, atm i am just yeet any saved "disable" rules that become invalid bc of new mod

#

but they could totally get rearranged to a different rule, it just doesnt matter as much if im not tracking them strongly

lucid mulch
#

one of the problems I've been having in working out how to overhaul the Json parser site and/or a vscode extension is that newtonsoft is just too weird to convince anything other than newtonsoft to handle.
there are too many blatent spec violations it happily accepts and content packs already rely on

uncut viper
#

i like that newtonsoft lets me write a patch like this

{
  Action: 'EditData',
  "Target": "Data/Objects",
  'Entries': {
    Test: {
      ...
    }
  }
}
lucid iron
lucid mulch
#

you are missing multi line strings, trailing commas and comments

uncut viper
#

those are fine to me i just enjoy how particularly awful using a mix of single, double, and no quotes around identifiers looks

lucid iron
#

can u somehow like, get newtonsoft into wasm
<- zero clue how wasm works

lucid mulch
#

yes but expensive and that would just be pass/fail, not intelligent red squiggles everywhere

lucid iron
#

expensive bolbthinking

lucid mulch
#

wasm binaries are not small, take time to startup, and the JS glue to go in/out of wasm has similar problems

#

I could potentially get away with it in a vscode extension, but not the json validator site

fierce vault
#

Hi, is it possible to give varied dialogue and even portraits to objects? Like, a box who doesn’t do anything, but has a lot to say. Even cooler if you could place that box down, move it around, and give it properties, so it is a tool on the farm. Is that not feasible with [CP]?

uncut viper
#

making a thing on a map have a lot to say can be done with CP and a framework to help, but having it be movable and have properties (what kind of proprties?) sounds like you'd need custom C#

iron ridge
#

should I add js tbin parser to my todo list.. would let me make all the converters web based

fierce vault
uncut viper
#

well, you can make a scarecrow easily enough, but then the problem becomes making it talkable bc its not a thing on a map

brittle pasture
#

Better Crafting supports adding tile actions to big craftables

uncut viper
#

there you go

#

problem solved

lucid iron
#

does it work though

#

scarecrows have the interaction thing

#

need to check if BC tile prop takes priority

brittle pasture
#

ah yeah, the scarecrow's tile action might override that

lucid iron
#

might work™️

uncut viper
#

problem maybe not solved

brittle pasture
#

well time to test I guess, you can be our guinea pig /lh

lucid iron
#

but if its not a scarecrow it'll work

#

for certain Dokkan

uncut viper
#

are there no other BCs with interactions

#

in vanilla

fierce vault
lucid iron
#

hmm

#

farm computer

#

phone?

brittle pasture
#

hay hopper

lucid iron
#

machines kind of??

#

if its an entirely ordinary no name 🟨 brand big craftable it'll work

uncut viper
brittle pasture
lucid iron
#

i thought its been obvious this whole time

uncut viper
#

that is a pretty big tell

#

no i had absolutely no concept of where you might live in my mind

lucid iron
#

was bag milk not enough of a tell

uncut viper
#

same with everyone else

brittle pasture
#

(yeah was about to mention the bag milk incident)

uncut viper
#

i dont believe ive seen you talk about bags of milk

dusk mulch
#

Are touch actions specifically locked to touch actions or can you use them for actions as well?

lucid iron
#

well now u have DokkanStare

uncut viper
#

if something is not listed in its respective section (TouchAction, TileAction, Trigger Actions) then it cannot be used in another category

lucid iron
#

hmm button

brittle pasture
#

I believe that's the case, baring an unknown framework somewhere that changes that

reef kiln
#

Scarcrows can move and talk. All they say is how many crows the scared away. Could you edit that somehow with a framework.

uncut viper
#

hmm chue

dusk mulch
lucid iron
#

what if give flooring touch action

hard fern
#

i misread crows as cow

lucid iron
#

make warp floors

hard fern
#

and thought we were talking about scarecows

#

to scare away cows

uncut viper
#

im not sure how that would work

#

or maybe more accurately im not sure why it was directed at me

lucid iron
#

i dunno either, i think my L1 cache just had "BETAS" in it

uncut viper
#

i think if you wanted to make a mod that adds pokemon style warp tiles for certain flooring you could do that pretty easily

lucid iron
#

i want to make pokemon style conveyer belts so i can enjoy silph co. in my farm

dusk mulch
#

I need it so when you step on a tile it shows a message in a dialogue box, thing is there is no touch action for it, is there any other way to do that?

uncut viper
#

BETAS can do it

#

if theres another vanilla touch action that can work im not familiar enough with map stuff to know it

lucid iron
#

i don't believe vanilla has a touch action message

dusk mulch
lucid iron
#

at the same time, if you can't go in anyways, simply use tile action message?

reef kiln
#

That is a function I have never seen a mod use. Walking on a tile based message. It is cool that it can be done.

dusk mulch
shell quest
#

Might be a silly question, if I want to replace the asset of farm animals, (for example cows)
Is it better to use "EditImage" or "Load"? I read the guide but can't decide which one

lucid iron
#

consider adding them as Skins instead AquaThumbsup

uncut viper
#

i know ConditionalDoor is for indoor doors, but what happens if you just place the TouchAction ConditionalDoor on an exterior anyway and try to walk through it?

lucid iron
#

vanilla's tile action and touch action are 2 different dicts

uncut viper
#

and ConditionalDoor exists in both

lucid iron
#

oh its not even in the dict DokkanStare

#

performTouchAction

uncut viper
#

they are meant to work in tandem

#

but i was wondering if placing only the touchaction version and editing the message that appears when it shows up would work as a message box

lucid iron
#

u get halted, so if again, you dont actually want player to go in, it could work

uncut viper
#

looking in the code i dont immediately see anything that checks if its actually indoors or that theres a right click action above it

shell quest
lucid iron
#

naw it's just one EditData

#

Elle's animals use them if u want ref

reef kiln
shell quest
#

I plan to replace all farm animals but I think I should go one by one first

#

CP should be good enough

reef kiln
#

If you have a specific thing you want to do that has not bee, done more specific instructions are available.

reef kiln
#

It will show you exactly how to do it with CP.

lucid iron
#

skins are a base game feature, meaning you can edit them in via content patcher and it'll work

#

[[modding:farm_animals]]

brittle pasture
#

[[Modding:Animal_data]]

lucid iron
#

benefit of using skin is just you get compat with AT for free and non AT people can still see multiple variants of cow

shell quest
tropic walrus
#

How does inverting a GSQ as an event precondition work? /!G <query> or /G !<query>?

brittle pasture
#

second

tropic walrus
#

I see, thanks

iron ridge
#

how do i capitalise tbin as a class - TBin? Tbin? TBIN? tbin??

reef kiln
iron ridge
#

atmosphere's layeredfs

lucid iron
#

tBIN

iron ridge
#

oh thx

lucid iron
#

(this is the worst option tbh)

brittle pasture
ocean sailBOT
#

Modding on the Nintendo Switch is technically possible in a very limited capacity, but it requires jailbreaking your Switch, which is only possible on select models or by physically altering the hardware of your Switch, and can run the risk of bricking your console and/or being banned by Nintendo. Only visual texture and dialogue replacer XNB mods can be installed. Due to these limitations, we do not provide guides on how to mod the Switch and it is up to the individual if they want to take these risks.

iron ridge
#

yes but also what the people smarter than me do

#

therefore it isn't my fault

lucid iron
#

what are u making (if its not a secret)

iron ridge
#

probably answers the question

reef kiln
# brittle pasture !switchmodding

I actually have a jail broke switch. I did it on my extra switch just to see if I could do it. Only ever used it to cheat on tears of the kingdom. Now it is just sitting in its box.

iron ridge
#

!addswitchmods

ocean sailBOT
#

If you have a modified Nintendo Switch running custom firmware, there are some limited options for you to use mods.

Option 1:

  1. Install Ubuntu
  2. Get 1.5.4 Stardew Valley via DepotDownloader.
  3. Follow the this guide.
  4. Install SMAPI (version 3.12.8)
  5. Run it via mono StardewModdingAPI
  6. You can use most 1.5.4 mods, but some won't work (such as Custom Music)
    Option 2
  7. Place XNB mods in sdmc:/atmosphere/contents/0100E65002BB8000/romfs/Content/, as if this was your game's content folder (as in .../romfs/Content/Characters/Caroline.xnb)
  8. This limits you to XNB mods and outside of simple retextures will largely break by 1.6. See here for details.
    Option 3
    Basically the same as Option 2, but with a mod manager for easier management.
  9. Install iridium https://github.com/AnotherPillow/Iridium, instructions in the README.
  10. Place your XNB mods in sdmc:/switch/Iridium/Mods/[MOD NAME]/ as if this folder was the Content folder of the game.
  11. Same restrictions and issues as Option 2, but you can turn mods off and on and know what mods are controlling which files.
lucid iron
#

is the option 1 thing dead

iron ridge
#

not dead but a bad idea

lucid iron
#

since sdv moved on to new framework

iron ridge
#

never was a good idea tbh

#

it's still 1.5.4 only

brittle pasture
#

that's just making your switch a worse steam deck innit

iron ridge
#

yes

lucid iron
#

yea i'll rephrase, is 1.5.4 the final possible version on switch to smapi ever

reef kiln
#

Interesting, probably won't bother as modding on my PC is easier. But good to know it is an option if I want.

lucid iron
#

or is there actually a plausibility to just get linux sdv onto switch one day

iron ridge
#

once the compatibility branch isn't needed yes

#

it's the same for all arm things without fancy emulation layers

#

in theory box64 sohuld work for it but i was never abl eto make it work

tawny ore
#

Fun fact that came up while testing out my new mod. Clint's shop checks whether he's within 1 tile of his cash register, but then disregards that and opens his shop no matter what as long as he's in the building.

lucid iron
#

i rmbr that came up sometime ago, when someone was make thing that show when shops open

#

wonder if they ever published the mod

reef kiln
#

Actually all shops should have a book. Clint, Robin, Pierre, shoot even Gus while we are at it.

latent mauve
#

Even if it was just a "Put in your order and I'll process it overnight / first thing in the morning", that'd be a huge improvement over not having the shop open, yeah

reef kiln
#

Never mind matt just released a mod

lucid iron
#

hm im trying to find an icon to express "everywhere" and "for this location only"

#

my idea rn is hot air balloon on cursors but thats a bit cryptic

uncut viper
#

are you averse to making your own

calm nebula
#

Smol globe?

#

Like the coop menu

lucid iron
#

although this one case is maybe fine if i only draw icon and still use a button sprite bg

uncut viper
#

empty lightbulb and lit lightbulb

#

local/global

lucid iron
#

why is local lights off

uncut viper
#

idk its just what paint.net uses to denote global vs contiguous magic wand selection

lucid iron
brittle pasture
#

the globe on the co op button on the main menu

#

you probably want to roll your own though since it beeg

uncut viper
#

cant you just scale it down

lucid iron
#

its not very icony

brittle pasture
#

it's beeg and also only the top is shown

#

so it's not very what chue said

uncut viper
#

if only there was a word to describe something being icony

lucid iron
#

16x16 pixels thing that pops against most backgrounds

uncut viper
#

black square

lucid iron
#

uncut viper
#

with a white outline

lucid iron
#

best i could do is this 🔲

uncut viper
#

stands out to me

lucid iron
#

cursors truly has everything, why is ginger here

reef kiln
calm nebula
#

Spring onions are also there

lucid mulch
#

also you answered your own question, if it has everything why wouldn't it have ginger

calm nebula
#

My favorite cursors fun fact is that the pixel used for the drinking animation? Is actually one random white pixel from the moon

#

Oh, and the skyline is just a thin line of pixels

lucid iron
#

hm

rare orbit
#

hello? anyone mind givin me a hand in my thread?? just so i don't cloud up the chat

lucid iron
#

is the moon global-y

reef kiln
# calm nebula Animation frames

Speaking of ginger and spring onions,, Does it bother anyone else that the iridium scythe can harvest spring onions but not ginger? It bugs me.

lucid iron
#

you should just ask things tbh

#

we never talk about anything important here

rotund elm
#

Heyo, quick question related to fish and context tags. Will it break anything if I give a fish both the fish_lake and fish_river context tags or does it have to be one or the other, I checked with the carp since it can be caught in both but it only has the lake context tag

uncut viper
#

can you use this chu

lucid iron
#

no im on the run from the ccp

calm nebula
uncut viper
#

oh

rotund elm
#

Thank you SDVpufferheart

uncut viper
#

what about this

reef kiln
calm nebula
uncut viper
#

i dont know what these icons are for

lucid iron
#

chinese social media i guess

#

idk this rainbow one tho

#

is there like chinese instagram

uncut viper
#

you're asking me?

lucid iron
#

sure, do you have the answer o spooder of the parlor

uncut viper
#

there is a lil map icon in there tho

calm nebula
#

What is red envelope like

rare orbit
#

oh cool cool

brittle pasture
rare orbit
#

if i wanna make a mod that sends a starter kit via Mail Framework Mod how should i go about it? im trying to make sure i set it up right

lucid iron
#

Picasa was a
rip

uncut viper
#

Moments (Chinese: 朋友圈 pinyin: péngyǒu quān) is a function of the smartphone app WeChat, launched on 19 April 2012 in the WeChat version 4.0. It serves new social-networking functions for Wechat users. The Chinese translation of Moment is known as “Friends' circle”, which means users can share and get access to accepted WeChat friends' informatio...

#

its this i guess

lucid iron
#

isnt this just part of wechat though

#

mystery

uncut viper
#

chu i think you're really overestimating my chinese social media knowledge here

brittle pasture
#

everything is part of wechat

lucid iron
reef kiln
#

Why is a Chinese social media icon in stardew?

rare orbit
lucid iron
#

the phone version of sdv used to be published by tencent i guess?

#

no clue tbh

uncut viper
#

there is a separate file for the Tencent version lol

brittle pasture
#

there's a section in the credits for SDV social media sites

lucid iron
#

you can change it to not 15 parsnip if u want

uncut viper
#

also chu is this "current location" thing like, any current location, or just the farm

rare orbit
#

interesting

lucid iron
#

the player's current location

rare orbit
#

i did wanna do the mail tho

brittle pasture
#

also if you want the mail route you can just use CP now

rare orbit
#

incase someone had a custom starter bundle pack

lucid iron
#

can CP depict multiple attached items tho

brittle pasture
#

MFM is not really needed anymore baring extremely niche features

reef kiln
#

Look at the mod Gramps sword mod. It sends a sword after so far in the mines. You could change the trigger I think to send whatever you want sooner.

lucid iron
#

i think u would have to do action AddItem for most of em

uncut viper
#

i dont think theres anything stopping you from doing multiple additem commands in mail

brittle pasture
lucid iron
#

neat ok

brittle pasture
#

(if you got the gold medal for FFP you'd known smh my head)

rare orbit
#

cool cool so i should do content patcher instead?

uncut viper
#

here u go. local vs global icons

lucid iron
#

mystic

uncut viper
#

one is blue. like water earth. one is brown. like the dirt beneath your feet

lucid iron
#

but the left thing is the shop bg that i am abusing already

uncut viper
#

have you considered simply extracting a color palette from the users current Cursors.png and dynamically creating a 16x16 square by calling Texture2D.SetData

hot gale
#

Wondering if someone can give me a little advice, trying to create a new artisan good, and the item technically loads, and I can put the source item in the keg to get the desired output, but I cant get the png to load from assets, wondering if in my freshness to this im overlooking something super simple

uncut viper
#

!json

ocean sailBOT
#

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

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

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

brittle pasture
ocean sailBOT
#

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

rare orbit
#

btw? how do i set up the json to send a letter? for content patcher i mean

lucid iron
#

!fileextensions

ocean sailBOT
#
Hidden File Extensions

Windows and Mac hide most file extensions by default. If you are creating or updating mods, it's helpful to show file extensions so that you can be sure all mod files are named correctly.

To show file extensions on your computer:

On Windows 10, open File Explorer, click on the View tab, then check the File Name Extensions box.

On Windows 11, open File Explorer and click on View > Show > File Name Extensions.

On Mac, open Finder, and in the menu bar, click on Finder > Settings (or Preferences) > Advanced, then check the Show all filename extensions box.

uncut viper
#

it appears you are using a file path instead of an asset name but i could not tell you where as i am not downloading the json to look at it

hot gale
lucid iron
#

oh yea u have this "Texture": "assets/bh_honeymead.png"

uncut viper
#

use the json uploader

lucid iron
#

need to do a Load and use the target

brittle pasture
#

you loaded your texture into bonghits.BearHoneyMead/Objects, you want to use that value for the Texture field in your object data

latent mauve
#

Yep, Textures are load targets, and so do not use file extensions

hot gale
#

Ahhh I see thank you

latent mauve
#

confusingly, "asset" and "asset path" are your Load targets, the actual png is your filepath

reef kiln
hot gale
#

"Texture": "bonghits.BearHoneyMead/Objects",?

latent mauve
#

Just for future reference as to how the terms work

hot gale
reef kiln
#

It does not do stardew valley well.

brittle pasture
#

it tends to eat files

reef kiln
#

Most people use one called stardrop (i think). I still do mine manually.

fossil spear
#

Hello, everyone. Is it possible to make a "When" field that includes an or statement? Like "When" > Relationship:Shane = Dating or Engaged?

uncut viper
#

yes, just put a comma between them

#

"Relationship:Shane": "Dating, Engaged"

fossil spear
#

so "Dating, Engaged"

#

ahh thanks a bunch!

uncut viper
#

(double check the syntax for the token there but thats the gist behind ORs like that)

hot gale
#

The art is atrocious, but yay it works :D Thanks all

reef kiln
#

It that SVE honey from the bear?

hot gale
#

Yes lol

rare orbit
#

what's a decent weapon to include in a starter kit?

#

i am checking the wiki and most weapons seem to be either rewards or really op

brittle pasture
#

it's a starter kit, so pick a starter weapon I say

#

though marlon already gives you one when you first enter the mines

rare orbit
#

true

#

hm....

shadow pagoda
#

Sorry, I'm not getting this. I tried looking at the specified you mentioned. I may be misunderstanding, but it doesn't seme like either performAction overload does only what I want, which is just checking if the building / location is open to the player currently. This seems to be other things as well.

rare orbit
#

should i even bother including a weapon in the kit?

brittle pasture
#

IMO I wouldn't do a weapon in the first place

#

yeah

rare orbit
#

i do think the glow ring would be good tho

vernal crest
#

I wish I could do debug whereis for an animal. I have lost one of my pigs.

lucid iron
rare orbit
#

maybe cherry bombs would be a good item to add?

lucid iron
#

for "can enter location" it was the locked door thing, forgor exactly what though

rotund elm
#

Heyo another quick question for anyone who knows, if I set a letter in a entry that is only applied after a mailflag has been obtained, do I need to set a trigger or will the mail appear in the mailbox after the flag has been given

lucid iron
vernal crest
shadow pagoda
#

Could you elaborate on this? I did find Owners array within the SeedShop object, but both objects have Condition of null. I'm unsure how they would tell me what time the open

rotund elm
#

Ok so I dont even need the when condition for this specifically thank youuuu 🙂 I was starting to confuse myself and its been awhile since I did anything mail related

hot gale
#

What is the duration for buffs in, milliseconds?

latent mauve
#

so it's not actually time-based, in that case, you can literally make the shop menu open by warping the NPC to the counter area

shadow pagoda
#

dang. Ig I'll just have to hardcode it, if I don't want to check every frame (or every time on tick is called)

lucid iron
#

its fine to hardcode for the vanilla people, but you should try to do something for modded shops

shadow pagoda
#

I don't plan on having any modded shops. My goal is to make a interactive guide to tell people how to get perfectionist. So I should be fine

#

unless you're using a different definition of modded

lucid iron
#

you are excluding modded perfection entirely then

#

modded as in, shops added by mods via the OpenShop tile action

#

to determine that you need to

  1. find all OpenShop tile actions in the game, check whether they are behind locked doors
  2. if they got no conditions or an open/close time then great thats it
  3. if they got a npc rectangle then you need to do the fun business of figuring out when the npc will be there (using schedules) and whether they would be valid owner today
shadow pagoda
#

I'll keep it in mind. Thank you for the support. I think I've been at it too much for the day, so I'll stop. Hopefully, I can understand with a more refreshed mind

warm imp
dusk mulch
#

@uncut viper For BETAS, do I put the map action into tiled map properties or the json map properties patch?

uncut viper
#

it doesnt matter

dusk mulch
#

Alright

hot gale
#

Finalized the Art on my Bear Honey Mead, courtesy of my lovely girlfriend, first fully custom mod done :D

dusk mulch
hot gale
#

That would be awesome!

dusk mulch
hot gale
#

Thanks so much! 😁

lucid iron
#

which font is this

#

is it in the game

dusk mulch
#

@uncut viper Sorry for the pings but I tried the map action on both tile property and map property and it didnt work (I used "Spiderbuttons.BETAS_Action: message Notent1"

uncut viper
#

the name of the tile property still has to be Action

dusk mulch
#

Ah, okay. Thank you!

uncut viper
#

e.g. instead of Action OpenShop its Action Spiderbuttons.BETAS_Action Message whatever

#

you can also just do Action Spiderbuttons.BETAS_Message whatever directly

dusk mulch
#

Ty!

dusk mulch
#

Honestly I like my text medium rare but raw is just wrong

uncut viper
#

if you're doing it in tiled you cant use content patcher tokens

#

i dont know what that token is supposed to represent either. you need to provide it with either raw text or a translation key or a localizedtext token

quick frost
#

Hey yall

#

I'm working on something with a commission music artist that I'm really excited about for my mod Piano Valley

#

I wanna show it to yall so bad before I put it up and see what u thinkkkk

#

But I don't wanna post it on the public server ;3;

scenic igloo
#

I'm trying to make a content pack for AT, with just basic recolours of the messy shirt and messy shorts. I've got it running in SMAPI so it doesn't tell me there is a problem with it, yet when I try to test it in game it doesn't say it has any alt textures? I am not very experienced and am wondering it its something I've just missed. https://smapi.io/log/591e695b05d04071abb466c7d27ac325 my pack is simply called clothes pack. any feedback would be great! :)

ocean sailBOT
#

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

rotund elm
#

Heyo, what is the fishing area in the backwoods? I thought the backwoods was the path north of the farm that leads to the mountain area next to robins and the railroad/spa location entrance?

#

I was unaware there was a spot for fishing, and cannot seem to find it in my game

tender bloom
#

I don’t think you can fish in the backwoods

#

Where are you seeing that you can?

rotund elm
#

weird cause it has fish added to its location data in unpacked

lucid iron
#

it can have data but no water

#

if you theoretically patch in some water it'd give those fish i think

rotund elm
#

Which is so weird XD, but yea I guess I can just ignore it then

dusk mulch
#

fuck it im not putting in translation accessibility im too lazy to keep debugging this

dusk mulch
#

So I have a touchaction setup on a tile property to prompt to go to sleep but when I click yes the screen goes dark but nothing happens unless I go outside, then when I go outside it takes me back to the farm house so how do i make it so I go to sleep and wake up on the same tile

mint cypress
#

Question thought about customizing som of the ui especially the title screen where do i find the templet to be able to recolor ?

latent mauve
#

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

You'll need to unpack the game files to get the PNGs you need to change.

mint cypress
#

thank you!

latent mauve
#

After you've done that, you're likely looking at elements in Minigames/TitleButtons.png

mint cypress
latent mauve
#

?

#

For the unpacker?

mint cypress
# latent mauve ?

i figured it out wasnt sure where to put it in the stardewvalley folder but yes

latent mauve
#

ok

dusk mulch
mint cypress
dusk mulch
#

I would love to see a mod where someone makes this accessible and turns it into something

#

(the little path)

hot gale
#

Where's that?

dusk mulch
#

The flower dance map

#

There is a little path that is never shown what is on the other side

gentle rose
#

thanks to @rancid temple for getting me to look at this code, but is the vanilla maths for updating the hands on the gold clock being incredibly wrong a known thing? SDVpuffersquee

clip is of a demonstration of the vanilla implementation (red) vs a correct one (green)

the correct code (in Building.draw, approx lines 2307 and 2308 in the repo) should actually be (obviously with the angles being put into the actual draw method calls in the correct place)

var adjustedHours = (int) (Game1.timeOfDay / 100);
var adjustedMinutes = (float)(Game1.timeOfDay % 100) / 60f;

// hour hand angle
(float)Math.Tau * ( ((adjustedHours + adjustedMinutes) % 12)/12 + ((float)Game1.gameTimeInterval) /((float)Game1.realMilliSecondsPerGameTenMinutes) / 72 )

// minute hand angle
(float)Math.Tau * (adjustedMinutes + ((float)Game1.gameTimeInterval) / ((float)Game1.realMilliSecondsPerGameTenMinutes) / 6 )
mint cypress
gentle rose
gentle rose
#

(as in, be the change you want to see, hint hint)

dusk mulch
#

ah.

#

Well I am modding that part of the map anyway so may as well.

dusk mulch
#

For now it can go to the mod idea repo

gentle rose
#

if you plan to do it yourself, it doesn’t really belong in the ideas repo. The repo is for ideas for other people to pick up

hot gale
#

I want to make a map, not sure how to get started

dusk mulch
ocean sailBOT
dusk mulch
#

You can find alot of stuff from that 1 page

dusk mulch
#

and

#

!twocakes

ocean sailBOT
#

If you discover that someone has made or is making a mod with a similar concept to yours, don't stress! Our community promotes the idea of "two cakes", where two versions of the same idea can peacefully co-exist. Your mod will have your own unique stamp on it that makes it special.

gentle rose
dusk mulch
#

OH COME ON

proven spindle
#

Hmm, gettingstarted's more for players. @hot gale you probably want !modmaking

#

!modmaking

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.

proven spindle
#

Lol commands just aren't agreeing with me lately

gentle rose
#

they have to go at the start of a message haha

unreal spoke
#

!startmodding is another appropriate one afaik. You’ve got to start your… yeah.

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.

gentle rose
#

you can put stuff after them though like doragoun did

unreal spoke
#

Oh, it’s the same text. Good to know.

gentle rose
#

I wonder why there’s two of them them SDVpufferthinkblob

uncut viper
#

ones just an alias

unreal spoke
#

Them them? SDVkrobusgiggle

gentle rose
#

ah, fair

gentle rose
proven spindle
#

!mapmaking I think there's also this

ocean sailBOT
#

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

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

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

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

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

unreal spoke
#

Probably the same thing as with !gs and !gettingstarted or !androidmods and !androidsmapi.

hot gale
#

Thanks guys!

unreal spoke
#

Usability.

gentle rose
#

them then* it was supposed to say

dusk mulch
unreal spoke
proven spindle
gentle rose
#

btw button while (if?) you’re here, do you happen to know if the gold clock thing is known or not?

unreal spoke
#

What’s the gold clock thing? 👀

gentle rose
#

I sent it a few messages up haha, it’s very unimportant but I found it funny. The maths for moving the hands is wrong

unreal spoke
#

Huh. That’s actually very interesting and very CA.

gentle rose
#

one of the most CA things I’ve seen recently

unreal spoke
#

So, what’s the most CA thing you’ve seen recently?

hard fern
#

Huh. I never knew the clock was wrong

#

Probably because I've never actually built the clock before

rancid temple
#

It also is the same math used for the CC when you complete it

dusk mulch
#

i never even knew those clocks worked

rancid temple
#

In draw calls

dusk mulch
# dusk mulch Bump

Bumping the Bump (i really need the question answered or some kind of documentation)

rancid temple
#

Every little piece of the background and all

dusk mulch
#

the more i more i mod the more i realize how hard it mustve been for CA to make the game

gentle rose
uncut viper
gentle rose
dusk mulch
uncut viper
#

🍤

#

o

#

that was supposed to be woman shrugging

gentle rose
uncut viper
#

i didnt expect shrimp to be higher

dusk mulch
#

Alright, ty!\

gentle rose
#

I accept the shrimp SCyes

dusk mulch
#

I look back at how much I have done, then realise how much I have to go...

hard fern
#

Shrimp

hard fern
#

Oh yeah you need the bed property to wake up in a bed

#

Or... A not bed

#

Theoretically you can do that to a random grass tile right?

dusk mulch
gentle rose
#

you can also set a property on the entire map which makes it so you don’t need a bed to wake up there

dusk mulch
#

just sleep on the ground

gentle rose
#

I assume that one also means that if you pass out, you just wake up in the same place, though

dusk mulch
#

my little tent looks so cute, ignore the gorilla in the tree

gentle rose
#

isn’t that linus’ tent asset?

dusk mulch
#

shhhhh....

gray bear
#

Old Master Cannoli is watching

dusk mulch
gray bear
#

does linus' tent have that note?

#

or did u add that

dusk mulch
#

i added it

gentle rose
# dusk mulch That fixed it, ty!

also, in the future, if you’re stuck on something it’s always worth searching the wiki for the name of the thing you’re stuck on. The bed thing can be found on the exact same page that lists TouchAction Sleep.

dusk mulch
gray bear
#

(TouchAction Sleep is a function i use every night)

dusk mulch
gentle rose
dusk mulch
#

a flavour text message?

gentle rose
dusk mulch
#

Oh, yeah

rancid temple
dusk mulch
#

Do shadows automatically get added under trees in game?

naive wyvern
#

No
Those are drawn

dusk mulch
#

So I have to put those in myself?

naive wyvern
#

If youre making custom trees yeah

#

Pretty sure base game trees already have the shadow included

dusk mulch
#

oh cool, ty!

shell quest
#

I don't know how a cow took me an hour, but it's working now

gray bear
#

round

shell quest
#

Disclaimer: I didn't make the art I just want it to work in 1.6 SDVpufferflat

weak pulsar
#

Im heading to modded help later today with my logs but I'm super curious what typically causes NPCs to multiply? I assume maps editing the same place??

Anyway, later I'll have a log begging people to help find why Morris is multiplying and taking over my town at night wheeze (started at 1, now 7)

hard fern
#

Not again

#

Is this with sve?

weak pulsar
#

...yes haa_doodle have I triggered a war memory? 😂

hard fern
#

For some reason a good chunk of the duplication stuff seems to be sve

#

It's just special i guess

weak pulsar
#

It's legit only Morris, and it's funny as heck bc I have Market Town and he buys all my stuff but he might continue multiplying endlessly so that's why I'll be asking for help later 😂

Very good to know sve has that issue though in case i remove it in another playthrough!!

hard fern
#

Well you can just debug killnpc <whatever morris's internal name is>

#

To get rid of him

weak pulsar
#

Will it mass annihilate the extra 6?

hard fern
#

Hopefully

#

Or maybe you have to do it multiple times

weak pulsar
#

Watch me send Morris to the shadows after he buys my bugs

hard fern
#

But either way it should get rid of extra morrisses...

#

Morrises?

#

Morrisi

weak pulsar
#

I like Morrisi 😂

Ill try next time I'm playing and report it when I go to modded help!

dusk mulch
#

Can I put a warp into an action property?

hard fern
dusk mulch
#

Alright, ty!

naive wyvern
#

ctrl+F is your friend

dusk mulch
#

i should really use the wiki more-

minor falcon
#

Would there be someone willing to listen to my woes

#

I am quite aggrieved

#

Excuse the dramatics, I'm just baffled that water animation won't work on indoor tiles

#

Maybe it's the wiki that needs to be updated

unique sigil
#

it can if the map has indoorWater T property

minor falcon
#

I'm think I already tried that, but let me try again just to be sure

unique sigil
#

put that on map properties, make sure your water tiles have the Water T property

minor falcon
#

Oh my gosh it worked 😅 feeling silly now, but thanks!!!

dusk mulch
#

(the channel is usually dead so thats why i asked here)

dusk mulch
minor falcon
#

Looks perfect to me. But then again, I'm not an expert map maker 😆

dusk mulch
minor falcon
#

Maybe the trashcan should be somewhere in the corner? Is it normal to keep it right beside the counter?

dusk mulch
#

I would think most people keep it next to the counter, dunno

empty lake
#

Hey, I am new to modding and I am making a mod about a "cleaner version" of shane, but I have some problems, smapi
[Content Patcher] Ignored Better Shane > Load Portraits/Shane #2: the When field is invalid: 'Is_Visiting_Island' can't be used as a token because that token could not be found.
Almost every when field is invalid and I don't know why... I couldn't find anything on wiki and other sites ;/

rigid musk
#

Can you send your json so we can see how you formatted it

#

Oh

#

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

rigid musk
#

I thought it worked mid sentence lol

empty lake
#

of course

iron ridge
#

tbin is actually not that confusing of a format to try and reverse engineer

#

yes I know I could look at the tiled implementation and yes that would be smart and yes I will do that but once I'm stuck

empty lake
rigid musk
#

No it's okay :]

empty lake
#

Like that? 👉 👈

rigid musk
#

Also are the only ones causing problems the island one?

empty lake
#

Thank you so muchSDVpufferwow

rigid musk
#

And is that a game state query? (I can't remember lol)

empty lake
# rigid musk Also are the only ones causing problems the island one?

No, I can copy paste the smapi log in the chat
The weird thing is that shane wears one of his new outfit but not the other ones

[Content Patcher] Ignored Better Shane > Load Portraits/Shane #2: the When field is invalid: 'Is_Visiting_Island' can't be used as a token because that token could not be found.
[Content Patcher] Ignored Better Shane > Load Portraits/Shane #3: the When field is invalid: 'Location' can't be used as a token because that token could not be found.
[Content Patcher] Ignored Better Shane > Load Portraits/Shane #4: the When field is invalid: 'outdoor' can't be used as a token because that token could not be found.
[Content Patcher] Ignored Better Shane > Load Characters/Shane #2: the When field is invalid: 'Is_Visiting_Island' can't be used as a token because that token could not be found.
[Content Patcher] Ignored Better Shane > Load Characters/Shane #3: the When field is invalid: 'Location' can't be used as a token because that token could not be found.
[Content Patcher] Ignored Better Shane > Load Characters/Shane #4: the When field is invalid: 'outdoor' can't be used as a token because that token could not be found.

rigid musk
#

Ohh okay okay

#

I think some of these are just using incorrect spelling

#

One second

rigid musk
#

Ohh you're supposed to use something else

vernal crest
#

You can't use GSQs in When fields

empty lake
#

oh 😦

vernal crest
rigid musk
#

Ope

#

I think the "player" ones also work for this situation

#

i think

#

So "IsOutdoors"

empty lake
rigid musk
#

For outdoors

#

I'm not exactly sure how custom outfits work - you might need dynamic tokens for that

#

Also hi Aba wave

empty lake
vernal crest
#

Oh yeah these are for outfit things - you should use the Appearance system instead of CP patches

#

You do use GSQs for Appearance

empty lake
vernal crest
#

Game state queries. The ones from the wiki page you found.

rigid musk
#

Yeah, literally pulling things from the state of the game

#

Or whatever's going on in the game

empty lake
vernal crest
#

Although I can't find a GSQ for checking whether an NPC is in a particular location. There's one for players but I'm not seeing NPCs.

empty lake
#

Maybe this one ? IsIslandAttire

vernal crest
#

But there is a dedicated indoor/outdoor field, a dedicated season field, and an IsIslandAttire field in Appearance

empty lake
#

had the same idea i guess hahaSDVkrobushappy

vernal crest
#

Yeah that one is so you can set his island outfit

#

Oh right yeah you don't need a GSQ for his JojaMart outfit anyway

#

Or his Beach outfit

#

Because the game already switches him into them in the right conditions so you don't need to check for those conditions.

empty lake
#

But how does smapi know it's the sprite or portrait for the beach then...🤔

vernal crest
#

BTW I recommend using EditImage rather than Load because using Load will make your mod clash with any other mod that tries to Load Shane's portrait/character too. It's always recommended to avoid using Load unless it's your own custom asset (meaning custom NPC, custom object etc - not your portrait for a vanilla NPC).

#

SMAPI doesn't - the game does. It's part of the game code to read the portrait asset name (e.g., Portraits/Shane_JojaMart) and then use it in JojaMart.

#

It does it with _Winter, _Beach and _JojaMart (but probably only for Sam and Shane for JojaMart)

empty lake
#

Interesting, I need to try it immediatelySDVemoteheart thank you so much for helping me, both of you 🥰

vernal crest
#

Yay my pink fishy is in a tank!

empty lake
#

Nice I love fishys

vernal crest
#

Thus concludes today's episode of "Aba makes a tiny mod to learn how to do a new thing"

empty lake
#

You never stop to learnSDVpuffermusic

#

Is it okay if I post this mod on nexus if it works?

vernal crest
#

As long as the artwork is either completely yours, vanilla assets that you edited, or from free-to-use resources (according to their licences) (or someone else's that you've been given permission to use, in which case make sure you're explicit about displaying that permission) then yup! Make sure you test it thoroughly and try to have a look around at best practice for how to release a mod.

#

This page has useful debug commands you can use in the SMAPI window to help with testing (and you can use mods like CJB Cheats as well, of course).

empty lake
#

I am so hyped right now SDVpufferaww didn't know there were even websites for tips in releasing mods SDVpuffersquee

vernal crest
#

Yeah there's a surprising number of step-by-step guides on the official wiki, some of which feel quite hidden away.

empty lake
#

Yeah I don't know if I'd ever found those sites without the help

lucid mulch
vernal crest
#

I know you can but many people don't and if any mod has an exclusive Load for the asset, none of the Loads work so it's still safer to use EditImage

lucid mulch
#

And doing an editimage that replaces the entire thing isn't mod compatible anyway

#

Smapi will only error if multiple exclusives happen, an exclusive and a non exclusive load won't explode

vernal crest
#

I suppose from a support perspective it doesn't really matter if people come in with a Load clash or an EditImage overwrite.

#

Oh yeah I misremembered what the CP docs said about what happens if one is exclusive

mighty ginkgo
#

if i use this map file with EditMap to patch a map, do these tilesets have to match what's in the target map? (it's the mist effect from SVE)

vernal crest
# lucid mulch You can do non exclusive loads in cp 2.0+

I think my default to "don't use Load" is because people will do it for maps when they're just editing a small part and because I am used to simplifying my advice for support so I tend not to give "do this in X situation, do that in Y situation" suggestions because of it.

#

Which is not to say that it's the right thing for me to do, just that's the automatic thing for me.

vernal crest
lucid mulch
#

I come from a performance perspective where doing a load just to ignore the result and do a 100% override via edit is a waste of time

mighty ginkgo
vernal crest
lucid mulch
#

performance wise doesn't really matter the difference between mod load and overriden by mod, vs vanilla load and overriden by mod

#

vanilla loads are faster than mod loads in isolation iirc as the base load mechanism is more aggressive in caching

vernal crest
#

Isn't the vanilla one still going to load if the mod uses load? Or does using Load mean the vanilla asset never gets loaded at all?

lucid mulch
#

vanilla load only runs as a last resort if no mod loads occur

#

and regarding tilesheets in map patches, from a purely functional perspective technically only the "new" tilesheets are needed. but to make tiled remotely functional I'm assuming you would need the existing tilesheet references that your patch will need.
just make sure to not rename them or reorder them.

vernal crest
#

Huh, okay. I wasn't expecting vanilla to go last.

lucid mulch
#

and very much don't add extra tilesheets that the existing asset doesn't have if you also don't use it

#

I have an upcoming fix that makes that less extreme, but for most map edits, almost all the time is spent adding the custom tilesheets and not the map edit itself

slender badger
#

Is there a way to do a Fields edit on quickQuestion code? ThinkingHmm I asked about it once and Button mentioned trying TextOperations, but either I was doing it wrong or it doesn't work

lucid mulch
#

is quickQuestion the one that does the really weird backslash schenanigans

slender badger
#

Yep 😅

lucid mulch
#

I can't immediately think of a sane way how CP would do regular / traversal to find the correct section, and then do \ or # based splitting to edit the internal contents of it

slender badger
#

Damn 😅 I only need to edit a couple of emote lines in an event, and I was hoping not to have to duplicate the entire thing and bloat the i18n

#

Thanks anyway though

lucid mulch
#

taking a peek under the hood, it is theoretically possible to do nested delimitted string editing, its just that theres no way to tell CP to split by a different character for the deeper layers

slender badger
#

Think it's something Pathos might be able to implement if I ask him about it?

lucid mulch
#

very much in the realm of possibility, just a case of priority.

#

though I do still need to bother pathos myself on a few performance optimizations that work but likely cant ship until I add off switches to not make content pack authors annoyed during development

slender badger
#

@ivory plume Hey Pathos! Would it be possible for a future CP update to add the ability to do a Fields edit on quickQuestion code (or some equivalent to a Fields edit)? Currently the only way to edit the quickQuestion itself or any code within the quickQuestion backslashes is via an Entries edit duplicating the event, which obviously isn't ideal for compat reasons or translators. Not an immediate priority, so no stress if it takes a while to get to, but I figured it's worth asking 😄

empty lake
#

Is Load better than EditImageor does it depend on the mod?

mighty ginkgo
slender badger
lucid mulch
#

one day I'll spend a day working on diagrams to explain the asset pipeline (along with how ContentPatcher interacts with it) with examples

empty lake
#

Because of the debate if one should use it or not

slender badger
empty lake
#

Oh sry

slender badger
#

Load fully adds or replaces while EditData/EditImage overwrites. Think of the asset like a wall with a mural on it - EditData covers that mural with its own painting, while Load replaces the entire wall.

#

And if there's no wall there at all, you need to use Load to add a wall because EditData can't cover over something that's not there

#

Also on a side note, your WIP mod is called Better Shane, right? I'd recommend changing the name - there's a lot of mods called "Better [Something]", so it's pretty generic and kinda memed on by this point, it's vague because better how? in what way?, and it's also subjective

lucid mulch
#

The main distinction (in 1.6 where content packs where you can safely do loads) is whether you are fully replacing the asset in question or just a section of it.

if the later, Always do edit, as you shouldn't be shipping contents of the original asset.
if the former, loads are on the table, but realistically only for images and maybe maps (but you need to be doing SVE sized overhauls to justify it for maps) don't do loads on existing data assets, and loads on data assets in CP aren't ergonomic as you don't get to use tokens

empty lake
#

Ok now I understand it, thx
I am totally new to mods so I still don't understand everything

Yeah maybe I should change the name but I am still not sure but thank you for your honesty

blissful panther
#

378 mods with "Better" in the title, which is a double edged sword!

In one way, the name could be kinda samey. In another way, it could lead to better visibility, because the community's used to the Better <x> naming scheme, and might search that more often.

empty lake
#

Oh wow... 378 is heavy, we don't need 379 😂

blissful panther
#

What kind of changes are you making to Shane?

calm nebula
#

It just replaces all game art with me struggling in MS Paint

blissful panther
#

And yet people would probably actually download that mod. SDVkrobusgiggle

#

Knit everything in Stardew. Replace textures with those. Perfect!

naive wyvern
#

roku joked about an MS paint texture replacement mod and I kinda wanna take them on it kamo_laugh

vernal crest
#

Oh man I should not have alt-tabbed on a Dosbox game, now it's tiny

empty lake
# blissful panther What kind of changes are you making to Shane?

The clothes and the beard.
I know it's the style for his character but I always wanted some nice looking clothes for him (which are not from Joja Mart), because it made me sad
He already has a sad story 🤧
I don't know if I would make some more changes in the future but I think this is a good start to modding and pixel art ^^

vernal crest
#

It's definitely a good place to start!

blissful panther
#

Agreed!

#

"Stylin' Shane"

SDVkrobusgiggle

empty lake
slender badger
vernal crest
#

SinZ says there is a performance benefit to it and the only downside I can think of is if someone is using two mods that change Shane's portraits and sprites, but that's going to be a problem for them regardless of what action those two mods are using.

blissful panther
#

It does make sense that editing an existing image (which would necessitate combining two images) would perform worse than just loading an entire new one from disk, yeah.

empty lake
#

I think it makes sense that one shouldn't download a second mod which changes Shane's overall look if they already have one SDVpufferthinkblob

blissful panther
#

Yeah, at that point chaos is expected.

vernal crest
slender badger
empty lake
#

Then I'm going to write it with capital letters on my mod page SDVpufferthumbsup

blissful panther
#

It does happen, but regardless of a Load vs an EditImage in that situation... things will still go wrong. SDVkrobusgiggle

#

Capital letters will not help, sadly. People just... often do not read.

slender badger
blissful panther
#

It can feel good to do, though.

empty lake
#

Hmmm... I don't understand it, I almost read everything, even the instructions of new kitchen machinesSDVpufferthinkblob

slender badger
#

Speaking of compat though, you'll want to note that people using your mod need to turn off Shane in DSV's and SCA's configs, since those both do seasonal outfits for him

empty lake
#

I think there was an option where you can toggle it off and on, but I'm not sure
Maybe I can mod it to work with the generic mod config menu mod

slender badger
#

Do you mean in your mod or in the other two?

empty lake
#

In the other mod

slender badger
#

Also Content Patcher mods automatically work with GMCM

lucid mulch
#

note for portraits and sprites and stuff, the performance difference is measurable but not a big deal
maps and tilesheets is a different story. (and LooseSprites/Cursors.... SDVpuffersob )

slender badger
empty lake
#

OkSDVpufferthumbsup

iron ridge
tame orchid
#

Hiya! Quick question, is there a tool or easy way to test / debug modded dialogue / events aside from using CJB Cheats Menu to fulfill event requirements in game?

calm nebula
#

debug ebi <event id>

#

there is also, iirc, a command for dialogue too but I don't recall that one

tame orchid
#

:O

#

This is a lifesaver

#

Thank you!

empty lake
#

Thank you SDVpuffermusic

slender badger
#

eg. debug loaddialogue Abigail Characters\Dialogue\Abigail:mon6

calm nebula
#

(tbh, I use the dialogue check function here)

#

can't be arsed to remember to type the whole debug loaddialogue sequence

slender badger
#

Fair 😆

tame orchid
#

oh sweet

#

I think I'll make a cheat sheet with all the event / dialogue codes I want to test

vernal crest
#

I sometimes use patch parse as well for dialogue especially stuff where I'm checking my syntax for using dialogue commands because you can check without even alt tabbing into the game.

#

This may be less desirable if you have two screens lol

ivory plume
shadow pagoda
#

Forgive the lack of proper formatting as I'm on mobile. I'm currently trying to get a list of all the items each shop has using the GetShopStock method in ShopBuilder. I'm also using DataLoader in order to load all of the shops, which dropped my fps from 60 to 2. To solve this, I decided to cache this data and only call this function during the OnDayStarted if it's the first day of the season, or if the data is null (which is pretty much when the player first loads that save).

I chose to recall this event on the first of the month because I know shops that sell seeds change based on this condition. I was wondering if there were other conditions I should check in order to make sure the cached data is correct.

Here is a link to the code I'm referring to. https://github.com/BlckHawker/Perfectionist-Interactive-Guide/blob/master/ModEntry.cs#L158

GitHub

Contribute to BlckHawker/Perfectionist-Interactive-Guide development by creating an account on GitHub.

brittle pasture
#

shops can rotate their inventory every day

lucid iron
#

Use AssetInvalidated and a lazy loader

shadow pagoda
#

I'm unsure of what that is

tawny ore
#

i.e. cache once and reload on demand (when the event says it's changed)

#

AssetsInvalidated tells you exactly when the data changes

lucid iron
#

Here's simple example tho it's for a custom asset

#

You wont need the AssetRequested handler ofc

#

But you may want a DayStarted invalidate

lucid iron
tawny ore
#

Here's a simple example for shop data:

public override void Entry(IModHelper helper)
{
   helper.Events.Content.AssetsInvalidated += this.OnAssetsInvalidated;
}

private Dictionary<string, ShopData>? data = null;

public Dictionary<string, ShopData> Data => data ??= DataLoader.Shops(Game1.content);

private void OnAssetsInvalidated(object? sender, AssetsInvalidatedEventArgs e)
{
    if (e.NamesWithoutLocale.Any(static assetName => assetName.IsEquivalentTo("Data/Shops")))
    {
        this.data = null;
    }
}
shadow pagoda
#

I'll look into this more when I'm at my PC, thanks

lucid iron
#

Oh i didn't know u could do
Data => data ??= LoadTheValue()

#

Implicit returns Bolb

tawny ore
#

Yeah, it returns the existing value or assigns and returns

calm nebula
#

More just c style assigns

iron ridge
calm nebula
#

I have a love hate relationship with c style assigns

blissful panther
iron ridge
#

this is entirely optionally horrible

#

yes I am parsing tile properties with regex

#

i am very, very scared for the actual map data

#

SDVpufferchickcry tilesheets though...

lucid iron
#

pillow in browser Tiled

iron ridge
#

oh i tried that

#

horribly, horribly laggy

#

i'm just writing this so I don't have to have my converters run on computers anymore

#

so sdvconvertergui3 is just the frontend of sdvconvertergui2 but with web

#

I really hope nobody has a map that's 257 tiles wide.. (there might be 4 bytes for those numbers, and I read one (max of 256))

lucid iron
#

It's ok 200x200 is soft cap

iron ridge
#

phew

iron ridge
shy cliff
#

@teal bridge, @tawny ore, @lucid mulch

Please add me, my requests are open to everyone and yours are closed <3

I am very active in both my server and ES but that's about all I can handle, socially

Currently @finite ginkgo handles the C#, S&S is largely finished content wise are we're just trying to get it stable before moving onto Final Mix

Thank you, thank you (and sorry)

tawny ore
#

I think at this point StarControl is publicly released, so the early heads up period is over

shy cliff
#

Yup, Endi is working on (I think she finished, actually) the StarControl compat

tawny ore
#

Ah, cool

shy cliff
#

The Paladin token bug she fixed as well

#

The broken finale bug we figured out (incompatible w/ Event Limiter's default)

#

I think we just have to figure out how to remove broken multiplayer swords from the player's inventory and give them a new one

lucid iron
#

Oh about that

shy cliff
#

I don't mean to appear inaccessible, I apologize
Just easily spooked by big spaces these days

lucid iron
#

There's a plan to make CMCT into middleware

#

So that you register actions to this and various consumers (like iconic framework, star control) can obtain it from cmct

tawny ore
#

I think when CMCT is implemented, any existing actions registered to either Iconic or StarControl should continue to work as expected. My plan is to detect CMCT and proxy actions to it, or just continue handling them as-is if CMCT is not installed. There may end up being a time where I cut over to entirely using CMCT without the additional special handling.

teal bridge
tawny ore
#

And since we're still testing and stuff, we don't even know when we'll be ready for any of that to be publicly released.

teal bridge
#

(Did you get to testing already?)

tawny ore
#

I've started implementing

lucid iron
#

Yeah, for immediately usage/release registering to individual api is better for now

teal bridge
#

Oh I didn't realize the API was done. No one pinged me about anything, thought Button was still working on it.

tawny ore
#

This is sort of where I'm going with it:

if (ModState.CMCT.IsLoaded)
{
    ModState.CMCT.Api.RegisterAction(
        this.mod.Manifest,
        !string.IsNullOrWhiteSpace(id) ? id : "Generic",
        null,
        getTitle,
        getDescription,
        () => this.eventManager.Publish<IIconPressedEventArgs, IconPressedEventArgs>(new IconPressedEventArgs(id, SButton.MouseLeft)),
        null,
        icon);
}
else if (ModState.StarControl.IsLoaded)
{
    ModState.StarControl.Api.RegisterItems(this.mod.Manifest, [icon]);
}
#

If CMCT is there, then it'll proxy Iconic actions to it, if StarControl is there, it'll proxy actions to it.

shy cliff
teal bridge
#

Ah, I had to scroll up past a bunch of GSQ stuff.

shy cliff
tawny ore
#

But CMCT will supersede Iconic's proxying to StarControl

teal bridge
#

I take it that's representative and not the actual code? Like, if Star Control gives you the secondary action then it would correspond to SButton.MouseRight in your framework or something.

#

Oh wait, never mind, that's not a parameter in CMCT. Forget that.

#

I guess that's something we're technically losing with CMCT here, the ability to register secondary actions or other action types for a single action.

tawny ore
#

Yeah, I wanted to discuss that with you. What should we use as the custom data

lucid iron
# shy cliff Can you explain what middleware is in this context?

So rn if you want to integrate with say star control, you get it's api and register the right actions for adventure bar.
If you then want to do integration with iconic, you do this again.

Once CMCT update is out, you can choose to just register to CMCT. Star control and iconic framework will instead ask CMCT for the actions. This also means if i was to make say, ChuHudWidgets, i can also just go ask CMCT for S&S actions to integrate

tawny ore
#

I'm basically using IRadialMenuItem as the custom data that I register for these

teal bridge
#

In general, "Middleware" just means some framework that helps two (or more) systems communicate with each other using a common standard.

tawny ore
#

So you'll have Enabled, SourceRectangle, Texture (in addition to Id, Title, and Description which is also available as part of CMCT)

teal bridge
#

I would probably make available everything that's already there today in the IRadialMenuItem interface, unless there is something specific you want to change.

shy cliff
#

THAT'S SO COOL,

teal bridge
#

(and except the parts that go in the master record, like Id, obviously)

tawny ore
#

Okay, yeah the minimal changes on my side is to just continue using the IRadialMenuItem interface, so I'll probably go with that route

teal bridge
#

You mean, use it as the custom data? I don't see any problem with it, though per above some of the properties are changing locations like the Id.

tawny ore
#

I'm still trying to think through how we want to handle secondary actions. Didn't you mention possibly decoupling from secondary actions and making that a user-configurable thing?

teal bridge
#

What users configure is whether to invoke the primary or secondary action (or instant, if you support that, which you probably shouldn't).

#

In the pie menu it's which button they press, and in the quick actions it's an explicit configuration.

tawny ore
#

The problem with Iconic is it doesn't know how the mods registering actions uses the event. So they may ignore the left/right click or they may handle both separately.

teal bridge
#

Well, that's why I moved away from "click" or "button" as the metaphor in 1.0. Originally I had a similar dichotomy, if you'll recall, something like "Use" and "Select" which just didn't translate across the board.

#

Anyway, while every item conceptually has a primary or secondary action, it's expected that some actions ignore it and just run a generic "action".

#

That's how the custom Mod Menu items already work, really - there's no secondary action associated with a simulated key press.

astral prism
#

how can i remove NPC tokens from a string? i.e. make
"Hello!$h#$b#How are you?" => [ "Hello!", "How are you?" ]

#

in c#

brittle ledge
#

Wait when was that

lucid iron
#

Regex sub?

brittle ledge
#

Oh, three hours ago. Got discord'd again -_-

teal bridge
#

I think I mentioned in some future version I might allow users to associate one item to a slot as the primary, and a different item as the secondary, although that is kind of solving a different problem... I don't think it completely replaces the idea of an activation type for a single item, the most obvious example being how inventory items work.

lucid iron
#

(\$[0-9beh])|#

astral prism
#

i am pooop at regex, what does this mean

lucid iron
#

Need to find out what other letters are valid after $

astral prism
#

i think all of em

#

a b c d e q etc.

#

what method does the game use to process them tho ?

lucid iron
#

Dialogue

#

It's in a big ugly switch

#

Awful to read

astral prism
#

do you know which method?

lucid iron
#

You probably need additional regex to deal with $q

astral prism
#

i'm not gonna worry about $q, it's not in this usecase

lucid iron
#

Not off top of head, parse something?

astral prism
#

ty, i'll have a look

lucid iron
#

Might be easier to just look on wiki

astral prism
#

checkEmotions it seems

brittle ledge
#

Hey Harvz, while you're here, are you still maintaining Louis's Garage?

astral prism
#

not in a while but i plan on it once i get the time

brittle ledge
#

Do you still have trimming down your map patch on the to-do list so it doesn't eat Sunberry's entrance? It came up earlier so thought I'd check SDVpufferheart

tame orchid
naive wyvern
#

Hello, can anyone help direct me to the right place
Im trying to make a hoodie with Fashion Sense
Ive done the shirt part and the sleeves part, and i would like to make this into a purchaseable/wearable item ingame instead of using the mirror

Is it possible to make it so that when you equip the shirt part, the sleeves auto equip too?

iron ridge
lusty elm
#

I did not want to be awake this early but cats said otherwise.

iron ridge
calm nebula
#

You could also reference xtile source

iron ridge
#

oh good idea

lusty elm
#

is there a way to remove a custom item from completion?

brittle pasture
lusty elm
#

thanks, should be a quick patch then.

rough lintel
rough lintel
#

muah

fossil spear
#

Can anyone tell me, do LogNames have to be unique? Or can you have multiple of the same LogName in a single file?

lucid iron
#

They are for yourself

naive wyvern
#

you could technically have singular log names sure, but their main purpose is to differentiate what they are for yourself when you need to quickly skim logs

lucid iron
#

If you don't make them unique you will confuse yourself

fossil spear
#

ohh ok makes sense

#

thank you!

lucid iron
#

You can just not put one though

#

Let cp use the default name

fossil spear
#

huh

#

good to know

naive wyvern
#

yeah, LogName is optional, nice to have but wont break anything if you dont put it

lucid iron
#

But i usually do put one just as like

#

Notes for self too

fossil spear
#

makes sense

#

then I guess I'll make unique ones

rare orbit
true coyote
#

Is there a command or a mod that allows you to skip an input of days or to a specific date? O had one mod that was going to do that but it seems to be outdated and not supported anymore? Just need to skip seasons for screenshots

brittle pasture
#

CJB cheats

rare orbit
#

or the old fashioned method of sleeping days

#

but yeah cjb cheats?

#

amazing

#

10/10 would reccomend

warm imp
rare orbit
#

true true

harsh radish
#

Hello, I’m doing an NPC mod and I was doing the winter star dialogue and I have a question. How can I choose what my npc will gift to the farmer? I am not founding anything about this

brittle pasture
#

WinterStarGifts

rare orbit
#

if anyone does? just comment in the thread! sorry but i usually find it easier to do that than to keep sending message after message here

teal bridge
#

Are you trying to translate a mod? It's a tool for translators, not authors.

rare orbit
#

yeah tryin to

#

but transtar? it doesn

#

wanna work for me

drowsy pewter
#

@rare orbit You don't need transtar or internationalization to translate mods. Just make a copy of their i18n file

lucid iron
#

This one is just helper tool isn't it

rare orbit
gentle rose
#

are you trying to make a machine translation?

rare orbit
#

what translators are commonly used for translating other languages to english?

gentle rose
#

ngl I prefer human translations whenever possible

brittle pasture
#

their own knowledge most of the time

uncut viper
#

if someone wanted a machine translation they'd do it themselves

rare orbit
#

i try to do human translations but it does require knowing someone who knows the language

uncut viper
#

and if thats not you then you dont need to translate it

rare orbit
#

if it was in spanish? no problem my bf speaks it

gentle rose
#

it’s a bit annoying when nexus gets flooded with AI translations etc, especially since if the mod author wanted there to be a machine translation they would have just done it themselves

rare orbit
#

wait translators use ai

#

even google translate?

gentle rose
#

pathos said he thinks google translate is starting to, recently

rare orbit
#

son of a

gentle rose
#

but regardless, even non-AI mtl is heavily flawed

rare orbit
#

is there any translator that doesnt? i am not big on ai.

gentle rose
#

are these your own mods you’re translating?

rare orbit
#

no it's Cook Showdown i asked for permission but until i get the green light its for personal use

uncut viper
#

if someone used any kind of machine translation for my mod, AI or otherwise, i would block them from my page

old edge
#

does anyone know which mod is placing these green rugs in the Archaeology building?

brittle pasture
#

Pretty much every machine TLs nowadays incorporate AI to some degree

rare orbit
#

well how do you translate a mod if ya don't know the language? or know someone who does??

uncut viper
#

if someone wants to use machine translation for themselves for personal use, thats fine, but i wouldnt want someone who didnt know the language they were translating to/from to have their translation incorporated into my mod

#

i dont

gentle rose
#

you don’t, generally

uncut viper
#

someone who speaks the language offers

brittle pasture
old edge
#

no

rare orbit
#

cause like i said if it was spanish? no problem my bf can help

brittle pasture
#

then 🤷

rare orbit
#

but otherwise i can't

uncut viper
#

then if your partner wanted to translate my mod into spanish, id accept it. if either of you wanted to translate it into like, russian, i dont want it

rare orbit
#

of course

old edge
ocean sailBOT
#

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

gentle rose
#

if you never plan on uploading it, I’d say google translate is fine

#

if you do plan on uploading it… don’t

#

that’s the simple summary

uncut viper
#

especially for a language like simplified chinese, i feel like its even less likely to be accurate there

rare orbit
#

true true

brittle pasture
rare orbit
#

i just ask cause some mods look amazing but it's in another language

old edge
#

ohhhhhhh

brittle pasture
#

(Pls double check that command I typed it from memory)

uncut viper
#

good and accurate and desirable localization is simply always (for the time being) going to rely on someone who speaks both languages to translate it. thats just the way it goes. thats why companies hire actual translators and interpreters instead of using MTL

rare orbit
#

ahh

brittle pasture
#

ah nice I forgot CP also logs that in trace

rare orbit
#

then if anyone and i mean anyone wanted to help me translate mods to english that do not have an english translation? let me know

gentle rose
round dock
#

Also speaking as someone who creates content, mainly in dialogue, I would feel very relieved to know that my translator is fluent, or atleast knowledgeable of both languages (former being English and the latter being the language they intend to translate it to)

rare orbit
#

i get that! i really do

#

i apologize if i have offended anyone ;-;

gentle rose
#

and speaking as a bilingual person whose other language is very different from English, I promise you that mtl is not worth it. Even human translators struggle with translating between languages that are this different

uncut viper
#

i dont think theres been any offense, just warning you that MTL is generally not desired for mods

#

for i18n anyway

rare orbit
#

i simply wanna make things accessible for everyone i can

#

i've tried learning japanese

#

which

#

very hard

fierce vault
#

Is it fine if you make a mod and request that only bilingual translators can make a translation?

uncut viper
#

you can request whatever you want

gentle rose
#

it’s hard to explain to monolingual people just how bad translations can be even when done by humans tbh SDVpuffersquee Hebrew has some wonderfully bad translations of some popular books lmao

fierce vault
#

Ok!

uncut viper
#

if you were fine with it you could accept MTL (but again, you can just do it yourself)

#

but odds are it will sound weird to people who know one or both of the languages in question, and you wont have any idea why or how to fix it, bc you dont speak it

#

sound aka read bc duh its text

rigid oriole
#

yeah i don't mind MTL for personal use (people can kinda do whatever they want with my work for personal use) but i had someone the other day ask if they could do an MTL over my stuff and I was just like... no

gentle rose
#

(also, there’s a degree of trust you need to have with human translators. There has unfortunately been at least one instance of translators changing text deliberately without letting the original mod author know for political reasons, and that’s just not okay. If your mod has LGBTQ content btw please double check all translations using MTL to make sure it wasn’t removed.)

uncut viper
#

that def becomes a big issue too as you start thinking about the difference between i18n and l10n

rigid oriole
#

(localization?)

uncut viper
#

correct

rare orbit
#

depends on what language it's translating from and to as well

fierce vault
#

What is an l10n?

uncut viper
#

i18n = transliteration
l10n = culturally appropriate localization

fierce vault
#

Oh

uncut viper
#

think of like trying to translate a pun from japanese to english

fierce vault
#

thanks

rigid oriole
#

i was just about to use the pun example

uncut viper
#

pun probably makes sense in japanese but if you translated it literally it would make no sense in engluish

#

so you use a different but gets-the-point-across english pun

rare orbit
#

isn't it cause of how the characters work?

uncut viper
#

it doesnt have anything to do with the alphabet itself

#

everyone here is familiar with Pokemon's Jelly Donuts right

#

thats localization

true coyote
# rare orbit but yeah cjb cheats?

I have it but I haven't seen any time skip methods in it. Let me double check when I get home. Unless it's a different mod in the cjb series

gentle rose
#

I’ve seen a professional game by an actual game studio using a human translator have issues with a certain term that’s apparently completely fine in Castellan Spanish turning out to have some other meanings in South American Spanish and Catalan SDVpuffersquee

fierce vault
#

yeah, there is a lot of different cultural context that helps a joke work

naive wyvern
#

cultural sayings and idioms dont always translate well to EN

rare orbit
#

i learned very basic Japanese and watch shows in Japanese so my knowledge is surface level when it comes to the language

#

and that wasn't easy