#making-mods-general

1 messages Ā· Page 331 of 1

iron ridge
#

and have the levels

lime seal
#

There are some steps that I can't find right now tho

#

like you have to add yourself to a wiki and whatnot

lime seal
rigid oriole
#

people here are so quick to put themself in a box and say they aren't good enough or cannot do something but the truth is you are plenty good enough (did you make something? that's great! this isn't a popularity contest!)

fading walrus
#

I got the mod author role with bagi mods, if you want to be orange just add yourself to the community wiki and you shall be cheeto

#

Here

rigid oriole
#

to answer the original question, i'm not sure there is a mail flag for crafting an item

#

the game doesn't use mail flag data to track it afaik

lucid iron
#

I thought u do GSQ for that

rigid oriole
#

you can GSQ if there's the recipe

dusty scarab
#

well, I don't think it needs to be mail specific, more that I am looking to use it to get a mail sent. sorry if I explained it poorly

rigid oriole
#

but i don't see one for "having actually crafted it"

lime seal
#

The game does track somewhere whether you crafted something tho right? Whether that can be read/targeted by CP is a separate question

fading walrus
#

It does, but I dunno where that info is

dusty scarab
#

I'm making a mod for soapmaking, and I want the first letter about 'tips' for how to get started to be sent after the player has crafted their first Soap Pot big craftable. I know that there's a flag for if a player has SHIPPED an item, so I assume there has to be one for if a player has CRAFTED an item, too. I just don't know where to find the information

rigid oriole
#

Farmer.craftingRecipes maps recipe to timees crafted

#

i don't think GSQ exposes it

brittle pasture
#

on the other hand sounds like an obvious add to BETAS

rigid oriole
#

i agree for the betas add if it's not already there

heavy ice
rigid oriole
#

you've got a rogue closing bracket line 16

fading walrus
#

Barley speeb

heavy ice
#

see if i delete that then i get a red bracket in vsc

rigid oriole
#

select all the text in your window. then hit ctrl + shift + i

#

to format the document so easier to fix

brittle pasture
#

line 55, pull that outside the array

rigid oriole
fading walrus
#

Same

#

I'm feeling feverish so I don't wanna study

heavy ice
brittle pasture
#

Condition is on the same level as RandomItemId, not inside it

heavy ice
#

ah, gotcha

proven spindle
dusty scarab
#

I was hoping to avoid having to do a quest to do this. it's a good idea for a work around, though. I wish I could find a list of flags, though. I know PLAYER_SHIPPED_BASIC_ITEM works for checking to make sure a player has shipped an item, so there's gotta be a flag for if a player has crafted an item

rigid oriole
#

Dude i code-dived for you in the decompile and I can't find one

#

Nor does there appear to be a gsq

#

Sometimes vanilla just doesn't need it

dusty scarab
rigid oriole
#

It is unfortunate tho

dusty scarab
#

I guess I just thought it would be a logical thing to track since shipping items is tracked

rigid oriole
#

Does BETAS really not have a gsq for it?

fading walrus
#

It could be a feature for BETAS tho if it isn't already

dusty scarab
#

BETAS?

rigid oriole
#

Search betas on nexus

uncut viper
rigid oriole
#

Summoned

uncut viper
#

(it isnt in alreeady)

#

it can technically be done with BETAS in a very inefficient and hacky workaround sort of way

#

but i can add it if desired once im done with custom museum framework (very close to done)

lucid iron
#

Does better crafting have anything

uncut viper
#

