#making-mods-general

1 messages · Page 361 of 1

vernal crest
#

Events are not the same

#

You can put events in the backwoods too

red egret
#

I thought so

slow basin
#

now i wanna make an elf that has tea with the wizard every weekend and is mysterious

red egret
#

Robin has one there

brave fable
#

without having looked into it, i'd imagine it's banned because of the blocking log in front of the woods, which doesn't have an alternative schedule entry the same as the railroad and jojamart do

vernal crest
#

They are not affected by the pathfinder because you control all movement in an event

red egret
#

They climb over the log /jk

vernal crest
#

Could you just edit the backwoods to allow NPCs to pass through the fence and cliff and then the disconnect would be fixed?

gentle rose
vernal crest
#

I know it wouldn't be desirable because you'd still have the cycles issue

#

I was just curious lol

gentle rose
#

it would! as long as any warp that might be used in a schedule is reachable from any other warp

#

(you could also make the pathfinder treat the two parts of the backwoods like separate maps I guess, but that would be a both hacky and tricky rewrite haha)

vernal crest
#

I was never bothered by Coal Point Farm's magical warping from the farm to the mountain so I certainly would not bother to make backwoods passable lol

slow basin
#

omg i never noticed that

#

they do just warp to the mountain dont they

#

cant believe they got fast travel

lucid iron
#

hm so i can just make mannequin with a (nearly) empty farmer sprite

#

the sleeves and shoes are broken tho

winged crow
#

Hi! I'm having issues with a farm map that I'm trying to edit
I just want to completely remove a fence, I assumed that by erasing the tiles in the .tmx file would work, but Tiled is asking me for tilesets, I've tried to do it without locating the tilesets, and locating them but not moving them to the mod folder, but it's not working

Here's the log:
https://smapi.io/log/71d5c742709b466584771c2e76220b5e

ocean sailBOT
#

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

vernal crest
# winged crow Hi! I'm having issues with a farm map that I'm trying to edit I just want to com...

You have to edit a map with all the tilesheets present in the folder at the same time. If you don't and you locate the tilesheets that are in another folder, you will get a tilesheet climbing error. If you don't and you just let it have missing tilesheets, you will break the tile IDs as you have done in this log. You need to put all the tilesheets in the same folder as the map, open it in Tiled, edit it, save it, move all the tilesheets back out, and test.

winged crow
#

alright, I'll give it a try, thanks!

devout otter
#

So question: can a text operation be nullified by another EditData?

#

So if I append text to Strings/StringsFromCSFiles:TV.cs.13191, for example. The under that I do a simple patch edit to Strings/StringsFromCSFiles:TV.cs.13191,

#

would the text append be overwritten simple patch, or would it do the simple patch first, then the append?

spice sapphire
#

Hi, I have a question, hoping you could give me some insight.

I use a lot of mods that use content patcher, and some of them are causing slowness in some transactions.

I'm making a mod that tells me which CP elements load in each map, but I can't get either smapi or content patcher to give me that information.

First, is this possible? And if so, what would you recommend?
Thanks.

vernal crest
patent lanceBOT
#

@hallow prism: see if you have the field uber pls (12h ago)

