#making-mods-general

1 messages · Page 427 of 1

lucid iron
#

so one problem with ur current tileset is that the doors don't align to grid

junior tiger
lucid iron
#

you should make it align so that you don't have to do weird thing with warp

#

to move it just add more invisible pixels around it

#

turn on grid in ur pixel art software

lucid iron
#

now for finding the tile coords i recommend debug mode

#

that lets you see the coords in game SDVpufferthumbsup

#

especially helpful if u r dealing with a map patch

junior tiger
#

Fixed the tiles

junior tiger
iron ridge
#

the mod debug mode

gray bear
#

nice house

iron ridge
junior tiger
#

I also find it confusing to find the tiles first, and then resize? Because for now my house still fees a little too big and I'd love for it to be a little smaller

junior tiger
# gray bear nice house

Thank you so much 🥺 I have never tried pixelart before, so the perspective is a little messed up

gray bear
#

finish resizing and then handle the rest

junior tiger
gray bear
#

resizing will in fact change tile location

junior tiger
junior tiger
#

So uhh, the guide didn't really show me how to make my house a little smaller, just how to crop and export it. Am I even supposed to be able to make it smaller or am I supposed to work in the right size right away?

lucid iron
#

so if you ever want to make it smaller but already drew the map, you need to kill the previous tileset and reimport it to tiled

#

it's not that bad since it's one entire house but you will see XXX tiles and have to fix it

junior tiger
#

How would I make it smaller through a reimport? Is there a setting that has the size?

lucid iron
#

not really you are just bringing in a new tilesheet

#

and if the png is smaller then it will be smaller

junior tiger
#

Oh, so reduce the size in my drawing software?

lucid iron
#

yea

#

i think u can do that later no worries, put house in game n check first so u know how it work

junior tiger
#

I can't really do that since reducing the resolution makes it super blurry 🙁 and reducing the canvas size doesn't really help with the overall size of the house :/ it's just a bit too big I feel like

junior tiger
lucid iron
#

well, that's cus forest is disaster zone for real estate lol

#

i would recommend making a new map you can reach via central station perhaps

junior tiger
#

Like, a whole new map? That is so much to read into though. I don't even know how the software works 😭 or the game... or modding

#

Still for the initial question, is it bad for the house to infringe upon some set trees? Otherwise I don't think there is space anywhere

urban patrol
#

you can delete trees from the paths layer, but if you load an already existing save then you need to use reset terrain features to remove them from overlapping

junior tiger
urban patrol
#

it’s a mod you install that will respawn trees and bushes and stuff

#

ugh sorry for embed i’m on mobile

junior tiger
urban patrol
#

yep!

junior tiger
#

I will keep that in mind, thank you so much for your insight

urban patrol
#

things on the paths layer are generated on save creation

junior tiger
#

Just one thing, I'm making this house for my NPC. In the guide it says {{ModId}}_ does that mean it's the mod ID i've given for my NPC or do I makde it ModId House name? I assume the mod id for my character, right?

#

Or is it supposed to be ModId_Forest since I'm replacing the forest map? It's a bit confusing

iron ridge
#

just put {{ModId}} and it'll get replaced with your mod id

junior tiger
ocean sailBOT
#

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

calm peak
#

?

urban patrol
#

your mod id is a unique string that we use to prevent compatibility issues (for example, if i added an NPC named Bob, my {{ModId}}_Bob would not be the same as your {{ModId}}_Bob that you created, because our ModIds are different)

iron ridge
#

[[Modding:Migrate_to_Stardew_Valley_1.5#Paint_buildings]]

calm peak
#

Thanks!

urban patrol
#

if you’re editing the forest map, then you want to target Maps/Forest using EditMap, defining a from and to area, and your FromFile should be the file path of your map patch you created in tiled

#

if you’re creating a new location, then you would edit Data/Locations and your location name should be prefixed with your mod id

#

maps and locations are different concepts

junior tiger
brittle pasture
#

need a } to close the one on line 70

#

if you hover over it on the site it shows you the matching closing bracket; right now it's showing the incorrect one

urban patrol
#

am i missing something? it shows for me

junior tiger
#

I fixed it

#

I think...

#

I did something

#

yup this one works

#

I swear you guys got eagle eyes or something

near island
#

God I love notepad+. It pains me to rememebr all the wasted time I spent trying to write things out in regular notepad

junior tiger
#

Just real quick, this is my content.json but the house still doesn't show up. Does anyone have an idea what the problem could be?

https://smapi.io/json/none/cd91a14c4b214c708fbbeb04c1c8f5fa

The house file is in the Maps folder, it's supposed to put my house into the Forest map. And the house file is called Custos-House-Exterior.tmx

urban patrol
#

you’re not editing the forest map

#

your target should be what you want to edit

next plaza
#

SpaceCore finally got a banner/thumbnail image! @blissful panther made it for me back in June

late gull
#

Thanks, let me know if you remember what that was, I've been searching for a while since I got home but haven't turned anything up

next plaza
#

scurries away to hide in my crime thread and programming off topic once again

junior tiger
urban patrol
#

can you revert it to that and then send json again

urban patrol
#

the json looks right to me. did you 1. do a patch reload/restart the game after saving your json, 2. exit the forest and reenter it

#

also are you sure that your filepath is correct

junior tiger
junior tiger
urban patrol
#

if you’re making a new save then it’s fine. it’s just if you’re in the forest and then make a change, you might have to leave the forest and come back after patch reloading

junior tiger
#

All good, I'll do a few more checks, it might have been the filepath actually. I keep missing the tiniest details

urban patrol
#

lmk if it still doesn’t work after checking the file path

gentle rose
urban patrol
#

also @junior tiger this is unrelated but i think for your seasonal portraits you’re going to want to use the appearances system instead https://stardewmodding.wiki.gg/wiki/Tutorial:_Adding_Seasonal_Outfits_via_Appearances

Stardew Modding Wiki

Last edited by AtlasVBot on 2025-09-13 18:56:09
If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference ...

junior tiger
junior tiger
ruby marsh
#

Hi, I just uploaded a beta of LittleNPCs for content pack authors. This version supports up to four children. Unfortunately I had to remove the CP tokens of version 1.0 to make it work so your content pack might not work out of the box. Please report any issues you find. Enjoy!
(Development and screenshot was done using an old version of ChildAgeUp that runs modified on my local system)

candid veldt
#

I could use some help figuring out what I'm doing wrong with the syntax here (at least I'm pretty sure that's where I'm going wrong). Instead of adding my object as an artifact to get it to show up in diggable spots, I'm trying to edit location data to add the item under the ArtifatSpots entry...but I'm pretty sure I'm not understanding how the syntax of Target Field works as I'm drilling down. Would someone be able to look at my log and the code to help me figure it out?

https://smapi.io/log/2c1632862a664074a7118f5ae93c4d1b
https://smapi.io/json/content-patcher/70d2ff2926204ea3a09ad3c0cd81468c

ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24354 on Microsoft Windows NT 10.0.19045.0, with 21 C# mods and 20 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

unique tusk
#

Quick question how do I activate an event in the smapi console? I wanna test if a custom event I made is working or not :0

candid veldt
#

try debug ebi EVENTID

#

where EVENTID is the ID of your event 🙂

unique tusk
#

In my content json I did an include for this sdhdkla

keen geode
#

I think

#

I am blind guys

candid veldt
unique tusk
#

I was following this tutorial https://stardewmodding.wiki.gg/wiki/Tutorial:_Events_For_Babies and the wiki, I didn't realize I needed to set up the wizard with coordinates before he could move :0
Lemme see if giving him coordinates first works 🤔

Stardew Modding Wiki

Last edited by AtlasVBot on 2025-09-13 18:57:22
This tutorial breaks down Sunberry Village's simplest and shortest event to help explain each command.

“20031402”: This is your event ID. Make sure it’s unique. You can prefix it with your update key (AKA the number on the link to your mod page). The way event IDs are formatted will be chan...

#

OH YAY THAT WORKED

#

Ima just,,, take a smol break n lay on the ground

candid veldt
#

What is the f included for?

#

in your code you have the music and viewport set, then the next thing should be coordinates. Then you can do commands. Events have to go in a specific order which the computer knows, if there's an error or things or out of order, the computer doesn't know it and tries to continue with the order it knows and nothing else beyond that will make sense to it.

hallow prism
#

conditions are included in the event "key" so if you want a friendship with wizard, bluejester, this isn't the proper place

#

i'm assuming, but explaining what you want to do can help a lot

toxic wind
#

Hallo, I've a quick question. Context: ContenPatcher and AnimalData. It's about the probability of items that an animal can produce. Example: Animal can produce eggGreen and eggBlue. With no further conditions it's a 50-50 chance, right? If I understand correctly, adding to both items a RANDOM 0.5 condition, would mean I've a 25% chance to not get an item at all, right? Since probability is multiplicative.

obtuse wigeon
#

Don't animals have a percentage chance to not produce an item? so it would be Base item chance x Amount of items x RANDOM 0.5 right?

#

Oh wait that's the Fish Pond I'm thinking of

brittle pasture
#

every entry’s condition field gets evaluated, and of all the entries that remain one gets randomly selected

toxic wind
#

Okay, thanks a bunch.

ivory plume
#

