#making-mods-general

1 messages ¡ Page 227 of 1

hot gale
#

lol

#

It works!

#

Yay :D

#

Now to c/p this machine 5 more times rofl

vernal crest
#

If you feel like learning another new thing you can reduce the amount you have to repeat by using local tokens, like Button said when she was meant to be asleep lol

hot gale
#

Sounds handy, do you know where I can learn about this?

hot gale
#

Thanks!

hot gale
#

Hmm now I can't get MPS Casks to work 🤣

#
//
  //
  //  Machine Progression System
  //  Gold
  //
  //
  {
    "Action": "EditData",
    "Target": "Data/Machines",
    "TargetField": [ "(BC)nachonline.mps_GoldCask", "OutputRules" ],
    "Entries": {
      "agedbearhoneycask": {
        "Id": "CaskHoneyMead",
        "Triggers": 
          [
            {
              "RequiredItemId": "bonghits.Cp_BearHoneyMead",
                              "Trigger": "ItemPlacedInMachine",
                              "RequiredCount": "1"
            }
          ],
        "OutputItem":
          [
            {
              "CustomData": {
                "AgingMultiplier": "4"
              }
            }
          ],
      }
    }
  },

Doesnt seem to work, even tho SMAPI throws no errors

distant radish
#

(Also, MPS is in the process of a whole rework and the code is certainly going to change)

hot gale
#

Whoa, that would be sick!

distant radish
hot gale
#

This is my humble mod :D

distant radish
#

ETA is March/April

hot gale
#

That's awesome! Thank you so much :D

#

Your mod absolutely rocks btw, excited to see 3.0

distant radish
hot gale
#

Hell yeah

hard fern
#

what's the upwards limit for map size again?

vernal crest
#

There is none, according to the wiki

hard fern
#

yahoo

brave fable
#

farm maps generally get layering issues over 180 wide, might extend to other outdoors maps too

#

generally though 100 is already very large and 200 is incomparable

tribal ore
#

Nvm, documentation found

#

I'm too tired for this right now, but too awake to go to sleep

calm nebula
#

Try a nice shower

#

With lavender

brave fable
#

if you're not AEDST then you're up too late

tribal ore
#

Opposite problem: cats woke me way way way to early

#

And I can't go back to sleep now

brave fable
#

suffering from success (having fluffy cats)

tribal ore
#

fluffy bastards, more like it

calm nebula
#

Lol

#

Cat tax

tribal ore
#

I'm disinclined to be generous to them when they wake me up at 4

#

cat tax:

#

<< ringleader

vernal crest
#

I'm inclined to forgive that beautiful face

tribal ore
#

Fair. He's both the sweetest and dumbest cat I've ever owned

#

A literal bleach sniffer

calm nebula
#

Adorable

#

Would pet

tribal ore
#

Anyway, I'm going back to randomizing dialogue because that's apparently what I do now

rigid musk
#

Mm random dialogue my favorite (it means i can have infinite more dialogue lines and nothing can stop me other than creativity)

rigid musk
tribal ore
#

I discovered the power last week. Now I am become god

rigid musk
#

Random dialogue is why Qi has over 800 doalogue lines... and I could add more >:] (i will not my brain will melt)

tribal ore
#

Btw, congrats on finishing the Mr. Qi mod! Saw it mentioned on reddit the other day

rigid musk
#

What is your cat's name? - ON rEDDIT?

#

GruHolUp i don't want to be perceived... and yet and yet

tribal ore
rigid musk
#

Screenrant made an article about it 😭

tribal ore
#

!!!

#

Congrats

rigid musk
#

It's mildly horrifying to me

#

Like in a good way but still

tribal ore
#

Hey, good problem to have. Usually

rigid musk
#

Im glad it was a success I did put a lot of effort into it

tribal ore
#

Ngl, I'm looking forward to running it. But I can't run anything until I've finished mine

#

That's my motivation right there

rigid musk
#

catpeek i hope you enjoy

#

When you do

#

Apparently two people have had a weird issue where npcs just travel to and live in the desert and I genuinely have no clue how or why that was happening

tribal ore
#

I have to finish writing dialogue for Seb's family to comment on his 3 career paths this morning

#

Then test a bunch more

rigid musk
#

But it's only been two people so maybe they're just.. weird

tribal ore
#

Hmmmmm. Other mods messing with things?

rigid musk
#

O: your mod sounds like it's going to be cool/interesting

#

They both only had my mod and dependencies installed which was even weirder

#

Their logs didn't say anything weird, but I was able to get a save from one of the people so I'll be testing that when I (finally) get home

#

My plane got cancelled again last night so I'm still waiting to go home 😭

#

This whole week has been a nightmare tbh I can't wait to go home .. then I can work on Honey and spriting like thirty apples

vernal crest
rigid musk
#

Thank you Aba! It was definitely a shock to see it

#

I was typing in "Friendable Mr Qi" in Google on my phone to go to nexus (I look at the page enough it usually auto comes up) but I pressed enter instead of the little link that came up and I saw the article and almost ceased to be

tribal ore
#

I will say that I can't seem to get the "SpouseGiftJealous" dialogue line to pop up

#

I keep giving Harvey coffee and Sebastian doesn't say a word xD

vernal crest
#

Seb too busy trying to play it cool to act jealous

calm nebula
#

Are you dating Harvey

#

They only get jealous if it is someone you're datinf

tribal ore
# calm nebula Are you dating Harvey

Ok, that's good to know. The wiki just says "gave a gift to another eligible NPC of the same gender as your spouse (unless it's their birthday)"

vernal crest
#

Okay, the Stardew NPCs seem less wildly unhealthy in their jealousy now lol

#

Also it's kind of bizarre that you're safe to date another NPC as long as you don't give them a gift.

lucid iron
#

I guess it's like they caught on to the adultery

whole raptor
#

My modding in a nutshell:

  • Make some random fixes/changes, then forget about them without pushing it to nexus
  • Don't update the mod for months
  • Look at the board before prepping for a new version and wonder what the hell was this fix about SDVkrobusgiggle
vernal crest
#

(Oop sorry for ping, your reply was way more recent than I realised.)

#

It's also weird that spouses are only homo-jealous. Bisexual/biromantic farmers rejoice!

tribal ore
#

Thank you for updating the wiki!

rigid musk
#

I feel like it'd be the opposite in small towns pondering

#

Like news would spread like wildfire cause there's nothing else to talk about

#

What is Flashshifter, truly the age old question pondering

vernal crest
rigid musk
vernal crest
#

Nah I should've added it in the first place lol

#

You had no way of knowing that I have read a great deal of Agatha Christie and James Herriot lol

#

(Both of which - especially Agatha Christie - expound on the extreme amounts of gossip that happen in small towns)

rigid musk
#

tbh_blinking i dont remember what books I've read that mention it but I know I figured it out from literature .. at some point

dry flicker
#

Adding a custom file for the furnitures.
How can I reference my custom file in the editadata string?

brittle pasture
dry flicker
#

yes, idk how to add it to the string when editing the data of the furniture.json

brittle pasture
#

sprite index is 8th

#

they're after the display name

dry flicker
#

thank you a lot

thin hamlet
brittle ledge
gritty hazel
#

so uh
generic mod config claims content patcher mods auto generate a config UI without any code, which seems
incorrect, given that i'd actually need to write what the mod config should, uh, do

#

is there any content patcher+generic mod config documentation i missed?

gritty hazel
#

thanks!

rigid oriole
#

I think gmcm mod page means no C# code needed lol

#

But there's still a json that needs written

orchid glade
#

being a perfectionist is spending wayyy too much time making my nexus page for my mod perfect. it's not even a big mod but it's gonna look pro goshdarnit (it's 6:30 am and I'm still up, making promo images)

ivory plume
#