royal stump
hallow prism
#
              "CustomFields": {
                  "UIInfoSuite.ExtendedData/DisplayName": "{{i18n:MtVapiusWildTreeBirchTreeName}}"
                },```
I should then be good i believe
gentle rose
vernal crest
lucid mulch
#

The content patcher build in that thread exposes the info to profiler

gentle rose
#

oh, nice! but only if it uses your content patcher build?

lucid mulch
#

the functions needed can't be harmony patched due to how content patcher calls them

devout otter
gentle rose
#

(I misunderstood your initial message SDVpuffersquee)

vernal crest
lucid mulch
#

The timing of Fields vs Entry vs textoperation are all internal to that individual change/patch, but the order is TargetField then Entries, Then Fields, Then TextOperations then Move operations

#

but if you have multiple patches, it doesn't matter if the patch used text operations vs entries, the ordering is dependent on the patch order

lucid mulch
# gentle rose (regular profiler doesn't go into detail about content packs and what they're do...

the custom build exposes the info like

{
    "OccuredAt": 2358703.6042,
    "Metadata": {
    "Duration": 2.816,
    "ModId": "Aimon111.FarmhouseRoomsPIF",
    "EventType": "ApplyLoad",
    "Details": "Aimon's Farmhouse Rooms - Rooftops,Attics & Balcony (PIF) > Load Mods/Aimon111.Rooftops$AtticsPIF/Balcony",
    "InnerDetails": [],
    "Type": "Duration"
    }
},
{
    "OccuredAt": 2358706.504,
    "Metadata": {
    "Duration": 8.4264,
    "ModId": "Aimon111.FarmhouseRoomsPIF",
    "EventType": "ApplyEdit",
    "Details": "Aimon's Farmhouse Rooms - Rooftops,Attics & Balcony (PIF) > EditImage Mods/Aimon111.Rooftops$AtticsPIF/Balcony #1",
    "InnerDetails": [],
    "Type": "Duration"
    }
},
calm nebula
#

glances left, glances right

#

So can I use Farmhouse as a path point

lucid mulch
#

Warping into Farmhouse is semi fine, though you would end up at the front door, having the warp back out survive the various mutations that happen is more spicy

#

Oh path point

#

I think its possible but would be cursed, its not forbidden in the pathfinding cache, nor is it actually marked ExcludeFromNpcPathfinding

#

and despite technically being a building interior, it would still likely be considered a full location for the purposes of being in Game1.locations

calm nebula
#

I do use FarmCave and I had a theoretical mod that used Greenhouse

#

But eff compat on that one

brave fable
#

if you're lucky you can use Shed9a9f80ef-c9ac-4a62-8728-fdfb78fa21c3 in your schedule

calm nebula
#

Can i?

#

Pretty sure macroscheduler doesnt accept that one

#

I'm not being serious btw

#

I assume bluebs isn't either

torpid sparrow
#

When did atra upgrade to 8th grade physics

hallow prism
#

@acoustic summit i was wondering (and let me know if you prefer questions asked elsewhere), but i have some rewards that don't appears when donating items, is it possible that, despite them having specific unique ID, they aren't showing because the specific item id is stuff that the museum can already donate? like treasure totem or something?

acoustic summit
#

Hi Lumina, no that shouldn't be the case I'll look into it; Are you using content pack or content patcher format for the rewards?

hallow prism
#

content patcher

#

do you want me to send you the pack?

acoustic summit
#

No thats alright 🙂

hallow prism
#

to elaborate, i have no issue getting similar items as reward with my custom items, so it's possible the issue is elsewhere and unrelated

#

items i have trouble with is TreasureTotem and MixedFlowerSeeds

#

so either it's that, or the vanilla items using string ids behaving strangely

frigid zenith
#

hi again! I was wondering, do you know if its any easier to edit tooltips? like, after interacting with the item on the hat, edit the hat tooltip to indicate that item is "attached" to it. maybe something like how enchantment tooltips are shown? idk xD

brittle pasture
#

looks like I get to use this screenshot again

#

though, hmm, attachment slots is actually an overridable method on Item, not a Tool thing

#

good news, you probably don't need to transpile drawHoverText

#

you can patch Item's attachment slots functions to do your stuff only if it's a Hat with attached items, however you're attaching them

#

you can copy from Tool's own version of those functions

candid veldt
#

I'm currently working on a NPC who is a mermaid and I wanted to ask if anyone has any mods that add or change the mermaid lore, or give any of the existing mermaids names so I could avoid contradicting them or to reference them. There's a few that are easy to spot but I'm wondering more about mods that maybe have an offhand line somewhere that would be easy to miss.

tiny zealot
#

unreleased WIP expansion Malha is chiefly about mermaids, and my memory tells me that it gives the singing one from vanilla's mermaid show a name, but obviously it's not published yet so it may not be a problem for you

pine elbow
#

i need tutorial for making a basic mod with json i dont know how to use json yet

tiny zealot
#

found it

pine elbow
#

is walking, kiss and wedding sprites are enough for a custom npc?

#

like i am not planning for something extra for now

torpid sparrow
#

sleeping sprite

pine elbow
#

oh right

torpid sparrow
#

and if you're doing those romanceable sprites, flower dance as well maybe

#

unless they're not danceable

pine elbow
#

yup im not planning that (im lazy for the dress 🙏)

torpid sparrow
#

fair lol

pine elbow
#

it so confusing their is so mcuh to do

torpid sparrow
#

what are you trying to make?

quartz arrow
#

we have so many mermaid mods in the works LOL

#

Krit has one, I'm muddling through one- all the mermaids

#

our mermaids should all be friends obviously

elfin palm
#

ive been searching everywhere but is there a map out there with areas highlighted where festivals go? I'm trying to figure out where I can place a hypothetical building and it is so hard 😭 (i'm going to practice making buildings so I can offer that with my sprite comms) I found ones for vanilla and sdve on reddit, but im stressing about accidentally placing it in the way of some event or festival
and I know you're not supposed to touch the way to the mountain from the farm (since thats sacred keg grounds) but its so TEMPTING and open

ornate locust
#

Well mainly NPC pathfinding re: the mountain farm path is why it isn't touched, from what I understand

#

as in, NPCs don't path there, so it's awkward to use

elfin palm
ornate locust
#

Also you can look at the festival map variants in Tiled to see where stuff goes if you need. You can also patch festivals to make sure the building shows up in them

torpid sparrow
#

Do I have to set up my NPC's position in y2 of the festivals as well? Mine won't show up in y2, but will in y1

ornate locust
#

Yes

torpid sparrow
#

How do I do that

tiny zealot
fading walrus
ornate locust
torpid sparrow
#

ah i see thank you!

fading walrus
ornate locust
#

Yeah

#

that's the main problem

fading walrus
#

Man I thought it was just backwoods

#

That sucks

royal stump
#

mountain pathfinding has always been semi-haunted with some off limits areas, though less so in 1.6

fading walrus
#

Mayhaps a custom area in the mountains Thonk

#

Erk

royal stump
#

it does too much magic with path additions

ornate locust
#

Well I think they're talking about Backwoods, aren't they? The path to the mountain from the farm

royal stump
#

yeah, backwoods is entirely off-limits, but the mountain itself is somewhat less used due to past issues + off-limits bits

#

in my vague impression anyway

elfin palm
fading walrus
#

(I do believe I'm getting mixed up with my location names, I'll see myself out)

elfin palm
#

darn, time to make a house in the road tunnel lol

fading walrus
#

You'll want tiled anyway

#

For adding map patches

ornate locust
#

Yeah Tiled gets the house on the map

elfin palm
ornate locust
#

And if you don't need it to work, you just want it for an example, you can just screenshot it in Tiled.

ornate locust
#

like this is a Tiled screenshot of my building. The lighting isn't full ingame, but you still see it in its natural environment

candid veldt
ornate locust
#

I think that'd be good enough for a commission example

candid veldt
ornate locust
#

Just be sure to turn off grid lines

elfin palm
pine elbow
#

im beginning to belive

#

on another note eminem music is fire

keen seal
#

I’m a little lost… reading the guides on creating events and I get the anatomy of it pretty well but I can’t find anything that says what file to put it in? Should it be in my content.json as a change to the Data/Events/WizardHouse?

brittle pasture
#

basically yes

#

it doesn't have to be content.json, it can be a json file that's included in content.json

keen seal
#

yeah that’s what I’ll do

#

Thank you!

torpid sparrow
#

anyone know how to format dialogue questions in i18n?

lucid iron
#

There's nothing special about it but perhaps split it up to several i18n keys

torpid sparrow
#

yur okay will do

uncut viper
#

remember that the game has no way of knowing whether you used i18n tokens or not. it has no idea about any token usage. all it ever sees is what the i18n token turns into from your default.json

torpid sparrow
#

Whew okay, done everything. I'm updating my mod for i18n (clearly). Do i have to add something in the content.json or anything to make it work? Or does anyone who has a translation document automatically use it?

round timber
#

no, nothing special besides having the i18n folder with the default.json inside

#

and of course having all your tokens set up

torpid sparrow
#

yay okay thank u

round dock
#

Nomori has an i18nifier btw

sullen sundial
#

I am working on a mod. I would like the watering can to not be given to the player at the start, and instead, for it to be given by an npc in an event a few days later. Is this possible?

brittle pasture
#

with C# anything is possible

#

with content mods only, hmm, I dont think so

torpid sparrow
sullen sundial
#

That's what I was thinking. I already have a decent amount written in C# for other parts of the mod. Would the main thing to do be, disabling the daily mail that tries to give the player tools they lost?

brittle pasture
#

I suppose you can run the RemoveItem trigger action, but then it will show up at Lewis' lost and found

#

you can do something like remove the watering can from the farmer, add it to a phantom global inventory so the game thinks it's still there, and then remove that can after the event

uncut viper
#

the player will also get a letter every day about the missing tools

brittle pasture
#

though from a gameplay standpoint do you just not have the farmer do any crop farming for the first few days SDVpufferthink

uncut viper
#

just postfix Game1.fixProblems() and remove the watering can from the lost and found and remove the mail from mailForTomorrow

sullen sundial
#

It's a bit complicated to explain, but the mod has players start with crops and sprinklers already placed.

#

thanks for the help! totally makes sense. i'll follow up if i have more questions

brittle pasture
#

hmm wonder if that or global inventories are cleaner

#

my solution wouldnt even require harmony theoretically

uncut viper
#

it would actually be better to prefix fixProblems to put a watering can into the lost and found first, and then remove it in the postfix

twin wadi
#

is there a category for artifacts? (for gift tastes)

uncut viper
#

unfortunately fixProblems does iterate every location first, which is sucks, but then it checks lost and found first before checking all global inventories

twin wadi
uncut viper
#

item_type_arch context tag gift taste

twin wadi
#

thank you button!

keen seal
#

(making an event)

urban patrol
#

i seem to recall reading once about a list of random adjectives/nouns/etc built into the game? i don’t remember if they were tokens or what though. anybody know what i’m talking about

uncut viper
#

theres the [PositiveAdjective] tokenizable string, and also one for getting the propert article (a or an) for a word, if thats what you mean?

urban patrol
#

hm, might be the first?

uncut viper
#

you can also ofc just use [LocalizedText] to pull anything from Strings\Lexicon

opaque field
urban patrol
#

i had the idea for a mad libs-style event where you write a story with an NPC by picking from a few randomly generated options

#

and i thought it would be cool if the event never played the same way twice by presenting you with different nouns/adjectives/etc each time

opaque field
#

I did a 'choose your own adventure' type style format where choices you make lead to different 'paths'

urban patrol
#

let me check out strings/lexicon

opaque field
#

plz let me know how the mad libs idea goes if you try it cuz that sounds SO FUN

urban patrol
#

lol if i pull it off i’ll let you know

keen seal
#

I put all my emote commands backwards SDVpuffercry 😂at least that’s an easy fix

urban patrol
uncut viper
#

oh i coimpletely forgot about dialogue replacers

urban patrol
#

is this still true as of 1.6, anyone know?

uncut viper
#

which part?

urban patrol
#

that they seem to be unimplemented?

opaque cobalt
#

Do I need both of these commands in a json file?

//APPEARANCE DATA
{
"Action": "EditData",
"Target": "Data/Characters",
"When": {
"Weather |contains=rain,storm,snow": false
},
"Fields": {
"Penny": {
"TextureName": "Penny_{{Season}}_{{Random:Sun, Sun_2, Sun_3}}"
}
}
},
and
// OUTFIT LOADS

    {
        "LogName": "Load Penny's Outfits",
        "Action": "Load",
        "Priority": "High",
        "Target": "Portraits/Penny_Spring_Sun, Portraits/Penny_Spring_Sun_2, Portraits/Penny_Spring_Sun_3, Portraits/Penny_Spring_Rain, Portraits/Penny_Spring_Rain_2, Portraits/Penny_Spring_Rain_3, 
                Characters/Penny_Spring_Sun, Characters/Penny_Spring_Sun_2, Characters/Penny_Spring_Sun_3, Characters/Penny_Spring_Rain, Characters/Penny_Spring_Rain_2, Characters/Penny_Spring_Rain_3",
        "FromFile": "assets/{{TargetPathOnly}}/{{TargetWithoutPath}}.png"
    },
lucid iron
#

yes these are individual patches

#

aka bits that go under the Changes list in a content patcher mod

opaque cobalt
#

How does appearance and outfits work though? They would be loading the same files so that's where I got confused. I haven't touched this file in a good few months while I did all of the actual files for it and can't remember if there was a good reason why I'd have appearance data and outfit data

brittle pasture
#

the second entry loads the pngs, the first entry tells the game to use those pngs

opaque field
#

as someone slowly learning c#, what are benefits of using it vs content patcher?

brittle pasture
#

you are not limited by the technologies of your time the framework you use

opaque field
#

I like using CP very much so - but I also thought it would be a neat way to practice the skills I'm learning via making a little mod using C# instead XD

brittle pasture
#

imo if you're going to be doing the same thing you do in CP it's not that useful

opaque field
#

I wanna try something specifically not-doable in CP

brittle pasture
#

if not, then it's indeed more powerful. like actual foreach SDVpufferrad

opaque field
#

but I'm not exactly sure what that kind of thing would be since CP seems to cover so much haha

brittle pasture
#

C#'s realm are usually new gameplay mechanics that aren't exposed by any of the game's assets

opaque field
#

I'll keep poking around, I'm sure there's something I wanna do that needs C#

#

hmmm gameplay mechanic you say.... that... that I could maybe work with

#

ty!

#

like spells or blessed/cursed objects that do stuff?

hard fern
#

🤔 i know people like to make books that you can read and learn recipes from now, so how would i go about doing that...

#

im thinking of making the player recieve a pizza cookbook for reaching a certain amount of hearts with... uh. Sam, i guess.... shane seems like the type who wouldnt bother...

lucid iron
#

Sometimes this is someone else's C#

brittle pasture
#

BETAS has book read triggers
you technically don't need it to make custom books that does stuff, but reading books in the vanilla game only adds a mail flag, and to give recipes you need another trigger which at the fastest runs on location change

lucid iron
#

If u don't mind letting player "sleep and absorb the knowledge" then u can do it in vanilla

brittle pasture
#

correction: adds a stat

lucid iron
#

I think spacecore also has item used trigger

#

Which isn't limited to books

hard fern
#

yeah i dont mind making the player sleep. it's simple enough

keen seal
uncut viper
#

Special Power Utilities also adds specific functionality for recipe books

#

mostly to account for the fact that if the player reads your book and then in an update you add more recipes, the vanilla way wont give them the new recipes nor will any existing trigger actions fire again to give them

opaque field
uncut viper
#

also you'd have to manually write out every single recipe you want to grant

hard fern
#

🤔 in that case i might use special power utilities. i dont know if i'll update the mod at a later time

uncut viper
#

SPU will also give the HUD pop-up like "You learned X amount of recipes" SDVpufferthumbsup

#

(which is customizable)

calm nebula
#

Three cakes

lucid iron
#

Button offering chocolaty and fruit cakes

hard fern
#

sigh why did i make so many weird pizzas

urban patrol
#

i found the dialogue replacers for the adjectives, nouns, and places, but how would i get the verbs and prepositional phrases that are also in strings from CS files?

#

(Dialogue.CS.722 through 747)

lucid iron
#

Does the place you want to use these support tokenized text

urban patrol
#

it's in an event, so i think so?

#

correct me if i'm wrong

uncut viper
#

events support tokenizable strings yes

hard fern
#

🤔 do i need to do anything special to make an item a book or will the magic im going to do to it turn it into one

uncut viper
#

must be category -102 or -103

hard fern
#

oh right i forgot about those...

#

Reading this will allow you to gaze into the infinite pizza abyss

urban patrol
#

would defining this as a dynamic token work?

    "Name": "Verbed",
    "Value": "{{Random:\Strings\\StringsFromCSFiles.722, \Strings\\StringsFromCSFiles.723, \Strings\\StringsFromCSFiles.724, \Strings\\StringsFromCSFiles.725, \Strings\\StringsFromCSFiles.726, \Strings\\StringsFromCSFiles.727, \Strings\\StringsFromCSFiles.728, \Strings\\StringsFromCSFiles.729, \Strings\\StringsFromCSFiles.730, \Strings\\StringsFromCSFiles.731, \Strings\\StringsFromCSFiles.732, \Strings\\StringsFromCSFiles.733, \Strings\\StringsFromCSFiles.734}}", 
            },```