(I just transferred the decompiled repos into the StardewModders organization on GitHub. If you had access to them, you may need to accept the invite email from GitHub to regain access.)

hallow prism
#

i assume it's so it's easier to manage?

ivory plume
#

It has three main benefits:

  • We can use groups to organize permissions, instead of adding each person to each repo individually. In particular, that means everyone with access to one of the decompiled repos now gets both automatically.
  • We can set more specific permissions (e.g. we don't need to give everyone full write access to the decompiled repos anymore).
  • I'm not the only person with access to manage those repos anymore (e.g. in case I disappear one day).
hallow prism
#

i choose to read the third point as "pathos can be away for a week end more freely now"

#

thanks for the explanation 🙂

shut edge
#

hell yeah

keen geode
urban patrol
#

you need to close your changes list [ ] and the overall json file { }

keen geode
urban patrol
#

a basic file will look like

    "Changes": [
    {
        "Action": "blah",
        "Target": "blah",
        "Entries": {
            "Entry 1": "blah",
            "Entry 2": "blah",
        }
    },
    {
        "Action": "blah",
        "Target": "blah",
        "Entries": {
            "Entry 1": "blah",
            "Entry 2": "blah",
        }
    }
  ]
}```
keen geode
#

AHHH

#

thank you

urban patrol
#

including format if it's your content.json

keen geode
#

SDVpufferheart Yippie! Fixed it, Thank you so much!

urban patrol
#

np!

whole raptor
#

Huh... so I made the recipe i18nifier read only the last part of the string, completely forgot about that, makes sense why it doesn't work with most furniture... (weirdly decent idea for me when it comes to recipes tho)

whole raptor
lucid mulch
# ivory plume It has three main benefits: - We can use groups to organize permissions, instead...

I'm still tempted to automate it, and can mostly repurpose old scripts I had from Dota modding which would poll steam, download game updates, run scripts and then commit the changes

and while its there could also do reference assemblies, though will need to uplift the base functionality to handle multiple repos (and wont be able to do android due to being built around steam as a data source)
https://github.com/ModDota/DotaTracking
The script can run in two modes, One mode where it runs self sufficiently and will keep running forever and poll steam, and second mode where it runs once checks for updates a few iterations and then turns off (This mode was added when SteamDB would send a webhook over to my cloud infra which would wake it up as it had to run on a windows machine with GPUs capable of running dota which was not cheap so keeping the expensive compute off as much as possible was important)

#

reference assemblies will potentially be easier as a github action or something else, as it wants to run when either smapi or stardew updates

ivory plume
#

For reference assemblies, one option could be to include them in the vanilla game build. Then we'd just need to copy them into a NuGet package.

#

(Automating it would be very nice though, especially if we could do it for Android too.)

lucid mulch
#

vanilla only reference assemblies would mean still needing to solve smapi, as a mod project references smapi via game folder and not nuget.
though it could be possible for the github action to setup reference assemblies to download the smapi github release and manually extract it

next plaza
#

I mean there are those of us who have already gotten mods building automatically using the existing reference assembly repo. Automating it would be amazing, though

next plaza
# ivory plume (Automating it would be very nice though, especially if we could do it for Andro...

I had some ideas on this in the shower before I saw y'all talking about this - like, once the reference assemblies exist, we could also autogenerate a "common reference assembly" which only has stuff that both game versions have.

And we could also have some sort of "shim" for the other stuff to some extent, so that android mods can use PC-only things and vice versa (where applicable) - or at least not fail to load and maybe get some sort of placeholder data in some cases. (There are tricks you can do for this in .net normally - or at least could in .net framework days - but SMAPI's validations prevent that from working.)

lucid mulch
#

taking a look, it looks like none of my main mods would actually work with the reference assemblies repo as currently structured.
my mod collection that was released on 1.6 launch day can, but Profiler, SpeedySolutions, AutomateChest, and Debugger all can't

next plaza
#

Hmm. What's the issue preventing them?

#

(Following message is unrelated to this conversation, it's just for a unrelated thread)

#

Still nothing to see here. Once again, move along

lucid mulch
#

Profiler has a newtonsoft json reference via game folder, SpeedySolutions has TMXTile reference, and AutomateChest and Debugger have hard references to other mods

obtuse wigeon
#

Speaking of GitHub and decomp, could I request viewing access for the decomp repo of the game please @ivory plume? I pass the requirements needed (mod maker role and above level 50), my GitHub user is AtlasV1224 and there no rush at all if I am able to given view access, thank you!

brave fable
#

surely the spacecore banner wouldn't update without some kind of incredible update coming. surely

obtuse wigeon
#

And the discussion of docs auto generation 👀

ivory plume
obtuse wigeon
#

Thank you!

oblique meadow
#

Silly question. What is the perk of the decomp repo vs viewing decomp on my own? I feel like I’m missing a step in between

lucid mulch
#

For me, the main benefit is comparing to different versions and seeing when things change, but also it can be a convenient browser-only way to view the decompile particularly on mobile

obtuse wigeon
#

when using ILSpy it can create some innaccuracies, for me personally, I like to browse the code on my phone when ever I'm free, without storing a decomp on my github or on my phone

oblique meadow
#

Ahhhhh. Ok. That makes sense

obtuse wigeon
#

similar mind there SinZ

ivory plume
#

(The repo also includes the unpacked assets, including effect files which aren't unpacked by the regular tools.)

oblique meadow
#

Well damn…. Now there’s a reason I may need it

obtuse wigeon
#

You qualify for it thats for sure

lucid mulch
#

it was very useful during the 1.6 alpha as well for those reasons

calm nebula
#

:ducks in:

oblique meadow
#

Level 50 right?

calm nebula
#

Soooo

#

All y'all have prime right?

#

The tl;dr is that Amazon gave me a free month of Prime

#

Which I'm going to milk for all it's good for before canceling

next plaza
calm nebula
#

Apparently there are free games invovled

#

I don't play games. Does anyone want them

next plaza
obtuse wigeon
uncut viper
#

its not source code

obtuse wigeon
#

Oh I was under the impressions it had those inaccuracies fixed, never mind then, my point is basically null

brave fable
uncut viper
#

afaik it is tweaked enough to be able to recompile fine i think? but its not the original original source

next plaza
#

The repo is also fixed compared to a normal decomp to be able to be recompiled for debugging purposes. (Though that’s not enough when transpulers are involved.)

ebon canyon
#

bosss

oblique meadow
tender bloom
#

i just download the decomp repo and view locally though

brave fable
#

is there a writeup on the spacecore split at all somewhere, planned changes, expected breakages, etc? pretty much all of my c# mods have a hard dependency on spacecore

drowsy pewter
#

spacecore split ! SDVpufferkiss

#

only 'core' now

next plaza
# brave fable is there a writeup on the spacecore split at all somewhere, planned changes, exp...

Not outside of my head and a github issue that says “consider splitting SpaceCore into two?” With almost no description. 😛

The general idea is that anything “heavy” (uses new netfields and so framework is needed by everyone in MP, uses external libraries like some of my future ideas might, etc.) would be split, while anything else stays in the current mod.

I plan on splitting it pre-1.7 with shared projects, and then for 1.7 I’ll move the contents into the new mod while deleting the shared project itself (as well as namespace changes and any other changes that might be breaking like cleanup stuff).

I’m also thinking my repo’s debug build will use it already split, and then the release build only references SpaceCore. (One of the changes I made during reorganization earlier makes this much easier, since SpaceCore references all use a single .targets file now)

#

Anyways the main motivation is that mods that only use stuff like animated textures and UI library (for example) won’t be required by everyone client, so you could play with vanilla players using those mods like you used to be able to

next plaza
drowsy pewter
#

is it going to be kittycore

next plaza
#

Another reason I’m waiting for 1.7 is so I don’t blow every mod under the sun up with compat issues

#

No, but you’re on the right track.

hard fern
#

Catcore...

next plaza
#

Technically closer but “in the spirit of the new name”, no

ornate locust
#

Kittencore

#

sounds like a fashion style

next plaza
#

Same problem except without the technically closer part

#

No core involved

#

Madness, I know

lucid mulch
#

What I'm hearing is we need to add back the concept of CoreMods that can register rewriters / cecil logic that runs prior to loading other mods to have an excuse to keep the Core suffix alive

uncut viper
#

you had me at "we need [...] cecil"

lucid mulch
#

I think with how the SMAPI bootup seqeuence works, if it did its own coremod loader really early it might be able to touch vanilla as well

uncut viper
#

sounds spicy

gaunt orbit
#

It would be nice to be able to modify class definitions

lucid mulch
#

good luck doing harmony patches on whats now a very moving target because someone might have done a cecil patch on it first

next plaza
lucid iron
#

KirbyAirRideCore

next plaza
#

The main reason I wanted it was to make buildings able to exist on every location by making them all inherit from BuildableGameLocation or something, but that's basically vanilla now

uncut viper
#

i thought that PR was closed bc of 1.5 coming and major SMAPI rewrites with it

next plaza
next plaza
lucid mulch
#

but I'll close this specific PR (without precluding Cecil-type mods in the future)

next plaza
#

It was more of a begrudging thing because there were things I found I wanted to do that we literally couldn't do otherwise without breaking literally everything (or at least that's the impression I got)

next plaza
next plaza
lucid mulch
#

I mostly joke regarding cecil patches as it doesn't take much imagination to blow up the modding scene very quickly with incompatible mods

next plaza
#

Haha, yeah

#

"Here's my mod that adds a single underscore to every field, method and type name in the entire game! Including SMAPI and loaded mods!"

#

(Or even worse, ||a non-deterministic amount of underscores||) (spoilered to avoid giving nightmares to pathos specifically)

lucid iron
#

Bring back this PR so that we can finally have wallpaper everywhere

next plaza
#

😂

#

That is a very similar use case to the one I had...

lucid iron
#

cwt is somewhat better than dict right

uncut viper
#

i can already break a lot of mods by prefix skipping every property getter and method in the games assembly

next plaza
next plaza
#

All of them. Including Pong

#

(I'm not sure Pong even uses the game at all - just SMAPI/MonoGame, these days, I assume?)

uncut viper
#

i will prefix skip SMAPI from my ModEntry constructor to not run any mod's Entry()

lucid iron
#

My empirical experience is that things became better slightly when i changed a dict into a cwt but it is not like i was doing proper A B testing

uncut viper
#

i would say it counts

next plaza
#

Well you can say it

#

But it doesn't make it right

uncut viper
#

i did!

next plaza
#

It needs to have the red text in the smapi console saying it wasn't compatible

#

Never even touching my computer's precious ram

uncut viper
#

i mean, i could log as SMAPI...

next plaza
#

Also technically you could probably harmony patch stuff in the DLL static initializer

#

So if the DLL is loaded, I can still run code

uncut viper
#

the what?

next plaza
#

Wait does that say it's a proposal

#

I'm not sure now

#

But I know it's possible

#

If not directly, then using native code crimes

uncut viper
#

it seems like a proposal

lucid mulch
lucid mulch
#

but in terms of timeline theres no real benefit to any of them as your DLL is only properly loaded at the time its going to instantiate the thing extending Mod class anyway, there isn't really any logic you skip running slightly early

next plaza
#

Does it not run until something from said assembly is actually referenced?

lucid mulch
#

I think it has something to do with the fact that smapi uses activator utility or whatever its called

next plaza
#

(That's how this whole discussion started, in case you forgot 😛 )

#

*this whole part of the discussion

lucid mulch
#

I technically have 3 mods that do harmony patches in their constructor already to harmony patch the SMAPI mod registry mod loading functionality

next plaza
#

Y'all are distracting me from documentation autogen

#

smh

#

I never should've come back in here. Should've stayed in my secret crime threads

uncut viper
#

casey would it satisfy your requirements if i just deleted every other mod DLL in the mod folder when my constructor ran

lucid mulch
#

that would only work for mods that don't get rewritten by smapi

#

if smapi rewrites it its now using an in memory version of the dll

next plaza
#

And what SinZ said

#

I could use cecil crimes to make my mod always need some rewriting (for platform differences or something)

gaunt orbit
uncut viper
#

my mod will be named 000.dll and be in a folder called 0000. linux/mac not supported

next plaza
lucid mulch
#

you reflection into SMAPI config and add your mod ids into the smapi config for mods to load first and then process exit and next time you now win

uncut viper
#

can you name a file or folder just an underscore

next plaza
#

Yes

uncut viper
#

then ill just name my mod that instead!

next plaza
#

But even a prefix would go before digits

gaunt orbit
next plaza
#

Hmm

uncut viper
#

(i couldnt remember if A or 0 went first)

next plaza
#

The humble $:

#

($ might sort last, I'm not sure)

next plaza
lucid mulch
#

and dont need to do esotoric mod names or ensuring users didn't nest your mod in decorative folders

uncut viper
#

that would work every time but potentially the first time, though

#

and i feel like thatd be unacceptable to casey

lucid mulch
#

thats why you delibrately crash smapi the first time

uncut viper
#

casey wants her mod to never touch her computer's ram SDVpufferpensive

next plaza
uncut viper
#

we werent

#

my mod would be editing the config

gaunt orbit
#

Better yet crash it with an unrecoverable exception

lucid mulch
uncut viper
#

while we're at it, ill turn off SMAPI rewriting mods in the config too

next plaza
#

No second runs

uncut viper
#

well on a clean install there will be no mods present

#

therefore your mod shall never touch your ram

next plaza
#

ConsoleCommands? ErrorHandler? SaveBackup?

uncut viper
#

what the heck is ErrorHandler

next plaza
#

Did that get bundled into smapi again. I thought it got split out at some point

tiny zealot
#

it was bundled in 1.5-era smapi. rip errorhandler

lucid mulch
#

error handler died in 1.6 as vanilla ate it up

uncut viper
#

also none of those are your mods 😛

ivory plume
next plaza
#

Ah

latent mauve
#

Offhand, does anyone know if using things like @a in the i18n for an event string will properly parse to the player name?

next plaza
uncut viper
#

if it works when not in an i18n token then it works with an i18n token

latent mauve
#

thanks Button

next plaza
#

And suffering be deterministic

uncut viper
lucid mulch
next plaza
#

ie. not changing second+ run

next plaza
uncut viper
#

im not ignoring it im considering it solved for various definitions of the term "mod" and "preventing"

next plaza
#

Like what if I used a module initializer to spawn a thread or something that would tell the user there's a nefarious mod installed if my mod's Entry didn't end up being called

latent mauve
#

Given the fact that we may not get the event refactor for a while, I'm going back through and changing the vanilla events to use strings instead of direct dialogue myself for the Zelda NPC Overhaul mod, so that I can have translatable lines even when I am changing the character names. >_>

lucid mulch
#

once my mod loads first, I can just ensure no other mod DLL actually executes by emptying out the mod registry

tiny zealot
latent mauve
#

When the event refactor happens then I can just delete all the lines that don't use character names, but until then, this is a necessary evil for immersion. xD

next plaza
#

I feel like y'all keep ignoring parts of this so I'm giving up. tl;dr: we need cecil so button can thwart my every effort to run even the slightest amount of code

uncut viper
#

i cant help but notice that Pathos was clearly here lurking but yet suspiciously silent on the topic of Cecil mods again...

lucid mulch
#

pathos likes the mod compatibility number be a large number, and not need to deal with even more special cases when doing the monthly stat collection with how many mods need special care

#

also cecil patches could lead to more annoying to trace mod security issues.
harmony for the most part at least dobs in who made changes, but without a decently sized cecil wrapper who knows who made changes where to the vanilla dll

next plaza
#

Have you considered: generally, less security is preferred when committing crimes

brave fable
uncut viper
#

also doesnt harmony only log who made changes according to the ID the changer themselves gave

lucid mulch
#

you can somewhat lie about your id, but you cant lie about what method got patched

#

Cecil who knows what method you changed

tender agate
#

what's different between harmony and cecil?

tiny zealot
uncut viper
#

Cecil lets you change an assembly itself

#

and alter its fields and members and classes etc

tender agate
tiny zealot
#

oh okay, so it's Crimes 2

uncut viper
#

yeah basically

#

its just no use if the assembly has already been loaded ofc

lucid mulch
#

while conceptually harmony is rewriting, it makes new methods and then does black magic to convince the rest of the runtime to call it instead of the orignal.
Cecil is actually rewriting the source, and so has pretty much no constraints compared to harmony, other than that it can't have it loaded when doing those changes

#

and as a result it also gets to do those rewrites before the JIT has touched it, so inlining and other stuff stop being a threat

next plaza
#

Yeah, pretty much

#

SMAPI already uses Cecil for the mod rewriting

#

(And compat checking)

urban patrol
#

is it possible for me to change someone's config value from default to the other option when they have a specific mod installed?

uncut viper
#

no

urban patrol
#

or would i just put somewhere on the mod page "hey use this config option when you have xyz installed"

#

ok

ivory plume
#

You can have a config value like "Auto-detect", and if it's set then you use a dynamic token to choose the default value based on the installed mods.

uncut viper
#

you can set up a dynamic token to use the config OR a different option when the mod is installed though

urban patrol
#

ooh interesting okay

#

in general, is it a better practice to have compatibility be automatically applied, or to have it be a config option?

latent mauve
#

Best of both worlds would be to have compatibility auto applied if the user does nothing to change config options

#

Auto-detect being the default config option would let you do that behavior in a way that makes sense to the user.

#

As an example: I originally had Useable Community Center set to automatically create compatibility with CC Reimagined's layout changes, but when CC Reimagined allowed users to turn that layout off in favor of SVE's, I then had to add an extra option in my patch settings to respect a config option that chooses the layout they wanted to make compatible.

#

(that particular scenario can now be avoided with CMCT as a dependency, but it didn't exist at the time)

obtuse wigeon
#

I had an auto detect option and a manual selection in a dropdown on my mod

urban patrol
#

do you know an example of a mod that uses auto-detect that i could look at for an example?

#

oh atlas which mod?

obtuse wigeon
#

Paved Valley

#

I can get the actual code bit up if it's easier?

urban patrol
#

i don't mind giving you the download on nexus haha

obtuse wigeon
#

Then that's fine by me SDVkrobusgiggle

#

It's the content.json and the TextureLoading.json that has the relevant parts

urban patrol
#

thanks!

drowsy pewter
urban patrol
#

can someone double check my logic?

    "Action": "EditMap",
    "Target": "Maps/Town",
    "FromFile": "assets/maps/TongueAndTail.tmx",
    "When": {
        "TNT_Location": "AutoDetect, TownSquare",
        "HasMod |contains=FoodTruck.8BitAlien": false,
    }
},
{
    "Action": "EditMap",
    "Target": "Maps/Town",
    "FromFile": "assets/maps/TongueAndTail_Alternate.tmx",
    "When": {
        "TNT_Location": "AutoDetect, Cliffside",
        "HasMod": "FoodTruck.8BitAlien"
    }
},```
urban patrol
drowsy pewter
#