(the hacky workaround being, use MenuChanged to detect the menu closing and then checking if the item exists anywhere in the world now (wont check crafts before BETAS was installed, though) and using BETAS Harmony to do the same thing but postfix clickCraftingRecipe (wont check crafts before BETAS was installed either)

#

actually yknow what if you were gonna use BETAS if it did have a GSQ for it, i can just add it right now

dusty scarab
#

would it be a difficult add? I know the game tracks crafting recipes for Perfection, so it still boggles me that that's not a default flag

uncut viper
#

no its like 5min of work

rigid oriole
#

The game doesn't need the flag so it doesnt have one

dusty scarab
#

I know, but it boggles me still XD

lucid iron
dusty scarab
#

I mean, I suppose it's not even strictly necessary. I would assume that people downloading a mod would read what the mod is and how to get started on the basics before they use it

half tangle
#

SDVkrobusgiggle ...one would hope

lucid iron
#

Sekundes you can make a guidebook if you want

#

Spacecore

#

Another idea is to make a crafting station (better crafting)

#

That way it's clear that your mod's stuff is here

dusty scarab
lucid iron
#

That's a reasonable feature yee

#

You can settle for just "learned the recipe"

#

Instead of crafted

#

Otherwise wait

dusty scarab
#

the recipe is set to be a default-known recipe when starting the game, like how the recipe for a regular Chest is known at the start of game

#

I guess I could have it be learned on Farming 1 instead of start? or having Farming 1 be the trigger that sends the mail

daring skiff
#

Small chance the NPC sleeping next to them will "wake up" (doEmote(12)).

rigid oriole
#

this is so funny lol

#

what are you gonna title this mod

daring skiff
#

My mod titles are the most boring in the world so idk.

#

Certain NPCs Snore.

#

Some NPCs Snore.

fading walrus
#

"NPC honk shmimimimi"

daring skiff
#

Cinema.

dusty scarab
# lucid iron You can settle for just "learned the recipe"

yeah, I think what I need to do is change how I'm thinking about this, instead of trying to brute force what 'makes sense' to me. if I change the learning order, so that the Soap Pot recipe is learned at Farming 1, then I can also have the trigger flag for the mail set at Farming 1, and then that should fix my problem here, correct?

#

I KNEW I'M NOT CRAZY! IT DOES EXIST!

onyx gazelle
#

Now she appears finally! but she's not moving as intended for her schedule, being on this side of the beach while the brdge is not fixed has to do something with it?

latent mauve
dusty scarab
#

okay, sure, it's not the exact thing, but if I have my stupid soap pot learned at Farming level 1, I can use this to get the stupid mail sent out

onyx gazelle
#

oh wait, it's not winter

#

im stoopid

latent mauve
#

I'm just spitballing ideas here while I catch up on chat

uncut viper
#

no obligation to use it Sekundes (i was going to add it either way since it was easy) but the latest version of BETAS now has PLAYER_HAS_CRAFTED_ITEM and PLAYER_HAS_COOKED_ITEM GSQs

dusty scarab
onyx gazelle
latent mauve
onyx gazelle
#

yeah? its just 8 PM here

latent mauve
#

Schedule changes in the code require either a sleep or a new save to take effect

#

In game

onyx gazelle
#

OOOH XD

#

I mean, its a new save

old edge
#

forged new sword

latent mauve
#

If they still don't move then you might have a pathfinding issue because the bridge is still broken, yes.

onyx gazelle
#

Wait, I created a new savefile! She moves now!

#

But she's not going to the town

old edge
#

they dont move the first day

#

in a previous save

latent mauve
#

Nice! Just to clarify what I said before: any time you change the code or the maps mid-save, you have to either sleep one day in game or load a brand new save to update the schedule pathfinding

onyx gazelle
#

I didnt change her schedule, just started a new game

#

again, not having the bridge has something to do about it?

latent mauve
#

Pathfinding is determined during the night/sleep sequence before the game is saved.

old edge
#

maybe it's cause she doesnt have a sleep target

tender bloom
#

Do we have a command about schedule debugging? I’ve written out some common issues before but never saved it or anything

onyx gazelle
#

Just slept and shes going again to the same spot

#

This is her spawn place

#

The first part of her schedule needs to be the same by any chance?

tender bloom
#
  1. Invisible buildings tiles in the maps prevent walking
  2. You can’t make schedules start at 600 instead of 610
  3. Schedule points too close together means void walking
  4. Ambitious scheduling (re walking speed) means void walking
  5. If there’s multiple routes between 2 maps at the warps level it may take a longer route
latent mauve
#

Check your warps from that beach and make sure there's not a tile blocking it and that it doesn't make them walk over the warp back to the beach

tender bloom
#
  1. Coordinates are X = left right with right being positive, Y = up down with down being positive
onyx gazelle
onyx gazelle
latent mauve
#

Yep, 600 schedules are best avoided

#

As they said

tender bloom
#
  1. There must be at least 2 schedule points
#
  1. Night time after midnight means 2am = 2600
onyx gazelle
#

Im pretty sure she has three?

uncut viper
#

(i think 601–609 work too tho. not that im saying you should. just a fun fact)

onyx gazelle
#

Town - Forest - Saloon

tender bloom
#

These are just all the issues I’ve see before to see if any of them might be it, not that I suspect any particular one of these issues

onyx gazelle
#

Maybe its because theres no bridge on the beach, since its a new game, so it makes her walk over the water

latent mauve
#

I am suspicious of a tile blocking your warp to town, or your destination warp FROM the beach forcing the NPC to walk over the warp in Town TO the back

#

Could always add a NPC warp on the beach to test it

tender bloom
#

Ah yes if you can’t walk somewhere, they can’t walk somewhere

onyx gazelle
#

i could move her to the main beach

#

I MEAN, she does moves to the other side of the beach

tender bloom
#

That would probably be better, if you want her to walk

urban patrol
#

there’s a GSQ for having repaired the bridge

latent mauve
#

If you want her in the tide pool beach, you would definitely need to add an NPC warp until the bridge is repaired

onyx gazelle
#

how do I do that?

tender bloom
#

I’m guessing she’s just walking left continuously or some other bad result of schedules (often called void walking)

#

(Cause they don’t stop until they hit the empty void of space)

onyx gazelle
tender bloom
#

Yeah my top guess after what you said is that because there isn’t actually a path to the exit, she’s void walking

uncut viper
#

there isnt a GSQ for the beach bridge, but there is for the ginger island bridge

latent mauve
#

There's a flag though, I think

uncut viper
#

most defnitely a flag somewhere

calm nebula
#

Yeah

#

It's networldstate iirc

uncut viper
#

networldstate does not have beach bridge stuff

urban patrol
onyx gazelle
uncut viper
#

(otherwise it would (possibly) be GSQ accessible)

#

actually i stand corrected, it is added to worldstateids

onyx gazelle
#

Once she reaches the bench, she goes down and stays forever on the south side of the beach

latent mauve
#

one moment, looking up a code block

uncut viper
onyx gazelle
#

the reason I put her on the beach its because she's a sea creature. She's from the anime Mermaid Melody Pichi Pichi Pitch, so other places might not fit her

#

IT WAS THE THE SPAWN POINT

#

Moved her to the main beach and she's going to town now

uncut viper
#

(huh, theres even an undocumented AddWorldState event command for adding to world state IDs... interesting. i wonder what uses that)

latent mauve
#

that's because she doesn't have a path from the tide pool beach, as we said earlier xD

onyx gazelle
#

I thought that, yeah, thats sad. Theres a way to make her only starts her schedule once the bridge is fixed? And appear on the map after it?

uncut viper
#

you can set her UnlockCondition to require t he beach bridge to be fixed if you dont want her to appear at all before then

urban patrol
#

if you use the condition buttons sent that should work

opaque field
#

probably a dumb question but how do you set up dynamic tokens for setting up pronouns? I followed similar framework but someone mentioned to me that it's still giving "their" pronouns instead of "she" pronouns and she showed me that the pronouns are set right in the config

#

I've got the dynamic tokens wiki open rn too

latent mauve
#

Whoops, needed to pull AddNPCWarp

onyx gazelle
latent mauve
#
      "Action": "EditMap",
      "Target": "Maps/Beach",
      "AddNPCWarps": [
        "63 5 Town 91 103"
      ]
    }``` this *should* add a NPC Warp to the Beach
calm nebula
#

Please don't add that npcwarp. Npcwarps have higher priority than normal warps. Every npc will try to take that

onyx gazelle
#

no but Im asking about the condition for the beach bridge to be fixed

latent mauve
#

Good to know

#

Then it sounds like the best option is to indeed use the condition to determine the spawn point

urban patrol
#

do you want your NPC to not exist until the bridge is fixed? if so, put it under her unlock condition (where you add your NPC). if you want to change her schedule dependent on if the bridge is fixed, then look into conditions (am i remembering correctly that GSQs can’t be used with When conditions?)

latent mauve
#

So it'd be set via the Condition in your "Home" entry most likely, if you just wanted to change where she is until the beach is fixed but still want her to exist.

uncut viper
#

correct, GSQs cannot be used in CP When conditions without Esca's Modding Plugins

latent mauve
#

It'd go in your Data/Characters entry

#

See how "Condition" is an optional field in "Home" ?

#

That takes GSQs

uncut viper
#

if you change the Home entry to put her on the main beach beforehand, you'll still need When conditions to change her schedule, right? (/gen, idk much here) since theyll still be written as if she was starting at the tide pools

latent mauve
#

You'd want to set two separate entries in this case, and put the one with the Condition higher up so that it checks it first

onyx gazelle
#

I usually need a visual example to really understand stuff

#

Im trying to understand it tho

uncut viper
#

given that most of content patcher modding is all text/json based, visual examples that arent just more walls of text are really hard to come by

latent mauve
#

Could look at how another mod does it, maybe?

#

There are a few that use conditional homes

onyx gazelle
#

I actually manage myself just watching it tbh thats how I managed to make the NPC working again

latent mauve
onyx gazelle
#

I think I understand it but some stuff makes me doubt a bit

latent mauve
#

The spawn block is in Data/Characters, not in the schedule

#

So you'd need to look there for what I am referencing

onyx gazelle
#

the mod doesnt have that folder

latent mauve
#

In vanilla, you get Leo as an example:

      {
        "Id": "Valley",
        "Condition": "PLAYER_HAS_MAIL Host leoMoved",
        "Location": "LeoTreeHouse",
        "Tile": {
          "X": 5,
          "Y": 4
        },
        "Direction": "down"
      },
      {
        "Id": "Default",
        "Condition": null,
        "Location": "IslandHut",
        "Tile": {
          "X": 5,
          "Y": 6
        },
        "Direction": "down"
      }
    ],```
onyx gazelle
#

Who's Leo?

latent mauve
#

Ginger Island ParrotBoy

onyx gazelle
#

Aaah, never reached Ginger Island

latent mauve
#

Well, he normally spawns on Ginger Island ("Default"), but after a specific event, he gets a house in the valley, which is his "Valley" home

onyx gazelle
#

So I put that on the disposition json

latent mauve
#

So you'd structure your section of the Data/Character entry under Home like that

onyx gazelle
#

I think I got it

#

Something like this?

#

But I dont know what to do with the leoMoved or how to tell the code what I want it to check is the bridge

latent mauve
#

Your Condition for Bridge Fixed should be exactly what Button gave you earlier: WORLD_STATE_ID beachBridgeFixed

ornate trellis
onyx gazelle
#

just like this?

latent mauve
#

Also you CANNOT use "Location": null for "Default", in this case, you would likely still use "Location": "Beach" but change the Tile coordinates to be the left side of the beach

ornate trellis
#

i thought the new items jsut were the words like [SmokedFish] why cant i give that in an event when i do action AddItem [SmokedFish] 1 0/

onyx gazelle
#

but I want her to not appear until the bridge it's fixed

#

or at least not move

urban patrol
#

[[Modding:NPC_data]]

latent mauve
#

Can you please clarify exactly what you want to happen, DaniKH?

onyx gazelle
#

thats what I was watching the whole time

latent mauve
#

If you just want her to not spawn in at all until bridge is fixed, you'd use "UnlockConditions" in the Data/Characters entry instead, as nic just showed in the screenshot

#

But use the same WORLD_STATE_ID beachBridgeFixed there

onyx gazelle
#

dunno the format

latent mauve
#

And then you don't have to worry about the separate Home entries

#

do you have the vanilla files unpacked?

onyx gazelle
#

Nope

latent mauve
#

At this point, you might be better off looking in the vanilla Data/Characters file to see how it's done. Kent has an UnlockCondition set

onyx gazelle
#

I guess that might be a problem

#

dont know how to unpack the files

latent mauve
#

!unpack

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

uncut viper
ornate trellis
brittle pasture
#

IIRC generic smoked fish doesn't render properly (it shows as a "Smoked {0}")

#

PeliQ or EMC allows using item queries in give item actions