#

and then using {{Verbed}} inside of a speak command?

hard fern
#

tempted to split the npc list in half randomly for those who like pineapple pizza and those who don't

uncut viper
#

actually, ignore me, i thought that was a big i18n token

#

i dont know about the slashes at the front

#

but its worth trying

urban patrol
#

hmm okay i'll give it a whirl

#

regarding i18n though, would i have to split up the speak command into two i18n entries around the {{Verbed}} token?

uncut viper
#

i dont know what exactly you're trying to do with the speak command or how your i18n is setup but i assumed your intent was to use this {{Verbed}} token inside a LocalizedText tokenizable string

#

is this correct

urban patrol
#

this is what i have for the event command right now:
/question null \"How did Niko's characters fall in love?#They {{Verbed}} together until sunset.#They {{Verbed}} together all day.#They {{Verbed}} every night {{PrepPhrase}} their home.\"

not sure if i need to put LocalizedText in front of each question answer

uncut viper
#

that would just end up writing the literal text They \Strings\\StringsFromCSFiles.722 together until sunset. (for example)

urban patrol
#

oh okay

uncut viper
#

so yes if you want to actually load that string, it must be inside [LocalizedText]

#

also, your translation keys for them are messed up. Strings\\StringsFromCSFiles.722 is not an asset

#

i assume you meant Strings\\StringsFromCSFiles:Dialogue.cs.722

urban patrol
#

oh good catch, it should be Dialogue.cs.number

#

yep

#

to make sure i understand the process right: my dynamic token accesses the keys in StringsFromCSFiles, and returns one of the keys randomly. then the event script, using LocalizedText, reads the token {{Verbed}} as the key, then localizes it and converts the output into the value of the key?

#

and if i were to i18n the whole sentence, it should look like \"{{i18n:EventName.1}} [LocalizedText: {{Verbed}}] {{i18n:EventName.2}} with the first i18n value being "They" and the second being "together until sunset"

#

although, that might pose a problem for translators whose languages don't use that kind of SVO structure, or pronouns...

uncut viper
#

you want your event script to be They [LocalizedText Strings\\StringsFromCSFiles:Dialogue.cs.722] together until sunset.
therefore, you want it to be They [LocalizedText {{Verbed}}] together until sunset.
you can either split up the i18n or pass the token value into the i18n by doing {{ i18n: EventName.1 |Verbed={{Verbed}} }}

urban patrol
#

okay, thank you! it feels like that second option would be more flexible for translators, maybe?

uncut viper
#

¯_(ツ)_/¯

#

maybe. i dunno. im not a translator so idk what they would find best

urban patrol
#

yeah true. i'll just keep it this way until someone comes to me and says they have a better way to do it lol

hard fern
#

i absolutely cannot find how to add an item to a universal gift taste anywhere I dont know what to search for on the wiki 😔 does anyone know how

latent mauve
#

There's an example in the content patcher documentation's Text Operations section, IIRC

wind basalt
#

hello!!

latent mauve
#

Yep, it's right there under Append, second example

wind basalt
#

Anyone has an idea on how to make a sword in CP have the enchantments Crusader and vampiric?

uncut viper
#

as far as i know you cannot make a weapon that comes pre-applied with enchantments

wind basalt
#