Theyre saying you have to make auto-detect into a dynamic token if i understand corrwctly, it doesnt actuallu do anything if you just type autodetect

drowsy pewter
urban patrol
#

ah okay

#

do you want me to zip it? or try to explain it in words

vernal crest
#

Are you only wanting people to be able to use the alternate location if the food truck is installed?

urban patrol
#

no, i want them to be able to use it if they have the mod installed OR if they choose

#

do i need a third patch or to edit my logic

drowsy pewter
#

Ah ok

#

Well you can also write OR conditions in CP

#

without routing it through a dynamic token

urban patrol
#

yeah like this, right?

#

that's what i thought i did but i'm probably incorrect lol

vernal crest
#

The way you have it written at the moment, it will only be true if both TNT_Location and HasMod are true

drowsy pewter
#

youd need a query for checking two different tokens, in this case HasMod and the location config

urban patrol
#

let me look up how to do queries

drowsy pewter
#

I cant help check code currently, just wanted to sugget the alternate option to making a dynamic token

urban patrol
#

no worries! i appreciate it

drowsy pewter
urban patrol
#

okay i think this logic is correct, but i'm not sure at all of the syntax when using queries to check a config option. do i need to set these as dynamic tokens, or are they added automatically? how do i check HasMod in a query?

{
    "Action": "EditMap",
    "Target": "Maps/Town",
    "FromFile": "assets/maps/TongueAndTail.tmx",
    "When": {
        "Query": "({{AutoDetect}} AND {{!HasMod |contains=FoodTruck.8BitAlien}}) OR {{TownSquare}}",
    }
},
{
    "Action": "EditMap",
    "Target": "Maps/Town",
    "FromFile": "assets/maps/TongueAndTail_Alternate.tmx",
    "When": {
        "Query": "({{AutoDetect}} AND {{HasMod |contains=FoodTruck.8BitAlien}}) OR {{Cliffside}}",
    }
},```
#

or do i set that as a dynamic token as well?

drowsy pewter
#

The syntax is not quite correct but first, whag are you hoping to do with AutoDetect?

#

I think you should upload your content.json to the website so people can see your config and dynamic token setup

urban patrol
#

alright one sec

drowsy pewter
#

So just to make it clear, AutoDetect is no sort of official token or anything

urban patrol
#

yeah, i wasn't sure if config options automatically became tokens

drowsy pewter
#

I'll have to let someone else help

vernal crest
#

They do

drowsy pewter
#

config option, not config token name

urban patrol
#

yay! that's what i thought but then i was unsure

vernal crest
#

Oh sorry

#

Yeah no it's the config setting itself, not the value

urban patrol
#

ohh i see

#

so {{TNT_Location}} is a token then and i use query to check its value

#

or not query sorry

#

contains

drowsy pewter
#

yup!

#

you got it

#

Like HasMod

vernal crest
#

Thank you for correcting me on that 6480

urban patrol
#

okay awesome

#

secondary question: can you use contains inside of query like i had up there?

vernal crest
#

By the way nic you should be able to use patch parse in game to check if you've written out a token expression correctly

urban patrol
#

ooh good to know

vernal crest
#

So to check just the HasMod part you'd do patch parse "{{HasMod |contains=FoodTruck.8BitAlien}}" and it should return whether that's a valid token string and what its value is.

drowsy pewter
#

the second thing wrong with the query is that it needs to be like this "Query: {{Enable Extended Crops Pack}} OR {{Enable Herbs Pack}}": true

where the whole query expression is in one clause and theres a second clause of true/false outside of the quotes

#

(in my case the config options are true/false values but you need to use contains for yours)

urban patrol
#

ohh i see because query resolves to true/false

drowsy pewter
#

yup

vernal crest
#

I think you'd have to experiment a bit to figure out how to write it for the entire query (for checking in patch parse). Maybe {{query: query goes in here }}

urban patrol
#

final question (hopefully): how do i check a negative? does the !go just before the {{ }} ?

#

since i can't do contains: false

drowsy pewter
#

I thought it would be !contains but i dont know for sure

vernal crest
#

(I am offering this info rather than help actually setting it up because I haven't tried setting something like this up before and tend to need to use trial and error to get stuff like this right.)

vernal crest
#

Query lets you use NOT so if the exclamation marks don't work anywhere, try doing NOT {{HasMod |contains=FoodTruck.8BitAlien}}

urban patrol
#

ok

#

good news, i don't have to use patch parse if it throws an error about query immediately upon game load SDVdemetriums

#

choosing the config option works! now to test it with the mod installed

#

it works! thank you both so much

#

now to repeat this like seven more times...

drowsy pewter
#

wow, great work!

#

you got it without anyone writing it out

urban patrol
#

haha thank you

vernal crest
#

Nice one!

drowsy pewter
#

queries can be pretty complex so i always have to have the docs open while doing them myself

brave fable
urban patrol
#

yeah, i found i had to write out (A AND !B) OR C to wrap my head around starting

brave fable
#

(figures that's where you'd have used lua before)

urban patrol
#

taking me right back to high school math

#

is it possible to use query with some sort of ANY condition? like if the user has mod A, B, or C installed? or would i have to write each of those in the query as HasMod |contains=A OR HasMod |contains=B etc

#

(A AND NOT (B OR C OR D)) OR E

vernal crest
#

You can just put them into the same HasMod check

#

Like HasMod |contains=FoodTruck.8BitAlien, ichortower.FoodTruckNorm (not the real ID, IDK what it is), Mod3

#

That's an OR check

urban patrol
#

awesome, thank you so much

#

that's exactly what i was looking for

junior tiger
#

Good morning, you lovely folks, I come to you with a humble request again (I've been asking so much for the past few days, I appreciate you all 😭 ). I have 2 requests.

One is if anyone would be willing to look over my JSON file. I get a warning from the SMAPI that the location for the interior doesn't lead to anything. The exterior works though.

https://smapi.io/json/none/04e0f132fad245688956d1ee037b3ec8

The file structure is as follows: [NPC]Mod Folder --> Content.json --> Assets Folder --> Maps --> all the tmx files

2nd question. If I have multiple NPCs live in the same house, would it be better to have a separate content for just the house? Or do I copy/paste the lines into all of their content.json?

vernal crest
vernal crest
junior tiger
vernal crest
junior tiger
#

Oh, wait. I edited the Cellar file, so it should be maps/cellar

vernal crest
# junior tiger Oh, hold on. I think I see

It's not a super easy thing to grasp if you're unfamiliar with programming, but the only time you're putting an actual file and file path in your json is inside a FromFile field. The Target, even though it looks like a file path, is not one. It's just a name that you assign to the data that you're putting in the game.

vernal crest
# junior tiger Good morning, you lovely folks, I come to you with a humble request again (I've ...

For your second question: you can only have one content.json per mod, so definitely don't try to put any json in another content.json file. As for whether to remove it from the content.json to put it in another json file (that is named anything but content.json or manifest.json) - that's up to you! Your entire mod can be inside the content.json if you want or you can put everything into other files and then use Include patches to call them. The only deciding factor is whether you like to organise things by separating them into different files or if you like to organise them by having them in one big file.

junior tiger
# vernal crest For your second question: you can only have one content.json per mod, so definit...

So I would put all of the three npcs into the same content.json?

Could i change the folder structure? (I know I would have to change some of the file paths. From [npc]name to [Mod]-3bois. And then have the content.json at the top folder and then separate everything else into Folder-BoyA, BoyB, BoyC? I just wanna know what's best practice. I don't intend on adding any more npcs so it would just be these three in the same house

vernal crest
# junior tiger So I would put all of the three npcs into the same content.json? Could i change...

Best practice with regards to this specific thing is to do whatever works best for you.

If you want to have your main mod folder change to [CP] 3Bois you totally can (please use the [CP] bit though, the mod convention is to include the framework the mod relies on inside the square brackets, even though -cough @brittle ledge cough- doesn't adhere to that convention (and nor, to be fair to Tia whom I am tagging because I am teasing them, do many other people)).

You're correct that the content.json stays at the top level along with the manifest.json and the i18n folder. After that though, you can set it up however you like. You can have each NPC's info separated out into their own sub-folder. You just have to make sure you remember to put an Include patch into your content.json for each .json file you have in each of those sub-folders.

If I am not being clear enough, please let me know and I will provide examples!

drowsy pewter
#

My personal suggestion is that if the 3 npcs have a lot of interactions like events and dialogues with each other, you should put them in one mod folder. If you intend for them to be able to be played separately, you can put them in different mod folders (and different mod pages)

#

Since they share a house i assume theyre meant to be together

vernal crest
#

Oh, I absolutely am not suggesting she puts them in separate mods and I don't think she was asking that?

junior tiger
#

I do have a slight problem with the interior still. It says the folder is ascending... which it isn't

drowsy pewter
#

It sounded like there were currently 3 separate content.jsons for three npc mods, but i did not get the chance to look at the ezisting file

junior tiger
vernal crest
drowsy pewter
#

got it

junior tiger
vernal crest
junior tiger
vernal crest
# junior tiger Possibly? 😭 maybe while I was fixing the tile layout yesterday night. It is in ...

No, just cut and paste between your mod folder and the maps folder. Alternatively, you can start using iro's plugin and then you can use tilesheets from anywhere without moving anything around. I'll tell you how to do that in a moment if you're interested, but first we will fix your tilesheet climbing issue (just in case the tilesheet climbing interferes with the plugin setup).

Open your map in a text editor (right click, open with Notepad++ or VSC or whatever you use) and Ctrl+F to find the first line that says "image source". Send me a screenshot of what that looks like and I'll give you the next step.

junior tiger
fathom rapids
#

(i can measure this because im trying to put everything in folders that start with _ and square brackets mods go before it which drives me nuts actually)

fathom rapids
#

(but like if at least it was all before instead of half before and half after)

junior tiger
#

So basically this .tmx is still referencing the unpacked maps instead of itself?

vernal crest
junior tiger
#

So do I really just put in the word "paths" or does it need the path to the Map from the content? And just edit it with notepad?

vernal crest
#

No, edit it with Notepad++. You already have it open.

#

And it needs to be exactly what I just said. Just the word paths. No forward slashes.

junior tiger
#

Got it

#

Changed it, how do we go from here? 🫡

vernal crest
#

Okay, that should have fixed it for now, so you'll want to check in game that it's working properly

#

Then we'll set you up with how to edit and make maps using iro's plugin for future

junior tiger
#

Okay so SMAPI did not throw any errors, yippie! But I cannot seem to teleport in. The cursor shows the door as interactible, but I can't do anything. Yes, I did move the time forwards to 9 and 10 am (just in case) as I had put it into the content

vernal crest
#

That should warp you into the basement without needing the warp in the forest

junior tiger
#

Okay I'll check

#

Oh, something is definitely broken with the map

#

I can't even screenshot it in time, because when I print screen in stardew it's 8 seconds behind, but it warps me in. I see some path sprites and then it warps me back out

#

There we are

gentle rose
#

print screen in stardew can be dodgy in my experience too, yeah

#

for me it always shows what it should have shown the last time I screenshotted

vernal crest
#

That looks like your layers might be off

gentle rose
#

but yes what aba said, looks like your paths layer isn’t on paths?

vernal crest
#

Although why that would warp you out I don't know

junior tiger
vernal crest
ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

gentle rose
#

can you share a screenshot of your map in tiled, too?

vernal crest
#

Wait, ignore iro

#

We need to get you set up with iro's plugin first

gentle rose
#

ignore me then!

junior tiger
vernal crest
#

(Otherwise it'll just be a screenshot of a massive number of error tiles iro)

junior tiger
gentle rose
junior tiger
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 4 C# mods and 1 content packs.

vernal crest
#

If she sets up the plugin using a vanilla map inside the unpacked folder, is that going to cause weirdness for her map in her mod folder?

gentle rose
#

it’s usually a good idea to ignore me if aba is helping tbh, aba is better at it than I am SDVpuffersquee

gentle rose
#

depends on if she has her own tilesheets in the mod folder

junior tiger
vernal crest
gentle rose
#

I would recommend not keeping on editing in the content folder once you have the plugin though, because there’s no need tbh

junior tiger
#

10:35:54 INFO Console Commands Sent debug command to the game, but there was no output.
I was referring to this one since it was the only thing out of the ordinary I saw

vernal crest
#

That's not an error, it just means that your debug command didn't have any text to show you in the console. Which it shouldn't do because its purpose is to warp you in-game, not print something to the console.

junior tiger
#

Ooh, I thought the "output" was maybe something it was checking for, which then sent me back. About the plugin tho, let's get this show started

vernal crest
#

Okay! Download this file

junior tiger
#

yes (I might have this one already. maybe but I'd still love to go over it again to see if I got it right). I'll report back in a few though

vernal crest
#

These are the instructions for using it

junior tiger
#

Yup I got it alr

#

But this does not seem right

#

Honestly I can just set up a new map, the old one was just the Cellar with some ingame sprites in it

vernal crest
#

Did you not use the plugin then after installing it?

#

You shouldn't have had the tilesheet climbing issue if you used the plugin SDVpufferthinkblob

#

Yeah if you have a tileset called "z-furniture-1" that indicates that you have something unusual happening so it might be a good idea to start again.

#

But before you do, can you take a screenshot of your layers in the map?

junior tiger
vernal crest
#

Your own tilesheet as in you're going to draw everything for your map from scratch?

junior tiger
#

These were the layers

vernal crest
#

The layers look okay

vernal crest
junior tiger
vernal crest
#

If you copy vanilla assets into your own tilesheet you're a) distributing game assets with no real reason to and b) ensuring that your map will stay blindingly vanilla coloured if people use a recolour mod.

obtuse wigeon
#

Dashes can be used in names? TIL

junior tiger
vernal crest
vernal crest
vernal crest
junior tiger
vernal crest
obtuse wigeon
vernal crest
#

(It is possible to edit the vanilla map and then export as to save your changes to a new map but I think it's too risky. Firstly, you could accidentally save over the vanilla map. Secondly, if you do "save as" rather than "export as", you'll cause tilesheet climbing issues right from the beginning.)

vernal crest
# junior tiger Got it, thank you!

And you probably want to check in with us that it is working properly before you go further than that, since your last map didn't work properly. Don't want you to have to redo again!

junior tiger
vernal crest
junior tiger
#

I set the file for the default unpacked maps and clicked fix maps

vernal crest
#

Okay nice that looks okay

#

Now try that in game

#

The warps will be wrong but that doesn't matter, we just want to see if you can debug warp in and have the map act normal

junior tiger
#

The warps could work since I didn't change the placement of the stairs

vernal crest
#

The warp out wouldn't though

junior tiger
#

Okay, so the textures work (my character is at the top of the stairs). But it does kick me out immediately

vernal crest
#

Immediately even if you don't try to move? Or did you try moving?

junior tiger
#

If I don't move it stays

vernal crest
#

Yeah that's just because you're running into the warp out

junior tiger
#

But I moved downwards 🥺

vernal crest
#

Yes, and onto the warp out

junior tiger
#

But I haven't implemented the warp out yet. Or is it in by default?

vernal crest
#

Change your default arrival tile to be at the bottom of the stairs

vernal crest
#

It's already in there because you copied a vanilla map so it has the vanilla warp

junior tiger
#

Figures! That's so smart...

#

It does work 😊

#

Sadly, clicking on the main door to warp doesn't work still :/

vernal crest
#

Does it turn into the hand cursor when you hover over the door?

vernal crest
#

But when you click, nothing happens?

junior tiger
vernal crest
#

OKay, can you share your log again please?

junior tiger
ocean sailBOT
#

Log Info: SMAPI 4.3.2 with SDV 1.6.15 build 24356 on Microsoft Windows NT 10.0.19045.0, with 4 C# mods and 1 content packs.

vernal crest
#

To check, you

  • loaded your save,
  • went out to the farm
  • debug warped to your basement map
  • went up the stairs on the map and warped to the farmhouse
  • went out to the farm
  • went into the forest
  • tried to use the door to your basement map, which did nothing

That's right?

junior tiger
#

yis yis

vernal crest
#

Hm

#

I don't know if this could affect it, but you have a space in the LockedDoorWarp line after the 2200 and before the ". Try removing that space.

junior tiger
#

You're right, I removed it. Let me try again

#

Sadly that didn't make it work

vernal crest
#

Okay, patch export time

#

Can you copy patch export Maps/Forest into your smapi console and then go find the file it exports, open that up, and have a look at tile 80, 79 to see if your TileData is on it?

fathom rapids
#

"When": { "query: {{HasMod |contains=DaisyNiko.SVR3}} AND {{ReimaginedForest}}": false }
can someone quickly glance if im using query correctly here
(ReimaginedForest is a config setting with true and false as possible values)

vernal crest
#

I don't think that will work because you need to check if ReimaginedForest is false, not just whether it has a value

#

Eh, I'm not sure. Regardless, you don't need a query I don't think

fathom rapids
#

oh yeah i can just. List them both.

#

wait but

#

don't i?

#

i need the AND query to be false

vernal crest
#
"When": {
  "HasMod |contains=DaisyNiko.SVR3": false,
  "ReimaginedForest": false
}
fathom rapids
#

ok but i need this to fire if EITHER of them is false

#

not just if both are

vernal crest
#

Then putting an AND in would not work

uncut viper
#

well your query wasn't doing that

junior tiger
#

There appears to be a lot of tile data

uncut viper
#

Use Merge

vernal crest
#

But now that Button is here I will leave you in her hands because she always knows more than me

uncut viper
#

I'm on mobile!!

fathom rapids
#

i originally structured it as query: NOT X OR NOT Y

#

then i realized I can AND it and invert the result

uncut viper
#

"Merge: {{HasMod |contains blabla}}, {{Reimagined}}": "false"

vernal crest
fathom rapids
obtuse wigeon
#

Every tile should have tile data?

uncut viper
#

Your original query would have only worked if both values were false

obtuse wigeon
#

oh wait no it's only map edits that has more tile data, thats a vanilla map and so wouldn't

fathom rapids
uncut viper
#

You are correct
Either way merge is better

obtuse wigeon
#

It's an exclusve AND I believe <- wrong

#

Never mind, I was corrected immediatly

vernal crest
junior tiger
#

I don't know it doesn't say anything special

fathom rapids
#

merge will give me a true/false result, right?

uncut viper
#

If either of the has mod or the config/dynamic/whatever it is are false, then what I wrote will correctly detect that

vernal crest
obtuse wigeon
uncut viper
#

What merge does is just combine both lists of values into one list

vernal crest
#

Oooh it is fixed

fathom rapids
#

would I need to contains the merge

vernal crest
#

Unless it's only affecting maps with rotated tiles

junior tiger
#

Ah got it, well the warps appears present

uncut viper
#

For example if the has mod is true and the config is false, it'll become:
"true, false": "false"

#

When you write the false on the right side, what you are actually doing is checking if the set on the left side contains what you wrote on the right side

fathom rapids
vernal crest
fathom rapids
#

TY! right, that makes sense, i forgot content patcher worked like that ^^;

uncut viper
#

Merge my beloved

obtuse wigeon
uncut viper
#

If they're both true then there won't be a false in the left side set

#

And if they're both false then it'll just be a single value "false" on the left side

fathom rapids
#

"When": { "Merge: {{HasMod |contains=DaisyNiko.SVR3}}, {{ReimaginedForest}}": false }
right?

#

should I "" the false?

#

since we're doing it as text now

uncut viper
#

yeah
Dunno if content patcher requires the quotes around false if you're specifically checking string values and not a bool representation IDK

#

can't hurt to add em

fathom rapids
#

mhm

#

thank you very much!!!

uncut viper
#

Query is just an expensive token to compute so

#

That's why Merge instead

vernal crest
fathom rapids
#

also its definitely more reliable to not have to worry about type transitions -_-

uncut viper
#

Also true

#

Anyway I sleep now SDVpufferchicknight

vernal crest
#

Night little Button!

obtuse wigeon
#

Night button!

fathom rapids
#

yay
the backstory of this question is that i previously had two edit patches that were both doing the same thing but checking for different conditions
i looked at it and said 'theres no way i cant do better'

junior tiger
fathom rapids
#

gnight!!!

vernal crest
fathom rapids
#

...i should be using cross mod compatibility tokens instead of my own config here :o

junior tiger
fathom rapids
#

those werent a thing when i was making this mod!

obtuse wigeon
#

XMCT are fantastic!

#

or CMCT, I forget the abbreviation

vernal crest
#

CMCT

junior tiger
#

Okay, it works :X but only one issue I am facing north when entering, but it would obviously make more sense to be facing south. Where can I change that?

vernal crest
#

I don't think you can

#

It might make more sense to rotate your map so you enter from the south

#

Since your door is on the south of the building

fathom rapids
#

dont SDV coordinates have a third coordinate that sets the direction you're facing?

vernal crest
#

For events, yeah

fathom rapids
#

anyway i just realized reimagined 3 hasnt been updated for 1.6 so i dont need any of this

#

it was a good exercise though -_-

vernal crest
#

Not for LockedDoorWarp

fathom rapids
#

oh

#

yeah that would make sense

obtuse wigeon
#

Future proofing! when it's updated (If it will be) you won't need to do it

vernal crest
#

I think Daisy said she wasn't planning to update it but definitely do not quote me on that

fathom rapids
#

fine ill call it a CMCT tutorial for me

junior tiger
vernal crest
junior tiger
#

In tiled or in Json? 🥺

vernal crest
#

You get to the map properties by going up to the Map menu at the top of Tiled and then Map properties

obtuse wigeon
#

either, I'm pretty sure you can do it either

vernal crest
#

You can do it in either but since you already have the map property there in Tiled you have to do something with that either way (either edit it or delete it)

royal stump
#

I'm pretty sure each cellar still rewrites normal warps to go to the associated farmhouse/cabin?

vernal crest
#

It's not a cellar

#

It's just a map that was made using the cellar map as a base

royal stump
#

ah, nevermind then, I'm used to parsing basement->cellar

vernal crest
#

Haha fair and it did even use the cellar map

#

But it's named differently and has its own location data so it should be safe from hardcoding shenanigans

fathom rapids
#

someone who has worked with CMCT pls tell me if this will murder me without SVR3 installed

                "HasMod|contains=DaisyNiko.SVR3": true,
                "Spiderbuttons.CMCT/Config: DaisyNiko.SVR3, Forest": "on"
            }```