onyx gazelle
#

I think I got it

#

def having the game files unpacked is really a big help

#

Sorry for being so annoying with my dumb questions and thanks a lot for the help

latent mauve
#

The vanilla files are easily your best resource if you need working examples!

ornate trellis
#

maybe I will just uh, give something else lol

gaunt orbit
#

I'm surprised it even has an icon

onyx gazelle
#

New Save, shes not there... ok... thats planned

#

lets get 100 wood

latent mauve
#

Yep, now if you unlock the bridge, the next day after you've unlocked the bridge, you should have her there.

ornate trellis
#

hm, what can i give when the convo was about smoking fish....cant jsut be like yo heres a raw fish smoke it yourself

latent mauve
#

Go big or go home, give them a smoker /joking

onyx gazelle
#

Oh wait, its 300, not 100

brittle pasture
#

or just some coal

#

here, do the rest urself

half tangle
#

Dani, do you have CJB cheats? you don't have to get that wood manually when you're testing

ornate trellis
#

well, thing is my npc was like yo i smoked some fish you want some too

lucid iron
#

Give an entire fishsmocker

half tangle
#

could give one of the jellies that craft the smoker

onyx gazelle
#

YEP! SHE'S THERE

brittle pasture
#

"sorry, the law of physics doesn't allow me to give you one." then turns directly to camera and says "install peliq"

lucid iron
#

If u also just had some kinda smoked fish fillet cooking they can give that

brittle pasture
#

or emc im not picky

half tangle
#

or "here's some spare hardwood"

ornate trellis
#

oh, jelly is a good idea. i can give farmer my custom jelly

onyx gazelle
#

And her schedule is working as intended, thanks a lot all of u

night oxide
#

Is it okay to ask beginner modding questions?

half tangle
#

always, yes

night oxide
#

I am a beginner, never modded
Ran the modding guide from wiki, all works good
Next step mentions about decompiling the game code so that you can look at it and learn from it,
I assume that's a good idea but is it faster to learn from the source code of small mods or the game code itself

latent mauve
#

Are you looking to create a C# mod?

night oxide
#

I guess so, wasn't aware there are other mod types

half tangle
#

Or since you're a beginner and might not know that, what kind of mod do you want to make?

latent mauve
#

There are also Content Pack mods, for frameworks like Content Patcher or Fashion Sense, and things like that.

#

What do you want your mod to do/add?

night oxide
#

Custom object that mimics the ability of workbench + more features that are based around inventory management

rigid oriole
#

Yeah that'll be csharp

night oxide
#

Sweet, just out of curiosity
What other mods don't use C# and how do they work

uncut viper
#

over 50% of all tracked mods dont use C#

night oxide
#

Ohwow

twin wadi
#

other mods use content patcher and just use json

night oxide
#

Ahh asset mods

latent mauve
#

Content Patcher packs (CP mods) can edit most content found in the base game (hence the name) where as C# is needed for changes to the gameplay mechanics and methods.

night oxide
#

got it

twin wadi
#

content patcher can do a lot, but c# is needed for changing the game mechanics

#

what fireredlily said lol

night oxide
#

Got it

uncut viper
#

if you're curious, this graph shows dependencies between mods, but has a node for every tracked mod there is, so you can see the disparity between content pack and C#

latent mauve
#

It's also not unusual to create a mod that has both C# and CP components, because Content Patcher does a lot of the handling of existing game methods for you.

half tangle
#

There are also other framework mods like Extra Machine Configs or Better Crafting that may allow you to do some or all of what you want to do using just Content Patcher plus one of those mods. (not so much the inventory management, though)

calm nebula
#

It's very useful to look at other mods sometimes but frankly looking at the game code is more useful

night oxide
#

Thans guys ā¤ļø

lucid iron
#

what is the high concept here bolbthinking

lucid iron
#

No that's more a functionality

latent mauve
#

Yes, but beyond that. What exactly are the additional inventory management features you're considering?

lucid iron
#

High concept is more like "i want to make crafting expansion" or "i want inventory qol to be better by adding these features"

half tangle
#

oh, gotcha, just thought you missed the initial ask

brittle pasture
#

all I see is another entering the clickCraftingRecipe trenches

lucid iron
#

You mean the cage death match

ornate trellis
#

I'm out here doing one little event after another when all i wanna do is make more items and stuff lmao but i shot myself in the foot shoving events far away and doing the most fun parts first evaporated

lucid iron
#

F

ornate trellis
#

its like im doing the L gesture but in the mirror, sigh

onyx gazelle
#

question, can I make a sound reproduce in a certain moment of my NPC schedule?

night oxide
#

took me so long to find it that I ended up asking chatgpt

So when I saw the workbench description before buying, I thought it took the items in the nearby chests and made them available and depositable from one object.
Which reminded me of Refined Storage mod from minecraft (thats why it took me so long to chat because I could not remember the damn name)

And because I did not read the workbench description properly, I did get a bit disappointed but it making me want to make something like Refined Storage in Stardew

brittle pasture
#

!chatgpt

#

!chatgptcode

ocean sailBOT
#

Please stop trying to get ChatGPT to write your C# mods for you, especially if you don't know how to write C#. It won't work without heavy editing, and it wastes everyone's time.

Large language models fundamentally are reguritating something from their input—which is roughly speaking, the written output of humanity up until 2021 or so, for ChatGPT. For specific, niche topics like "is this framework going to do what I want" or "which things does Game1.cs have access to", it probably has no idea! But it's good at detecting that people in the past have....said things about frameworks and written things in C#, so it does its best to assemble words and symbols into a nice order for you. Sometimes it tells you true things, and sometimes it tells you false things, and if you can't detect when, you're in trouble. When you're writing code, this usually produces garbage, because you can't be "sort of similar", you have to be exactly correct or it won't work.

night oxide
#

no I was using chatgpt to find me the name of the mod

rigid oriole
#

Why not just Google it

night oxide
#

I tried so many variations, nothing came up

serene moat
brittle pasture
#

a more involved storage system mod wouldn't be a bad idea, but it is one of the more difficult ideas to start with

calm nebula
#

Got it, shelving the "connected chests" mod idea.

latent mauve
#

Or C# trigger actions, maybe.

urban patrol
#

you can play sounds during schedule animations

#

you might need spacecore though

gaunt orbit
urban patrol
twin wadi
onyx gazelle
brittle pasture
#

ElliottHouse has MusicDefault set to communityCenter, which according to the wiki overrides the map property

uncut viper
#

i mean the command might be that old but who really cares, it still produces absolutely garbage Stardew mod related code

#

which is the point of the command

daring skiff
#

Can confirm. Copilot only knows how to betray me.

onyx gazelle
#

Apparently today a new ChatGPT version got released

uncut viper
#

and it aint allowed in this server anyway

onyx gazelle
#

at least thats what some news popped out on my phone

uncut viper
#

its a good thing 50% of all mods arent made with a specific framework only found in stardew game mods then... wait a minute

daring skiff
#

This is my thumbnail for the snore mod.

lucid iron
#

Wamuu Pam mod

uncut viper
#

if you give it a framework to teach it and then use it in a mod, you arent going to be talking about it in this server anyway because it is, as mentioned, against the rules

#

the point is you're not supposed to ask it about stardew code period, which is what the command is trying to get the point across for

onyx gazelle
uncut viper
#

(though it probably could be updated to mention the new AI rules that werent in place when the command was written, too)

brittle pasture
onyx gazelle
#

except I changed AudioChanges to Map/Locations

uncut viper
#

i dont really care enough to check

brittle pasture
#

yes, post that then

onyx gazelle
brittle pasture
#

that's definitely not how you do it

#

you want to edit ElliottHouse and change the music fields

onyx gazelle
#

ye

brittle pasture
#

also keep the Data/MusicChanges patch

#

you need that

onyx gazelle
#

Like this

brittle pasture
#

oh yeah audiochanges lol

#

one patch targeting Data/AudioChanges to load your music, one patch targeting Data/Locations to change EliottHouse

onyx gazelle
#

how do I put that?

#

like, with a comma in the same target?

brittle pasture
#

have you unpacked Data/Locations and/or read the Location data page

onyx gazelle
#

unpacked

#

Like this?

brittle pasture
#