no way :(

#

i'm pretty sure it's possible, maybe not with CP but with C# or smth

uncut viper
#

when 1.6.16 releases you'll be able to apply enchantments to weapons that are spawned via item spawn data like in shops and stuff, but that still wont be attached to the weapon itself (but it may be good enough)
however thats a ways away

#

well i mean literally anything is possible with C#

golden basin
#

im exicted to have it out!

wind basalt
uncut viper
#

you have to write and compile C# assemblies

merry rampart
#

I completely forget where to find the different colors that flowers can be....

#

now that ive been staring at it i dont think its anywhere in the tilesheets x.x

wind basalt
#

And how do i mix that with a cp mod

brittle pasture
#

you pack them as two separate mods in the same zip

hard fern
uncut viper
#

it'd have to be two separate mods

wind basalt
#

that looks messy

#

alright

brittle pasture
#

well it can be in one folder

wind basalt
#

and can you guide me towards doing that with c# ? absolute beginner here and tutorials are NOT helping i've been following them but it's extremely unclear

brittle pasture
#

they dont need to be two separate folders in the Mods folder

uncut viper
#

C# is not exactly something that can be taught or guided on in just a handful of discord messages

#

if you don't know any c# whatsoever then people recommend the yellow book which has some command I don't remember

wind basalt
uncut viper
#

but if you know the fundamentals, then I'd just postfix the item registry item constructor or maybe the weapon constructor

#

And apply your enchantments if it's your sword

wind basalt
#

I have basic C# knowledge with Unity

brittle pasture
#

!startmodding how much of the C# guide you went through and did you get a basic button press mod working

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.

brittle pasture
wind basalt
#

and to edit item instances?

#

just the entry key?

brittle pasture
#

in this case what button suggested is use Harmony patching to edit the behavior of the ItemRegistry.Create function or the constructor of the Weapon class

#

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

brittle pasture
#

!decompile do this if you haven't

ocean sailBOT
calm nebula
#

(Or do the thing where you hook the inventory changed and edit the weapon there.)

#

(Or look at how inherent enchantments work and edit there.)

uncut viper
#

inventory changed wouldn't help if you wanted it to have the enchantments in a shop or reward chest

brittle pasture
#

to be fair do you care if it's not literally in your hand

#

I suppose tooltip is borked

uncut viper
#

for making purchasing decisions yes I do

#

i also skip reward chests if they don't seem worth the inventory space

lucid iron
#

What about wait for 1.6.16 when item spawn fields have enchantments

uncut viper
#

that only helps if you know the weapon will only exist via item spawn fields

#

harmony ensures every instance of that sword will always have the enchantments

hard fern
#

it works... pizza is here... now to actually put in the mail for it

calm nebula
#

Fine, edit instances in shop and item grab menus too

#

Also like

#

How do you put an item in a volcano chest without c# anywyas

lucid iron
#

I don't think that's dehardcoded or to be dehardcoded right

drowsy pewter
uncut viper
calm nebula
#

You can add the enchantments when you spawn your instance then

latent mauve
torpid sparrow
#

sam and shane cheered

hard fern
#

SDVpufferflat it appears i did not do this correctly

uncut viper
#

missing the item id before the itemid

hard fern
#

success

uncut viper
#

what happened to MODDED TES

hard fern
#

um

uncut viper
#

do we not talk about them anymore SDVpufferpensive

hard fern
sly plinth
opaque field
#

me toooo

latent mauve
#

The cynic in me wants a "fruit" pizza for Demetrius that's just tomatoes in various forms.

opaque field
#

give him chunky salsa and call it fruit salad

proven spindle
#

I love pineapple pizza

#

But I'm allergic to pineapples

#

The suffering is eternal

hard fern
#

whoops accidentally forgot to add the mod file...

#

😔 i love pasta and pizza but im allergic to tomatoes lol

#

i kinda want to frame this and put it on my wall.. my beautiful mod page banner, obscured by the UI and crunched by nexus...

north shard
#

@lucid iron

hard fern
#

wow the beast games again... 2nd time ive seen that in general

tiny zealot
#

thank u boncher

opaque field
#

Shows I have mail but when I click it nothing happens. No error in smapi.? I feel like I saw something about this earlier

tiny zealot
#

probably you (or one of your other mods) added a mail flag for tomorrow or the mailbox instead of received

worn olive
#

Hi! I was wondering if anyone had info on modding for changing keybinds that can't normally be changed? In particular, I'm trying to make it so l-click and r-click can have their input options changed. I've found InputTools, but don't know what to do next... anyone know?

opaque field
#

Ahhhhh (it would be me) action is addmail current with trigger being dayending?

brisk wedge
#

is there a way to make a cp mod that gets built + released + automatically put into your mods folder using csharp sln files?

lucid iron
gaunt orbit
brittle pasture
#

whoops forgot the reply

brisk wedge
#

oh hm does this work even if there is no csharp component?

#

likes its a pure cp mod, but I'm lazy and dont want to zip and stuff myself...

lucid iron
#

I think just writing a shell script to do it is the right option

opaque field
#
                "{{ModId}})_FarOffMemory": {
                    "Id": "{{ModId}}_FarOffMemory",
                    "Trigger": "DayEnding",
                    "Action":"AddMail Current {{ModId}}_FarOffMemory"``` is there something wrong with how I have this set up?
#

I also tried sending it via dialogue using #$action AddMail Current FarOffMemory

#

and it shows up that I have mail but no mail actually happens haha

vernal crest
vernal crest
#

If you have actual mail, you've done your data/mail entry wrong

worn olive
opaque field
#

Okay it's supposed to send a letter to actually received and read by the player

vernal crest
#

Are you sure your data/mail entry key is {{ModId}}_FarOffMemory?

opaque field
#

Here's the entry in my mail section: "{{ModId}}_FarOffMemory": "{{i18n:TheWolf.FarOffMemory.1}}^^{{i18n:TheWolf.FarOffMemory}}^^{{i18n:TheWolf.FarOffMemory.3}}[#]FarOffMemory"

#

do the dialogue keys need to be the same as the mail ID?

vernal crest
#

The i18n keys? No, they can be anything you want

#

Do you still have the trigger action and the dialogue both adding mail?

opaque field
#

no I removed the dialogue one - it's just the action trigger now

gaunt orbit
ocean sailBOT
worn olive
#

Many thanks <3<3<3

vernal crest
lucid iron
# north shard

I'm bit confused about what you hope to achieve instead can u describe

gaunt orbit
#

c# stuff has no "documentation", generally you just dig around the game code, experiment a bit, and talk to other c# modders when you gets stuck

lucid iron
north shard
lucid iron
#

-1% every 10s ok I'll try

#

Ok i see the problem the check for proc's is > 0

lucid iron
#

this bug is exclusive to using the Timer proc, which is why i didn't notice initially (i was using Footstep)

north shard
lucid iron
#

idk when ill be able to put it on nexus unfortunately, end of month perhaps

north shard
#

I noticed in the Pack Possum that we can do "Flip": "FlipHorizontally", but that is not mentioned in the documentation.

lucid iron
#

i probably forgor to write it down blobcatgooglyblep

#

Flip is SpriteEffects which can be None FlipHorizontally FlipVertically

#

you can use it in Motion and AnimClips

quartz arrow
quaint coyote
#

Is it possible to set a config setting in another content patcher mod for the sake of compatibility? It'd be easier than retelling every player who misses the installation stage where I tell them to the first time.

uncut viper
#

you cannot set another mods config, no. not unless you're using C# and reflection to get there.

quaint coyote
#

Alright.

lucid iron
#

whats your particular usecase?

quaint coyote
#

I'm working on the update for StardewArchipelago to handle the newest version of Stardew Valley Expanded, and I need the Galdoran Gem Museum Movement setting to always be on, because that allows it to be donated.

#

I probably should've added, this is mostly a c# mod, so reflection is not off the table.

#

The issue was just that SVE's settings are in content patcher.

vernal crest
#

Could you not just edit the thing that needs to be donatable to set it as such yourself, overriding SVE's setting for it?

opaque field
#

other than make sure the mail exists correctly, do I need to do anything other than #$action AddMail Current {{ModId}}_TheMailName for it to be sent via dialogue command?

quaint coyote
#

I probably could, but I'm pretty novice level at this. Would this be an EditData action in content patcher I should look into?

vernal crest
#

I think so (Button please correct me if I am missing something)

uncut viper
#

It Depends™

#

the config might be in the CP pack but theres no telling how its used or what it changes without, yknow, checking

#

for all i know SVE might load the CP config inside its C# component and use it there

vernal crest
uncut viper
#

so, first step is finding what that config setting controls in the CP pack

quaint coyote
#

That would be the easy solution for the gem. Though to be honest, I need to edit a setting in the Jasper mod for StardewArchipelago to work with both it and SVE too.

lucid iron
#

yea need to find what editdata is being controlled by the setting and then sorta just redo the edit yourself

#

if u r in C# tho, it could be possible to reflect into the config instance cp made for sve

#

but that is more effort for questionable gain

uncut viper
#

thats a lot more work

#

you'd have to do a lot of reflection just to get there and even more to get all the instances and types you need

vernal crest
#

It's used to control which patch is used to add the Galdoran Gem to Data/Objects. If false, the gem is type none, category 0. If true, it's type minerals, category -2.

lucid iron
#

still, if u bump into similar problem but on a C# mod, you may have no choice

quaint coyote
#

I was already trying to reflect into it, tbh, but I was failing so I was hoping for a more direct answer.

vernal crest
#

So if ahhh reptar just edits it in Data/Objects afterwards to set it to type minerals, category -2, they can override what SVE does I think

calm nebula
#

(That said, I'm not sure I would personally appreciate a config setting getting overridden)

#

Tbh

uncut viper
#

i wouldnt either. im assuming someone installing archipelago is going to read everything it does, though, and this would be disclaimed

quaint coyote
#

Under normal circumstances I'd agree, but the mod I'm working on is a randomizer, and we can't just have players not able to access a location.

calm nebula
#

Can you exclude specific things from randomization

quaint coyote
#

Yeah but I'd prefer to give that option to the players. They can technically disable any number of locations already.

#

Or they can go crazy and enable some like 3,000 locations.

lucid iron
#

Why is the gem being not donateable a problem anyway

quaint coyote
#

This item was already one I was going to warn them about anyways, as it drops off a boss monster, and some players may not want to have to kill it twice.

#

Well, theoretically, you could donate the gem and gain the ability to plant, say, parsnips. And you might need to harvest a parsnip or sell a parsnip to reach your second pick upgrade, which would prevent you from meeting the dwarf, etc etc. There's always a chance they wouldn't need to do the one location, but if their goal is like perfection, grandpa's evaluation, or allsanity (do literally everything you can), they most likely will need to in order to win.

#

All that being said, it's also possible to donate the gem and just get some retaining soil or something basic in return, which isn't required for anything. But I can't have potentially unbeatable games come out of the randomizer is the main concern.

lucid iron
#

Yeah but any mod can add donateable items

#

It seems to me like player's choice to enable this particular donateable

opaque field
harsh bobcat
#

I mean wouldn't you just want to detect if the setting is on or off and if it's off don't randomize stuff to it?

#

oh you are saying you're unsure how to access the setting too

quaint coyote
#

So, a big part of the issue is that while I've only been talking about Stardew Valley so far, this randomizer does way more games than that. There's over a hundred if you include all of the core verified and custom games. So the randomization happens outside of the game and then the player will connect to a server that already knows where all the rewards and checks are.

So, theoretically, it's possible for me to get a Zelda player's hookshot on the Galdoran Gem if they don't remove it ahead of time, and we can't wait for the game to be started to read the settings the player already has, it has to happen before the randomizer is started.

lucid iron
#

I see so the real desire is more complete control over the configs NotteThink

quaint coyote
#

Yeah.

lucid iron
#

That would be quite an undertaking and hard to generalize

harsh bobcat
#

hmm and because of how logic works you couldn't easily just say "if the setting is off put the item somewhere else"; I feel like one "easy" answer could just be "you notify the player that it's unobtainable and you give them the check"

lucid iron
#

I would say just forcing the gem to be donateable is fine

harsh bobcat
#

would break logic too but breaking logic in the players favor is better than making things possibly unbeatable

lucid iron
#

If u do wish to invest more then yeah need to reflect into the whole token system

opaque field
#

Is there a way/a point to making a buff that increases the heart points you get from interacting with an NPC? Had an idea for a strawberryandcreme egg that when you eat it you get slightly higher hearts than usual when you like talk to them and stuff

uncut viper
#

not with CP alone

opaque field
#

AT LAST I have found my implementation practice for C#

calm nebula
#

Yeah. What about moving it to "acquire the gem" instead?

tiny zealot
calm nebula
#

I don't know for sure but I suspect the gem is like that so people don't get softlocked by having too little museum space for example

quaint coyote
harsh bobcat
#

so for that situation you could have it give the player the check

glossy cargo
#

for what it's worth, we do override some mod configs already for similar purposes

uncut viper
quaint coyote
#

In an absolute worst case scenario I just tell them to turn it on. I hope I can figure out how to reflect it, but you can adjust this setting while you're playing without even having to go to the main menu if I can't.

glossy cargo
#

we've used it only in C# so far though. The part we dont know about is the CP version of a config

uncut viper
#

assuming you can apply a specific buff when eating an item

glossy cargo
#

Reflecting to a C# config file was pretty easy. I just know nothing about CP

quaint coyote
#

Kaito Kid is the guy helping me learn how to code for the sake of this project, and he's in charge of the Stardew Valley implementation in general, just not the mods.

uncut viper
#

CPs config system is the entire reason why id recommend just overwriting the patch instead

glossy cargo
#

I only advise, on the mods, I have no time to do it myself lmao

uncut viper
#

or rather its config system when intertwined with its token system

glossy cargo
opaque field
#

I'm looking in the decompiled game code to look for the friendship buff statue thing

uncut viper
#

you can do anything a CP mod does with C# alone. CP is, after all, a C# mod

quaint coyote
#

The suggestion I hadn't told you about yet was to just do a contentpatcher edit myself.

lucid iron
#

Nah u just do a Late edit in AssetRequested

quaint coyote
#

It'd be like three lines to edit the gem directly.

harsh bobcat
calm nebula
#

My guess is that the gem is Like That because the museum has limited space

#

SVE adds items without adding extra space

quaint coyote
#

The newest patch has extra space in the museum.

lucid iron
#

Content Patcher is really just a ton of these but declaratively

calm nebula
#

Ah, okay

lucid iron
#

So u can do ur own ez

quaint coyote
#

And worst case scenario I can add one extra tile myself if I've miscounted how many there are.

lucid iron
#

My example is for Data/Buildings but editing Data/Objects is pretty much the same

opaque field
lucid iron
#

This is in the unpack i think

#

Since it's content not dll

opaque field
#

ahhh okay gotcha.

calm nebula
#

Yeah, another thing to do is to set ilspy search mode to constant and search the string

#

CA code is Like That tbh

#

A lot of numerical constants

lucid iron
#

If u use this buff u would get the statue of blessings buff icon

calm nebula
#

(Ie, knowing what "statue_of_blessings_4" is)

harsh bobcat
#

NPC.grantConversationFriendship is a function, the info about statue_of_blessings_4 is held purely in that function (I don't thing Buffs.json will tell you much about it)

lucid iron
#

I don't think the effect itself is decompiled but i could be wrong

#

Ah there ya go

#

I think there's way to do it with BETAS tho

uncut viper
#

correct

lucid iron
#

There's a npc talked trigger right

harsh bobcat
#

I mean it tells you that the DisplayName is 1_6_Strings:BlessingOfFriendship so Buffs.json doesn't say nothing

opaque field
#

oOOOOHH okay

uncut viper
#

there are several ways to do it via BETAS

calm nebula
#

Tbh a lot of the time I at least go from "okay this has display name that, so search (O)153 in the code"

#

It was worse in 1.5.6 when I would be looking for actual numerical constants half the time lol

opaque field
#

I have been peeking around in BETAS, I just really wanna implement something in C# haha

calm nebula
#

"Where in the code does the beehive do that? Guess I'm searching the numerical constant"

#

"Why do SVE left rock turn into kegs? Guess I'm searching the entire game for the keg's parent sheet index"

#

(That was a fun bug)

#

(Game didn't distinguish between bigcraftable and objects, it was the weed spawn code trying to seasonally swap weeds around)

harsh bobcat
opaque field
uncut viper
#

i realized there are actually no ways to do it via BETAS besides BETAS harmony, because i forgot theres no way to specify which NPC to do the trigger action on

#

so, you might as well learn C# for it

lucid iron
#

I thought the want is any npc

uncut viper
#

correct

#

when they give the gift to Any NPC, there is no way to give friendship to That NPC

opaque field
#

whale, C# practice it is yaaaaayaaaaaaay

uncut viper
#

when they talk to any NPC*

lucid iron
#

Ah i see the issue

opaque field
#

Ok so I more or less borrow the buff from the statue make a new buff sprite, and go from there?

vernal crest
opaque field
#

No :3 did you catch the murderer

vernal crest
#

Well, I identified who the murderer was. No catching though lol

#

So if you want to go scorched earth and just clear all the mail flags your farmer has you can use debug clearmail

#

If you just want to remove one specific flag it's debug action RemoveMail Current <flagToRemove>

#

You can use any of the trigger actions with debug action. And any GSQ with debug gq. It's very handy!

opaque field
#

I am down for scorched earth this playthrough is SPECIFICALLY to test this mod it is saceificable

#

Omg

#

I feel like I knew that

#

But that is so helpful

vital lotus
#

How do one make event like Haley's lost necklace? Farmer get control, then interact with something and the event continue

tiny zealot
#

cursed

vernal crest
#

Get atra to write you some C#

calm nebula
#

Smh

vernal crest
#

Atra is that in SMD?

calm nebula
#

Yes

#

I'm so sorry

opaque field
#

what is SMD?

vernal crest
#

Okay then pester Atra to release SMD xD

calm nebula
#

I'm the least reliable modder in existence

vital lotus
vernal crest
#

I only remember the last word is dehardcoding. Some More Dehardcoding? Stardew Mice Dehardcoding? Super Mario Dehardcoding?

vernal crest
vital lotus
#

Ah well, just gonna make event where it looks like farmer is looking then 🤔

tiny zealot
#

stardew mice dehardcoding
hey, that's my job /lh

light jasper
#

I could be slacking so much more

#

and by slacking I mean being crushed by projects at work but same difference lmao

lucid iron
#

This is the same flavor of slacc as atra so ur in luck

keen seal
#

anyone got any advice for getting the invalid tilesheet “the tilesheet couldn’t be found relevative to either the map file or the game’s content folder” thing to stop? I was able to get it working a few days ago on my test map but I set the proper version up the same and now it’s not working :/

#

have triple checked there’s no directory climbing

opaque field
#

THEMAILWORKS

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.

worn olive
#

!help

ocean sailBOT
#
please get me off discord
vernal crest
worn olive
#

Ah, many thanks!

vernal crest
ocean sailBOT
#

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

vernal crest
keen seal
#

AH

#

i was reusing a vanilla sheet last time, i'm guessing with the custom one i need to Load both the map and the custom tilesheet?

vernal crest
#

Yup that's right

keen seal
#

alright cool, thank you!

#

whattttttt should the target for that be?

vernal crest
#

Maps/<tilesheet file name but without the .png>

#

So it'll be Maps/alluratower

keen seal
#

Gotcha, thanks!

urban patrol
#

i thought you shouldn't have to load your tilesheets? i don't load mine

#

are your tilesheets embedded into your maps?

hard fern
#

You only load them if they're custom tilesheets

#

Since unless you load them they won't exist

vernal crest
#

You don't have to Load your tilesheets but I like to encourage people to do so in order to allow other mods to edit them (with permission) SBVMischief

twilit quest
#

I know there's a way to do this, and I feel silly for not being able to figure it out. I want to create a conditional based on whether the player is married (or has a roommate) or not - what I really want to know is if the spouse room is showing up. I know there's a Spouse token and a Roommate token. I'm not sure how to structure it to say "When Spouse/Roommate is not null".

calm nebula
ocean sailBOT
#

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

vernal crest
#

But this is only with custom tilesheets, as vanilla tilesheets are already in the game

hard fern
#

Ah true, you can just keep them in the folder too

urban patrol
twilit quest
#

I knew it had to be something simple. Thank you, @calm nebula

vernal crest
#

You don't really have to load any images because you can use {{InternalAssetKey}} but see the aforementioned "allowing other mods to edit"

calm nebula
#

although iirc that also includes engagement because the game is Like That

twilit quest
calm nebula
#

it doesn't unless the player has one of many poly mods

twilit quest
#

So
HasValue: {{Spouse, Roommate}},
would be "or", right?

vernal crest
#

I don't think that will work

ivory plume
#

That would be an invalid token, though HasValue: {{Spouse}}, {{Roommate}} should work.

vernal crest
#

That's a single token called {{Spouse, Roommate}}

keen seal
#

The map errors are gone SDVpufferparty

ivory plume
twilit quest
vernal crest
#

It'd be inside quote marks

ivory plume
#

I assume you're doing this in a condition key (like "HasValue: {{Spouse}}, {{Roommate}}": true)? If so everything inside the quotes are part of the token.

junior gorge
#

Hello, i am brazilian and i have a mod ideia but i don't know how to make mods, so i need help, it involves Sprite change and Content Patcher

twin wadi
#

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

twin wadi
#

whew i got the command right finally

junior gorge
twin wadi
junior gorge
#

And i don't want to say what the ideia of mod, just when its ready

twin wadi
#

have you read the wiki tutorial in the startmodding message?

junior gorge
junior gorge
twin wadi
#

what have you done so far?

junior gorge
#

I not started yet, actually i tried about a year ago but... bugs... and i don't know how to make mods

twin wadi
#

have you made a basic content pack yet? if not, this tutorial might be helpful. https://stardewmodding.wiki.gg/wiki/Tutorial:_Your_First_Content_Patcher_Pack

Stardew Modding Wiki

Welcome to creating your first Content Patcher Pack. I wanted a quick and easy way someone could copy, paste, and run their first content patch to prove to themselves everything's working as expected. I always find that creating my first, simple, working code gave me the confidence that I could tinker with things slightly and watch as my code gr...

junior gorge
#

And also, i don't want to say this in public, not even in the server, i need to finish the mod and put into download before

#

It will be a simple mod

round timber
#

what’s the reason youre being so secretive? if youre worried that someone will steal your idea, that doesnt really happen, at least not here specifically. mod authors already have enough ideas to take up all their time, they dont really need to steal to get more SDVkrobusgiggle

twin wadi
#

also, not sure if this totally fits but !twocakes

#

!twocakes

ocean sailBOT
#

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

lucid iron
#

Honestly while it's ok if u don't wanna talk about it we can't help very much in that case

twin wadi
#

plus, making a mod is 10% ideas and 90% putting in the work for it

#

no idea is totally unique

round timber
#

if its not nsfw, sure

twin wadi
#

of course! no one's out to steal your ideas or anything SDVkrobusgiggle

junior gorge
# round timber if its not nsfw, sure

Well... my ideia is make the marriageble women plus Robin, Caroline and Jodi in their swimsuits of Ginger Island, but in anywhere, even in winther, but in the flower dance and the marriage i will make the swimsuits in the white color and add the other details in the flower dance, i don't know if this is nsfw but i just want to make it because a obvius reason and just for joking with the npcs and make out of context and i alredy tried to just change the sprites but... bugs happens... and for that reason i need to make more sprites to substitute the originals, even the portraits and the sprites that just appears in cutscenes

#

Sorry if that is nsfw and pervert

#

I just think that will be fun...

round timber
#

well... its probably fine if youre just reusing the vanilla sprites

lucid iron
#

Oh that's easy you just gotta add appearance entry to use the _Beach sprites

#

Make it precedence -1000 no condition

junior gorge
lucid iron
#

Opinion: let the boys wear their trunks too

#

Do you want to draw the sprites then

#

Is not that different u just Load the sprites yep

urban patrol
#

where's shane's looking-dead-on-the-ground sprite?

round timber
#

cursors

#

i think

urban patrol
#

actually let me check cursors

#

yeahhhhh

lucid iron
urban patrol
#

there he issss

junior gorge
lucid iron
#

Yes, you would have to draw those and include it with your mod

junior gorge
lucid iron
#

But let's take it slowly and start with the people who do have _Beach sprites

vernal crest
#

Anything that lets you have a 1px brush and transparency

lucid iron
#

!software

ocean sailBOT
junior gorge
#

I will test with Leah first

vernal crest
#

Pretty much anything more complex than MS Paint will do it

junior gorge
vernal crest
#

Our wiki and tutorials provide all the help you will need

junior gorge
#

Ok

#

What will be the reaction of the people, principaly the YouTubers when they see the mod?

calm nebula
#

I'm not sure most YouTube knows about most mods

vernal crest
#

If I cared about YouTube my hobby would not be making Stardew mods lol

calm nebula
#

My recommendation is to make the mod you want to make and ignore what other people think

hard fern
#

No clue, i don't really watch YouTubers play mods

lucid iron
#

If u want mod in ur game then just make it

junior gorge
#

Ok

lucid iron
#

If u want mod to be showcased on youtube then become youtuber

round timber
#

if you are truly worried about others' opinions you can always keep it to personal use only, no uploading to the mod sites

lucid iron
#

Is simple really do what u want wew

junior gorge
#

Ok

#

So, just to be clear, what i do first, then what i do next? And so on

lucid iron
#

First i recommend reading the content patcher tutorial

twin wadi
# ocean sail

these links are pretty helpful for getting started with modding

lucid iron
#

Understand what Load and EditData do

#

Once you feel ready i would then check out the wiki tutorial on appearances

calm nebula
#

Completely irrelevant comment: so exactly what atc is Harvey listening to?

junior gorge
#

I think that a brazilian like me making a mod will be a unique sensation for me, because i never made a mod before

#

And i just speak portuguese fluently

twin wadi
opaque cobalt
#

Final thing for the mod before I publish it tomorrow, but does this make sense for the outfits? (Please ping with answer as I'm about to pass out at desk so might not see reply)
https://smapi.io/json/none/d3b6de1f5b4a43dfa6e7d62ff10e3894

    {
        "Action": "EditData",
        "Target": "Data/Characters",
        "When": {
            "Weather |contains=rain,storm,snow": false
            },
        "Fields": {
            "Penny": {
                "TextureName": "Penny_{{Season}}_{{Random:Sun, Sun_2, Sun_3}}"
            }        
        }
    },
    {
        "Action": "EditData",
        "Target": "Data/Characters",
        "When": {
            "Weather": "Rain, Storm, Snow",
        },
        "Fields": {
            "Penny": {
                "TextureName": "Penny_{{Season}}_{{Random:Rain, Rain_2, Rain_3}}"
            }                   
        }
    },
#

Did I miss any weather types?

hard fern
#

🤔 mod idea... you know the huge friendship penalty you get from penny if you say you dont like kids.. what if she just refused to date/marry you after that, because she can't see herself being in a relationship with someone who doesn't like children

calm nebula
#

Serious question though

#

I know pilots have to get cleared to like cross the Atlantic but what do they say

hard fern
calm nebula
#

With an $action AddMail [whatever]

#

Set a mail flag

#

Then check the mail flag for the edit, do it on location changed

hard fern
#

yeah that's the part im kinda stuck on, im not so good with mail flags and stuff

#

would i just edit her response in the event like that?

vernal crest
junior gorge
#

I was trying to understand the content patch tutorial but it seens complicated and confuse for me

#

I understand english but i don't understand what the explanations

#

I think that needs to be more clear

#

I think that ifs another brazilian explaining will be more clear to me, or not, but maybe this will help, just maybe

opaque cobalt
round timber
#

could check if there are any mod authors in the sdv brazil server maybe

junior gorge
#

making a mod is more confusing that i thought

vernal crest
opaque cobalt
vernal crest
opaque cobalt
vernal crest
opaque cobalt
#

Okay thank you. Tomorrow I'll take a look and if it makes sense to me and simple to do, I'll convert them over

junior gorge
#

I need a brazilian that knows how to make mods with content patcher

#

Someone help me

hard fern
junior gorge
#

Is this the server?

vernal crest
#

It says Stardew Valley Brasil so probably?

junior gorge
vernal crest
#

You're in a better place to judge than we are since you speak Portuguese

urban patrol
#

two problems i'm encountering with the mad libs:

  1. it seems that the dynamic token {{Verbed}} is resolving to the same thing--are they determined at the start of the day or something like that?
  2. regular 'ol %adj, %noun, and %place aren't resolving like they do in normal dialogue. do they need to be localized text?
uncut viper
#
  1. you're using the same token, Verbed, for all 3 choices. naturally they will all be the same thing.
  2. its possible that events may not parse dialogue replacers? uncertain on this one
#

2 might also just be a quirk of /question

urban patrol
#

well, the intent of the {{Verbed}} token was to pick a random entry each time. is there another way to format it so that it won't be the same thing each time?

uncut viper
#

not if you only want one dynamic token

#

a token isnt re-evaluated each time its read

royal stump
#

a CP token's value can only be one thing at any given time, regardless of where it's used or how often, yeah
(unless they have different arguments/etc)

urban patrol
#

if i had three tokens, Verbed1 Verbed2 Verbed3, with the same values, would they also pick the same entry?

uncut viper
#

i dont think so, but im not 100% on it. maybe around 60% on it

royal stump
#

if they have the same internal logic, yes, but you could use different random key order for each, for example

uncut viper
#

are all non-keyed randoms in sync then with what index they choose if they have the same number of elements, even if they dont have the same options?

#

i.e. {{Random: 1, 2, 3}} and {{Random: a, b, c}} will always be either 1 and a, 2 and b, or 3 and c?

royal stump
#

I'm not sure what key(s) are used if you don't specify them, but in this case, it seems like you could just have 3 dynamic tokens with different option order

urban patrol
#

i'll try three tokens with different option order and report back

uncut viper
#

its still important here though, otherwise the event will be the same every time

#

the same overall, i mean

#

you'd make A always go with 3 instead of 1, but it would still be A1 every time, then

#

... A3 every time*

royal stump
#

SDVpufferthinkblob I guess you'd need 6 if adj and noun need to be randomized separately

#

also the rng would have certain patterns to it based on the option orders, but I'm not sure how to make that fully random in CP without a real mess of tokens

urban patrol
#

i'm losing my mind... i changed it to 3 tokens and now it says the event doesn't exist

royal stump
#

loading error and/or typo somewhere?

urban patrol
#

oh i missed yellow errors

#

"that token cannot be found"...

#

is it freaking out because the values are technically the same just in a different order?

royal stump
#

there's a stray "Random:" near the end of Verbed2's value

uncut viper
#

and verbed3

urban patrol
#

ahhhh the woes of copy paste

royal stump
#

or rather, 2 and 3 don't start with it, they got shifted over

urban patrol
#

i must have grabbed it too by accident

#

ok let's try again

#

super janky grammar lol but the tokens work

#

and i guess for the adj/noun/place i'll just create my own like i did for verbs

#

related question, are dynamic tokens generated upon loading? patch reload didn't seem to be working

uncut viper
#

(yeah unless i missed something it looks like /question only parses gender switch blocks and doesnt deal with replacers)

urban patrol
#

is that something that could be requested for 1.6.16?

uncut viper
#

i dunno, bc im not that confident i didnt miss something, so i dont wanna ask

#

also, dynamic tokens cannot be reloaded

#

!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.
uncut viper
#

hm i thought itd say more, i dont think Aliases reload either (btu i could be wrong i guess)

#

not that i really ever see anyone use those...

urban patrol
#

yeah idk what those even are lol

#

anyway, thank you both for the token help

#

time for bed

torpid galleon
#

thinking of recolouring things like grass and buildings on my own. is photoshop needed or can i use any other art program to recolour? i see photoshop being used for it a lot so i was just wondering

hard fern
#

generally aseprite gets recommended since it's made for pixel art though

#

!software

ocean sailBOT
torpid galleon
#

omg tysm
i’ve been suddenly inspired to make my own recolourings bcus all the rlly cute light pink mods are locked in naver . i just dunno how to start this but i’ll try!!

hard fern
#

👍 happy recoloring

gentle rose
#

@lucid iron out of curiosity, is the mannequin thing unique to 1.6.16 alpha or does it also happen in 1.6.15?

lucid iron
#

1.6.15

#

i didnt test on alpha but the decompile looks the same so

#

u can go try for me cus i dont have alpha on me laptop rn

#

@gentle rose incidentally iro can u test the fish tank problem for me

#

on 1.6.16

lucid iron
#

make a custom fish tank (u can copy a vanilla one and just change id), place it, sleep, and then toss the mod that added the tank

#

in 1.6.15 it causes NRE and problems for farmhouse renovations

#

unsure if the furniture rewrite got to it

gentle rose
#

remind me to check the mannequins and fish tanks in 1.6.16 in 3 hours

#

uber?

lucid iron
#

@patent lance remind iro to check the mannequins and fish tanks in 1.6.16 in 3 hours

#

nop

vernal crest
#

Wrong order iro

#

Need time before activity

gentle rose
#

it works both ways

#

I always do time last SDVpuffersquee

#

okay that works

vernal crest
#

remind me in 3 hours

#

No reminders for us SDVpufferpensive

gentle rose
#

or at least I think it works both ways?

#

remind me to check the mannequins and fish tanks in 1.6.16 in 3 hours

#

remind me in 3 hours to check the mannequins and fish tanks in 1.6.16

patent lanceBOT
#

.....ok..... (#6765741) (3h | <t:1751974411>)

gentle rose
#

…ffs uber

gentle rose
finite ginkgo
#

Hm, no, it should definitely work both ways

#

Remind me to get reminded in 5 minutes

patent lanceBOT
#

...mmmm I just wrote that down in a database marked for deletion...eh it'll probably be fine (#6765769) (5m | <t:1751965851>)

patent lanceBOT
gentle rose
#

uber just hates me, I see how it is

lucid mulch
#

the multiple in's probably did it

#

remind me to check the mannequins and fish tanks i|n 1.6.16 in 5 minutes

patent lanceBOT
#

As you wish, sinz163 (#6765837) (5m | <t:1751970798>)

patent lanceBOT
devout otter
#

So there are tokens for active festivals, right? Is there one for passive ones like Desert Festival and Night Market?

brave fable
#

no, but you can use the IS_PASSIVE_FESTIVAL_OPEN or IS_PASSIVE_FESTIVAL_TODAY GSQs

devout otter
#

Yar, I need it for When, unfortunately. I guess I'd just create my own dynamic token. Thank you for the answer!

hallow prism
#

hi everyone, grampa ate my event, i need help! how can grampa stop eating my event???

Details :
i add events to a location. When trying to trigger them with the debug ebi comment, the event isn't found. A patch export shows grampa evaluation event.

ocean sailBOT
#

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

hallow prism
#

this is an event added to Data/Events/Lumisteria.MtVapius_ForestTrailPond

#

what i got instead is :

{
  "558291/y 3/H": "grandpas_theme/-2000 -1000/farmer 13 23 2/broadcastEvent/addTemporaryActor Grandpa 1 1 -100 -100 2 true/specificTemporarySprite grandpaSpirit/viewport -1000 -1000 true/pause 10000/speak Grandpa \"My dear boy...^My dearest grand-daughter...#$b#It's been many years since we last spoke. You were just a little boy... Do you remember?^It's been many years since we last spoke. You were just a little girl... Do you remember?#$b#Look how far you've come!#$b#Though you may have forgotten me, I've been here all along.#$b#You see... My body has departed this world, but my heart will always remain in Stardew Valley.\"/specificTemporarySprite grandpaNight/pause 4000/speak Grandpa \"You've been here two years now...\"/grandpaEvaluation/pause 3000/speak Grandpa \"The future of %farm Farm is in your hands, now.#$b#Farewell!\"/pause 1000/globalFade/removeTemporarySprites/playMusic none/pause 1000/end bed",
  "558292/e 321777/t 600 620/H": "grandpas_theme/-2000 -1000/farmer 13 23 2/broadcastEvent/addTemporaryActor Grandpa 1 1 -100 -100 2 true/skippable/specificTemporarySprite grandpaSpirit/viewport -1000 -1000 true/pause 10000/speak Grandpa \"My dear boy...^My dearest grand-daughter...#$b#I'm glad you summoned me. I... was perhaps a little too harsh with you last time.#$b#Forgive me. You've been working very hard, and I'm proud of it.\"/specificTemporarySprite grandpaNight/pause 4000/speak Grandpa \"Let's see...\"/grandpaEvaluation2/pause 3000/globalFade/removeTemporarySprites/playMusic none/pause 1000/end bed"
}```
This is NOT what's in my file
#

there is a patch summary full and an harmony_summary in the log. Any help figuring out the change in grampa's diet will be welcome

brave fable
#

a modest 11,000 line log file 🔥SDVdemetriums

hallow prism
#

yeah that is the patch summary full, i'm afraid. I believe it's not a CP mod otherwise it would likely be listed there

brave fable
#

Include Assets/events/EventsData.json > Events Edit #12 (EditData Data/Events/Lumisteria.MtVapius_ForestTrailPond) // tokens not ready: DLX.Bundles/Purchased
does this mean the data's never actually patched into the asset you've loaded?

#

what does the patch export file look like?

#

just the grandpa event above?

calm nebula
#

Gramps being there is normal

#

He's in every map

#

Always watching

hallow prism
#

hmm, so

calm nebula
#

Forever ready to judge no matter where you put your tent

hallow prism
#

the theory would be that my events are not applied properly to the file because the token invalidity?

calm nebula
#

Yes

brave fable
#

you're right. he is actually in every single event

hallow prism
#

in which case this is likely a UB issue

blissful panther
hallow prism
#

because i had the exact same format for several of my events and it was working two days ago

#

(that or some another change caused by updating whatever)

#

ok i have to go, but feel free to ping me with solution to test, knowing that UB is already a dependency so i'm unsure why tokens wouldn't be properly ready at this point

brave fable
#

if it's for the tent, it'd be from a game update in the last year, so relatively? recent?

lucid iron
#

you patch exported while in a save?

calm nebula
#

Yes, the gramps judging you on every map is new to 1.6

royal stump
#

I don't see any base game reason why the patch would get messed up, at least SDVjunimowhite
(there's a weird thing where Farmhouse events get loaded if a player's "homeLocation" is edited & the event happens there, but that's not this)

calm nebula
#

I assume it's for the tent but I don't have evidence for that

hallow prism
#

i patch exported after testing to debug ebi my (non existent) event

calm nebula
#

Yup, gramps is a different issue

#

Your non existent event is an unready token

hallow prism
#

i also haven't changed anything in my mod recently that would make something not work so it's either CP or UB latest update

#

my latest CP update was 2 weeks ago so unlikely to be that

#

i'll try fixes in 5 hours if i have any idea of what i can do on my side or i'll ping delixx

#

remind me in 5 hours to actually do that uber pls

patent lanceBOT
#

oh my goooooooooooood lumisteria fine (#6765872) (5h | <t:1751992354>)

lucid iron
#

is there a mailflag that does same thing as DLX.Bundles/Purchased

patent lanceBOT
opaque field
#

I could make a token for 'the day after a festival' yeah?

lucid iron
#

do u need it to be any festival

#

or specific fest

royal stump
lucid iron
#

isnt that last month

opaque field
#

after green rain

lucid iron
#

ah thats not a festival

#

did green rain make a convo topic bolbthinking

royal stump
lucid iron
#

if not u can always do it

opaque field
#

hmmm, good idea!

royal stump
#

there's a GreenRainFinished CT, it looks like

#

er, for the first one specifically

opaque field
#

sweeet hahah okay but if like, I also wanted something after (actual) 'festivals' I could do "Name": "AfterDanceFestival" "Value": " {{After Dance Festival}}? for the flower dance for example

royal stump
#

I'm not sure how to do something like "if this token was true yesterday", but for festivals with specific dates like that, yeah, you could do a dynamic token or w/e like

"When: {
  "Season": "Spring",
  "Day": "25"
}```
calm nebula
#

Dayending trigger actions

#

Repeatable ones

#

Set flag if

royal stump
#

right, much more flexible if you get into that

calm nebula
#

Hi sinz

lucid mulch
#

Unlockable Bundles doesn't fully initialize until low priority Daystarted and so the tokens not ready yet

#

it might initialize earlier during saveload if there was something worth unlocking, but in that log flow, nothing did

hallow prism
#

low priority daystarded?

#

anyway if i'm loaded into a save and it's not yet ready, i fail to see when it can actually be ready

lucid iron
#

Well it's not ready when cp did data edit basically

calm nebula
#

Yeah, c# mods sort of have to seqeuxe themselves around CP

#

Especially if they provide tokens

hallow prism
#

hmm

#

ok let me complain one more time that "it worked two days ago", and now that's this done, what can i do?

#

that i'll do later because i really have to go aaarg, thanks!!

brave fable
#

understandable. i have to go aaarg too sometimes

patent lanceBOT
dusk terrace
#

what's the difference between Game1.uiViewport and Game1.clientBounds?

#

trying to make sense of

if (Game1.clientBounds.Width > 2000)
  return Game1.uiViewport.Width - Game1.xEdge * 2;
lucid iron
#

is one of these for split screen

dusk terrace
#

ahhhh

lucid iron
#

tbh i think ive always used Game1.viewport and not thought about this

#

it seems fine/10

brave fable
#

why not use Game1.game1.localMultiplayerWindow SDVdemetriums

dusk terrace
#

and this is in the android source only, so they're always the same anyways

#

clientBounds is an XNA Rectangle and uiViewport is an xTile.Dimensions too, weird

sudden lantern
#

If I can't install apps for converting files to dll, I can't make mod?

dusk terrace
#

you can still make a lot of mods with json only

lucid iron
#

well you need that for c# mods

#

and it's not really an app, you need to install the .net toolchain

sudden lantern
#

do I need xna?

#

I tried install it but my computer is old so windows didn't let me install it

vernal crest
#

No

sudden lantern
#

I don't know what's my mistake

vernal crest
#

Are you trying to make C# mods?

sudden lantern
#

Yes

vernal crest
#

Do you know how to write C#?

sudden lantern
#

No, I can say only basic things. I thought I can use chatgpt for a simple mod

vernal crest
#

No, you cannot. ChatGPT will not be able to write you a working mod. Nor are you allowed to use AI for mods in this server.

#

Are you already familiar with how to mod Stardew Valley via Content Patcher mods or another framework?

sudden lantern
vernal crest
#

It's going to be quite a steep learning curve to learn C# and learn Stardew-specific knowledge at the same time, but if you are really patient and determined I'm sure you can.

#

What kind of mod do you want to make?

hallow prism
sudden lantern
winged crow
#

Hello! I'm making some edits to a farm map, with great success, but I've come with an issue while trying to relocate the greenhouse ruins, I edited the GreenhouseLocation coords to the new position I want, but when I open the save, the greenhouse hasn't moved

I've been able to edit warps and much more, but this I cannot understand, what could I be missing?

vernal crest
lucid iron
#

Farmhouse ruins

#

You mean greenhouse yes?

#

That one needs new save

sudden lantern
winged crow
lucid iron
#

Once you have started the save the position is fixed bc the greenhouse is a building (that you can't move until repair)

sudden lantern
winged crow
#

oh darn

lucid iron
#

Just try starting a new save AquaThumbsup

winged crow
#

okay thanks, I'll give it a try, luckily I'm on day 7 only hahaha

lucid iron
#

Since you be making farm it's recommended to make it additional farm

quartz arrow
#

If u have any experience with any code- html, bbcode, etc- you can parse together .json code. I know its daunting at times but i thought the same and i did it

brave fable
#

i find python miserable compared to C#, so it's very much still down to personal preference

vernal crest
quartz arrow
#

Dont let chatGPT take away the joy of learning from ya (and again it wont do it right)

vernal crest
brave fable
#

C# is as good as it gets imo. beloved

lucid iron
#

I don't think ai helps very much cus c# intellisense very good as is

quartz arrow
vernal crest
#

Maybe one day I will love C#. If so, that day is a long way off lol

lucid iron
#

But yeah no matter what it helps to have concrete specific goal

brave fable
#

you don't need intelligence when you have intellisense 😌

lucid iron
#

Like spacecore might let u spawn a stable from the start?

#

If not then cheat certainly will

#

And there's a lot of skip fishing game mods out there, but what change do u wish for specifically?

calm nebula
#

Is literally the amount of time between "i don't know c# but I do know how to program" and "I'm releasing my first c# mod"

#

A lot of programming skills transfer

dusk terrace
#

two hours is how long is takes me to untangle the spaghetti code in order to know where to put my c# hooks SDVpufferlurk

calm nebula
#

2hrs and 2 monsters?

#

Luckily for Stardew I'm now focused on something entirely different?

lucid iron
#

2hr is me finally figuring out how to install dotnet on linux with vscode pippleDot

#

It was smooth after that tho

brave fable
#

is this after the 2hrs to decide the project name

calm nebula
#

Gotta spend at least one hour learning a random kpop dance

dusk terrace
#

nah the project name happens 5 minutes before publishing to Nexus, of course (after changing it 10 times during dev)

calm nebula
#

Or create some random arbitrary working name and never change it

calm nebula
opaque field
#

2 hours debating if I like the theme of VSCode or if I want to change it to 'synthwave' (am about halfway through my C# to B# class)

lucid iron
#

I wanted my first mod to exist since i played 1.5 back in 2021

#

No one made it during my 3yr of not playing sdv >:(

opaque field
#

Anything other than the buffs wiki page as suggested reference material before I try to make my 'friendship magic egg' via C#

calm nebula
#

We can't read your mind chue

lucid iron
#

I don't think u even need a buff really

#

Beyond a visual indicator

#

Did you do the ol button press example mod yet

opaque field
#

that's what I have open rn 😄

lucid iron
#

Yeah so once u have that built and working pause and go find place of npc friendship

brave fable
#

i've gotta say i'm used to intellisense dropping a lot of very novel types on me when autocompleting typos, like this into ThreadSafeException and such

#

but this into ThaiBuddhistCalendar is very new

harsh bobcat
#

that soundsl ike the right autocorrect to me

opaque field
#

NPC.grantConversationFriensship?

#

Er. No that’s a function right?

opaque field
brave fable
#

i think we'll need a little more info about friendship magic egg

opaque field
#

oh! I want to grant temporary 'get more points when chatting/gifting items' after eating a strawberrycreme egg from the magic chickens I'm making

#

but that's all I've really got for a concept so far other than sprites for the chickens and the egg itself. Separately I also wanna make a weapon that comes with 'vampire' enchantment (which I think I remember seeing is something I'd needs the C# for)

brave fable
#

if you use harmony it'd be trivial to affect grantConversationFriendship with a modifier to the amount value, but it wouldn't affect gifting friendship since that's handled elsewhere

opaque field
#

honestly as a start conversation bonus is great

#

oh boy Harmony! (actually excited not sarcasm I love learning new stuff)

brave fable
#

i suppose if you do the same to receiveGift with friendshipChangeMultiplier you'd get a good result, but it wouldn't affect birthday multipliers and it'd also multiply the hate value for shit gifts haha

calm nebula
#

Does the multiplier take effect if negative

#

I recall iridium hated gifts aren't worse than normal hated gifts

brave fable
#

yes! quality multiplier is ignored but friendship multiplier still applies

calm nebula
#

(Buff name: swagger. Result: people either really like you or really hate you. )

opaque field
#

lmao YES

lucid mulch
#

give a guy sundrop tea on his birthday and he despises you now

opaque field
#

ok I have the button press thing, and I put in the bits for Harmony, I have to check my Cinna-bites in the oven and then I"ll continue

brave fable
#

sorry for putting the punchline on a 2nd message chu SDVpufferpensive

opaque field
#

ah! Okay I found two references in the decompiled code to "grantConversationFriendship" and looking over the Harmony Documentation

sudden lantern
opaque field
#

could I edit something like this? public void grantConversationFriendship(Farmer who, int amount = 20) { if (who.hasPlayerTalkedToNPC(base.Name) || !who.friendshipData.TryGetValue(base.Name, out var value)) { return; } value.TalkedToToday = true; who.NotifyQuests((Quest quest) => quest.OnNpcSocialized(this)); if (!isDivorcedFrom(who)) { if (who.hasBuff("statue_of_blessings_4")) { amount = 60; } who.changeFriendship(amount, this); }

sudden lantern
lucid mulch
#

in general, transpilers can do anything and everything

sudden lantern
vernal crest
#

Argh

#

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

vernal crest
#

I can spell

calm nebula
#

!stopmodding