vernal crest
#

Yes it will

#

You have to put the CMCT check inside an Include, with the HasMod check for the Include patch

fathom rapids
#

...nested Include patches...

vernal crest
#

Chu does 'em all the time

fathom rapids
#

okay I have figured out CMCT and I am officially dropping support for Reimagined3 until it updates and someone asks again

#

fuck all of this

junior tiger
#

I'm really sorry, I am a bit confused to what format the warp needs to be in. So this right now will obviously bring me back to the farm house. But I need it to bring me to the tile 80, 80 on the forest map (the tile one down from the door)

fathom rapids
#

literally the only thing I would be doing right now is turning off my mod if it's on for the maps im editing soooo. nope.

vernal crest
vernal crest
# junior tiger so 4 4 Forest 80 80 ?

Not 4 4, because that's the exact tile that your LockedDoorWarp is warping you onto from the outside. If you do that, you'll get stuck being warped out immediately again. It needs to be 4 3, the tile above the one you warp in on. The other part is right though.

junior tiger
vernal crest
#

@obtuse wigeon Ah yup there we go. Still terrible :(

junior tiger
#

Guys, Gals and other Pals. We got 'em 🫡 Thank you so much for your help, I am sure that I'll be back soon

obtuse wigeon
lucid mulch
#

I can feel TMXTile taking 3-5 business days converting that into xTile

hard fern
gentle rose
velvet iris
#

Hi everyone I'm not really sure where to ask this, but I've been working on an expansive interpretation of my version of Zuzu City mod. And I was just wondering what players would want to see in a mod like that, like any silly little details, side quests, secrets and what not!

#

It's been kinda hard making up a bunch of stuff on my own for how big I'm making the mod

vernal crest
#

#modded-stardew might get you more useful answers since we don't play the game much lol

velvet iris
#

aurr okok thank you!

brave fable
#

it may sound like a non-answer, but i like to believe most players would like to see a creator's vision, not their own ideas of what a mod should be

wheat kelp
#

So, first time modder here. Well, sort of. I half updated a mod in 2022, but never finished it.

On a scale of 1 to 10, how intensive is a map recolor? SDVpuffergrimacing

vernal crest
# velvet iris aurr okok thank you!

Although in here you do tend to get suggestions if you begin by presenting info about something you're doing already but are struggling with implementation. That can get a lot of suggestions as we all descend to suggest how we'd do it lol

wheat kelp
#

If that's something that you're into doing

vernal crest
velvet iris
wheat kelp
#

I think that adding more quests and character background in Zuzu City would get you a lot of appreciative players

dusky sail
#

Actually 6 or 7 might be a little low. There's a lot of tiles

wheat kelp
vernal crest
#

The more you can automate or use tools for rather than replacing colours manually, the easier it will be I imagine.

dusky sail
#

Even if you stop partway through, youll still have learned things in the process, so i say go for it!

wheat kelp
brave fable
#

it's as intensive as you make it, if you're not too fussy and you're just after a recolour than a full redraw you could maybe get away with some liberal use of filters in photoshop/photopea or something similar

wheat kelp
#

There are some beautiful recolors out there, but I've played them all and I'm ready for something new 🤣🤣

brave fable
#

if you're redrawing the game with a whole new theme, that's going to take you a long time and a ton of effort

vernal crest
# velvet iris yayy tyty I''ll defintely be coming in here for stuff like that, I've just been ...

Something that I think can be learned from mods that haven't done as well as they should if you were just going by how much effort the mod author put in is: don't make a giant space full of cool art with very little for the player to do. Think about what you can do to encourage a player to actually come into the city. VMV is a great example for what to look at on the positive side of that.

wheat kelp
velvet iris
#

i just want the mod to be enjoyable to people playing :))