no, a separate entry

#

as I said, one Targeting Data/AudioChanges, one Targeting Data/Locations

#

add a new entry to Changes, with its own Action/Target/Entries/etc fields

onyx gazelle
#

Like this?

brittle pasture
#

(i think you forgot the pic)

onyx gazelle
#

oops

#

sorry

#

xd

brittle pasture
#

good start, but it's in the wrong place
autoformat your code, it should be obvious

onyx gazelle
lucid iron
#

I got an example for this

brittle pasture
#

yep, looks good

lucid iron
#

In my case VolcanoMines is vanilla music

#

Now that you have the audio changes YuriPiano can be used same way

#

You probably want {{ModId}}_YuriPiano just to ensure unique key

onyx gazelle
#

seems a bit complicated right now for me, I wanna keep trying my approach first

brittle pasture
#

next, add

"Fields": {
  "EliottHouse": {
    "MusicDefault": "YuriPiano"
  }
}
#

Fields: same as Entries, but don't wipe the other fields that I didn't set

onyx gazelle
brittle pasture
#

missing a } again

#

actually

#

that might just be formatting hold on

#

yeah it's correct nvm

gaunt orbit
brittle pasture
#

but do autoformat pls

lucid iron
#

It is 1 deep i think

onyx gazelle
#

whats autoformat?

brittle pasture
lucid iron
#

And i only used TargetFields cus i was editing deeper at first

gaunt orbit
#

Ah right I was counting the dictionary as top-level and got confused my bad

brittle pasture
lucid iron
gaunt orbit
#

this is why I do my asset stuff in c#

lucid iron
#

If the music is unconditional MusicDefault is what u should use, like what selph posted

brittle pasture
#

yeah I want to start small because they're very new

onyx gazelle
#

Im using Notepad++

#

Im new in the server but I know a few things already tbh

brittle pasture
#

you seem to want music to play only during the times elliott's on the piano in his schedule, that would require adding an entry to Music instead of setting MusicDefault

#

that's where nesting/TargetField comes in

#

look at chu's example above to see what it looks like

lucid iron
#

(i am horrible person who wiped all the beautiful Music on farmcave sadly)

lucid iron
#

So the TargetFields needs 1 more levels here

daring skiff
#

npc.Name is the ID of the character, right?

onyx gazelle
#

I guess I did the autoformat? dunno

onyx gazelle
lucid iron
#

Depending on what u want to do u can just put ur custom info in the CustomFields section

onyx gazelle
lucid iron
#

After that u can use the helper to just get CharacterData and go from there

onyx gazelle
#

I want to play a song during an specific moment of the day to make pretend that Yuri is playing the piano

#

In her schedule she arrives to the piano at 16:15

#

I dont have animated her playing the piano yet, so she's just standing there

patent bluff
#

Made a little outfit mod for my farmer!

onyx gazelle
#

Oooh I got it! So it needs to be separated from the other part

round timber
onyx gazelle
#

oh?

round timber
#

they should be separate actions but they should also be under the same Changes section

onyx gazelle
#

ooh

#

like this I guess

round timber
#

i think you might have some extra brackets in there but yes more or less

#

these specifically can go

onyx gazelle
#

So this is all?

#

It will work?

round timber
#

looks about right, im not the most knowledgeable about music modding so youll have to test for yourself but the json formatting is correct at least

onyx gazelle
#

just tested, not working 😦

#

I still hear the cracking wood and the bells

round timber
#

any errors in the log?

onyx gazelle
#

Nope

#

At least not with my NPC mod

#

Maybe theres something wrong on the MapMusic.json I did?

gentle crescent
#

Hey does anyone know of a good mod making tutorial video? I'm trying to use wiki documentation but I'm getting lost in the text šŸ˜…

urban patrol
gentle crescent
#

Still haven't figured out how to just add a chest

onyx gazelle
#

without the brackets....

round timber
#

yeah i dont think the random is really doing anything there?

#

but i also wouldnt think it is causing your problem

urban patrol
# gentle crescent Add a chest with custom logic and ui

ah okay that sounds like it would be a C# mod if you're trying to changing game mechanics. unfortunately i'm not a good person to help with that, but you can try looking at the decompiled game code or mods that other people have made for an idea of how to achieve what you want

onyx gazelle
#