(From a Content Patcher pack, you don't need to do anything for its config options to appear in GMCM. You do need config options for them to appear though.)

tribal ore
#

Speaking of promo screenshots... for a dialogue/events mod, is it cool to take screenshots with custom portraits or sprites from other mods that I happen to be playing with? I'm planning on linking a bunch of stuff as "suggested" mods anyway on my mod page. Or should I make sure to get screenshots with the vanilla portrait?

#

I don't want to mislead people, but I also really don't think the vanilla portrait fits anymore :/

#

Related: how common is it to bundle sprite/portrait mods (with permission) as an optional download? Worth the effort or nah?

rigid oriole
orchid glade
#

Screenshots with other mods is fine, just mention them in the description. It's better to link other mods portraits than include them I think, unless the whole mod is a collaboration .

#

Or if you're substantially altering them (with permission). But not just for convenience or whatever.

tribal ore
#

Cool, that's about what I figured for bundling. I asked only because I've seen a few mods that do bundle, and was wondering if that was standard or preferred

#

I'll make sure to clearly list any mods I'm using in screenshots!

unique sigil
dry flicker
#

Anyone have a tutorial or guide on how to modify the spouse outside area and room for a custom npc?

tribal ore
#

I think you will find some of what you are looking for here

#

The custom outside area is known as the SpousePatio. The inside area is the SpouseRoom

lusty elm
#

.choose system, worldmap, small tasks, detailing, code.

patent lanceBOT
#

Choose result: worldmap

brittle ledge
#

If it's not something that would be confused for your own mod (e.g., you have a furniture mod with other modded furniture in the screenshot) I think it's fine. If anyone asks "hey what mod is X thing in your screenshot" I'm happy to answer.

ivory plume
#

If it's an image in the mod's image gallery, you can also put the credits in the description. For example:

unique sigil
tribal ore
brittle ledge
#

A good number of my screenshots are from (sometimes multiple) play files so listing them all would take a while SBVLmaoDog

tribal ore
#

I'm only playing with my own mod and a couple of portrait mods. Trying to keep down the potential for conflicts during testing

#

So it won't be hard to list them

unique sigil
lusty elm
#

Other side benefit of listing the mods used in the images is you have to deal with less questions of "What farm/Recolor is that?" "what mod is that item/furniture/crop from?"

#

reads up ah that was already mentioned.

unique sigil
#

i list them just so i can make a disclaimer that i dont answer anything that can already be answered by the mod description. but bold of you to assume average user reads mod description to the end /lh

lusty elm
#

I just don't use other mods in my screenshots unless its absolutely required rooC

unique sigil
#

valid

tribal ore
unique sigil
#

i use them mods bc i cant be bothered to deactivate them before testing

tribal ore
#

Some of the lines I'm putting in Seb's mouth would sound very strange coming from a portrait that looks late teens/early 20s at best

harsh snow
#

just use imagination <3

drowsy pewter
#

The other thing would be that I'd suggest that if you take screenshots with a portrait, they probably should be similar to the vanilla art style

#

Portrait is going to be the first thing people see if they glance at your mod; if you take screenshots with an older sebastian anime style portrait many people might just click away from it automatically

acoustic summit
#

QQ for anyone who might know, can setMapTile add a tile to a layer? Or only alter a tile already on a layer to a different tile.

drowsy pewter
#

or assume that the mod includes that portrait

lucid iron
acoustic summit
ivory plume
hallow prism
#

for crops screenshot i try to have only my crops and vanilla

#

to not create confusion

lusty elm
#

Thats fair.

#

I should also note that by choosing not to use any recolors or other mods in my screenshots i'm pretty sure it effects appeal, but since i really don't care much about downloads, just enjoy the process of creation, I'm easily willing to take that potential usage hit.

hallow prism
#

but one thing is sure, when i see a mod with lot of cool stuff on the first image and half is from other mods i feel "meeh"

#

especially if those other mods are gated/not on nexus

lusty elm
#

I'm the same way tbh, I'd rather see the raw and visualize the changes myself.

calm nebula
#

I'm too lazy to remove my other mods from my screenshots

#

(By that I mean other mods I've made)

hallow prism
#

yeah other mods i made, either i will be able to answer if people ask, or can mention "see my other mods" if i remember, or people can look at my profile

hard fern
#

If i take a screenshot with recolors i like putting a vanilla screenshot too, just to show how it would look in both situations

lusty elm
#

I tend to have like 3 of my farm maps in my mods folder at any given time, Luckily they dont interfere with each other. I took out my proof of concept recolor test for now cuz it kept interfering with my ability to take screenshots.

hard fern
#

(or a screenshot from my tiled workplace)

lusty elm
#

I rarely put up a tiled screenshot into the modpage, mostly reserving them for WIP screenshots.

hard fern
#

The real reason i took screenshots with recolors was just that i ended up launching my main game instead of my mod testing one...

#

And then i just went with it like "oh well"

lusty elm
#

Honestly I think 90% of this whole convo is kinda summed up with, "How lazy I was feeling at the time, did X."

hard fern
#

Lol XD

covert river
#

does anyone have a good youtube tutorial for modding?:) everytime i look it up i find tutorials on how to install mods - not make them myself

brittle pasture
#

youtube tutorials tend to be outdated quickly

lusty elm
#

any that you find will most likely be outdated yeah

hard fern
#

There aren't any good ones that are updated

lusty elm
#

The modding wiki is most likely your best source to get started, as well as github documentation and modder guides for framework usage, and us for when you get stuck.

uncut viper
#

"Name" isnt a thing and you shouldnt be loading the .tsx

covert river
uncut viper
#

the asset name for your spouse room is just whatever you put as the "Target"

#

the .tsx contains tilesheet information but if you are using the default tilesheets from a spouse room then they are already present in the Maps/ folder and do not (should not) be loaded

#

if its a custom tilesheet then you load the png to the Maps/ folder instead

dry flicker
uncut viper
#

"Name" is literally not a thing for Load actions

#

it doesnt do anything at all

#

it is completely ignored

lusty elm
dry flicker
tribal ore
covert river
lusty elm
real atlas
#

would it be possible to block smapi console commands with a mod?

iron ridge
real atlas
#

what i mean is to make so when I have the mod i wont be able to use any commands that i blacklist in the smapi console

lucid iron
#

Why do you want to do that

real atlas
#

some of my friends want to buy sdv but i know at least someone will cheat so i just want to block that

uncut viper
#

there is nothing you can do to 100% prevent cheating

#

odds are if they're going to cheat it won't be with the default console commands either

lucid iron
#

There's cheats built directly into the game that can be accessed without mods

#

I'm not sure what's the point of being controlling when they could just, uninstall your mod

real atlas
hot gale
#

They can just load cjb mods and you'd have no idea

uncut viper
#

any sort of anti cheat in SDV would be absolutely trivial to bypass and you're just straight up better off not caring about it

#

enforce it in the social contract instead

brittle pasture
#

you can force your friends into streaming a copy of your game from a remote server

#

best way to guarantee no cheating, as well as ensuring they'd never play with you again

uncut viper
#

even then they can name an animal with an item code

calm nebula
#

In general I either play with people I trust

#

Or I don't play at all

#

"Now the question is, do you trust atra not to cheat? No."

devout rock
#

Does it count as modding if I'm just altering the game file in the notepad? Like editing the stats for the golden scyth to make it a scyth of impending death?

uncut viper
#

well, just doing that wont alter the game

brittle pasture
#

fyi that doesn't take effect unless you repack it back

uncut viper
#

so it wont count as modding, no

brittle pasture
#

(which we dont recommend)

#

if you need help making the changes you make apply in game by converting it into a CP pack feel free to ask questions here

lucid iron
#

I remember editing my save file to make scythe do many damage

tawny ore
#

We need a mod that makes the mines like Vampire Survivors gameplay

whole lion
#

Okay so I've done some minor mod creation (for personal use at this point) and I am trying to alter the riverland farm map to add a bridge at the bottom. I can get the mod to load, I can get it to display the added bridge but it refuses to let me walk across it even though the tile rules for the bridge is to make it walkable

#

Its in the right layer in tiled and everything

lusty elm
#

if a back tile is marked passable it makes it impassible

whole lion
#

Its a building layer

lusty elm
#

So yeah, The building layer tiles needs to be marked as Passable to be able to be walked on, I would still check to see what tiles are behind it on the back layer as some base game water tiles have passable on them to block movement over them, if memory serves.

whole lion
#

Ah that might be it

lusty elm
#

Your problem tiles are going to be the 2 plain water tiles above the lilpads, inbetween the underwater land edge and the rocks.

whole lion
#

Yeah I checked and those tiles were making it impassible!

#

Thanks for the help

cunning kiln
ocean sailBOT
#

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

dusk mulch
#

time for god knows how long of watching an NPC walk around so i know their schedule is good

cunning kiln
#

So, first step: did I not save correctly in Tiled? I unpacked the game files, opened the appropriate map file, made the edits, saved to the same location, then copied it into my mod file. Was there a step I missed there?

uncut viper
#

the first red error doesnt seem to be yours, the second is bc you have an invalid tilesheet path in your tmx

cunning kiln
#

The tile sheets are just the ones that come on the mine map.

uncut viper
#

so, the mine tilesheets are the exception that proves the rule of tilesheets being in the same folder and having no path in them

final arch
hallow prism
uncut viper
#

because those are inside the Maps/ folder but they are inside a folder inside that folder

hallow prism
#

then enjoy

cunning kiln
#

(I'm not sure what's going on with the SVE error -- though it popped up the same time as I entered the mine level.)

uncut viper
#

so their image source needs to reflect that and not just be "mine"

#

this is iirc what i also ran into a bit of weirdness with when doing the map edits in my mod

cunning kiln
#

Huh. I don't see a separate folder in the mines folder. Do you think that's unpacking incorrectly?

uncut viper
#

its a folder in the Maps folder

#

Maps/Mines/19.tmx for example

cunning kiln
#

So when I go into Maps, I have one folder, which is Mines. That's where I made my changes.

uncut viper
#

so the image source for your tilesheet should actually be "Mines/mine" and not just "mine"

cunning kiln
#

(In the Mines folder.)

uncut viper
#

that would normally be correct

cunning kiln
#

How do I change the image source? (I literally opened up 19 and just made changes there.)

uncut viper
#

Mine maps just need extra attention

#

if you open up your 19-edit.tmx you should see a line somewhere that says image source="mine"

latent mauve
#

When you've copied it, you can just add the change to the image source by opening the TMX in a text editor. 🙂

uncut viper
#

just change that to image source="Mines/mine"

cunning kiln
#

TIL you can open TMX files in a text editor!

uncut viper
#

one of the benefits of it over tbin! tbins you cannot

latent mauve
#

Yes, it makes TMX filepath/directory climbing errors so much easier to fix.

cunning kiln
#

This is very cool! It's making me slightly less frustrated with Tiled

#

(Off to test.)

uncut viper
#

but yeah just to be clear, you did actually follow all the usual map making steps correctly and it wouldve been completely fine... if it wasnt a Mines map lol

calm nebula
#

(I recommend not overriding the whole map)

#

Mines are wierd

cunning kiln
#

I'm only overwriting the whole map for testing, because it's easy and I'm not 100% sure my edits are going to work correctly. Once I get everything working, I'll edit instead of replace.

uncut viper
#

rest assured they were learned against their will the weirdness of the mines already SDVpuffersquee

dusk mulch
#

If I am loading schedule.json into the schedules, I can't use tokens, right?

uncut viper
#

correct

#

Loads do not parse tokens

dusk mulch
#

well that would be why it isnt working

uncut viper
#

not in the file itself

dusk mulch
#

damn it

latent mauve
#

This is why we Load a blank JSON and then EditData the target

dusk mulch
latent mauve
#

Blank JSONs are a wonderful tool and you should definitely make them a habit in your workflow. ❤️

#

At least for files that don't exist yet.

tawny ore
#

If you need a spare one, I've got one here you can take:

{
}

Copyright (C) 2025 @tawny ore

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Except as contained in this notice, the name of @tawny ore shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization from @tawny ore.

lucid iron
#

I think this is insufficiently blank

gentle rose
#

what’s the license?

lucid iron
#

Extra \n for free

uncut viper
#

no license, so its all rights reserved

gentle rose
tawny ore
#

Sorry, added a license. There you go.

latent mauve
#

LOL

uncut viper
#

thank you, i will use this in my mods

dusk mulch
#

I am one with the joja

gentle rose
#

dammit, I was going to brand my mod as LeFauxMatt’s Reduxed Expanded Content Pack

latent mauve
#

Some poor newly minted mod author is going to take the joking very seriously if we break out that quote xD

proud wyvern
cunning kiln
#

It worked!!!! Now I just need to add more shortcuts and then figure out how to identify the x,y coordinates for a tile in Tiled. (Which I had assumed would be incredibly easy, and yet somehow I keep failing to figure out how to do it.) Thank you for your help!

dusk mulch
#
{
  "Action": "Include",
  "Target": "Blank.json"
}

Easy 100,000 downloads

latent mauve
cunning kiln
#

Thank you! (Now I feel silly, but also really glad I asked😅 )

latent mauve
#

😛

#

Everybody has to learn at some point.

cunning kiln
#

Oh, for -- now I have to go back into the text editor to set the tilesheets back to just plain mine. This is why I spend so much time yelling at Tiled. My next mod is going to be 100% text-based.

uncut viper
#

if you're editing your tmx in your mod folder, you can copy the whole Mines folder from inside the Maps folder into your mod folder

#

then itll find the tilesheet in that copy of the Mines folder

#

make sure to remove that folder before publishing ofc

#

(and by "into your mod folder" i mean "next to your map, which is probably in assets/")

merry rampart
#

Is there a way to make it so you can place things on a Building tile on a map? Such as a beach shoreline?

brittle ledge
#

Put it on the building later? Or do you mean you have the shoreline on the Back layer and you want it to be not walkable?

merry rampart
#

Cant have shoreline on the back layer otherwise it gets the water overlay

latent mauve
#

Do you need it to be walkable?

merry rampart
#

mostly trying to fix the problem ive talked about in #making-mods-art but... idk i dont really like any of the options ive come up with

#

no its already walkable

latent mauve
#

I'm curious to if Buildings-1 might be of use here, since the numbered Buildings layers don't have collision.

merry rampart
#

maybe...

#

i can test and find out

lusty elm
#

Place on a Building layer? no, but you could make a layer of like Buildings1 and put it on that, and it shouldnt have the building code limitations, i believe.

merry rampart
#

nope, doesnt work

lusty elm
#

What were you thinking of placing on the building layer for the shoreline?

merry rampart
#

a chest. I need to figure out how to make my shoreline work with automate

lusty elm
#

ah, I usually use a dock as a linker if i need one.

merry rampart
#

#making-mods-art has some more options ive posted but idk im not sold on any of them

latent mauve
#

Passable on the Buildings layer should ALSO allow placing objects on it, unless there's a Back layer tile with an opposing property?

merry rampart
#

nope...

#

just water behind it

#

but that does give me an idea. maybe i can make it so it's passable on the back layer because water might not let stuff be placed on it naturally

latent mauve
#

I feel like Water might have Passable on it on the back layer, though, which would block the object placement...

#

also apparently Water I on the back layer makes it water without rendering the water overlay, I learned something new from the wiki today. xD

#

Yeah, I'd try adding a TileData object on the Back layer with Passable F or NoFurniture F properties on it.

merry rampart
#

I'll see if either of those work

merry rampart
dusk mulch
#

Well I just wasted 20 minutes trying to fix a schedule when really, I was just trying to send the NPC into the wall.

brave fable
#

really though i wouldnt include other mods in my own mods' screenshots, feels wrong when screenshots are there to show what your mod does, it's just going to confuse people

hard fern
#

wow i didnt know that would be blocked interesting

#

oh well, i'll keep my inability to read 😔 to myself

dusk mulch
#

god can we please get a SMAPI/CP/SDV update where we can configure the NPC's speeds 😭 🙏

#

(Without C#)

brave fable
#

there isn't any extension mod for that already?

brittle pasture
#

well if you count farm animals as NPCs

hallow prism
ivory plume
rough lintel
#

just put the npc on a bike pffft

dusk mulch
rough lintel
#

yes i do

dusk mulch
#

oh.

calm nebula
hallow prism
ivory plume
#

Hobbitses, my little Hobbies.

cunning kiln
#

Work in tiled has been accomplished. Now I'm running into a wall trying to patch the map. I have four map edits in four locations. Attempting to use FromArea and ToArea four times did not work. The edits are all over the map so if I did a FromArea/ToArea that would cover all of the edits in a single edit, I might as well just replace the map. Any suggestions (or possibly other mods that also make multiple edits that I could use as a resource?)

brave fable
hallow prism
#

maybe context of what you're trying to replace?

cunning kiln
#

For context: I'm adding shortcuts to the spiral map in the mines.

brave fable
cunning kiln
#

That's interesting! Let me test it. Thanks!

brave fable
#

each {} object can only include each key (e.g. Action, FromArea, Changes) once at most, which tells you that you simply need more Changes {} objects to apply more fromarea/toarea edits

dusk mulch
#

ooo i just got an idea for extra lore in my mod

cunning kiln
#

It worked! Thank you!

lucid iron
#

who dug these shortcuts is there lore

brave fable
#

duggies, naturally

dusk mulch
#

Oh jeez I just realised I have to make ANOTHER event now...

tribal ore
dusk mulch
#

finally got the dialogue for the mod done (until i decide to add more)

#

now to start on the event

ivory plume
#

SMAPI has reached 9999 comments on Nexus! Time to lock the page and abandon SMAPI to keep that number forever.

hard fern
#

LOL

ivory plume
#

It just ticked up to 10,000. I guess I'll keep SMAPI going until we reach 99,999 then. SDVpufferpensive

dusk mulch
#

:D

rough lintel
#

so re: my crop mod, i'm trying to capture the quality of the seed as the farmer plants it... am i on the right track with grabbing the active object and it equaling whatever?

{
    if (!location.terrainFeatures.TryGetValue(tile, out var terrainFeature) || terrainFeature is not HoeDirt hoeDirt || hoeDirt.crop is not { } crop)
    {
        
        return;
    }
    switch (__instance.Quality)
    {
        case 1:
            if (who.ActiveObject?.Quality == 4)
                crop.modData["HMMSCropQualityOverhaul_Quality"] = "Iridium"; 
            break;
[...]```
rancid musk
#

Is SMAPI the mod with the most comments? 🤔

#

I'm kind of curious about that considering they had to shut off comment search to stop it crashing their database

ivory plume
#

SMAPI was only added to Nexus in 2018, so I wouldn't be surprised if another Stardew mod has more.

brittle pasture
calm nebula
rough lintel
#

i thought the-

#

eh?

lucid iron
#

what do the people say on the smapi mod page

#

besides "mods broke help"

dusk mulch
calm nebula
rough lintel
calm nebula
#

Usually not thr useful part

fleet oyster
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.

ivory plume
calm nebula
dusk mulch
lucid iron
#

looks like your issue is lack of Load

rancid musk
#

SpaceCore only has 2,863 comments so I feel doubtful any other mods would have more.

dusk mulch
rancid musk
#

Wait nevermind I"m stupid

fleet oyster
rancid musk
#

I forgot SVE. SVE has 31,075 comments

dusk mulch
#

anyway im going to eat lunch them torture myself with trying to get this event to look good

calm nebula
#

Brb adding 99999 comments to better crafting

dusk mulch
fleet oyster
rancid musk
#

atra my most recent comment is someone trying to gaslight me into thinking pressing ctrl+shift+1 crafts a stack of 999 when that keyboard shortcut only works for the shop menu

calm nebula
#

I take one peek at Nexus and I'm super glad I retired

fleet oyster
rough lintel
ivory plume
calm nebula
lusty elm
#

My likelyhood of fixing a bug or error is kinda proportional to how many I have to fix at the moment (and how complex it is)

#

so having smaller mods where i rarely get bug reports is good for productivity 😄

#

or sometimes noone bothers to tell you that X feature isnt working because 500 people isnt enough for one to notice AND tell you. rooBlank

rough lintel
#
{
    if (!location.terrainFeatures.TryGetValue(tile, out var terrainFeature) || terrainFeature is not HoeDirt hoeDirt || hoeDirt.crop is not { } crop)
    {
        return;
    }
    switch (__instance.Quality)
    {
        case 1:
            if (__instance?.Quality == 4)
                crop.modData["HMMSCropQualityOverhaul_Quality"] = "Iridium"; 
            break;
        case 2:
            if (__instance?.Quality == 2)
                crop.modData["HMMSCropQualityOverhaul_Quality"] = "Gold";
            break;
        case 3:
            if (__instance?.Quality == 1)
                crop.modData["HMMSCropQualityOverhaul_Quality"] = "Silver";
            break;
    }
}``` ok ``__result`` is just checking if its planted or not in this equation im assuming, do i need to run an if __result to do the switch case?
#

or can i just do it.

#

wait i need to do if (!__result) return;

#

pretend thats there

rigid oriole
#

Forgive me if my flu-stricken self has forgotten all C# coding, but why do the switch statement cases check instance.Quality being 1 and then again check if it's 4 inside the case?

#

Won't __instance.Quality always be 1 if you're inside case 1

rough lintel
#

w-what

lucid iron
#

none of your cases will run Dokkan

rough lintel
#

oh word.

brittle pasture
#
 switch (__instance.Quality)
    {
        case 1:
            if (__instance?.Quality == 4)

means "if quality is 1, check if quality is 4, if yes then run my code"

rough lintel
#

wait so i dont switch instance.Quality then?

brittle pasture
#

that will obviously do nothing, unless a number exists that both equal 1 and 4

whole raptor
#

I'm guessing GMCM doesn't like line breaks in descriptions? Since without them it wraps nicely SDVpufferthink

uncut viper
#

case statements arent like, this is the first case, second case, etc. the case is the value of the thing you checked

fleet oyster
brittle pasture
#

do switch, or if check, not both

dusk mulch
#

ok time to torture myself with making more event

rough lintel
#

ok but how do i check in the switches for the quality number

#

i guess thats where im confuse

uncut viper
#

thats what the case is

#

case 1 = "in the case that the value of instance.Quality is 1, this is what you do"

uncut viper
#

case "test" = "in the case that the value of someString is "test", this is what you do"

calm nebula
#

Don't use it indiscriminately

lucid iron
#

but also

int cropQuality = __instance.Quality + 1;
if (cropQuality > 2)
    cropQuality = 4;
crop.modData["HMMSCropQualityOverhaul_Quality"] = cropQuality.ToString();
calm nebula
#

ATRA IS RETIRED

rigid oriole
#

then how come their name doesn't say retired anymore? /lh

lucid iron
#

atra's state of retirement is not yet observed

#

hence quantum

rigid oriole
#

i seeeee

dusk mulch
ivory plume
#

(Also just for fun, you can shorten this:

if (!location.terrainFeatures.TryGetValue(tile, out var terrainFeature) || terrainFeature is not HoeDirt hoeDirt || hoeDirt.crop is not { } crop)

To this:

if ((location.terrainFeatures.GetValueOrDefault(tile) as HoeDirt)?.crop is not { } crop)

)

rough lintel
#
{
    if ((location.terrainFeatures.GetValueOrDefault(tile) as HoeDirt)?.crop is not { } crop)
    {
        return;
    }
    if (!__result) { return; }
    switch (__instance.Quality)
    {
        case 4:
            crop.modData["HMMSCropQualityOverhaul_Quality"] = "Iridium"; 
            break;
        case 2:
            crop.modData["HMMSCropQualityOverhaul_Quality"] = "Gold";
            break;
        case 1:
            crop.modData["HMMSCropQualityOverhaul_Quality"] = "Silver";
            break;
    }
}``` bweh
#

OH thank u pathos

vernal crest
rough lintel
#

ok shlebited, that's. ok now?

brave fable
#

is not { } crop?

#

is this some kind of pattern-matching var?

calm nebula
#

Yup

ivory plume
#

Yep, it's essentially checking if it's a non-null object with any properties, and saving it to crop.

brave fable
#

possibly the least intuitive c# style i've come across hahah

ivory plume
#

I think it's intuitive when you get used to pattern matching in general (e.g. it's an extension of patterns like is HoeDirt { crop: not null }), but it's certainly weird at first.

fleet oyster
ivory plume
# rough lintel ```private static void Object_placementAction_postfix(SObject __instance, bool _...

(Just in case you want to shorten it more:)

private static void Object_placementAction_postfix(SObject __instance, ref bool __result, GameLocation location, Vector2 tile)
{
    if (!__result || (location.terrainFeatures.GetValueOrDefault(tile) as HoeDirt)?.crop is not { } crop)
        return;

    string quality = __instance.Quality switch
    {
        4 => "Iridium",
        2 => "Gold",
        1 => "Silver",
        _ => null
    };
    if (quality != null)
        crop.modData["HMMSCropQualityOverhaul_Quality"] = quality;
}
brave fable
#

(does it still count as intuitive if you need to already understand it and have gotten used to it?)

vernal crest
lucid iron
#

i feel like ive always given a type (bc i desire the type)

brittle pasture
rough lintel
#

once i accomplish this i can do the rest i swear im strong enough now

#

also: the string quality = __instance bit errors out and says cs8600

ivory plume
brittle pasture
lucid iron
#

this is some haskell looking C# you got there

rough lintel
#

oh wow that worked

#

LMFAO

#

tadah

brittle pasture
#

the compiler's warning you that quality can be null even though its type is string

fleet oyster
uncut viper
#

(to be pedantic but hopefully in the aid of learning: the code before wasnt erroring out, it was just a warning, that you could ignore if you wanted to but you shouldnt hence the squigglies)

rough lintel
#

thank u tho muah

reef kiln
#

Reading you all talk about c#, is like reading a conversation 1/2 English and 1/2 in a different language.......well I guess it actually is. It is interesting to try and understand.

dusk mulch
#

But it is still hurting my brain

#

-# ow

vernal crest
dusk mulch
#

Are yall proud of me? 1 new NPC, 2 events, Lore, A new location, and I am not done yet.

#

1 problem I may face... It isnt compatible with SVE

calm nebula
ivory plume
#

Technically it'll fail at runtime. If you want to avoid that, you can just toss in more = and > characters:

Func<int, int> x = x => x switch { >= 4 => x, _ => x };
#

(For those who don't speak C#, that's a method which does absolutely nothing. It just takes a number and returns it.)

fleet oyster
reef kiln
dusk mulch
ivory plume
calm nebula
lucid mulch
reef kiln
vernal crest
dusk mulch
vernal crest
#

Whoops, slight bombardment of advice there, sorry Simplicity!

vernal crest
lucid mulch
#

that example could also be {{InternalAssetKey: assets/Wolfbane.png}} rather than Mods/{{ModId}}/assets/{{ModId}}_Wolfbane for the places asking for texture and skip the load all together, unless you have a usecase for needing to do EditImages later on

ornate locust
#

If you want people to not bug you about compatibility, it's not too hard to solve that problem

fleet oyster
ornate locust
#

I mean, obviously you don't have to, but I also patched with a "I'd rather not be bothered about this" sensibility

dusk mulch
ornate locust
#

And one bridge/one festival isn't bad for that kind of patch

reef kiln
vernal crest
ornate locust
#

It isn't much harder than just patching the map to add the warp to begin with

lucid mulch
#

(This is why I like trainstation and by extension Central Station, being able to do custom npcs and locations without needing to do any vanilla map edits for max compatibility)

ornate locust
#

I say this being super new to this kind of modding

dusk mulch
dusk mulch
vernal crest
#

SVE loads every map

dusk mulch
#

Really? Interesting

lucid mulch
#

and regardless that doesn't stop late edits

ornate locust
#

You can load in over it, just make a late edit

#

that's what I did anyway

#

Patch in over it, I mean

vernal crest
fleet oyster
#

Has anyone made a content patcher form yet to build things. Like a program that generates the json and puts in the format of a form?

ornate locust
#

heck it, you can put the cliff back if you want. World's your oyster. If it's too much bother, of course, it's your choice. But I found it easier than I feared when I worked it out

dusk mulch
ornate locust
#

I squashed Pierre's whole garden over in mine

calm nebula
lucid mulch
vernal crest
dusk mulch
#

Fine, I will see if I can patch in something for SVE

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:

lucid mulch
#

the closest I would get to a gui would be a vscode extension to add better intellisense, but that's really hard to do with everyone violating the json spec left and right

lucid iron
#

firereadlily's spreadsheet might be close to what you want but its just npc

ornate locust
#

Me running at Pierre's garden with a steamroller and a pallet of grass to put down

lucid iron
#

i think if you get too many layer of abstraction

#

then the tool starts to suggest one and only one kind of mod

#

which would be pretty sad

fleet oyster
lucid mulch
#

as long as the cp format version is <2.0 a 1.5.6 npc should work still, though that isn't a recommendation to delibrately make new tech debt

tiny zealot
uncut viper
#

i think personally there is nothing wrong with abstraction layers if it allows the creation of mods that would otherwise not exist

lucid iron
uncut viper
#

(not "not exist" due to complexity or anything ofc, but bc s ome people will simply not Create if they do not have it)

fleet oyster
lucid mulch
#

anyone making it is condemming themselves to years of support

ornate locust
#

That's modding in general

lucid iron
#

i would be thrilled to have intellisense for content patcher tho

uncut viper
#

thats modding in general yeah. and if it were open source, anyone could pick it up later if the original author no longer wishes to

lucid iron
#

cus otherwise i just keep copying snippets from mods i made previously

lucid mulch
#

I might make it as an experiment with the constraint that it only works on legal json (and maybe jsonc if easy)

vernal crest
#

I personally dislike having to deal with poorly made mods in support so I'm not a fan of things that encourage people to create stuff that's so poorly made it causes users problems.

uncut viper
#

i dont disagree that learning and understanding the fundamentals is important and it isnt how id recommend learning to make mods. but i also dont think theres a downside to making mod-making easier

#

there will be poorly made mods with or without a GUI to help do so

calm nebula
ornate locust
#

People can make things badly with or without tools

uncut viper
#

if anything, users who need that sort of handholding would make them even more poorly if they didnt have the guidance

lucid iron
#

it is true that sdv mod isn't exactly building production software sleep

calm nebula
#

(Like, I managed to accidentally run 27 sims through the work gui today instead of 3 because I wasn't paying attention and it replicated my temperature conditions twice lol)

lucid iron
#

so not hueg deal if someone never learns more than what tool offers

uncut viper
#

i think its important to understand the content pipeline and stuff too, but i wouldnt say i wish Content Patcher didnt exist to make things too easy

lucid mulch
#

(smapi and content patcher is more mature than pretty much any of my work codebases)

calm nebula
#

It's fine if the intelligence is more narrow

lucid mulch
#

the problem is everyone loves their trailing commas, multiline strings and not using double quotes when they don't feel like it

vernal crest
lucid mulch
#

jsonc doesn't do any of the above, only allowing comments

lucid iron
#

yea i just mentally ignore the trailing comma warns

calm nebula
#

It doesnt?

#

Json5

tiny zealot
lucid mulch
#

json5 vscode extensions abandoned

calm nebula
#

Other than the multiline strings

lucid mulch
#

or was the last time I was going down that rabbithole

#

I cant remember what I ended up with that almost could do most of newtonsofts insanity

lucid iron
calm nebula
#

Anyways. People have tried. There was an attempt using unity earlier.

lucid iron
#

this seems legal to me

lucid mulch
#

Remind me in 92 hours to experiment with vscode extension for cp intellisense

patent lanceBOT
#

I was JUST about to sit down for the end of the day. but FINE (#6546147) (92h | <t:1740777860>)

vernal crest
#

I switch to jsonl for my events page so I can multiline without warnings. I'm happy to sacrifice error checking for the ability to read my own dang event.

lucid iron
#

how would the extension know about the data models?

calm nebula
lucid mulch
lucid iron
#

i was actually imagine like

#

the language server just runs sdv with a specific mod in the back

#

prob too expensive for potatoes tho

dusk mulch
#

im just wondering how im going to design this to work with SVE and be lore accurate

lucid mulch
#

heh, I could have stardew itself be the LSP

uncut viper
#

good way of racking up your steam playtime hours even more than mod testing already does

lucid mulch
#

not actually a dumb idea though, I might look into that

lucid iron
#

ty i stole it from focustense kyuuchan_run

uncut viper
#

did focus put his idea under MIT license

lucid iron
#

several months ago wren was talk about a mod making tool they want to make

#

and this was one of the suggests

lucid mulch
#

the stardew LSP mod could then also auto trigger patch reloads and clearing caches etc on file save

#

and give preview hover of token values

dusk mulch
lucid iron
#

i'd like ability to register custom data models

#

or for tool to discover what type perhaps

lucid mulch
#

if I have a stardew LSP you wouldn't need to

calm nebula
#

Custom assets even?

#

Do you just load it and inspection the type?

fleet oyster
lucid iron
#

if it can inspect the content pipeline (and if the model isnt doing something silly)

vernal crest
# dusk mulch Where can I find some documentation on this?

There's not really documentation for doing a second patch with different details but my mod Apollo's Trick or Treat does two patches to add a warp depending on the presence of SVE if you want to check that. It's just adding a second patch with a "When" condition checking if SVE is installed.

dusk mulch
#

Alright, ty! I will check it out.

calm nebula
#

You're a 🐍, right?

lucid mulch
lucid iron
#

my crime is that there is a Dictionary<string, object> that i round trip through newtonsoft to dynamically turn it into different model class

vernal crest
lucid mulch
lucid iron
#

i suppose a lesser version of this crime does come up with using CustomFields

#

cant rly know anything more than its a string

calm nebula
#

(To be fair I have custom jsonconverters)

fleet oyster
#

Okay, so I want to work on the CPMod and the C# mod to be editable in the same workspace. However, if you put them in the same folder, this does not work (conflicting manifests). This is mostly a problem for once a build begins. So, how could I edit the build process to ignore the CP folder when dealing with the C# mod but move it into the mods folder with the c# mod after? I am mostly just looking for a starting point.

brittle pasture
#

look into ModBuildConfig's ContentPack option

reef kiln
# dusk mulch Where can I find some documentation on this?

It is not huge deal to not be SVE compatible, if you don't mind people bugging you about it. Though Lore wise that area does exist, just not in the same place. As SVE does use the flower dance map. Only there is no on the map way to get to it.

fleet oyster
vernal crest
#

My only issue with bundling a content pack is that I have to edit the built copy of the CP mod to be able to patch reload and then I forget to update the copy inside my project folder :/

#

I need to find a way to put some sort of screaming red text in my face to remind myself about it.

brittle pasture
#

(same)
(why isnt this working why-oh I had to build)

vernal crest
#

Yup it's either remember to edit the built copy and forget to transfer the edits or forget to edit the built copy and wonder why my changes aren't showing lol

dusk mulch
#

back to mapping... my favorite thing... (me trying to find the tile to get it to look just right)

dusk mulch
calm nebula
uncut viper
#

not for the bundled CP pack

calm nebula
#

I generally don't have mods that have a major c# component and a major CP component tbh

#

Hmmmmmmm

#

Well, there is a way around that

#

Remind me in 52 days to look into making content pack deploy a symlink

patent lanceBOT
calm nebula
#

Damn

#

That was supposed to land after April

#

....Selph, can you look into it?

lucid mulch
#

note that stardrop already deploys mods via symlinks so not entirely sure how they will play together

calm nebula
#

It's fine to simlink to a simlink

obtuse wigeon
#

Hi, I've made a Content Patcher mod to replace the greenhouse with a better version, but it won't load because the tilesheet isn't in the mod folder, the wiki says however that it will use the vanilla tilesheet if it isn't present in the folder, Why is this not working? I've currently downloaded another greenhouse mod and just directly replaced their greenhouse with mine for testing and it still causes this issue

https://smapi.io/log/01888f05737940c29eb8795007b1b0fe

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Unix 6.5.0.23, with 24 C# mods and 40 content packs.

calm nebula
#

Thanks, Selph, you're the greatest

calm nebula
uncut viper
#

a tsx is not a tilesheet, it is information about a tilesheet

#

or well rather, its not the tilesheet image

#

the tilesheet image is what you want to not include in your mod

brittle pasture
calm nebula
#

I'll get to it after our next tape out

obtuse wigeon
uncut viper
#

.ts_x_ =/= tilesheet

#

did you have a .tsx file that you deleted?

obtuse wigeon
#

ye, I still have it

#

I haven't deleted it, I just didn't move it with the tmx file becuase the wikiw said not to include it because it will use the vanilla one

uncut viper
#

the wiki says dont include the tilesheets

#

the .tsx file is not the tilesheets

#

the .tsx tells your .tmx what tilesheets to use

calm nebula
#

The wiki means the pngs

uncut viper
#

and other info about the tilesheets

calm nebula
#

Not the tsx

#

Which is metadata

obtuse wigeon
#

how come other mods are able to not include a .tsx or tilesheet and still work?

calm nebula
#

It's weird

uncut viper
#

if you embed your tilesheets when making the map, all the info inside the .tsx is just placed inside your .tmx instead

#

because they embedded their tilesheets

uncut viper
#

Tiled will give you the option to embed when loading a png as a tilesheet

vernal crest
#

You can embed after the fact too with the third? (I can't quite remember) button in the tilesets box.

obtuse wigeon
#

My brain has thoroughly melted into a pile of mush, how do i embed the tsx into the tmx?

brittle pasture
tiny zealot
uncut viper
obtuse wigeon
#

the tilesets page now has these 3 tabs, of the duplicates, one can be deleted and the other can't, the one i just embedded is the only one that can be deleted, should I just leave all 3 of them? or deleted specific ones?

vernal crest
#

I think if you just save and close the duplicate will be gone when you open the map again.

lucid iron
#

assuming untitled tile sheet 1 and 2 are the same, u can delete the 2nd one but may end up having to redraw some of the map

#

i have no idea if there is easier way

calm nebula
#

The code is insane

vernal crest
#

No don't delete the embedded one, that's the one you want to keep.

brittle pasture
#

insanely good you mean

obtuse wigeon
dusk mulch
#

ok attempt #1 at trying to make it SVE compatible

obtuse wigeon
vernal crest
#

Did you close Tiled entirely when you closed the map?

obtuse wigeon
#

yes

inland cedar
#

how to get the list of all building from all location? thinking about case user use build anywhere

obtuse wigeon
#

how do I tell which is the embedded one? I've immediately forgot after closing and reopening

vernal crest
#

Try what Chu suggested then, but make a backup of the map first

#

The embedded one is the one that has the "embed tileset" button grayed out

vernal crest
#

I work with tsx files so rarely that I always forget what to do when they do this silly repeat thing

dusk mulch
#

OMG IT ACTUALLY KIND OF WORKED

#

IT IS COMPATIBLE WITH SVE

obtuse wigeon
vernal crest
obtuse wigeon
#

Ohhhh gotcha, sorry I miss read it

vernal crest
#

Because it might work or it might not work and just set you back to where you were when you started or it might not work and wreck something lol

obtuse wigeon
#

I think I fixed it though, completely removing the tsx from the file path instead of trying to delete it through tiled forced it to rely on the embedded one

uncut viper
#

[doesnt know shit about Tiled vc] maybe its undeletable bc its loaded from the .tsx so just delete the- yeah

vernal crest
#

Weird that it doesn't remove the reference to the tsx in the source when it's embedded.

uncut viper
#

well, it doesnt know its the same tilesheet

#

or same image rather

#

you could in theory have both an embedded and a tsx which would be... weird. but you could!

#

i think it just wants to err on the side of "the user has kept this file in the folder, i trust they know more than me"

vernal crest
#

I think it could probably pretty safely assume it's going to be the same one though. Still, hopefully this time I will actually remember this.

obtuse wigeon
uncut viper
#

the tilesheet metadata will not be changing

#

you can change the tilesheets present in a map but that wont have a difference between tsx and not tsx

#

the benefit of a .tsx is that it stores data about animated tiles

#

so you can use em in multiple tmx's easily if desired

vernal crest
#

Yeah tsx files are amazingly useful for the specific case where you actually want to transfer the metadata and a useless, annoying faff any other time.

dusk mulch
#

How can I remove the bushes and trees from the map edit area? I have tried ReplaceByLayer

ornate locust
uncut viper
obtuse wigeon
uncut viper
#

BETAS also has an action to clear them but again still not somewthing you do in the map patch itself

vernal crest
vernal crest
obtuse wigeon
#

I defo want to use tile animation and properties, but it has worked now though! Thank you all for your help

uncut viper
#

its not required to use them

#

if you start your map by editing from a vanilla map that has the animated tiles, the animations are already embedded into those .tmxs

#

you can also re-set them up manually if not and keep them embedded

#

using the .tsx to store the tile animations (not properties, btw, properties are not stored) just means you can start a map from scratch and get them easily again

calm nebula
#

Re setting up tile animations sounds like helllllll

vernal crest
#

Now I have to wonder if that happened or I dreamed it

lucid iron
#

yea i remember doing that

#

to get dirt and stone etc

vernal crest
uncut viper
#

what kind of properties are we talking about then because i was thinking of TileData and such which is a property on the map itself and not a property of the tilesheet

vernal crest
obtuse wigeon
#

Okay update the mod sort of works, the "Buildings" layer, supposed to be impassable, which is is, "Buildings1" layer however is passable, without the passable tile property, shouldn't "Buildings1" inherit the same properties as "Buildings" but just overlayed ontop?

vernal crest
#

Things like dirt, stone, diggable, water, passable, etc. They're all set on a tile in the tileset and apply everywhere in a map that the tile is used.

uncut viper
#

very clear and not at all confusing in an already confusing ecosystem /lh

#

(i dont blame you for that)

#

every day i think more and more about the theoretical Stardew-centric Tiled fork

vernal crest
obtuse wigeon
#

Ah, so I should put things I want to have collision specificly on the layer without extra numbers?

vernal crest
uncut viper
#

think of the extra-numbered layers as just setting up image layering

#

no functionality, just visuals

obtuse wigeon
#

Gotcha, That makes more sense, minor modifications need to be made, nbd though thankfully

lucid iron
#

u could stick an Action on a tile in the tilesheet if u want

vernal crest
#

It's tricky because it is an important distinction when making the map even if it isn't different in game.

fleet oyster
#

Am I doing something wrong. My build keeps failing and it keeps generating a file?

vernal crest
#

Because if you want a warp on one single map tile and you add it to the tileset instead you're going to be warping every time you move if it's on an oft-repeated tile.

lucid iron
#

yea TileData is like, local position only props

lucid iron
#

also is this a C# mod?

dusk mulch
#

now i have to research gift tastes

fleet oyster
# lucid iron also is this a C# mod?

Yes, but I am trying to include my content pack with it. I looked up Nuget docs on this earlier. Where do the build logs go? I couldn't find mine when I went looking.

lucid iron
#

if you did a build there should be some console output, though i dont use VS so im not sure where

fleet oyster
#

This is the console output, but it was empty. I figured this would've generated a log for the error.

lucid iron
#

weird VS thing maybe

vernal crest
#

VS normally shows me the error in a box down the bottom

dusk mulch
#

If I don't specify an item in the gift tastes, what does it get classified as?

vernal crest
#

Try view -> error list

fleet oyster
#

This is as verbose at is will give me.

vernal crest
dusk mulch
#

Alright, ty!

lucid iron
fleet oyster
lucid iron
#

did turning it off and on work lol

fleet oyster
#

Yes haha

#

I'm not questioning that. Mac VS is weird

calm nebula
#

oh

lucid iron
#

just suffer vscode instead sleep

calm nebula
#

you're on "totally not just a vscode reskin"

#

small recommendation to try Jetbrains Rider, it's free now

lucid iron
#

i also thought mac VS is kill

calm nebula
#

yup

#

eol already

fleet oyster
#

Yeah

#

I am just used to it at this point tho. Might migrate soon but want to get something made first. Gotta at least start on this since the reward is far more tangiable. Nothing like making your first item! JetBrains products are just better tho.

lucid iron
#

what did u need the C# for DokkanStare

fleet oyster
#

Nothing right now. Just doing small steps but I will be having to add mechanics for what I want to do.

lucid iron
#

i ask cus u can do a lot without any C# now, though if i was set on using C# the part i'd consider not having is the CP component

fleet oyster
lucid iron
#

yea

#

this is a big craftable, but the idea is the same

calm nebula
#

if it's (a) a small amount of data editing, I would just do it in the C#

lucid iron
#

it does depend on how elaborate i think the data edit will be, i wouldn't attempt edit map lol

calm nebula
#

if it's (b) a large amount of data editing or (c) the example pack for a framework, CP

lucid iron
#

and my first mod has a CP part that i cant be assed to remove now

fleet oyster
lucid iron
dusk mulch
#

Well every string in my mod has now been i18n'ified.

fleet oyster
#

I have been meaning to ask what i18n is. I keep seeing it.

lucid iron
#

internationalization

#

smapi comes with translation system u can use

dusk mulch
green light
lucid iron
#

this is about making a mod, i believe the mobile version also has the content pipeline yes

green light
#

thank you, still reading docs, haven't attempted anything just yet

dusk mulch
#

I just finished all the gift tastes, the stars are aligning

#

and im still keeping the mod at a compact 0.312 mb

#

@cunning kiln Congrats on the release of your mod! Want me to showcase it for you?

obtuse wigeon
#

Question about custom warps in tiled, do I do "23 45 Town 29 67, 23 47 Town 29 69" in one map property box or can I add each warp in a separate map property box i.e. "23 45 Town 29 67" | "23 47 Town 29 69"

dusk mulch
#

You put them all into the 1 map property

#

But without the "|"

vernal crest
#

I actually don't know what happens if you have multiple. Give it a try!

obtuse wigeon
#

Comma separated?

obtuse wigeon
dusk mulch
#

So like this
Value Value Location Value Value Value Value Location Value Value

vernal crest
#

If you're just doing the one, no commas.

obtuse wigeon
#

Ahhh gotcha, Thank you

calm nebula
vernal crest
#

It's hard to read, which is why I am encouraging you to try adding the property multiple times so if it works I can do that in future xD

#

It's entirely probable that multiple will not work (either it will complain or the last will overwrite the earlier ones) but I live in hope and dub you my guinea pig xD

calm nebula
#

(it is unlikely to work)

#

(use CP AddWarps instead)

obtuse wigeon
#

I just doesn't even add it into the map properties, just edits the warp already present

obtuse wigeon
vernal crest
#

Oh by the way if you're doing an EditMap patch over an existing map, your map's map properties will not transfer so you have to apply them with AddWarps.

obtuse wigeon
#

I am not, I'm doing the none recommended Load, entirely because it's just the greenhouse, and I have no other mods nor plan to add any other mods that modify it

#

I'll probably change it to EditMap in the future for compat with other mods people may have so I'll keep it in mind

vernal crest
#

But iirc the greenhouse has hardcoded warps...maybe?

obtuse wigeon
ocean sailBOT
#

@obtuse wigeon You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

vernal crest
#

At least to the farm. If you're warping to other maps I think it'd be fine.

obtuse wigeon
#

Oh ye I'm using it as basically a warp nexus because content mods are MASSIVE, even though they add methods of warp

#

customising it is a bit more fun

vernal crest
#

Yes, that is such a great thing about making mods. You can just do stuff you want.

lucid iron
#

buildings have their warps adjusted if it's to their parent location yea

obtuse wigeon
obtuse wigeon
#

wait I already know the answer, it's happened multiple times and I didn't realise

lucid iron
#

yea just for the parent location (farm if u built it there)

vernal crest
#

Yeah, it's to avoid problems now that you can move all buildings around I think?

lucid iron
#

if it goes to somewhere else then it's not adjust

obtuse wigeon
#

now that's a smart feature

vernal crest
#

I think there is actually a mod that cancels that behaviour but I can't remember what it is right now

obtuse wigeon
#

I see how it could be useful but I feel it would cause a lot more issues unless you're intimately familiar with how it works

lucid iron
#

i feel like u can get around it with other kinds of warp already

#

TouchAction warp

vernal crest
#

Does that not get intercepted by the hardcoding, chu?

lucid iron
#

i dunno havent tried Dokkan

vernal crest
#

Too bad I cannot allow myself to check right now and will therefore never check lol

dusk mulch
#

hi hi

#

idk what else to do for my mod but i know it isnt finished

calm nebula
#

Sleep on it

dusk mulch
#

More dialogue!

dusk mulch
calm nebula
#

(In the past I would not release a mod unless I've played at least one real in game day with it)

dusk mulch
#

Thing is I can't play it since it is lore based and I already know all the lore-

#

WAIT! I can put in a shop!

rigid oriole
#

yeah but dont you want to make sure the dialogue works as intended and all?

calm nebula
#

It's not for functionality

dusk mulch
#

And I have got a beta tester to help

calm nebula
#

It's for feel

dusk mulch
#

Ohhh fair enough

calm nebula
#

At that point I've checked the functionality

dusk mulch
#

Well I will play it then

obtuse wigeon
#

dialogue feel is definitely something I never get until I play it myself, I notice a lot of games mods also miss this out too

vernal crest
#

I really need to speedrun getting Hiria to a playable point because I want to leave a few months between that and then testing her for vibes and at my current rate of completion I may die of old age before I get to do that lol

deep cypress
#

Hi loves! A user is having an error in split screen. This code should make it so the code does not run unless it is the person in the split screen who is doing the thing?

   if(!Game1.player.IsMainPlayer)
   {
       SMonitor.Log("PSL - Player is not main player!");
       return true;
   }```
lucid iron
#

i think you gotta use Context.ScreenId bolbthinking

calm nebula
#

Try Context.IsMainPlayer

#

But we will need more context than that

#

For short periods of time, Farmer.IsMainPlayer is not accurate

#

But that does not feel right

brave fable
deep cypress
#

It's a baby birthing event patch, I'm trying to make the patch not run if the person is not the one giving birth to the baby/having the baby/whatnot.

calm nebula
#

Yeah you don't want that block then

#

Game1.player is the current active player

deep cypress
#

Ok! So use the !Context.IsMainPlayer then?

calm nebula
#

No

#

Drop that block although

deep cypress
#

Ok!

#

The user is getting an NRE from here when on splitscreen:

            if (___babyName != null && ___babyName != "" && ___babyName.Length > 0)
brave fable
#

which seems like a pretty good thing to check for if you want to skip the event for players who aren't currently having a baby

#

although how on earth are they getting an nre from a null check

deep cypress
#

That I do not know! They did not provide a full log, regretably.

brave fable
#

did they at least share the full error message?

deep cypress
#

Yes,

calm nebula
#

(can you share the full code)

brave fable
#

may i see it 🧍‍♂️

calm nebula
#

(And the full error message)

#

just fyi, error messages are not accurate in release mode (nothing special of split screen, I mistyped)

#

also, like

#

if (string.IsNullOrEmpty(___babyName))

deep cypress
#

Sorry, here's the error message , took a second to find

12:21:39 ERROR screen_0 game] An error occurred in the base update loop: NullReferenceException: Object reference not set to an instance of an object.
   at PolyamorySweetLove.ModEntry.BirthingEvent_tickUpdate_Prefix(GameTime time, BirthingEvent __instance, Boolean& __result, Int32& ___timer, String ___soundName, Boolean& ___playedSound, String ___message, Boolean& ___naming, Boolean ___getBabyName, Boolean ___isMale, String ___babyName) in C:\Users\Apryll\source\repos\PolyamorySweet\Pregnancy.cs:line 276
   at StardewValley.Events.BirthingEvent.tickUpdate_PatchedBy<ApryllForever.PolyamorySweetLove>(BirthingEvent this, GameTime time)
   at StardewValley.Game1._update(GameTime gameTime)
   at StardewValley.Game1.Update(GameTime gameTime)
   at StardewModdingAPI.Framework.SCore.OnPlayerInstanceUpdating(SGame instance, GameTime gameTime, Action runUpdate)```
calm nebula
#

(and the code)

deep cypress
calm nebula
#

(I meant a link to your github, sorry)

#

hard to tell what "line 76" could possibly refer to otherwise

deep cypress
#

Lemme see if I have pushed lately, hold on...

calm nebula
#

that seems suspect at best

#

not convinced f can't be null

deep cypress
#

Right there what I am doing is figuring out if a spouse is a farmer spouse

dusk mulch
#

there are 4 GOD DAMN PIXELS I FORGOT TO PLACE ON THE MAP

deep cypress
#

That always sucks! It's like that unmixed bit of flour in a brownies where it's just waaaahhhhhh and the rest is good!

lusty elm
#

.choose system, worldmap, Forest design, code, relax.

patent lanceBOT
#

Choose result: Forest design

dusk mulch
lucid iron
#

call of the woods

lusty elm
#

one has a plant.

dusk mulch
#

i meant which one is missing the 4 pixels

inner harbor
#

Its not possible to create a map that soneone can put beds in without C# is it?

lusty elm
#

the one on the right has less pixels i believe.

deep cypress
#

Ur tent on the left got bit by a hungry mermaid...

inner harbor
dusk mulch
#

Yeah, its a tile property. Bed T

deep cypress
#

We are feral no matter wat!

dusk mulch
lusty elm
#

shrug

inner harbor
#

Gonna try it later

#

Its not on the wiki that i can see

lusty elm
#

its on the wiki, but all it does is mark a tile to be considered in a bed for passout and stamina regen logic

deep cypress
#

It was from the 1.6.9 annoucements

#

The bed any map thing

lusty elm
#

found it, in the migration guide thanks to apryll's comment rooHappy

faint ingot
#

Can I run multiple $action commands in a single line of dialogue?

lusty elm
brave fable
#

you may need to / separate them if it doesn't seem to work, I don't recall atm

brittle pasture
lusty elm
#

spacecore dungeons do not do what i want unfortunately SDVkrobussad

spice inlet
#

what do you want to do? SDVpufferthink

lusty elm
#

I was wondering if it would let me make more of a lost woods scenario, but it seems to be primarily focused towards mineshafts, ladders, and elevators for transit between stages, versus walking off the map.

#

otherwise i think it kinda does everything i want.

#

Either way my idea can work without it, i just wanted to see if it was usable for the concept i had

inner harbor
#

Let me try AllowBeds

lusty elm
#

the property does also mention something about furniture restrictions as a reminder, likely also needs to be edited.

inner harbor
#

it works 🙂

rotund elm
#

Heyo, is there a simple mod, that would be a good example of adding universal gift tastes? I just need something to glance at to make sure I am formatting this correctly?

#

Tried looking at SVE's but I think it is too complex unless that is just how it should nomally look XD

hard fern
#

😓 sve is probably not the best example specifically because of how complicated it is

rotund elm
#

Yea I looked and was like I have never seen any of this XD

hard fern
#

off the top of my head (yes very specific) the one mod i can think of that has a universal love is the sushi project

rotund elm
#

perfect I can work with that thank you SDVpufferheart

dusk mulch
late bramble
#

Hi guys, I'm currently working on a map and I'm trying to make the campfire and fireplace work, like in the vanilla where you can turn it on and off. I've checked the tile properties on the vanilla maps and there doesn't seem to be one on those that I'm missing. Any ideas where to look for to make it function?

unique sigil
late bramble
#

I'll look into that one, thank you!

pulsar flower
#

what's the hardest thing in creating custom npc mods? coding or the art?

dusk mulch
versed wyvern
#

In terms of just stuff we can do in CP, probably the writing

#

Coming up with scenes to make a character interesting is super time-consuming on their own and then implementing those scenes involves writing schedules and events with all the commands involved

shadow pagoda
#

I'm trying to make a postfix for the Utility.TryOpenShopMenu function, but I'm getting this error, and I'm unsure how to differentiate between the overloads. I want to call the one with more parameters, and I thought putting all the parameters in there would differentiate between them. Is there something I'm missing?

Mod Entry Code

harmony.Patch(
   original: AccessTools.Method(typeof(Utility), nameof(Utility.TryOpenShopMenu)),
   postfix: new HarmonyMethod(typeof(HarmonyPatches), nameof(HarmonyPatches.TryOpenShopMenu_Postfix))
);

Harmony code

internal static void TryOpenShopMenu_Postfix(ref bool __result, string shopId, GameLocation location, Rectangle? ownerArea = null, int? maxOwnerY = null, bool forceOpen = false, bool playOpenSound = true, Action<string> showClosedMessage = null)
{
    //todo verify that the method is being called properly
    Log("TryOpenShopMenu_Postfix called");
}
cunning kiln
dusk mulch
brave fable
# shadow pagoda I'm trying to make a postfix for the `Utility.TryOpenShopMenu` function, but I'm...

your HarmonyMethod signatures can have a wild number of different optional parameters, so the signature of your method isn't used to match the target method.
instead, you'd use the AccessTools.Method(type, name, parameters) overload with some list of types matching exactly the method signature you want, e.g.
AccessTools.Method(typeof(Game1), nameof(Game1.newDayAfterFade), [typeof(bool), typeof(int), typeof(Farmer)]);

#

(or new Type[] { typeof(bool), typeof(int), typeof(Farmer) } for older language versions)

#

or maybe it's a parameter on harmony.Patch()? I forget atm

shadow pagoda
#

Is there documentation on these different types of parameters? Unfortunately, I won't be able to test again for the next 8 hours

proud wyvern
#

you basically look at the code you're trying to patch, and create a Type[] containing the parameter types of the specific overload you're patching

#

also you can remove the = null parts from your patch's parameters

#

they're never gonna be used

shadow pagoda
#

Why's that? I understand they're optional, but are you saying the TryOpenShopMenu method never uses those parameters?

proud wyvern
#

no, your patch never does

shadow pagoda
#

I see. Yeah that makes sense

proud wyvern
#

it can never receive the optional parameter values, because it will always receive the actual values from the real method

#

you can also just remove any parameters you're not using in your patch - Harmony will match the rest just fine by name

shadow pagoda
#

Idk if what I'm planning to use this postfix for will even work. I'm trying to check what the parameter values are if the results are true. I'm then planning on using parameters and extracting the code from the TryOpenShopMenu to make my own method that will tell me if a specific shop is open given just the seed id.

I was hoping to test that I could at least see the values of the parameters when the method was called, but I got caught up with something and wasn't able to test it in time.

gentle rose
#

@dusk mulch since you’re posting a lot of showcase stuff for other people, it might be good to ask them to give you a one-line description of their mod? otherwise it’s hard to know what their mods do

dusk mulch
brave fable
#

obviously simplified explanation here, in no small part because I couldn't begin to understand the specific inner workings of harmony

calm nebula
#

good morning!

vernal crest
versed wyvern
#

Making NPCs definitely requires you to stick your fingers in many pies to make them fully fleshed out

calm nebula
#

making an npc is a lot of work but none if it is technically hard