wheat kelp
#

It creates a really great sense of achievement when you figure it out

#

I think you're on the right path 🫶🏻

velvet iris
#

thank you 🥹

obtuse wigeon
#

How are people on linux making C# mods given visual studio isn't available?

#

And the VSCode C# Dev Kit isn't available either

vernal crest
#

RIder

obtuse wigeon
#

Ahh gotcha thank you

lucid iron
#

Vsc

lucid mulch
#

the VSCode C# dev kit should work fine on linux afaik

#

with all the awkward problems it has in general

lucid iron
#

It really doesn't matter as long as u can setup dotnet n build stuff it'll go brrr

#

The dotnet setup is annoying though

obtuse wigeon
#

I can't seem to find a way to download the dev kit, I shall have to look into it further to see if I can

calm nebula
#

The sdk?

#

Ask Microsoft

obtuse wigeon
#

the dotnet set up was quite a bit easier than the rest of it thank fully

calm nebula
#

Ah okay yeah just use rider

lucid mulch
#

C# Dev Kit helps you manage your code with a solution explorer and test your code with integrated unit test discovery and execution, elevating your C# development experience wherever you like to develop (Windows, macOS, Linux, and even in a Codespace).

the marketplace page explicitly mentions Linux

obtuse wigeon
#

I'm going to give rider a go for sure