Not working yet (Im aware in the pic theres an space before YuriPiano, it's fixed)

uncut viper
gentle crescent
#

Yeah I know it's gonna require C#, I already know C# but can't find anywhere to guide me how to add items to the game

tawny ore
#

1.6 makes adding custom chests pretty easy. You don't necessarily need Expanded Storage as long as you're fine with them being mostly identical to vanilla. You do need C# though.

#

Chests are (initially) an asset edit to Data/BigCraftables

#

Adding things to the game is editing a vanilla asset to add an entry for your custom thing

round timber
soft granite
#

Whats an easy way to look at a set of sprites and modify them, like, one at time? Like if i want to focus on one sprite on the sheet then press a button and look at the next one

lucid iron
#

Not clear which one takes priority here NotteThink

onyx gazelle
#

thats what they said I should do 😦

lucid iron
#

I thought selph has been helping you with the MusicDefault approach

#

Anyways I'll try and write up the exact patch for u in like 40mins when im back on a computer Dokkan

onyx gazelle
#

that would be cool

#

I need to go to sleep by now, if you figure out what I did wrong, pls feel free to DM me

lucid iron
#

If u don't mind can u send ur ogg

#

It'll save trouble if i can just test too

onyx gazelle
#

yeah

latent mauve
#

Also just as a heads up, some AudioChanges require a relaunch of Stardew to apply, usually, in case you haven't closed the game since adding the music code.

lucid iron
#

Ah it's a wav

onyx gazelle
#

Real name: Kiyoufu Shirabe

#

I tried wav and ogg

#

dont mind converting it back to ogg

lucid iron
#

Wav work still but it is recommended to use ogg nowadays for file size reasons

lucid iron
onyx gazelle
latent mauve
#

Just to confirm, not just going to title screen. Completely closing the game.

onyx gazelle
#

yep

#

Some people call it "Alt F4"

calm nebula
#

Strongly recommend using .ogg

onyx gazelle
#

I do use ogg but thought that maybe was the encoding the problem so Ive tried wav last time

feral bridge
#

i want to introduce a new tool but this doesnt feel right

uncut viper
#

while you can subclass Tool you will have to deal with save serialization via Spacecore

#

theres a small handful of ways you can do custom tools but which way is best kinda just depends on what you actually want to do with the tool and how you feel about dependencies i guess

feral bridge
#

i mean i just want to have a hoe like tool

#

i basically copied and pasted the code from the game source and modified just a bit

#

but the tool is not registed in game for some reason

calm nebula
#

Yeah no you have to add it to item registery if you want to do that

#

Or data/tools or smth

feral bridge
#

and how do i do that...

#

sorry im really new to this

lucid iron
#

what is this tool supposed to do

feral bridge
#

its like a hoe but it applies fairy rose to the affected tiles

lucid iron
#

what does applies fairy rose mean NotteThink

#

spread them?

feral bridge
#

sorry fairy dust

#

i just call TryApplyFairyDust on the obj

lucid iron
#

do you care about having the animation

feral bridge
#

no

#

i mean

#

i want it to be chargeable

#

if thats what you mean

lucid iron
#

no i mean the swing animation

feral bridge
#

no i dont mind

lucid iron
#

anyways i'd avoid actual subclass of tool for reasons button already outlined, instead i'd do this

  • create the tool object by editing Data/Tools
  • create a buttonschanged handler that checks if you are holding the tool, and apply the effects
#

if you do create a custom subclass of tool you need another mod (spacecore) to not explode the game when you save

feral bridge
#

i cant find how to properly create entries for content patcher

#

why is everything so distributed blobdizzy2

lucid iron
#

well you are in C#

#

you can use assetrequested if thats easier to understand

feral bridge
#

wait then how can I edit Data/Tools without CP?

uncut viper
#

using the information on the page chu linked you

#

all CP is is just a C# mod that does this stuff for you

feral bridge
#

ik

#

oh wait

#

okay i think i got it now

#

i didnt get that "OnAssetRequested" was called for every asset

#

i thought it was on per mod hook

#

what about fields like attachment slot

lucid iron
#

thats for fishing rods mainly

daring skiff
#

Man, I hate learning. You realize all of the stuff you fucked up so quickly. That sucks.

lucid iron
#

i wanna say game will let you use it (bc it'd create your item as a base Tool)

#

but i have no idea so if you arent sure just dont provide it blobcatgooglyblep

feral bridge
#

yes but i want to add it

#

when i created a subclass

#

it was easyyy

#

just add a check and define attachment slot count

lucid iron
#

try setting AttachmentSlots in the data then

#

ok but your subclass doesn't actually work monS

uncut viper
#

well thats also why chu asked what you actually wanted to do with the tool. i cant think of why a fairy dusting tool would need an attachment

lucid iron
feral bridge
lucid iron
#

it is definitely possible to influence the number draw i feel

#

from the data

#

but yea i have no idea what happens if its not a fishing rod pls try and tell us

uncut viper
#

"Up to two bobbers"

feral bridge
#

and i cannot cast it to tooldata

lucid iron
#

but you are using tooldata

uncut viper
#

you're not working with ObjectData you're working with ToolData

lucid iron
#

Data/Tools

feral bridge
#

im confused...

#

omg

#

asdictionary has fucking generics

#

i didnt see that

lucid iron
#

yea this would probably blow up at runtime Dokkan

#

if you go to Stardew Valley/StardewValley/DataLoader.cs in the decompile you can see all the expected types

#

and it says Load<Dictionary<string, ToolData>>(content, "Data\\Tools");

#

i wouldnt clone any existing tool tbh, just init a new ToolData for yourself

feral bridge
#

okay lemme try now

soft granite
#

What spritemaking program do you guys use? I want to take all of one color in a sprite and change it to a different color, but i dont know how

devout otter
#

I use Aseprite. It can do that with color indexing.

Aseprite is a pixel art tool that lets you create 2D animations for videogames.Features

  • Compose sprites using layers & frames as separated concepts
    • Create images in RGBA or Indexed color modes
    • Open/Save GIF animations, sequence of PNG files, etc.
    • A timeline where you can copy/move layers, frames, or specific images
      …
Price

$19.99

Recommendations

17224

ā–¶ Play video
patent lanceBOT
#

Title result: Aseprite on Steam

feral bridge
#

okay im confused

#

i register the gun as a hoe

#

how can I override its methods

rare orbit
#

also? yall have any custom npcs that might like the items from the mod i just uploaded? let me know and i'll add gift tastes in a future update :3

brittle pasture
#

also you "override" them with Harmony

#

with prefixes that say "if this GenericTool is actually my tool do this instead"

lucid iron
#

or you just check player is holding tool in ur buttons changed event

brittle pasture
#

that works too, though iirc generic tool will do some generic swinging anims if you dont override the appropriate methods

lucid iron
#

we can worry about that later, check if your gun can actually spawn the thing NotteThink

#

btw you should use {{ModId}}_FairyGun

#

just in case theres a second FairyGun adding mod for some reason

lucid mulch
#

(and it would be a C# concatenation with this.ModManifest.UniqueID or equivilent)

feral bridge
#

how do i override dofunction

#

part

lucid iron
#

!harmony

ocean sailBOT
#

Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.

If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.

For more information, refer to the following:

feral bridge
#

yeah I am currently at that page figuring out

#

but without harmony how would I do it

#

I mean im doing it with harmony rn

#

but just curious

lucid iron
#

so what exactly happens atm if you try tool use button NotteThink

#

without any patches

#

looking at the code it seems like none of the paths actually happen as is

#

could be wrong ofc

uncut viper
#

if you dont subclass, and you do not use harmony, you do not override methods. you simply watch for the button pressed event yourself and do stuff in addition to the methods that are there, assuming they do anything (which they may not for a generictool)

feral bridge
#

oh okay like that

#

i think i prefer the harmony method

brittle pasture
uncut viper
#

harmony is fun nd easy

brittle pasture
#

300 udl easily the mod with the highest "effort per udl" among the mods I made

#

gods I hate tool code

calm nebula
brittle pasture
#

giff me a break im a baby modder who hasnt even touched audio stuff

lucid iron
#

either way i recommend doing things incrementally

uncut viper
#

i need someone else to complain to about audio stuff

lucid iron
#

make sure your tool spawns as actual object first, deal with giving it function next

uncut viper
#

the only other one i know off the top of my head is ichor i believe

calm nebula
#

I associate myuu with audio

#

Go complain to him SDVkrobusgiggle

uncut viper
#

i can only complain to people with whom i already have some kind of rapport with

patent lanceBOT
calm nebula
#

We need more quotes to get to 6480

#

We also need 6480 to say quote able things around that time

uncut viper
#

alternatively, quote 6480's very first message in this server when the time comes

lucid iron
brittle pasture
#

already a modder when joined... such power

feral bridge
#

im going to cry it doesnt hit the breakpoint

calm nebula
#

Where do you call that code

feral bridge
#
          public override void Entry(IModHelper helper)
          {
               helper.Events.Content.AssetRequested += OnAssetRequested;
               var harmony = new Harmony(this.ModManifest.UniqueID);

               HarmonyPatch_FairyGun.ApplyPatch(harmony, Monitor);
          }
lucid iron
#

Entry only happens once

feral bridge
#

yes and i apply the patch there

#

should that be enough?

#

because its the DoFunction of all tools that im patching

#

omg obviously the baseclass's dofunction is not being called

#

i should make the tool GenericTool

lucid iron
#

generictool doesn't override DoFunction does it NotteThink

feral bridge
#

then what is the problem

lucid iron
#

your patch returns a bool looks like

#

psure postfixes have to be void

feral bridge
#

huh but the wiki says return true to continue the normal logic

uncut viper
#

for a prefix yes

lucid iron
#

thats for prefixes

uncut viper
#

you have yours set as a postfix

#

but you named it prefix

feral bridge
#

hmm

#

so the prefix is the part where the patch is applied

uncut viper
#

your ApplyPatch function is where the patch is applied

#

you made it a postfix patch in there

feral bridge
#

oh my

#

yes

#

sorry lol

lucid iron
#

there are several types of patches you can do (and you can do multiple kinds to same method all at once too)

#

each type has their use and quirks

feral bridge
#

ok nice now it errored out meaning the patch did work

#

thankss

#

wish there was another way then restarting SDV each time

calm nebula
#

!hotreload

#

!reload

ocean sailBOT
#
How do I reload my changes while I'm still in game?
  • Content Patcher pack: enter patch reload <your_mod_id> in the SMAPI console window. This will reload and reapply all your patches (but won't recalculate the ConfigSchema or DynamicToken sections if you use them).
  • Translation files: enter reload_i18n in the SMAPI console window. If it's for a Content Patcher pack, also run patch reload afterwards.
  • C#: see the Visual Studio hot reload or Rider hot reload feature.
lucid iron
#

hm well u can hot reload some things, dunno about harmony patches though

feral bridge
feral bridge
calm nebula
#

The patching? Nah

lucid iron
#

i am a neanderthal who just restart game every time so i also just make mod list small and use skip intro kyuuchan_run

uncut viper
#

you can hot reload the code in the patch itself and you can apply a new patch out of an existing function whenever (Harmony.Patch doesnt need to be on game launch) but you cant write a new function and then use it as a patch at runtime

calm nebula
#

The code itself if it isn't a transpiler

#

Sure

uncut viper
#

you can also unapply and reapply a transpiler

#

so you can pseudo hot reload a transpiler

feral bridge
#

okay my game crashed anyways

#

no need for hot reloading

#

waiit

#

so how do I conditionally apply the patch

#

cuz im trying to call Tool.DoFunction (as the base method)

#

which causes infinite recursion

brittle pasture
#

the prefix will automatically call the base function unless you set it to skipping

#

so just don't call it?

feral bridge
#

okay

#

sorry i never used harmony before

#

and the docs online are a bit confusing

lucid iron
#

its like writing some code that happens before or after the original

#

it is not inheriting anything

gentle crescent
#

Anyone know of an open source C# mod that has good documentation that I can use as an example while learning?

uncut viper
#

while learning what

rigid oriole
ocean sailBOT
#

Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.

If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.

For more information, refer to the following:

rigid oriole
#

Tutorial linked

gentle crescent
rigid oriole
#

I should probably update the tutorial to talk about skip prefixes and finalizers

#

Remind me in 1 hour to update harmony tutorial

patent lanceBOT
#

ugh I was about to take a nap. but fine barleyzp I'll stay awake just for you (#6718990) (1h | <t:1749177166>)

feral bridge
uncut viper
#

vs code isnt an ide so that makes sense

#

itd be in Visual Studio though

feral bridge
#

vs for mac got discontinued

#

like last year

brittle pasture
feral bridge
#

they said use c# dev kit extension on vscode for the same experience

#

liars

uncut viper
#

well that wont change the fact that VS Code is not a full fledged IDE and wont have it unfortunately
Rider is free now and i think thats on Mac? im not sure what mac people usually use

brittle pasture
feral bridge
#

meh

soft granite
# ocean sail

Oh, i have to reload the ttranslation file too i didnt know that no wonder i had trouvle

feral bridge
#

its so stupid that you can only use hot reload on vsc with processes that you start from the vscode

calm nebula
#

I recommend looking Pathos

#

If you want good ideas

#

If you want chaos check out my repo

#

But more serious

#

What do you want to do

vital dew
#

okay, i've been trying to figure this one out for like 3 days, so i think i have to ask
does anyone have any idea why this keeps happening, and how to fix it?

i've only got one recolor - daisyniko's - with foliage redone's trees merged into the .pngs myself
i've triple checked there are no bits of the vanilla trees peeping under the modded ones on the tilesheets, i've tried looking at any other mods that i might suspect to have it, and i can't find anything at all, i'm losing my marbles over a frickan tree LMAO
do i just need to delete the tree off the game's .xnb?? cause i would prefer not to have to do that but at this point i'm not sure what else would fix it lmao

lucid iron
#

it looks like you did Overlay edit when you should do Replace?

#

do patch summary and send log

vital dew
vital dew
ocean sailBOT
#

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

lucid iron
#

oh yea which tilesheet is this

vital dew
lucid iron
vital dew
#

its weird cause i never had this issue when i used it in 1.5 lol

lucid iron
#

well i guess dn changed to using overlay at some point, who knows

#

you'd basically add a new "Action": "EditImage", in a cp pack and have it target the tree

#

!startmodding

ocean sailBOT
#

Making mods can be broadly divided into two categories:

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

unique sigil
#

so the solution here is an EditImage that targets the tree only, with PatchMode Replace and a Priority Late+100 (i did that for my cozy rustic kitchen, because dn's earthy interiors patch causes the kitchen tiles from farmhouse_tiles to override my textures)

whole raptor
#

Seems Nexus is prototipying new mod upload page... I'm guessing there's 98% chance we'll still be stuck with bbcode and generic UI as a bonus SDVpufferlurk

tiny zealot
#

if anything 98 is too low. i can't picture a world where nexus accepts anything but bbcode

iron ridge
whole raptor
#

Is it..? SDVpuffereyes

gentle rose
#

will it make the mod publishing flow not break every time I reach the articles tab at least

iron ridge
whole raptor
#

Explains it being as generic as possible I guess...

brittle pasture
#

this sentence is taken from the pages of the Necronomicon

gentle rose
#

selph, rule 6! that kind of language is highly inappropriate /j

#

swearing at all of us SDVpufferwaaah

tiny zealot
#

"hey guys, we need a business model for our AI slop. have we tried doing NFTs about it yet?"

#

"people are still doing those, right?"

whole raptor
gentle rose
#

speedrunning carbon emissions

#

apparently prompt marketplaces are a real thing...

iron ridge
#

that's from the sharing projects thing

#

so I doubt anyone is actually doing that

gentle rose
#

not this specific one, but prompt marketplaces are, in fact, a thing

#

I looked them up to see

iron ridge
#

oh no

whole raptor
#

I'm genuinely curious what's the point of something like that...

gentle rose
#

the one I found seems really successful as well? I'm losing faith in humanity

whole raptor
#

You still had some left? I'm impressed

patent lanceBOT
rigid oriole
#

i forgot i promised to do work ugh

calm nebula
#

Do it SDVpufferheart

rigid oriole
#

fineeeeeeee!!!!

lucid iron
#

some notes about it

  1. this uses a GSQ to check conds like so
    • WEATHER Here Sun: weather is sunny
    • SEASON Spring season is spring
    • TIME 1614 1700 time is between 4:10 and 5:00
  2. you have to enter the house while all the conditions are true to get the music, music doesnt start if u just inside for 4:10
lucid mulch
#

There is code flows for updating the music while in the location

#

GameLocation.checkForMusic(GameTime time) which does check the location specific music in map properties and Data/Location
but has a bunch of criteria for it to be allowed

lucid iron
#

oh rly would it work if we rearrange the TIME

#

i wasnt too sure why they put 1614 in their original EditMap patch, but i reproduced it here

honest tundra
#

I made a mod!

#

Sort of

#

I have been making item bags for myself, and I'm cleaning some up and sharing them.

lucid iron
#

do u wish for a showcase

honest tundra
#

I mean sure

#

I'm flattered

sweet wharf
#

Hi, I'm looking to make an NPC for the game just for fun and because I wanna add more drama to the town because why not? So if anyone could help with making an NPC for a beginner I would appreciate it 😊

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:

uncut viper
#

that should cover a lot of it

#

but bear in mind that making an NPC is a lot of work. none of it is like, technically challenging work, but its just a lot of it

twin wadi
#

tiakall's tutorial is rly awesome for npc making

twin wadi
sweet wharf
#

Okay, thanks so much for the help 😊

brisk wedge
#

anyone know what terminal command I should use to build?

#

is it just dotnet build?

vernal crest
#

That's what chu usually says and they use VSC (which I assume is what you're doing)

lucid iron
#

yea

#

dotnet build -c Release when u ready to ship

brisk wedge
#

whats the difference between them?

lucid iron
#

this says VS but it should be applicable to dotnet build too

#

for me though there r some csproj things i locked behind the Release configuration

#

and i use the #if DEBUG macro to block off stuff that shouldnt be in release build

brisk wedge
#

oh ive been putting the debug build on nexus... should i be worried?

lucid iron
#

naw its not big deal

#

but yknow good practice

tiny zealot
#

the big thing you get from debug vs release is using macros to enable/disable code. if you're not doing that it doesn't make a big diff

#

(there's probably other stuff too i'm not aware of, don't @ me)

brisk wedge
#

tytyty

gaunt orbit
#

Debug is also less optimized, and will leave in a bunch of nops for breakpoints

#

Debug tends to not inline things that release will for sake of debugging

rigid oriole
#

can someone point me in the right direction for bundling an arbitrary file with my release when I use modbuildconfig?

#

I've spent a while in the docs but i'm not seeing it

lucid iron
#

oh i think u just use C# things right

rigid oriole
#

i presume i add SOMETHING to my .csproj

vernal crest
#

Oh I can show you, hold on

#

This is in my .csproj

  <ItemGroup>
    <Content Include="LICENSE.md">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
rigid oriole
#

thank youuuuuuuuuuuuu

#

behold

#

i shall ship my license and follow the law

uncut viper
#

ew who uses .txt for their license /lh /j

rigid oriole
#

i mean... it's not a markdown file 😭

uncut viper
#

but it COULD be

rigid oriole
#

ok hold on

#

trust

#

you never saw anything different

uncut viper
#

leaked mod name

rigid oriole
#

the horror

uncut viper
#

practically doxxed

rigid oriole
#

oh no, someone might steal the idea of *checks notes* captioning audio

vernal crest
#

@ivory plume Sorry if you already know about this but your ModBuildConfig page appears to have broken formatting in a few places (Detect Game Path, Install and debug your mod, Code warnings).

lucid iron
#

i thought licenses r not supposed to have extensions...

rigid oriole
#

yeah but then computers complain there's no default program

vernal crest
#

I thought about that but I want users to be able to read the file if they want to

#

And I do not trust many users to know how to manage an extensionless file

lucid iron
#

what is wrong with windows

rigid oriole
#

a lot

vernal crest
#

What does Linux do?

rigid oriole
#

thanks for asking

lucid iron
#

A file signature is data used to identify or verify the content of a file. Such signatures are also known as magic numbers or magic bytes and are usually appended at the beginning of the file.
Many file formats are not intended to be read as text. If such a file is accidentally viewed as a text file, its contents will be unintelligible. However,...

#

not having any of these or having the utf-8 BOM makes unix like filesystems assume text

vernal crest
#

I see

#

Windows you get this

rigid oriole
#

and that's why i gave it an extension haha

vernal crest
#

Yup

hard fern
#

You know this made me realize

#

All of the mysterious LISCENCE

#

Files

#

I couldve juiced them

#

??? Juice

#

*just clicked on them

lucid iron
#

LICENSE Juice...

hard fern
#

New unhinged mod idea.

rigid oriole
#

crab juice. license juice. endless possibilities

tender bloom
#

My mod adds a firework license

#

Just need to add machine recipe

burnt dock
#

would anyone be willing to help me figure out what's going on with this person's bug? it's the "tiling errors" bug report

im not really a modder, i just have surface level ability to use tiled, and i recieved a lot of help from someone else to make the ability to config between maps. i don't have stardew installed right now (no space on pc right now) so i'm unable to test it myself but i do want to try and fix it if i can

i don't know why their map is glitching out like that, it's like the default tent tiles are getting scrambled

i suspect it's a conflict and something they have is modifying the tent map, but i don't have a smapi log from them yet (the only smapi log is from when i messed up the files on accident and the mod wasn't loading at all, which is fixed now)

https://www.nexusmods.com/stardewvalley/mods/12536?tab=bugs

Nexus Mods :: Stardew Valley

Gives Linus a cozy cabin to live in. Recreation of 'A House For Linus' by Blue_Starkiller

lucid iron
#

i expect every content modder to license their mods like so from now on

hard fern
#

Beautiful

lucid iron
#

ok i can reproduce it monS

burnt dock
vernal crest
#

No, you should not be including vanilla tilesheets in your uploaded mod

burnt dock
#

i see

vernal crest
#

You keep them there while developing but then delete them prior to release.

burnt dock
#

alright ill make sure to do that

lucid iron
#

ok so you need to either actually have tiles to replace all the tenty parts, or just do a Load which im fine with given the mod's nature

#

linus's schedule seems to blow up too but im trying to figure out why first

#

the exterior editmap has a similar problem here

burnt dock
#

alright

#

the way i did it is that it uses editmap to replace it with the .tmx

#

for the interior

lucid iron
#

well u need to actually remove the top tiles Bolb

burnt dock
#

exterior edits map to a specific area

#

since it's the whole mountain map

lucid iron
#

u can do this in editmap too there is special thing

burnt dock
lucid iron
#

unfortunately i gotta sleep now n cant help more

#

it'd be pretty annoying to fix this if you cannot test in game though, perhaps whoever helpd with config can assist?

burnt dock
#

sleep well!

burnt dock
vernal crest
#

I can help

burnt dock
#

i appreciate it

vernal crest
#

Switching the interior map patches to Load fixed the tent issue, but you'll need to edit the .tmx files in Tiled to fix the ivy issue and the fact that the farmer pops out into the wall after getting off the couch.

burnt dock
vernal crest
#

Yes it is a layer issue

burnt dock
#

there's a stool on the wrong layer as well

#

alright i'll switch it to use load instead

#

thank you!!

vernal crest
#

The couch bit is also a layering problem. Your wall isn't on Buildings.

burnt dock
vernal crest
#

Do you want help adjusting the outside or just want to send me the fix to test once you've done it?

burnt dock
#

you're welcome to help adjust it if you'd like to!

burnt dock
vernal crest
#

We can do it without editing the map in Tiled using MapTiles in the json

lucid iron
#

Aba i saw linus walk into the void

#

Is that still happening

vernal crest
#

Kind of like you're doing with the MapTiles with the shack.

#

What setup did you have when he walked into the void, chu?

#

I have it set to Cabin, Cabin and...yup he void walked

lucid iron
#

I changed to Load

#

No idea why tbh the geometry looks similar enough

vernal crest
#

Yeah I have the interiors set to Load as well, but haven't fixed any of the interior layering stuff in Cabin. I did fix Original Cabin and he walked ok in there.

#

Hmm, looks like it might be the exterior actually. Kept interior as Cabin but changed exterior to Shack and he left properly.

#

He is now hiding in a bush outside.

burnt dock
#

which layer should the ivy be on? i'm putting it on buildings so it can't be walked through but unsure if that's right. it's on top of the wall, which is on back

vernal crest
#

Yup, Buildings is correct for that

#

Or you could put the wall on Buildings and the ivy on Buildings1, but as long as it doesn't mess up the floor to have the wall on Back it's same-same

burnt dock
#

ahh you can have multiple of the same thing? that's good to know

vernal crest
#

And I see the wall tile takes up the entire tile, so you can't tell if there's floor underneath or not. So it's fine to have the wall on Back.

burnt dock
#

this is the buildings layer, i have everything that's supposed to be a barrier on buildings. should i change the bottom line of wall on the 2nd image to also be on the buildings layer? it's currently on front but i think you can walk through front

vernal crest
#

No, those walls are supposed to be on Front and then the void tiles below them should be on buildings

#

But your void tiles are not on Buildings so make sure you do do that haha

latent mauve
#

Please note that if you make a Buildings2 layer, it will not block NPCs or players from moving through those tiles.

vernal crest
#

Yup, only the non-numbered layer has collision

#

Ok it's definitely the Cabin exterior that's causing Linus to void walk so I will examine that

vernal crest
# burnt dock gotcha!

Whoops sorry your void tiles were on buildings, I had noclip on because I was testing Linus schedule so I was warping to his house and quickly running into the void to make sure I didn't affect his pathing in any way and then I forgot I had it on xD

vernal crest
#

Ah, also, you're trying to remove the bush spawn to the left when the shack exterior is chosen, but that only works if the shack is chosen before the save starts. If any player adds this to an existing save or chooses a different exterior for save creation, that bush is still going to be there when they choose shack.

#

Chose shack before new save and no bush (left). Left the default settings until after save creation, bush (right).

#

I fixed the exterior of Cabin. You had an NPCWarp in the json that was sending Linus back into the interior as soon as he left, so he was just stuck inside.

burnt dock
burnt dock
lucid mulch
#

warn on mod page and recommend "Reset Terrain Features" mod for existing saves

vernal crest
# burnt dock Would you mind showing me where/how to fix that?

I will, but first: I assume the NPCWarp was there because when the exterior is "Cabin" you want the player to be able to click on the door to go inside instead of just walking in like with the Shack or Tent. However, that does not happen because the TouchAction warp is set in the Mountain map properties which you don't affect with your mod so right now the player walks onto the door to warp and clicking does nothing. You can see what I mean with my screenshot.

I am not sure if it's possible to remove that one warp from the Mountain map properties without causing problems. I don't think so, if I am correctly extrapolating from a discussion about not being able to remove a specific DayTiles map property from yesterday.

burnt dock
#

how would I go about fixing the tent being visible behind the roof of the shack exterior? I don't want to mess up the tree behind it but I also don't see the tent visible in your image above. Is that another thing that would happen if you put it on an existing save?

vernal crest
burnt dock
#

oh, perfect, thank you!

vernal crest
burnt dock
vernal crest
#

Someone else might be able to jump in with a solution but it's beyond my current foggy brain.

burnt dock
#

all good! i appreciate all your help so far

vernal crest
#

So to fix both Linus's schedule issue and the tent being visible above the cabin, replace your exterior cabin patch with this one:

{
    "Action": "EditMap",
    "Target": "Maps/Mountain",
    "FromFile": "assets/Outside/Cabin.tmx",
    "ToArea": {
        "X": 28,
        "Y": 3,
        "Width": 5,
        "Height": 5
    },
    "PatchMode": "Replace",
    "MapTiles": [
        {
            "Position": {
                "X": 28,
                "Y": 2
            },
            "Layer": "Front",
            "Remove": true
        },
        {
            "Position": {
                "X": 28,
                "Y": 2
            },
            "Layer": "AlwaysFront",
            "Remove": true
        },
        {
            "Position": {
                "X": 29,
                "Y": 2
            },
            "Layer": "Front",
            "Remove": true
        },
        {
            "Position": {
                "X": 30,
                "Y": 2
            },
            "Layer": "Front",
            "Remove": true
        }
    ],
    "When": {
        "Outside": "Cabin"
    }
}
#

I've removed the NPCWarp and am using MapTiles to remove the tent and box tiles above the cabin.

#

You also need to fix your exterior Shack patch because right now it's trying to remove a tile from the Path layer and it needs to be Paths with an "s".

#

Finally, change the interior EditMap patches to Load instead and that should be all the json fixing you need to do.

burnt dock
#

Does this look alright? (I also changed the name of OriginalCabin to RusticCabin since I've been wanting to do that, I changed the file names accordingly so it should be fine)

#

I might have messed up a {} somewhere so I'm checking that

vernal crest
#

Looks okay to me. VSC is not showing any errors so I think your brackets are ok

#

Make sure you remove the vanilla tilesheets from the Inside folder and you can also delete the Rustic Cabin.tsx file that's in the Outside folder because it's not doing anything (though you will need to keep the Rustic Cabin.png file in there - or learn to use ATA which would let you use the Rustic Cabin.png file that's in the vanilla content).

burnt dock
vernal crest
#

Yup I can do that

burnt dock
ocean sailBOT
#

@burnt dock You leveled up to Farmer. You're now a prettier shade of blue. Thanks for sticking around!

vernal crest
#

Ok I will test now. By the way I really recommend just changing the folder name to [CP] Linus'sCabin and then never changing it, because having a folder name change between uploads is going to really mess with some users' Mods folders.

burnt dock
#

ah good point, I'll do that before I upload it

vernal crest
#

Ah, you've included spring_outdoorsTileSheet.png in the Outside folder so make sure you delete that.

burnt dock
#

Completely overlooked it, oops-

vernal crest
#

You have introduced tilesheet climbing for the outdoor cabin and broken it. You need to open the Cabin.tmx file in a text editor, go to line 1527, and replace source="../Inside/.townInterior.png" with source=".townInterior.png"

burnt dock
#

got it, thank you, I'll fix that now

#

is cabin the only one with that problem?

vernal crest
#

Yes

#

Linus is still hiding under the ivy

#

However, he is now able to leave his cabin properly and there's no tent above the cabin.

burnt dock
burnt dock
vernal crest
#

You renamed the zip but the folder is still Linus's Cabin-FileFixAttempt. Is that intentional?

burnt dock
#

oh, oops

#

thanks for pointing it out!

vernal crest
#

Linus is in front of the ivy and no tilesheet climbing error. Hooray!

burnt dock
#

I really appreciate all you guy's patience and help <3 It's good to upload now right? (Once I fix the file name---)

vernal crest
#

Yup should be good to go

burnt dock
#

thanks again! I'm really glad it's finally working now

vernal crest
#

You're welcome!

gleaming kindle
#

oops sorry

rigid musk
soft yew
#

i wanted to tweak which map the omni farm is replacing to like the vanilla one, or even maybe four corners maps? what would the file names be for them for the content.json?

soft yew
patent lanceBOT
#

@somber cipher: wake up (1h ago) [Requested by itofu]

soft yew
#

when json files are referring to "FarmType"- what are the options? I'm assuming "Wilderness" means monsters spawn?

vernal crest
soft yew
#

alright- thanks ^^

lucid mulch
#

Custom farms shouldn't really be replacing maps and using the additional farms mechanic instead

vernal crest
#

@outer glacier

vapid oak
#

(RSalute)

sweet niche
#

Hello, I have a question or more like a problem related to Stardew Valley maps (apologies if this isn't where i should ask this). I'm making my own mod and I want to change a part of the map with my own TileSheet (I'm using Tiled) wich works fine and all but stardew also has these so calles "TileData" tiles that warp you into a certain room, house etc. My problem is that when I copy the Edited map over to my mod folder and load into the game, everything except the "TileData" tiles work. Tiled is telling me that I'm missing "TileData.tx". Any help is appreciated, thanks in advance.

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.

sweet niche
ocean sailBOT
lucid iron
#

Which mod is your mod?

#

Wizard to Crowley?

sweet niche
#

yes

lucid iron
#

Oh did you Load over Maps/Forest bolbphase

#

You would have bonked everyone else's edit (not that there is anyone else in this mod list)

sweet niche
lucid iron
#

To answer your initial question though TileData isn't a separate file usually, you create a grid aligned Tiled object named TileData and then you can put properties on this object

vernal crest
#

I think the only time I've ever seen a reference to TileData.tx it was because someone had somehow managed to create a TileData template and the game did not like that.

lucid iron
#

Anyways please do not load over all of forest, use EditMap instead to apply only what you need

vernal crest
#

Oh yeah Sage did that. Took a vanilla TileData, turned it into a template, imported it into their map. It breaks things.

#

I don't know why Tiled would be asking for a TileData.tx

#

(You should absolutely listen to chu and not Load the Forest map)

sweet niche
#

okay oof I did the stupid then. This is my first try at this

blissful panther
#

(Incoming Quill self-deprecation message? SDVkrobusgiggle)

lucid iron
fading walrus
#

It's not the stupid RBops

Like you said, you're a beginner, and this was a valid way to do things before editmap became more common

#

(And before more people started wanting to patch locations)

lucid mulch
#

Reminder that stardew doesn't natively understand tmx files and wont do many of the fancier features
while smapi does provide a translation layer between tmx to become the native xTiles format, it wont do the fancier features (With the exception of tile rotation which gets encoded as tile properties and smapi has functionality to have the draw code understand and apply it)

fading walrus
lucid iron
#

Here's a smol example where i put 2 chimkins in the sewer

blissful panther
fading walrus
#

Poor chimkins

lucid iron
#

No they r friends with krobus

#

:)

vernal crest
#

What is it alab

sweet niche
lucid iron
#

Yep that's the idea

fading walrus
vernal crest
#

Yup and that lets other mods edit other parts without your mods fighting each other

fading walrus
#

I was admittedly imagining two chickens on a raft

blissful panther
# vernal crest What is it alab

tl;dr, GitHub will now build my mods for me, and provide a nice little attestation like that along with a file hash to verify that people can theoretically use to verify the version they got came directly from me.

sweet niche
vernal crest
tiny zealot
#

similar at least

blissful panther
#

Oh, that reminds me, @calm nebula! I discovered something about the strong name signing! Did you know strong name signing actually only signs the manifest portion of the assembly, and not the actual code part?

calm nebula
#

No

#

What

#

Mero

#

Mrow

lucid iron
#

What r some engines that do support tmx natively and does let you use the fancy stuff

sweet niche
# lucid iron Yep that's the idea

alright i'll try doing that
other question tough. the tile data file for the door to the wizard tower is 1x1 tile big. my version of the door would need to make it 1x2. can i just strech the og tiledata tile?

vernal crest
#

Yup

lucid iron
#

Just remember need grid aligned

#

[[modding:maps]]

lucid iron
#

Follow the info about snap to grid

fading walrus
calm nebula
#

Yes

serene moat
#

I got a question. There is someone who wants to translate my mod, but instead of just translating the i18n default file and uploading it, they want to upload my entire mod. It feels a bit wrong to me, I would lose out on downloads and traffic, since you wouldn’t be required to download the original version. Is this a common thing?

calm nebula
#

It's not a common thing

vernal crest
#

Not anymore, nope

sweet niche
serene moat
#

Is there anyway I can stop them? They seem very hell-bent on doing it

fading walrus
vernal crest
#

Yup, just tell them no.

serene moat
#

I have told them no

fading walrus
vernal crest
# sweet niche like this

You can, but like chu said you have to turn on snapping to grid because right now your object is not the right size or in the right place.

fading walrus
#

Tell them you only accept i18n translations with just the i18n, and that's non-negotiable

lucid iron
#

Are they bad at english? It's possible that they don't understand what i18n is

serene moat
#

Alright, I’ll gather screenshots etc and report if they actually upload it. I have made it very clear that I don’t want them to upload the whole mod, only the i18n

lucid iron
#

And ofc make sure you don't have stray plain text in your content.json & includes

serene moat
#

They are Russian and use a translator and know how to translate i18n

lucid mulch