daring ruin
lucid iron
#

Intellisense stuff works

obtuse wigeon
#

Thats so weird? Linux only has "Code" which is the open source version which doesn't have access to the regular marketplace

lucid iron
#

Yeah you need the Microsoft flavor vsc to use the Microsoft flavor java

daring ruin
#

I try to avoid Microsoft 🙁

lucid iron
#

But anyways u can just go use rider

obtuse wigeon
#

Rider it is

#

although I do have to install a VM for photoshop so ill also install VS along side just as a backup

daring ruin
gentle rose
#

looks good to me

lucid iron
gentle rose
#

(in terms of piracy. in terms of use case, I continue not to understand)

lucid iron
#

So i have no useful comments besides check for skip intro updates

iron ridge
#

no game piracy but it does reproduce mods

gentle rose
#

those three have open perms iirc

#

all the closed perms ones are correctly being redirected to nexus now

gentle rose
brittle ledge
vernal crest
#

except NPCs

lucid iron
#

I will put [🔋] and u can't stop me

daring ruin
#

Its not mine

vernal crest
#

Since when do you make json mods anyway chu

lucid iron
#

I have several of those

#

They are posted and everything

daring ruin
# lucid mulch

Before when I wanted to get feedback on my project. I got told off to fix the piracy first.

gentle rose
gentle rose
#

why I don't understand? I just don't tbh

lucid iron
#

Imo the [framework] convention isn't as useful rn as everything shifts to content patcher

gentle rose
#

like, what's the point of an always on mp server in stardew

daring ruin
gentle rose
#

but this way you get the worst of all words imo

daring ruin
lucid iron
#

So feel free to just slap ur name there n make stuff sort nice Sleepden

gentle rose
#

because you need the host to progress certain quests etc

#

and now time will pass when you guys aren't playing I'm pretty sure?

lucid iron
#

I think the always on server mod does fix some of this

gentle rose
#

ig [CP] is useful to distinguish from c# mods

#

(I'm still not going to do that though)

vernal crest
#

I just edit all my mod folders to fix everybody else's rude folder naming it's fine

lucid iron
#

But overall I don't develop mods for better usage in always on servers

#

Making things not blow up in mp is all I'm responsible for

gentle rose
#

I even do splitscreen support! I feel like that's plenty SDVpuffersquee

daring ruin
gentle rose
#

as in, I make my mods not break in splitscreen. splitscreen is already a stardew thing

lucid iron
#

If it's just u and 1 other tho

#

I recommend just playing coop the usual way

#

It's not that hard to schedule

#

The person who plays more can host Dokkan

lucid mulch
#

there was some work in 1.6 for a first party dedicated server mode, but as far as I know is mostly dormant code, I don't think anything actually uses it

lucid iron
#

Yeah i did wonder about those classes

lucid mulch
#

iirc myu was using it for the mobile multiplayer testing, as having the mobile host was a bad idea

eternal glade
#

my smapi is saying this?

#

SMAPI failed to initialize: System.TypeLoadException: Failure has occurred while loading a type.
at System.IO.DirectoryInfo.Init(String originalPath, String fullPath, String fileName, Boolean isNormalized)
at StardewModdingAPI.Framework.SCore.PurgeNormalLogs() in E:\source_Stardew\SMAPI\src\SMAPI\Framework\SCore.cs:line 2511
at StardewModdingAPI.Framework.SCore..ctor(String modsPath, Boolean writeToConsole, Nullable`1 developerMode) in E:\source_Stardew\SMAPI\src\SMAPI\Framework\SCore.cs:line 192
at StardewModdingAPI.Program.Start(String[] args) in E:\source_Stardew\SMAPI\src\SMAPI\Program.cs:line 232
at StardewModdingAPI.Program.Main(String[] args) in E:\source_Stardew\SMAPI\src\SMAPI\Program.cs:line 45
Game has ended. Press any key to exit.

vernal crest
ocean sailBOT
#

Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.

Please share your SMAPI log file. To do so:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. After uploading, it will show a green box with a URL to share. Post that URL here.

Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.

vernal crest
#

And also explain what you did before this happened

lucid mulch
#

That error is very early in lifecycle and not 100% sure if a log is actually present yet as it blew up trying to delete the previous log

indigo yoke
#

are there any mods that use the dungeon features of spacecore? I might want to dabble and make one myself, but want to see examples of what's already done

iron ridge
#

moon misadventures might?

indigo yoke
iron ridge
#

ah

hallow prism
#

S&S may

tiny zealot
next plaza
next plaza
# iron ridge moon misadventures might?

The public moon misadventures never even updated for 1.6 (well, it was updated early in the modding alpha for it, so needs updating again).

Moon Misadventures Redux code isn’t public at the moment, and also isn’t far enough to have the dungeons yet

fathom rapids
next plaza
#

(And also I need to add some things to SpaceCore specifically for the dungeon that’ll function like the original MM one)

#

(More specifically, a way for a c# mod to generate the maps instead of having to use predesigned map files)

#

(Though the full proc gen thing was kinda bad in some ways, so maybe I should try something more along the lines of the volcano dungeon instead. If that ends up being the case I’ll make it base SpaceCore for other mods to do too)

#

Oh, by the way, is the person who maintains SpaceCore for Android on discord? I’d like to give them a heads up on the future split (not that that’s happening soon, but still)

indigo yoke
next plaza
#

Yeah I talked about it a little yesterday. It won't be released that way until 1.7, but I'm gonna split it locally using shared projects

#

(And probably use it as an actual split for debug builds locally, just to test it ahead of time)

#

(Though the namespace and other things won't change even in debug until 1.7)

#

The motivation is to let people who only have mods using features like animated textures or the UI stuff to be able to play with people without spacecore still (or even entirely unmodded players)

#

...and also if there's a split, I can add (small) external dependencies to the second mod with less guilt

#

But like anything adding new net fields will be in the second mod

#

Unsure about the skill API - technically it's not using new netfields because I wrote it before I started doing that, but it would be simplified a lot by switching to use them

#

(And also, I'm not sure if I ever got around to fixing it for splitscreen, and using netfields instead would do that basically automatically)

indigo yoke
#

But like anything adding new net fields will be in the second mod
Unsure about the skill API - technically it's not using new netfields because I wrote it before I started doing that, but it would be simplified a lot by switching to use them
(And also, I'm not sure if I ever got around to fixing it for splitscreen, and using netfields instead would do that basically automatically)

please splitscreen fix T_T

next plaza
#

I take it I did not get around to fixing it 😅

indigo yoke
#

I get so many bug reports I just close / delete cause it's split screen issues

#

and I am like "that is outside of my wheelhouse to fix, I apologize"

next plaza
#

I was just typing up a draft for what I want to do, and skill API was in the "unsure" section. But if that's the case, I'll definitely netfield-ify it and have part of the new mod

#

(I'll try to do the netfield-ify part sooner than 1.7 though)

#

(It shouldn't affect the public API for CP or C#, so should be safe to do now)

lucid iron
indigo yoke
#

also got a link to the test dungeon pack? cant find it

next plaza
#

It's not public, I can DM it to you. (It's my generic test-everything-SpaceCore testpack)

lucid iron
#

I'm not sure what the status of android smapi is atm, there's a 4.1.x stable and then a 4.2.x beta but pc is about to go to 4.4.0 blobcatgooglyblep

indigo yoke
#

please and tyvm

next plaza
indigo yoke
#

testing the testpack dungeon. seems like shafts are broken?

next plaza
#

Broken in what way?

#

Just not usable outright?

indigo yoke
#

just not usable

next plaza
indigo yoke
#

says "would you like to jump in" and I click yes, and it isn't letting me jump in

next plaza
#

Must've accidentally broke them I was fixing a bug I found with them always appearing back when working on S&S

#

So I won't forget

indigo yoke
next plaza
#

(I started cleaning up the issue list last night, but never finished. I'll hopefully finish that soon)

next plaza
indigo yoke
#

nope

next plaza
indigo yoke
#

also the elevator sprite isn't showing up...? dunno if that is intended or not

next plaza
#

If I remember correctly, it doesn’t show automatically. You need to place the tiles yourself

indigo yoke
#

okies

next plaza
#

Since people may have wanted a custom look

indigo yoke
#

hmmm

#

I wonder if there is a good way to make upward facing stairs/ladder instead of the downard one. So it would be possible to make a tower rather than something going down

next plaza
#

Yeah that’s doable

#

Well, unsure about the random ones from breaking rocks

#

But if you do manual tile placement, it could look like an upward ladder

#

Or literally anything

#

SpaceCore doesn’t care about the concept of up or down, just next floor and previous floor

#

So you could make the rock tile ladder a teleporter or something for all it cares

#

What S&S does is it pre places all the ladder equivalents in map tiles on the map, but the map is still randomly chosen

indigo yoke
#

mhmm

next plaza
#

Sometimes they are ladders, sometimes they are tunnel entrances

indigo yoke
#

time to make wizard battle tower dungeon

gaunt orbit
#

I wonder if flash accepts prs for c# sve stuff

#

Reason I'm thinking about it is that apparently sve has a warp pad thing that's normally in front of the warp statue, but a) players have to manually change the coordinates for custom farm maps that aren't flash's own, and b) other modders have no way of replacing/moving it themselves

#

Which makes it difficult to add compatibility for

next plaza
#

(Since I was added to the repo back when I was helping, I get emails for all that stuff)

gaunt orbit
#

Maybe I'll look into that then. I could also clean up some of the horrible legacy code

next plaza
#

Or the horrible casey code

gaunt orbit
#

god my wifi is so ass

gentle rose
next plaza
#

I mean it’s in the name. It’s horrible, that’s how it is

gaunt orbit
#

xD

next plaza
#

Gotta ask deeper questions, like who is the horrible Casey code (as a person)

gaunt orbit
#

luckily all of the horrible wren code is buried out back retired to a farm upstate

gentle rose
#

you aren't generating brand new horrible code?

#

there's new horrible iro code every time I touch a computer

gaunt orbit
#

I mean I'm definitely still doing crimes but my code itself is okay

pine elbow
#

hi yall

#

how are you

gaunt orbit
#

there's definitely room to improve (as ever) but I don't think I've looked at any of my post-1.6 code and thought "oh that needs to go"

gentle rose
#

I write Hell Code and then fix it up

gaunt orbit
#

(except my transpilers)

pine elbow
#

going to try and work on a building mod soon

gaunt orbit
#

oh nice! what are you planning to put in it?

next plaza
gentle rose
#

the other day I looked back at js I wrote like. a month ago.

I think I might have existed in a universe where logic worked differently when I wrote it

#

I'm honestly shocked it ran, and it wouldn't have in a sane language because I somehow did (if (thing) ) <= number

next plaza
gaunt orbit
# next plaza Clearly you aren’t trying hard enough

I mean okay. there is my monolithic IEnumerable god method in Better Beehouses for the flower locator logic but I think that's as simple as it's possible to make it and still maintain all the necessary features.

And there's still the happy home designer chatbox hack, but again no way to replace that without using some even worse harmony

Arguably there's my map layer transparency thing, but honestly I think that's mostly just used as intended

#

I dread to see what the compiler does to my flower locator method lol

pine elbow
#

machines

gaunt orbit
pine elbow
#

steel smelter

next plaza
#

…I just remembered an old mod idea while talking to a friend, and have new ideas for it

#

Please, I already have so much to do. Don’t do this to me

valid folio
#

Hello, how are you? I have several questions, although some are more for getting your opinions.

As some of you know, Cornucopia and WAG add plant-based milks. Since I have a dairy processor in my mod, I wanted to give it the functionality to create plant-based milks, but I was thinking of making them exactly like the ones from those mods, including the aesthetics. This way, if someone has my mod and those mods installed, they won’t get confused about whether my milk works for the recipes of the three mods or the products to be crafted. No matter which mod the plant-based milk comes from, it could be used, and keeping the same aesthetics would make them easy to identify quickly. Each milk would have its own ID, so they couldn’t be stacked. Of course, if you think this approach is correct, I will request authorization to use the sprites. If you don’t agree or don’t authorize me to use the sprites, I will think of a way for them to be identifiable just by looking at them, perhaps something distinctive in the name of my product.

The other thing I want to ask is how to create new categories. For example, I need to add Herbs, among other things, and I don’t know how to create them. I seem to remember that SpaceCore is used (correct me if I’m wrong). The mods I mentioned add Herb and Spice categories; I suppose copying the code would work, but I’d like to understand what I’m doing instead of just copying and pasting code.

fathom rapids
#

like your dairy processors make plant based milks IF Cornucopia/WAG is installed

calm nebula
#

But I'm not sure i see the issue

hallow prism
#

you can't create new categories without C# (and even with it, i don't think it's done? or a good idea?), spacecore let mods replace the category text, but don't create a new one

#

you would just make a veggie and have the category of it being herb as display (and have proper context tags if needed)

lucid iron
#

Categories from spacecore and such are just text yes they got a secret internal category that is a valid vanilla one

#

I think the reason why people don't tend to make use of new category is because that field is an int

#

And context tag does 90% of the job now

valid folio
# fathom rapids I think you should make this functionality depend on the other mods instead of d...

I understand the idea. The problem is that this would require having the other two mods installed, or at least one of them, which would leave my mod without that functionality. My intention is for the mods to coexist rather than limiting my own mod.

For example, the way of making ice cream is different in my mod than in WAG and Cornucopia, which in turn produces a different product from theirs. Also, some people might not want to have to install the other mods just to get plant-based milk. I don’t mind creating my own plant-based milk sprite, although I try to avoid dealing with the artistic side as much as possible because I have poor vision—not to mention that I don’t have the hands to make things look nice—but mainly it’s more because of my eyesight.

fathom rapids
valid folio
#

The truth is that I want to give more functions to the processor, and eventually I will need the milks anyway. Even so, if I create them for my mod, I will make them compatible with other mods. For example, my mod can use any type of milk in my dairy processor, so that no one has to worry about remembering whether a certain milk is compatible with my machines or not.

I wanted to avoid using C# as much as possible because I don’t know anything about it, and since I saw that WAG and Cornucopia added new categories (in fact, I don’t remember which of the two mods adds them), my mod mostly uses context tags to maximize compatibility. In fact, I have my mod installed together with the others.

hallow prism
#

i don't believe you would need the milk, it depends very much of the approach you choose, but you of course can want the milk which is entirely different!

valid folio
hallow prism
#

however, same sprite will be a problem imo, so better to have either compat (and optional content) or different sprite

indigo yoke
valid folio
valid folio
# indigo yoke Context tags, my beloved

I suppose they will be context tags, haha, but still I would like to learn how to make those “fake” categories so I don’t have to put a spice or an herb in the vegetables category or another one, because it would look a bit strange.

brittle ledge
#

Spacecore can do that kyuuchan_nod2

valid folio
brittle ledge
near island
# valid folio Any link that explains how? And/or an example mod?

I just learned this myself for my Joja TV dinners. This format worked for me. Just have to use your IDs, and pick out some RGB numbers for what color you want the text to be. I just googled and went to this site for that: https://www.w3schools.com/colors/colors_rgb.asp
Super simple!

    {
        "Action": "EditData",
        "Target": "spacechase0.SpaceCore/ObjectExtensionData",
        "Entries": {
            "Sable17.JojaBiteTVDinners_A_Cooked": {
                "CategoryTextOverride": "TV Dinner",
                "CategoryColorOverride": {
                    "R": 76,
                    "G": 80,
                    "B": 97,
                    "A": 255
                }
            },
            "Sable17.JojaBiteTVDinners_Q_Packaged": {
                "CategoryTextOverride": "Frozen Meal",
                "CategoryColorOverride": {
                    "R": 21,
                    "G": 152,
                    "B": 205,
                    "A": 255
                }
            }
        }
    }
valid folio
near island
#

I couldn't find the readme for SpaceCore on the github (gave me a 404), so I just ended up downloading one of the mods that require it for custom categories and looked at their code.

uncut viper
#

casey has recently been moving things around

#

all in the same repo though just in different folders

near island
valid folio
valid folio
uncut viper
#

(@next plaza you may wanna fix the readme link on spacecore's nexusmods page if you're movin stuff around)

near island
next plaza
valid folio
next plaza
#

You know my productivity has tanked the past day or two since I opened making mods general back up. Maybe I should remute

brittle ledge
valid folio
hallow prism
#

"CategoryTextOverride": "TV Dinner",
is the category display name

jade wing
#

Hi I am having issues making my custom npc appear in the custom location i think i have the correct code but they still won't appear, any help would be great! Thanks

valid folio
valid folio
urban patrol
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.

jade wing
#

{
"Id": "KatyDTK.CP.BakingLovers_Bakery",
"Location": "Custom_KatyDTK.CP.BakingLovers_Bakery",
"Tile": {
"X": 5,
"Y": 16
},
"Direction": "down"
}

urban patrol
#

can you please send the whole file using the link that governor sent

jade wing
#

okay

#

would u like the link or is copying the code okay?

urban patrol
#

i would like the link

#

it’s much easier to read using the site

jade wing
urban patrol
#

i’m not sure about this, but i think you may need to set the home ID to be Default instead of KatyDTK.CP.BakingLovers_Bakery

#

does your location work otherwise?

jade wing
#

the building spawns and changes from rundown to repaired

#

i also can enter and exit

jade wing
urban patrol
#

have you given your NPC gift tastes? they’re a requirement for NPCs to function

#

are you following tia’s NPC tutorial?

warped raven
urban patrol
#

what?

latent mauve
# jade wing i do have a gift taste file

Is it an EditData patch to NPCGiftTastes? We had this confusion last week with someone else who thought the NPC in NPCGiftTastes was a placeholder and it's not

warped raven
#

ignore that, I may be wrong