#making-mods-general

1 messages · Page 219 of 1

fierce vault
#

I haven’t played the beach farm in so long though

brittle ledge
#

just stick some iridescent blocks along the borders, ez SDVpuffersquee

fierce vault
hard fern
#

im currently staring down my asset png in dismay

fierce vault
rigid oriole
#

.choose i18n, config, docs

patent lanceBOT
#

Choose result: i18n

fierce vault
#

Is it possible to mod in hugging friends without a framework as a dependency?

rigid oriole
#

in C# definitely

fierce vault
#

I am not a coder unfortunately

#

all well

rigid oriole
#

the i18nifier is actually really good it even splits out mail title/text

brittle pasture
lucid iron
#

hm does automate have api for reading it's machine groups

#

i swear that was a thing

fierce vault
brittle pasture
#

one sec

fierce vault
brittle pasture
#

yes, one of the poly mods

lucid iron
#

endertedi's poly mod let you say "you can only poly this char with another char" which i think is very cool

#

you can use it to restrict ur spouse + roommate combo if desired

rigid oriole
#

guys i finally switched to rider

#

i can't believe i've been using visual studio for so long

gentle rose
#

I'm about ready to switch the other way around SBVLmaoDog

rigid oriole
#

oh naur why 😭

gentle rose
#

Rider is being annoying and it sounds like vs is a little bit better about some things (like shared projects)

rigid oriole
#

always worth a shot to try a few ides to find what best works for u

lucid iron
#

Never too late to switch to emacs

true coyote
#

why are fences literally so cursed lmao

flint stratus
#

Hi everyone c: I'm working on creating messages for my map with right clicking. I have the property on the buildings layer, and formatted like so< Message "SJ_EJHome1" > but I cant get it to show up clickable in game

#

is there a simple mistake i could be making?

brave fable
#

quite a few of them!

  • is your tile object on the 🟪 Buildings layer?
  • does your tile object have the property Name: TileData ?
  • are the X, Y, Width, Height properties on your tile object set to multiples of 16?
flint stratus
#

I didn't name it tiledata!!!! Wow thank you for that

#

truly was losing it a little haha! super appreciated friend ❤️

brave fable
#

no problem, do ask again if there's still any issues SDVpufferthumbsup

flint stratus
#

will do c:

#

bless u that was absolutely the issue, everything is running with no issues now!!!

true coyote
#

stupid fence lol if I move the right set of verticals over, to match the corners, then it no longer aligns if it's just verticals

#

please fencing why are you like this

teal bridge
#

Nope. Not merged.

(Though I did see movement on the Data Layers API, so hooray for that!)

true coyote
#

when its 1 pixel short of what i need it to bespace wise 😭

rotund elm
#

Does anyone know why the message "the legend would not be happy here" is popping up? Fish pond is cleared and I can't find an answer on google. Trying to make sure it's not a bug.

rigid oriole
#

isn't there something about actually resetting the pond, not just fishing out all the fish?

rotund elm
#

Yes a button

#

I am about to try building a new pond, cause if it works with the new pond it is defenitely a bug, but I don't think that is the issue

rigid oriole
#

can you put other types of fish in the pond?

rotund elm
#

Yea no problems there X|

rigid oriole
#

did you build the pond in 1.5 or 1.6?

rotund elm
#

1.6

rigid oriole
#

(i think it should work either way i'm just curious what hte root cause is)

rotund elm
#

Newly built pond didnt work either

lucid iron
#

do u have mods that change how this stuff works

brittle pasture
#

is this on 1.6.15 with no other mods installed

rotund elm
#

1.6.15 with mods

uncut viper
#

the only way that text can pop up is if the fish is not a legal fish pond fish

#

check its context tags

rotund elm
#

kk

uncut viper
#

also is this for your own mod

rotund elm
#

Yea, I wanted to add some possible drops for the pond and I cant even get the fish in XD but my mod is not present as I thought it was the problem at first

primal root
#

I have a question.

I saw a mod earlier in Nexus called "They Stay with You", which is kind of like PurrplingCat's NPC Adventures.

I checked the mods out and found that the attack animation doesn't show the npcs swinging their weapons when attacking (melee attack).

Do you guys happen to know how I can add that in the mod so it would look more realistic when they attack?

rotund elm
lucid iron
#

yea you need to add a ProcAnimClip

uncut viper
lucid iron
#

you can just make your own npc trinket mod though, the framework is for everyone Dokkan

#

otherwise editdata the appropriate ability

rotund elm
reef kiln
#

You need a skill in walk of life to put legendary fish in ponds.

rotund elm
#

and ok it may be that my new test save is loading so about to find out

#

I'm surprised removing the mod wouldn't fix that tho

reef kiln
#

I dont know if that is your issue, but I had that problem with walk of life that's why I know you need a skill. I was very frustrated for a bit, till I figured it out.

rotund elm
#

Yea I would've lost my mind XD

#

Ok it is working on the new save, so Ill need to add the drops without walk of life and test with it afterwards, I think they have a compat for cjb cheats menu right?

primal root
#

I really appreciate this.

rotund elm
#

It does! Love when authors go the extra mile XD

lucid iron
#

this basically let you append a extra spritesheet just for anim clips, so you don't have to touch the default one in Texture

primal root
#

Thank you so much! I really appreciate your help.

true coyote
#

I. I dont get fences

#

I just spent the last hour doing the same thing and suddenly

#

it works? it all lines up? after an hour of doing the same repetitive nudges????

reef kiln
#

At least it worked.

true coyote
#

and now Ive found a new problem I cant solution my way out of because I cant nudge the sprite any further

#

HA got u

lucid iron
#

are you like

#

exploding then fences whenever you change things

#

yggy this kind of terrain net object may have state saved to existing ones in the world

true coyote
#

no, but I have to change between options in GMCM for it to take effect

lucid iron
#

thats just patch reload then

#

have you not been doing that

true coyote
#

like, typing it in the console? nah faster for me to open GMCM

lucid iron
#

shrug do what you want

hard fern
#

my love/hate relationship with console commands bc i will manage to misspell the same word in 45 different ways untili get it right

true coyote
#

I play on dual monitor with the game in windowed borderless so I'd either have to win tab out or go all the way over to the other taskbar to get the smapi console -- just faster for me to gmcm. plus I'm copy-pasting in SAI a lot right now so I'd keep losing the command

#

and also same

uncut viper
#

(you can up arrow key in the console to immediately re-type the last command you sent)

drowsy pewter
#

aaa i keep forgetting that

calm nebula
lucid iron
#

is there a C# collection more suitable for caching stuff than dictionary

uncut viper
#

depends on your use case

lucid iron
#

i would like to keep strong refs to things in this case

true coyote
#

I dont even know how to open the chat window lmao

lucid iron
#

but have ability to look things up by a key

lucid mulch
#

in theory yes, but a lot of stuff internally will just have the dict anyway

#

its pretty much the most basic data structure you will use if you have key value data

lucid iron
#

why dict no have GetOrCreate seriousblep

#

thats the only reason im even thinking about this

true coyote
#

look at the beauty, all lined up. only issue is vertical gates blend in heavily with the vertical pickets but eh, w/e

#

tries darkening outline pixels

lucid iron
#

i wonder if ppl r like, generally interested in a mod that gives you faster look ups for ALL_ITEMS with per item ITEM_CONTEXT_TAG

#

do people notice lag on big mod lists when opening shop

hard fern
#

;l......................................................................................................................................................................................."
?

lucid iron
#

shrimp words

lucid mulch
#

easy to measure

hard fern
#

😭 omg that was my cat

#

i just chased him off my computer

lucid iron
#

wise

uncut viper
#

Shrimply Feline

true coyote
hard fern
#

ive been quoted

lucid mulch
#

...ofc there isn't one method still that does shop code

#

ah but the core of it is ShopMenu's cctr

lucid iron
#

the context for this special case is that i have mod that does item query ALL_ITEMS with per item ITEM_CONTEXT_TAG many many times to build the valid inputs to machines, so a while back i did the ez optimization of building a lookup between tags and items at data invalidate

#

but i didnt do this cache at item query level

lucid mulch
#

I did start work on a dedicated performance optimization mod

#

currently it only fixes Data/AudioChanges being bad

lucid iron
#

sounds fun DokkanStare

#

there r probably other kinds of ALL_ITEMS query u can make better

lucid mulch
#

the rest of my fixes are in smapi and cp itself

lucid iron
#

it mainly help mod lists with 9001 modded items

reef kiln
true coyote
#

I defined it a little bit more, but that seems to be how it'll be for verticals because pickets

reef kiln
#

You could maybe add a latch that sticks out or something. Not that latch would be super visible. Also most people will probably remember where they put gates.

rare orbit
#

super quick question? any idea if outside of the ones i found thus far there's templates?? do most framework mods offer templates to set it up right?? im asking for not only art but also setting up the json files correctly. the only ones i found thus far that should be compatible with 1.6 is:

  1. FS HD Clothes Template by mio25683 on nexus mods
    2.Seasonal outfit Template by AirynS on Nexus mods
  2. Farm Type Template by OMEGAling on nexus mods

im wondering since i feel templates would streamline making mods for stardew valley and tbh? we need more stardew mods :3

#

maybe the crop creator for json and blank json asset template is compatible but im unsure

lucid iron
#

usually i offer examples instead of templates

reef kiln
rare orbit
#

ahhh

#

i get that i was just askin since, at least in my experience, things can be lost in translation and, again in my experience, i kinda learn alot quicker from visuals and being taught than trial by fire ;w;

lucid iron
#

but json is a text format

dusk mulch
lucid iron
#

from my pov as someone who makes framework type mods

#

i rather you just make a mod using my framework lol

vernal crest
#

I really don't know what "visual" means when you're referring to something that's all text. /gen

lucid iron
#

than to make template

reef kiln
#

You would have to fill out a templet anyway, and replacing lines is not much different then replacing place holder text.

rare orbit
#

ahh mean a template can get the basis down

#

true true maybe it's just me still learning

reef kiln
#

But the CP does have examples in it's documentation. They are usually specific to what is being shown.

vernal crest
#

There are definitely some templates for certain modding bits on the modding wiki that people do find helpful, like for dialogue for NPCs and stuff. So if you made some (as a modding wiki page, not a Nexus download) I'm sure there would be people who found it helpful. The problem with making a template into a Nexus mod is that it makes it more difficult for it to be a community-maintained thing.

rare orbit
#

ohhh

reef kiln
#

Granted, sometimes they don't have examples when you really want one. But it does have alot.

rare orbit
#

true true it just takes at least a few reads to get it

#

the art part is alot easier than the coding part that's for sure

reef kiln
#

I found it the other way around, but I am not an artist. I actually have a bunch of mods I would make if I could do art. It is my biggest limiter at the moment.

vernal crest
#

Yeah I find the art to be way more difficult than the json, which for the most part is very straightforward for my brain.

rare orbit
#

ahh understandable

#

speakin of... thank god i caught it before it launched ;w; i accidentally made the required mod content patcher.... when it was meant for alternative textures ;w;

#

i mostly been drawing since i was a kid and while digital art is alot harder for me than pixel art im getting better by the day

#

tho is from me who learned how to draw singlehandedly cause the hype fixation was strong in me ;w;

#

sonic do be powerful yall

lusty elm
#

Making progress in design is weird, I look back at some maps I've made in the past and was so proud of, and look at them and go, "eh, they're okay." By my current standards.

rare orbit
#

true but still modding isn't easy and getting it to work? it feels amazing

#

it's not impossible but it's a learning curve

#

and everyone is at different skill levels with different things :3

lusty elm
#

Ye, there are times where I'm like, I don't know if there is more up to go, and then I go up lol

rare orbit
#

true true

lusty elm
#

Then again there are many aspects of modding I'm terrible at even still.

#

Actually I wouldn't say I'm terrible at them anymore, just not amazing, but not bad, rooThink

#

Or just avoided them because it's annoying like events and dialogue

#

Can't really say I'm terrible at pixelart or content patcher anymore.

rare orbit
#

yeah i am still learning pixel art but it's to the point now i can look at my work but content patcher? it still confuses me and it seems i make alot of mistakes with it. thankfully the mods i got up seem to work?

#

i get no one starts knowing but lowkey? i feel dumb not catching it earlier ;w;

#

anyone ever felt like that?

vernal crest
#

Yup, I am feeling it right now with C#. It's not clicking for me so I am building knowledge in it way more slowly than pretty much anyone else in here who knows C# did and it's making me feel pretty stupid. I'm persevering because I know that anyone can learn anything given the time, resources, and determination. But it's definitely having an impact on my morale xD

rare orbit
#

true ;w; it really does

lucid iron
#

aba u gotta remember that

#

some of us get paid to do spaget

rare orbit
#

honestly if i didn't get the encouragement here? i would've given up by now

lucid iron
#

everyone starts at different spot Dokkan

lusty elm
#

Ye, cp structure always confused me for a long time, it felt like I was learning a new language and everytime I had to ask "how do I say x?"

deep cypress
vernal crest
calm nebula
vernal crest
#

I just really clicked with statistical programming and have really not clicked with program dev thus far. But I will!!!!

calm nebula
#

Kids, off my lawn. Please

uncut viper
#

wait, was i supposed to come into modding with decades of experience? did i accidentally lie on my modding resume

vernal crest
#

But yeah even with CP at first it was a lot of CatHuh for me but being in here and having the funky stuff explained has really smoothed that out.

lucid iron
#

yea you need 20+ years of SMAPI experiance

uncut viper
#

ah shit

lucid iron
#

its ok button just get a time traveler cert

vernal crest
#

And man it's fun learning all this new stuff HeartYsa

calm nebula
#

You need to have at least two decades of c# experience

#

Please, let me know how collections were different in c#1

uncut viper
#

guess im quitting modding. its ok ill just have atra take over my mods

calm nebula
#

Wait no

#

No no no no

uncut viper
#

too late

calm nebula
#

Nooooooo

uncut viper
#

you fire me, you become the replacement

vernal crest
#

Atra I want BETAS to have 42 new GSQs by tomorrow plz

rare orbit
#

it's fun but it's hard

brave fable
#

i'm something of a full stack developer. I work on png, json, and bbcode

uncut viper
#

dont you mean bbmarkdown

calm nebula
#

I'm a full stack developer. I'm surrounded by stacks of dishes

#

(This is a joke.)

brave fable
#

your jokes hit a little close to reality

rare orbit
#

i totally don't have 2 cups

#

not at all

#

i have just one

#

totally

calm nebula
#

Alternative joke: I'm a full stack developer (screenshot of a days worth of meetings)

#

(You're not actually retiring, right, Button?)

rare orbit
uncut viper
#

any mod is updateable if someone wants to put in the work

rare orbit
#

i checked what version it was on based the last updated date and oh boy... that was in version 1.4

lucid iron
#

Modification permission ✅ but new tiles in 1.6 so

brittle pasture
#

well it looks to be purely png files and a content pack

lucid iron
#

gotta fix all that

rare orbit
#

true but i gotta read through all the changes ;w;

brittle pasture
#

all you need is to add the new files really

rare orbit
#

and at my current skill level? idk if i can do it

#

i wanna

lucid iron
#

just open up some vanilla maps and see what tiles r not covered

rare orbit
#

cool cool

#

is this more of an art question? or is this the place to ask that?

pine elbow
#

Hi guys, I'm trying to change the AbigailGame class, using harmony in the SetupBinds function. But I'm having some problems, because the _binds variable is a private variable. Do you know how I can correctly set its value using Reflector? I couldn't do it.

Originally it is defined like this inside the function

_binds = new Dictionary<GameKeys, List<Keys>>();
_binds[GameKeys.MoveUp] = new List<Keys>(new Keys[1] { Keys.W });
_binds[GameKeys.MoveDown] = new List<Keys>(new Keys[1] { Keys.S });
_binds[GameKeys.MoveLeft] = new List<Keys>(new Keys[1] { Keys.A });
_binds[GameKeys.MoveRight] = new List<Keys>(new Keys[1] { Keys.D });
_binds[GameKeys.ShootUp] = new List<Keys>(new Keys[1] { Keys.Up });
_binds[GameKeys.ShootDown] = new List<Keys>(new Keys[1] { Keys.Down });
_binds[GameKeys.ShootLeft] = new List<Keys>(new Keys[1] { Keys.Left });
_binds[GameKeys.ShootRight] = new List<Keys>(new Keys[1] { Keys.Right });
_binds[GameKeys.UsePowerup] = new List<Keys>(new Keys[2]
{
Keys.Enter,
Keys.Space
});
_binds[GameKeys.Exit] = new List<Keys>(new Keys[1] { Keys.Escape });

uncut viper
#

see ___fields

rigid oriole
#

dang meanwhile i've just been using AccessTools

#

it's what i get for not reading docs i suppose

pine elbow
#

I read it, but I didn't understand what to do, is there no example there?

uncut viper
#

you pass in ____binds the same way you pass in __instance

lucid iron
#

this is basically harmony doing reflection for you right

rigid oriole
#

yeah (not that i actually know what it does under the hood but surely it uses reflection if it's private... right)

pine elbow
#

__instance.____binds
?

rigid oriole
#

you pass ref ____binds as an argument to your harmony patch

uncut viper
#

have you used __instance or like __result before?

uncut viper
#

(genuine question not snarky, just so i know what needs explaining)

calm nebula
#

But since they can emit for it it is faster

reef kiln
#

You guys are smarter than me, I didn't even understand the question. 😇

uncut viper
#

yeah harmony is a lot of IL emitting

pine elbow
#

private static bool SetupBinds_Prefix(AbigailGame __instance, ref ____binds) ?

uncut viper
#

it needs a type

brittle pasture
#

(wrap code in ` brackets to make them show properly)

rigid oriole
#

private static bool SetupBinds_Prefix(AbigailGame __instance, ref TYPE IDK ____binds) i believe

brittle pasture
#

`like so`

uncut viper
#

ref Dictionary<GameKeys, List<Keys>> ____binds

pine elbow
#

The type or namespace name "____binds" cannot be found (are you missing a using clause or an assembly reference?)

uncut viper
#

you havent put a type

#

same way you'd write int 5 or string? whatever in your signature

rigid oriole
#

four underscores is the new standard for variable naming 😤

pine elbow
#

But why so many?

uncut viper
#

thats how harmony needs it

#

from that page i linked you

rigid oriole
#

harmony is set up such that injecting a private field into a harmony patch means the field must be prefixed with three underscores (see the docs button linked above). Since your field is named _binds, it means you end up with four

pine elbow
#

At least now we can do that, before it was just reflectors?

rigid oriole
#

you can still use reflection, there's just no need to since harmony provides a shortcut

#

power of software libraries

uncut viper
#

i think its also years old

#

about 5

#

granted SMAPI didnt always use Harmony 2.x but its been a while

pine elbow
#

I'm trying to locate the sprite file, which shows the controls for the King of the Prairie game, but I can't find it, does anyone know?

brittle pasture
#

pretty sure everything Prairie King related is in cursors

lusty elm
#

Make Prarie King even more difficult, make the player sprites and their bullets invisible

reef kiln
lusty elm
#

because people complain that its hard, so we make it harder.

pine elbow
#

I'm just changing his controls, because someone on another server has no arrow keys on his keyboard, so I'm making a mod so he can play using other keys.

brittle pasture
#

this is old and I don't know if you're still wanting this, but latest version of Extra Animal Config supports this!

haughty charm
#

OMG seriously!

#

Selph, you are amazing!

#

I'm definitely going to take advantage of it for Eggies

jade wing
#

Hi trying to use solid foundations mod for item conversion but having issues with the minutes per conversion, it should take 40 mins in game to produce the item but after the first batch is produced it only takes 10 mins. Any help would be great!! Here is the code:

"ItemConversions": 
[
   {
       "RequiredTags": 
       [
           "id_(o)KatyDTK.CP.BreadLovers_BagelDough"
       ],
       "RequiredCount": 1,
       "MaxDailyConversions": 12,
       "MinutesPerConversion": 40,
       "TakeOnlyRequiredFromStack": true,
       "RefreshMaxDailyConversions": true,
       "SourceChest": "Input",
       "DestinationChest": "Output",
       "ProducedItems": 
       [
           {
               "ItemID": "(O)KatyDTK.CP.BreadLovers_Bagel",
               "MinCount": 1,
               "MaxCount":1,
               "Chance": 1.0,
               "Condition": null
           }
       ]
   },
]
woeful lintel
#

!embedcode

ocean sailBOT
#

You can embed code in Discord using a series of three ` :
```
Your code can go here
Even if not a haiku
Just an example
```

For syntax highlighting, add the language code on the same line as the first
``` (with no space, like ```json).
The usual codes are cs (C#) and json.

jade wing
#

oh thanks

jade wing
woeful lintel
#

yup, much easier to read!

#

can't help you tho, I have no idea what this is

haughty charm
#

I've never used Solid Foundations, but looking at the documentation, it appears as though you've done it correctly?

jade wing
#

thats what i thought too, but it only works for the first batch, and then everything else after would just be done within 10 minutes not matter the stack

haughty charm
#

That might be a bug worth reporting to Peace.

jade wing
#

oh how would i do that actually

haughty charm
#

Have you tried removing the "MaxDailyConversion" and seeing if it works at 40 min intervals?

#

And you could probably report an issue on the GitHub itself

jade wing
#

hmm i havent taken out the max daily conversion lemme try that

haughty charm
#

The way I'm reading the docs, it sounds like it might convert up to 12 times every 40 in-game minutes, since you've set the max

#

Definitely worth playing around with some of the parameters to see

jade wing
#

yep but it actually doesnt stop at 12

#

evern after 12 the oven would keep taking more

haughty charm
#

HHmm

jade wing
#

and make the processing time way faster

#

10 mine per whatever is left

haughty charm
#

And you don't have any other mods installed that could play a factor?

jade wing
#

nothing related to new buildings or creafting mods , just visual and SVE

haughty charm
#

I would advise testing different settings, and if it still doesn't work as expected, report an issue on the repo

jade wing
#

yeah removing the mac daily conversion doesnt change anything for the batches after the first one, it just spits it out in 10 mins

#

thanks 😄 i'll try and if nothign works i'll report the bug

haughty charm
sour sleet
ocean sailBOT
#

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

lucid iron
#

this looks like a C# error from SVE's C# portion

#

StardewValleyExpanded.FireflySpawner

#

report it to SVE server maybe?

sour sleet
#

So it's nothing I've caused? Will it affect my game negatively?

lucid iron
#

you get less fireflies i guess?

#

this is not really a mod making question though

sour sleet
#

I didn’t know where else to put this

uncut viper
#

!mh

ocean sailBOT
#

For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).

uncut viper
#

in there

sour sleet
#

Thank you

rare orbit
#

hey? anyone mind reviewing my Alternative textures json in my thread?

#

it wouldn't really show for me at all and tbh i don't know alternative textures.

rocky copper
#

I'm working on a building that has item conversions (a distillery), and because the items I want converted are part of different mods I'm trying to patch in item conversions for the custom building from each mod that contains those items. One of them, which is the mod that adds the distillery, is working, though it's worth mentioning that the building is added in one entry while it's a completely separate entry that then edits the item conversion field of the building; the other mod, which also edits the item conversion field of that same building, keeps giving the error that it "Can't apply data patch (...) to Data/Buildings: the field "Distillery" doesn't match an existing target".
Any idea what's wrong? If a mod adds a building to Data/Buildings, other mods should also be able to edit it in Data/Buildings, correct?

uncut viper
#

are you not doing all of your distillery stuff within the same mod?

#

oh, i missed the "the other mod" part

#

in that case, are the dependencies correct?

rocky copper
#

In the manifest?

uncut viper
#

yes

rocky copper
#

Well.

#

That solved that issue but has created a new one; the conversions from the second mod work, but the conversions from the first don't

uncut viper
#

i assume the error is different, but if it is, i dont know building stuff. but if you post your log and json(s) here someone else might be able to chime in

void thorn
#

hi is Updating a mod to a new version of SDV complicated ?

uncut viper
#

theres no one answer to that question

#

it depends on the mod

void thorn
#

1.6 seems to break my Favorite mod so i wanted to Update the mod hmmm...

void thorn
#

Machine Augmentors

uncut viper
#

well, the source code is available. so you can fix it yourself with its open perms. might be difficult if you dont know C# at all

void thorn
#

it adds Update cards that rarly drops from Monsters or can be buyed from Traveling merchant

#

i would try it but if i dont know where to start its a bit hard

#

dont even know wehre to look

uncut viper
#

!yellowbook

ocean sailBOT
uncut viper
#

this will help teach C#. thats really just kinda what you have to do if you want to work with C# modsd

#

is learn C#

void thorn
#

thx i think it would be a lot of affort to learn C# just to Update one Mod but im interested in modding so maybe i look on that later THX for the help

rocky copper
hoary lake
#

Rainbow....a bow that once shot causes the rain weather effect.
Rolls away, giggling at pun.

rigid oriole
uncut viper
#

theres 2 people in the comments saying it broke after 1.6.9 dropped

rigid oriole
#

ah i see

void thorn
#

yeah sadly it dont work SMAPI just say its need an Update

dusk mulch
#

petition for there to be a vent channel here (i need to cry about how hard managing warps is)

hot gale
#

Hi all! I'm trying to make an edit to a mod on Nexus, simply replacing 1 tile in Tiled, but I ran into an issue - the tile I placed down (from the same tilesheet) is not transparent? Any ideas on how to make it so? Using the crystal from spring_outdoorTileSheet

#

Specifically this tile

#

I tried looking up online for some tutorials or tips, but no luck with specifics to Stardew

unique sigil
hot gale
#
  1. I think I placed it on Buildings?
  2. I don't know what that means :D
unique sigil
#

i can't help further if you dont show the .tmx file. You can see clearer what items are on which individual layer by pressing H

hot gale
#

I can show whatevers needed, I can share the tmx files themselves as well, just don't know what you need

unique sigil
#

yeah and as i said i can't help you if you don't show me the tmx files, so show either a picture of your tiled window or put the .tmx file here SDVpufferthinkblob

hot gale
#

Oh, you're Kisaa, I love your mods btw :D

#

Appears it only adds a singlular tile to the Bus Stop

#

Right now the only image is on the Buildings layer

#

(as it was before, but it was a solid tile)

unique sigil
#

so the item is on Buildings then. and you are applying the edit via content patcher?

#

If so please upload your content.json here and follow the instructions listed

hot gale
#

Im super new to this and kinda learning while fixing something that bugged me, I just copied the entire mod and tweaked it, idk how to send an edit strictly for this part

#

I see

#

The content.json?

#

Shows an errror for AddTile, but it does add it so that works?

#

Should I be displaying the art in Front?

devout otter
#

Wait, sorry. Are you planning to upload this?

hot gale
#

Depends if I am allowed

#

I am editing this for me, but others may want it so idk what to do tbh, I moreso want help to fix for myself, only intended to share for others if that was okay

#

Its uploaded right now just so I could understand how to get it packaged and delivered/working - Im managing the modpack im using through nexus so this seemed easier :p

unique sigil
# hot gale Should I be displaying the art in `Front`?

no, it should stay in the Buildings layer because you dont want the player to be able to walk over the crystal. According to the CP docs map patches are by default have the PatchMode ReplaceByLayer, which means the layers in patch map you made are applied to the same layers in the original map.

Because your patch map's Back layer is empty, the ground in the original map is also empty. So depending on the structure of the original map's layers, you need to either:

  1. Add a "PatchMode": "Overlay" line to your EditMap action block or
  2. Fill in the Back layer in the patch map you made (Porta.tmx).
hot gale
#

Nexus kept revreing my changes to the OG mod

#

So the back layer would be the grass its sitting on in Bus Stop?

unique sigil
#

eyup

hot gale
#

Awesome, roger that

#

Thank you for that simple explanation :)

unique sigil
#

also, the permissions of the mod you are editing don't allow you to upload your edit unless you ask permission first.

hot gale
#

Wow, thank you for that

unique sigil
#

it's best practice to read the permissions section of mods you use or make personal edits to.

hot gale
#

It wasn't my intention to redistribute without permission, I just wanted to get it working and unsderstand the process - thanks so much for your help I will be delisting the mod now and messaging the author

#

Is this sufficient?

unique sigil
hot gale
#

okie dokie

#

Done

unique sigil
#

"ask first" does not equal "if permission (still) isnt given for whatever reason, i can upload/ keep the mod page up anyways"

devout otter
#

If I to add one thing: even if you did get permission, please make it a patch just for the assets you edited, and don't reupload the entire mod.

unique sigil
#

if you need to figure out how nexus works, there's no need to publish the mod page, you can keep it as a draft anyways

blissful panther
#

Yeah, you could keep it up but hidden like it is now, but it might be a little redundant if permission never comes?

hot gale
unique sigil
#

this is a little pedantic, but what dolphin said is not 'ideal', it's what you should do 95% of the time (exceptions depending on if a mod and its assets are open source).

hot gale
#

The assests appeared to be reused base assets and a DaisyNiko waterfall

#

fwiw

unique sigil
#

the mod assets we are talking about here is the original map files.

#

and the content files too

hot gale
#

I sent the author a DM

unique sigil
#

if you do get permission you can upload the patch map you made and the EditMap action, but not everything else in the original mod

hot gale
#

They commented on their mod just the other day so hopeful

#

I'll cross the bridge when I come to it now

#

This has inspired me to maybe pursue making my own mod now :D

blissful panther
#

Now that you should definitely do!

devout otter
#

Reading the wiki or event preconditions, you can do /w rainy/, right? Does that mean it encompasses both rain and storm?

calm nebula
#

Oui

devout otter
#

Would that work for GSQ or When field, too?

calm nebula
#

Not sure

lucid mulch
#

During the alpha it very much didnt

#

I can't remember if it ended up changing or not, but I think GSQ is very specific still

#

While the precondition is more along the lines of sunny or not sunny (misleadingly called rainy)

devout otter
#

I see I see. Thank you!

acoustic valley
#

Hi it me again. [I may be overthinking my plan here so please tell me if there is something easier to handle this]
If i were to write a function which is supposed to fire after a NPC received a gift (i found the receivedGift Method) to work with the reactions of the NPC (i.e they liked the gift and friendship changed and so on), do i write a Harmony Postfix for the receiveGift Method?

somber walrus
#

hi everyone! some may know me some others may not know me. before I came asking for help to do with the heart event code that I was doing before. I found someone to helped me with the code and got the event working for me! but then I saw the event. it looks great but....I felt I was imposing on the farmers house. I think because I played stardew valley a lot as a farmer you get used to the farmhouse being yours. so I went back and got up my old map of an outside house I did. I changed it to the house that I want. and now I am working to get the house up and trying to test it to get it right. thats what I am doing now. some of you guys were right about getting my house done. I thought to let the guys that sort of know me to know about the new updates. XD

lucid iron
#

This is also a trigger in BETAS if u wanna use that

acoustic valley
#

cant lie, thats a wild url

#

But thanks! Will take a deeper look then 😄

dark cedar
blissful panther
#

Oh, nope, also one on line 411 and 412.

lucid iron
#

!json

ocean sailBOT
#

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

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

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

drowsy pewter
#

?

lucid iron
#

These will give you squiggles at where you actually need to fix

turbid forge
#

Hey everyone, i need help for the translation of my mod, i create a mod that add a new object, and for the DisplayName and the Description of the object i use this.Helper.Translation.Get("Name") (and "Description" for description), i have also a folder named i18n with a default.json et a fr.json containing for both the same content (but translate) :
{
"Name": "Boombox",
"Description": "A boombox to play custom music"
}

When my game is in french, its displaying the english text i dont understand

tawny ore
#

The name is captured when the object is created. You need to use a String Token for the translation to change for existing objects.

#

The only way for an object to get an updated name is for you to delete it and make a new one.

#

If you have unpacked the game data, look at Strings/Objects.json that's where the name should go

#

And then for Data/Objects the name is "[LocalizedText Strings\\Objects:YourObject_Name]"

turbid forge
#

So i should update the objects.json and the Objects.fr-FR.json in my code and use localized text ?

tawny ore
#

You put the name/description into Strings/Objects and use the token in Data/Objects

#

For example:
Data/Objects

  "213": {
    "Name": "Fish Taco",
    "DisplayName": "[LocalizedText Strings\\Objects:FishTaco_Name]",
    "Description": "[LocalizedText Strings\\Objects:FishTaco_Description]",
#

And:
Strings/Objects

  "FishTaco_Name": "Fish Taco",
  "FishTaco_Description": "It smells delicious.",
#

Strings/Objects can use your this.Helper.Translation.Get(...)

turbid forge
#

I have my OnAssetRequested function here :
private void OnAssetRequested(object? sender, AssetRequestedEventArgs e)
{
if (e.NameWithoutLocale.IsEquivalentTo("Data/Objects"))
{
e.Edit(asset =>
{
var data = asset.AsDictionary<string, ObjectData>().Data;

        data["1234"] = new ObjectData
        {
            Name = "Boombox",
            DisplayName = this.Helper.Translation.Get("Name"),
            Description = this.Helper.Translation.Get("Description"),
            Type = "Basic",
            Category = -99,
            Texture = "Mods/Flamy.Boombox/Boombox",
            SpriteIndex = 0,
            Edibility = -300,
            CanBeGivenAsGift = false,
            CanBeTrashed = false,
            ExcludeFromRandomSale = true
        };
    }, AssetEditPriority.Default);
}

if (c
{
    e.LoadFromModFile<Texture2D>("assets/Boombox.png", AssetLoadPriority.Medium);
}

}

So i should put a if (e.NameWithoutLocale.IsEquivalentTo("String/Objects"))
And the edit the dictionnary to add the string i want ? With this method i should also add a if for each language ? Or am i missing something ?

tawny ore
#

Yeah so DisplayName = this.Helper.Translation.Get("Name") isn't right

#

It should be DisplayName = "[LocalizedText Strings\\Objects:Boombox_Name]"

#

And then you also need to edit if(e.NameWithoutLocale.IsEquivalentto("Strings/Objects") to add the name there

lucid iron
#

How are you changing the language

turbid forge
#

In the main menu

#

But i need to have a if for each language ? like :
if(e.NameWithoutLocale.IsEquivalentto("Strings/Objects")
if(e.NameWithoutLocale.IsEquivalentto("Strings/Objects.fr-FR")
Etc...

lucid iron
#

Well you wouldnt get fr-FR with NameWithoutLocale, since that's the locale

tawny ore
#

Not for each language, SMAPI can just target Strings/Objects and use Helper.TranslationGet to affect all of them

turbid forge
tawny ore
#

NameWithoutLocale means that as soon as the language changes, you'll be updating that regardless of the language chosen

#

So SMAPI translation takes over

turbid forge
#

Haaaaa okok thanks

jaunty nacelle
#

I've never compiled a mod for this game before and I'm not familiar with C#, but I would like to learn. Mostly because there is a mod that I'm hoping to fix.
PelicanTTS, I found a 1.6 version but there is a bug that makes it stop working when the Lookup Anything mod is installed.
https://smapi.io/log/b5ec25719f8b43a99edb00fb2bed762f?Sections=ModsList
so if someone could help me that would be great.

ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.15 build 24356 on Microsoft Windows 10 Pro, with 2 C# mods and 0 content packs.

lucid iron
#

It looks like this mod patches lookup anything, and whatever it patched had changed signature

jaunty nacelle
#

ok. I'm not sure what that means.

lucid iron
#

!harmony more info on harmony/patching

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:

jaunty nacelle
#

so this is a fix for it? so I just need to learn how to compile it. can you help me?

lucid iron
#

You will need to rewrite the patch code Bolb

#

I can't help you because I don't knw what the mod does or what the patch code looks like

jaunty nacelle
#

PelicanTTS is just a Text-To-Speech Mod

lucid iron
#

Depending on what you want the mod for, you could see if stardew access works for you?

#

Need screen reader setup tho

#

As for updating pelicantts, you really do have to show the part of code that's trying to patch lookup anything for us to give any useful help

jaunty nacelle
#

its not that I cant read or something I just really enjoy having PelicanTTS in my game because it gives each character their own voice. It's just more fun that way. More immersive.

cyan marsh
#

by chance is the person who posted this in here?

lucid iron
#

This is where pelican tts is patching lookup anything, it's iterating all the methods of drawtexthelper

#

You need to handle InitIfNeeded(), which should probably not be patched at all

#

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

lucid iron
#

Refer to the C# guide for setting up stuff to build C# mods

tawny ore
#

To be clear, updating PelicanTTS is not just about learning how to hit the Compile button, but understanding the fundamentals of C# programming, and the intricacies of both Stardew Valley and SMAPI.

cyan marsh
#

sometimes something breaks because how the code works changed

drowsy pewter
jaunty nacelle
#

yea that's why i came here to learn

blissful panther
cyan marsh
drowsy pewter
#

that's from the farmer portrait creator website

cyan marsh
blissful panther
#

But this page will have both on it, so if they linked their Nexus, it should have their Discord right there too.

#

No results for "hats" anyway though, so probably not...

cyan marsh
#

yeah.. not a part of this community.. mmkay.. just have to wait for them to notice

shadow pagoda
#

Can someone explain to me what the price variable means in the ObjectData class? The comment says "The price when sold by the player. This is not the price when bought from a shop." I got the object data for a parsnip which has a price of 10 when printed in the console. But when I actually sold the crop, it was 35. This is on a new save file. Is there an more accurate way of getting the selling price of any item. Ik there's a lot of factors that go into the selling price, but I would prefer if this part of my mod wasn't hard coded for the countless items in the game

brittle pasture
#

did you spawn new parsnips to test

shadow pagoda
#

just tried that. it's still 10. I also grew them from their seeds, and seem to be getting the same results

tribal ore
#

There is probably a multiplier for silver/gold/iridium

shadow pagoda
#

I just realized, I was accidnelty looking at the seed object rather than the crop. My bad. Follow up question: Is there a way to force to game to load the object data? I currently have this check to avoid a null reference exception. Is there a way to guarantee the ObjectData object is not null, regardless of the item I am looking up?

ObjectData parsnipData;
Game1.objectData.TryGetValue(parsnipId, out parsnipData);

if (parsnipData == null)
{
    actions.Add(new Action("parsnipData is null"));

}

else
{
    actions.Add(new Action($"parsnipData price: {parsnipData.Price}"));
}
brittle pasture
#

are you doing this before the save is loaded

shadow pagoda
#

no

tawny ore
#

What all changes have you made to the object data (if any) or are you just loading the data?

shadow pagoda
#

I believe there were other times during single player when the object was null. But the only time I can reproduce null is when I was in multiplayer as a guest. Haven't tested it when I was the host

shadow pagoda
tawny ore
#

That really shouldn't be null anytime after GameLaunched assuming your parsnipId is set and correct

lucid iron
#

Did you try ItemRegistry.GetData

brittle pasture
#

that also reads from Game1.objectData under the hood

#

I concur with matt that that shouldnt ever be null if your item id is correct

shadow pagoda
#

Ok, I'll try to write down the steps if that does happen to me. Thanks.

jaunty nacelle
#

Am I just dumb for not being able to understand Object Oriented programing?

rare orbit
#

no

#

not in the slightest

tawny ore
#

I think you picked a fairly sophisticated mod to try learning C# in, if you're trying to update PelicanTTS

rare orbit
#

programing and hell even frameworks like content patcher aren't easy to learn

lucid iron
#

It's a skill to learn, step at a time

tawny ore
#

There are a lot easier ways to get started, you're kind of jumping right into the fire

rare orbit
#

but i do admire they're tryin to update pelican tts

tawny ore
#

Platonymous mods are some of the more complicated ones that have been made for SDV

rare orbit
#

i assume it's to add a text to speach mod to make stardew accessible to those who are blind/vision impaired?

#

i honestly found that mod to be interesting

lucid iron
#

I was under impression that it mostly works though

#

Just has a harmony issue with lookup anything

tawny ore
#

Still, patching in general especially other mods is a higher learning curve than just learning C# which is where they are at as far as what's been indicated

jaunty nacelle
#

I feel like I could easily Make a mod like PelicanTTS if I could write it in a functional language like Python.

tawny ore
#

So it's not that you're not learning OOP, but you're also trying to learn some more advanced concepts

#

Like OOP alone isn't too difficult, but modding, harmony patches, etc. can get tricky

#

What I mean is you shouldn't be too discouraged by it because even intermediate modders might struggle to do what you're attempting to do

jaunty nacelle
#

so far OOP is the hardest part.

shadow pagoda
#

just want to make sure I'm understanding this. In ShopLocation, is itemsFromPlayerToSell a list of items the shop keeper is selling to the player, or is that the list of items that the keeper will buy from the player? I looked at that for SeedShop and FishShop, but they both seem to be empty lists even when I'm in the store. I'm trying to get a list of all the items the keeper is currently selling to the player

uncut viper
shadow pagoda
#

So how would I get items like the parsnip, potato, and green bean seeds for sale from both the pierre's shop and any other shop that has those items for sale?

uncut viper
#

you can just load Data/Shops

#

im sure the game caches that somewhere too but I don't know where. but i know just loading the content will work

reef kiln
#

Is there a program to edit a .dll mod? I want to change one number in the mod and not sure how?

shadow pagoda
uncut viper
#

you load it through the content pipeline

shadow pagoda
#

I don't know what that means

uncut viper
#

The modhelper has a thing for it and so does just Game1.content.Load

lucid iron
uncut viper
#

(note that number 2 is not as easy as it sounds, especially as a mod gets bigger and bigger)

lucid iron
#

As for the program to edit you probably want to use an IDE for C#

#

Visual studio and rider r the main ones

uncut viper
deep cypress
#

There's a whole lot of people playing the android mobile version on PC emulators... And consequentually piles of report logs. Why would someone play hte game on an android emulator on a pc?

lucid iron
#

How could you tell it's an emulator

acoustic valley
#

On the positive side, i got my first Harmony Prefix and Postfix to work, so yay. On the negative, the feature i was working on is apparently already in vanilla stardew... My 20hrs over idk 5 years or more are showing Sadge

deep cypress
#

The logs show the path to a android emulator filepath.

reef kiln
lucid iron
#

Easiest is find alternative mod of similar concept tbh

uncut viper
#

if there is no source listed then the question becomes "how well do you understand C#?"

acoustic summit
iron ridge
lucid iron
#

I guess I would personally decompile mod regardless just to see what is needed to change

rancid musk
#

I wish there was a nice easy way to play Stardew with mods in an android emulator. I imagine it'd make mod testing a lot less annoying.

lucid iron
#

Then decide if i want to just harmony the thing or actually make new dll, it sounds like the mod not too big at least

iron ridge
rancid musk
#

Every emulator I tried was throwing exceptions when I tried using the SMAPI for Android app to actually start the game, I gave up after a couple

deep cypress
# reef kiln Source code is not listed. It is the "stay up late" mod. I want to increase stam...
public override void performTenMinuteUpdate(int timeOfDay)
        {
            base.performTenMinuteUpdate(timeOfDay);
            if (Game1.currentLocation is AspenMountainTop)
            Game1.changeMusicTrack("sadpiano", track_interruptable: false);
            if (Game1.currentLocation is AspenMountainTop)
            {
                int oxytankint = 11;// ExternalAPIs.JA.GetObjectId("OxyTank");
                string oxytank = Convert.ToString(oxytankint);
                if (!Game1.player.Items.ContainsId(oxytank, 1))
                Game1.player.takeDamage(30, false, null);
            }
           
        }```
Use the SMAPI ten minute update event to do this (this is from one of my mods).
lucid iron
#

It'd be nice if we have android decompile at least, to see what is up

rancid musk
#

Android is such a minor niche and even if I did get it running, the lack of being able to debug things would make development so annoying. I'll let someone else break that particular ground

lucid iron
#

But i have -2 idea how to decompile libaot stuff into something readable

deep cypress
lucid iron
#

That's just android smapi

#

!androidsmapi

ocean sailBOT
#
Android SMAPI

There is an unofficial port of SMAPI for Stardew 1.6 to Android. Please see the wiki instructions for more information.

IMPORTANT: This is a highly experimental build and may be prone to glitches, bugs, or incompatibilities. We are not able to provide support if you run into trouble or compatibility issues; please use the discord linked on the Android SMAPI github.

Do not harass mod authors to make Android specific compatibility patches.

iron ridge
lucid iron
#

Spacecore as it is does not run on android so android smapi include some patch fix for it

deep cypress
#

/storage/emulated/0/Android/data/abc.smapi.gameloader/files Here is there path. Yes, the vanilla spacecore breaks, throwing an error in my mod, then, they install some SpacecoreMobile thing that is branched on Github, and it works...

iron ridge
#

yeah that's how android works

#

that's the normal path for android, on real hardware and emulated

rancid musk
#

Yeah, the /storage/emulated bit has nothing to do with android running in an emulator. Android uses an emulated/proxy filesystem for user storage.

deep cypress
#

Basically, I am asking because I don't know why someone would use android on a PC, when they could just use regular PC version. Unless, the Android emuated version is the most stable pirate version. I'm just trying to not abet mass piracy.

uncut viper
#

we're telling you they are not using android on a pc

rancid musk
#

No shot it's the most stable pirate version when the PC version has no drm

deep cypress
#

Ok! are they using Android on a phone and sending me the log somehow?

lucid iron
#

Android smapi actually checks for playstore too

#

Yes

rancid musk
#

Yeah, SMAPI for android will upload logs to smapi.io

deep cypress
#

I see! Somehow, in my mind, sending a log on the phone was not possible...

#

Thanks loves! I feel better about helping these errors now!

shadow pagoda
# uncut viper for the record that content pipeline stuff I linked on that wiki page is really ...

yep, I'm not modifying any of the content. So I figured looking through cahced data would be the best for now. But if that's not an option, I'll use the content. Though I'm not sure how I'm supposed to do this as I'm unsure what the returned value of the objects. This code got me this error.

helper.ModContent.Load<ShopLocation>("Data/Shops"); //'Failed loading asset 'Data/Shops' from SMAPI\hawker.perfectionistinteractiveguide: the specified path doesn't exist.'

Also is there any documentation on where I can find specific information about the game. Ik I will want to look at various things through the game, such as animals, npcs, weapons etc. I saw that there are cached data for that, but I want to try and be a bit more independent and not try and spam this channel whenever I have a question.

brittle pasture
uncut viper
#

(you may sometimes find xmldoc comments in the decompile, but theres no like, one big API reference for all the vanilla game stuff)

calm nebula
#

(DataLoader.Shops)

acoustic summit
#

Robin's got a follower from a tree she cut down SDVpuffersquee [Test Example for a Follower framework]

shadow pagoda
uncut viper
#

!unpack this will at least help you know what to expect for a lot of the content types

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!

rancid musk
# calm nebula (DataLoader.Shops)

Just to bring more attention to this, never load any asset from Data/ without using the DataLoader class's static methods. Just don't do it. That way leads madness and incorrect types breaking everything

uncut viper
#

for 2, i did mean IModHelper. theres one for GameContent, not just ModContent

rancid musk
#

So don't do cs helper.ModContent.Load<ShopLocation>("Data/Shops") instead, do: cs DataLoader.Shops(Game1.content)

uncut viper
#

well ModContent.Load wouldnt work as m entioned anyway, but ive never had an issue just doing Game1.content.Load when ive needed vanilla content

#

im not saying the dataloader isnt useful, just that i forget its there a lot but never run into issue without it

rancid musk
#

Say 1.7 comes out and the content type of something changes.

  1. You're using content.Load<Dictionary<string, SomeType>>("Data/BlahBlah") and oops, your type is broken. But you need to go find where it's broken. It might not necessarily break compilation. It might be a runtime problem.

  2. You're using DataLoader.BlahBlah(Game1.content) and the type is just updated. You have a compilation error showing you exactly what to fix right away.

#

Just use DataLoader for new stuff, lol

lucid iron
#

What is the scope of this particular framework? Do you want to do custom companion like things?

uncut viper
#

that doesnt seem like a particularly important hypothetical situation to worry about if you ask me, but as always someone else values may differ from mine

#

or rather it doesnt seem important enough to warrant a "Never do this," unlike say "Never write to Game1.objectData"

lucid iron
#

I think it's good practice to use DataLoader for base game stuff probably, if you don't want to do what no more lag did

#

But it won't explode if u r give it right type

rancid musk
#

(Did No More Lag actually make things explode for any users or was that just a hypothetical thing with their dumb "let's load this as an object" code?)

uncut viper
#

good practice, sure, but "Never do it, madness and incorrect types breaking everything"?

#

im pretty sure No More Lag did actually break a lot of shit

lucid iron
#

It explodes content patcher specifically

#

By loading with object

#

It was a 1 in 3 thing, depending on whether cp got to load first

rancid musk
#

Anyways, I think saying "never do this" is fine. There are strongly typed helper methods that were added to the game for the specific purpose of being a better alternative to people using content.Load<T>(path) incorrectly. Because people have done that and it has caused issues.

#

It is the Best Practice to use that, and there is no benefit to not using them.

acoustic summit
tawny ore
#

It's not wrong to not use it, but it's not not wrong to not not use it /lh

brittle pasture
tawny ore
#

Wait, I might have miscounted my negatives...

lucid iron
#

Something else to be aware of is the whole farmhand ghost location business

gentle rose
lucid iron
#

That quirk is probably why custom companions dont let their entities path out of location

acoustic summit
lucid iron
#

Yeah i just wasn't sure bc koala didn't follow grid exactly DokkanStare

acoustic summit
#

Whats the farmhand ghost location? SDVpufferfear

lucid iron
#

when you are farm hand the current location is fake

uncut viper
#

farmhands do not know about all the maps or other NPCs

#

unless they are in an actively loaded location

acoustic summit
#

Oh that should be okay, though I'll keep it in mind for when I get to MP

uncut viper
#

if an NPC is in the Mountain and the farmhand is on the beach, from the farmhands game perspective, the NPC might still actually be in their house in town

#

if you ask the farmhand for the NPCs coordinates or where their follower is, it will tell you "in their house, ofc"

lucid iron
#

I think if u r just doing this as visual thing it might be ok that the follower cease to exist when u r not in same map monS

#

So they r just fancy critters in the end

acoustic summit
#

The only downside of that would be that if you went into a new map the followers wouldn't "know" where should be, like if I went into robins at 10 on a wednesday right now the koala will appear a tile top left above her, because she moved from that direction.

rare orbit
#

how would i make a config schema? i wanna know for future reference

acoustic summit
#

I think in the end they'll feel like critters, maybe with some sounds and such. I don't know what else they would do at this time

lucid iron
#

You should give the an interact action imo

rare orbit
#

cool cool! thank you!

lucid iron
#

e.g. When player press button while their bounding box overlaps with the follower, run the content pack supplied trigger and/or trigger action

rare orbit
brittle pasture
#

yes

lucid iron
#

I have detailed thoughts about this bc i coincidentally did this exact feature 2 weeks ago

rare orbit
#

just wonderin! thank you!

acoustic summit
lucid iron
#

Hm not really, i think trinkets code is kind of hard tied to the owner being a player

#

And it has to remain that way for the whole ability system to function

#

Certainly the companion control stuff is reusable but hey it's MIT

mighty quest
#

I'm trying to patch FarmAnimal data after SVE in order to change its Camel, Goose and Bear entries, but for some reason when my AssetEditor is called, the SVE animals are not in the asset data, even though I've set priority to late.
I can't seem to figure out why my patch is running before SVE..
(this is in C# btw)

lucid iron
#

Did you try having optional dependency

mighty quest
#

I did, yea

lucid iron
#

And they r still missing?

latent mauve
#

When does SVE set their patch priority?

mighty quest
#

I don't think they do set a priority

latent mauve
#

And you are 100% certain you are selecting the right target names?

#

SVE does weird naming sometimes

mighty quest
#
        this.Edit("Data/FarmAnimals", new AssetEditor(EditFarmAnimalsData, AssetEditPriority.Late));

(this.Edit is part of my asset editing framework, but it's just piping to SMAPI's asset API underneath)

    private static void EditFarmAnimalsData(IAssetData asset)
    {
        asset.AsDictionary<string, FarmAnimalData>().Data.ForEach(pair =>
        {
            pair.Value.ProfessionForHappinessBoost = Profession.Rancher;
            pair.Value.ProfessionForFasterProduce = Profession.Producer;
            pair.Value.ProfessionForQualityBoost = -1;
        });
    }
latent mauve
#

( does patch export work for including C# edits or just CP?)

mighty quest
#

I do patch invalidate in-game and break into the asset edit method and see this

#

14 entries, which are all the vanilla animals

#

i'll try patch export

#

yep, SVE's animals do appear in patch export

#

is there something wrong with the way I'm editing the data?

lucid iron
#

I don't think so, assuming your asset editing stuff is fine

mighty quest
#

ok guys, false alarm
i was building as release and debugging the wrong file

calm nebula
#

Something something additional farms

tawny ore
#

thinksmart can’t lag if you can’t load

#

Technically accurate mod

teal bridge
#

I beg to differ. It's very possible to generate a ton of lag in the attempt to do something and still ultimately fail to do that thing.

calm nebula
#

Me swimming

rancid musk
#

And that's why it's important to do testing and not just assume a certain approach is going to be faster.

brittle pasture
#

didnt know atra swimming lags physics irl

#

that explains why my keys phased through the ground last week

versed crypt
#

I was thinking of making my own custom NPC pack and I was just curious which is easiest to use for that purpose: Content Patcher or Spacecore? I have no coding experience if that's relevant

brittle pasture
#

Content Patcher is what you use to add your NPC into the game in the first place
SpaceCore is a framework that adds extra features in case your NPC needs them

teal bridge
#

I wasn't aware SpaceCore had anything to do with NPCs, other than maybe fixing some bugs or enabling certain behaviors you might add with a custom NPC.

brittle pasture
#

well it has a bunch of misc stuff. misc pathfinding fixes, unique slingshot item reactions, question framework

latent mauve
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

latent mauve
#

If you want a basic NPC to learn with, I suggest a nonsocial NPC first

#

And then you can add the extra moving parts that make up a social NPC

versed crypt
#

Oh okay thank you so much!

lucid iron
#

Are you talking about using the spacecore content engine?

#

I believe it is released and you can do the usual content load edit stuff but you will not have as many examples (it's very new)

tawny ore
#

SpaceCore has become the everything mod

shadow pagoda
#

Is the condition in GenericSpawnItemDataWithCondition considered a query or a content patcher condition? And is there an already built-in system within SMAPI to get the boolean value of that string? Currently, I'm just using to verify when certain items are available in a shop, which I don't think would be difficult to implement on my own, but I may want something more complicated and I don't want to do work that's already done.

lucid iron
#

It's a GSQ

#

But the entire model is actually an item query

#
IList<ItemQueryResult> itemQueryResults = ItemQueryResolver.TryResolve(args, context, SearchMode);
foreach (ItemQueryResult res in itemQueryResults)
{
    if (res.Item is Item item)
        ...
#

Since u r shop u probably need to handle case of not Item too hm, but this is how it goes in general

#

args is the genericsspawnitemdatawithcondition

shadow pagoda
#

I don't follow the first line. I'm not sure what context is. This is what I have so far. I would like to add to the condition after I verify the item I'm looking for. In this case being a parsnip seed

//figure out if a shop sells the parnsip seeds and for how much

Dictionary<string, ShopData> shops = DataLoader.Shops(Game1.content);

List<string> applicableShopNames = new List<string>();

foreach (KeyValuePair<string, ShopData> kv in shops)
{
    if (kv.Value.Items.Any(item => item.Id == parsnipSeedId))
    {
        applicableShopNames.Add(kv.Key);
    }
    
}
lucid iron
#

Context is an ItemQueryContext

#

It's got the current player location and Random

#

There's a different overload you can use if you just want game to pass in a context for you

lilac stratus
#

hey, I tried updating my C# mod (last I had it working was on 1.6.8) since SMAPI yells it's incomaptible, but when I updated pathos package I now get The "ContentPacks" parameter is not supported by the "DeployModTask" task loaded from assembly: SMAPI.ModBuildConfig, Version=4.1.1.0 - anyone knows what's up?

shadow pagoda
lucid iron
#

The shop code also uses item query resolve to get the list of things to sell

#

I think if you just take a look at decompile it will make sense

shadow pagoda
#

and that's different from unpacking?

lucid iron
#

!decompile

ocean sailBOT
brittle pasture
#

(have you been coding without decompiling the game's DLL?)

lucid iron
#

Or whatever the latest version was

#

ContentPacks is added in 4.3+

shadow pagoda
brittle pasture
#

going through the game's code (not all of it, but just looking at what you're working in) is very helpful and saves you lots of time having to ask us questions

lilac stratus
lucid iron
#

It's a nuget that set up the common build target stuff for a sdv mod

#

To be honest im not sure how you ended up with a ContentPacks thing if thats all you got

lilac stratus
lucid iron
#

Can you show us your csproj

calm nebula
#

You may need to do the close vs open vs dance

lilac stratus
lucid iron
#

Mystery, it is probably nuget cache things yea

lilac stratus
#

k, I'm done for today, thanks for the help, I'm off to bed

calm nebula
#

For a while VS would reliably crash every time I tried to delete a file

#

I joked it was VS telling me I really should retire from modding

tawny ore
#

And the rest is history

dusk mulch
#

me geniunly tweaking when i cant manage 18 pairs of numbers

hard fern
#

only 18? SDVpuffersweats

dusk mulch
violet valley
#

Pathoschild is not online. A rare sight

#

!help

ocean sailBOT
#
please get me off discord
hard fern
#

LOL

lucid iron
#

What do u mean by this

dusk mulch
hard fern
#

bouncer has been unbonched.

dusk mulch
#
      • SongBirdAJ is typing...
violet valley
#

@hard fern saD

#

typo

wet belfry
#

Hey everyone! I have a mod idea, and I have no idea how easy or hard it could be. I'm new to modding and coding, but I'd love to learn more, and figured this would be a good place to start. My idea is when I push a predetermined key, the whole house rotates. The tiles that have objects on them would be rotated on the tile/tiles they are at, creating a 3D space effect, specifically for the farmhouse. If I have the maps built on Tiled, would this be insanely easy or insanely hard to code?

lucid iron
#

Do you plan to draw 4 version of the map

wet belfry
#

Yep!

brittle ledge
#

That would require c# to update the maps in realtime, no?

#

Also furniture/farmhouse map compatibility will probably be A Lot

uncut viper
#

updating the maps wouldn't require it but moving any user placed objects would

brittle ledge
#

Oof, you'd probably have to interfere with AT for compat too

uncut viper
#

you'd need c# anyway for the hotkeys though

lucid iron
#

I think one issue you will have is some furniture doesn't have all 4 rotates

#

Especially wall items

#

I don't know how you want to deal with it

#

Either way this is gonna be a C# mod

#

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

wet belfry
#

I was familiar with the content pack type stuff, but not c#
Now I have a rabbit hole to read about! Thanks everybody 🙂

lucid iron
#

No as in, the vanilla furniture system literally does not support all 4 rotations in some cases

uncut viper
#

it will be a challenge if you are starting from no c# knowledge

lucid iron
#

And placable things like big craftables don't have rotations at all but at least they only occupy 1 tile

wet belfry
lucid iron
#

You have to implement this behavior

#

Create a "rotate all the things framework" in C#

uncut viper
#

most stuff you would need here would need entirely custom, purpose built and probably complex C# code

lucid iron
#

Totally doable ofc, you can do just about anything in C#, just effort™️

dusk mulch
#

well i finally got half the warps done, now for the other half

wet belfry
#

Sounds like I'll have to try my hand at C# then! I will see if its within my hyperfocus limits, haha. Thanks for the info! If I do end up trying it, I'll be back 🙂

dusk mulch
#

....

#

I SWEAR TO BONCHER I AM NOT FIXING THAT, I AM JUST GOING TO HAVE TO PRAY THAT PEOPLE DONT ZOOM OUT

#

i just got done with all the warps as well

outer glacierBOT
#

:SDVbouncerstare:

dusk mulch
#

Uh-

#

Sorry bouncer- I didnt mean to swear at you

lucid mulch
#

I think I would see that while still at 100% zoom

dusk mulch
hard fern
#

swear to boncher...

dusk mulch
blissful panther
#

I would almost certainly see that at 100% zoom on a 4k screen!

dusk mulch
#

oh right, i forgot about moniter size

shadow pagoda
dusk mulch
#

well i cant accommodate everyone, i would need a 10000000x10000000 map

#

or something

uncut viper
dusk mulch
#

Oh right, i came here to ask for help

shadow pagoda
dusk mulch
#

So I have a touchaction setup on a tile property to prompt to go to sleep but when I click yes the screen goes dark but nothing happens unless I go outside, then when I go outside it takes me back to the farm house

#

so how do i make it so I go to sleep and wake up on the same tile

#

maybe if i set it to F outdoors-

#

hold on

#

i think i got a hole in my tent-

lucid mulch
dusk mulch
lucid mulch
#

that is what 4k stardew looks like

dusk mulch
#

oh

#

well i will see if there is a way to lock the camera inside a certian area on a map

#

found it

blissful panther
#

That's the tent map at that resolution for what it might help!

#

And at 75% zoom.

dusk mulch
#

at this point im considering just doing seperate maps

#

fuck the lag

lucid iron
#

I wonder how annoying it would be to give map tiles conditional rendering

rancid musk
#

I appreciate people who test their maps at 4k

dusk mulch
#

ive never heard of that

lucid iron
#

That's because there's nothing that provide such a feature afaik

dusk mulch
#

oh

hallow prism
dusk mulch
hard fern
#

how many tents do you have

#

o

lucid iron
#

But the idea would be, some parts of map is invisible unless your character is inside it

blissful panther
#

Almost sounds like...

lucid iron
#

And the reverse, some parts are visible when your character is outside of it

#

Dont dynamic map tile me

#

I think the tiles should remain exist tho, merely invisible

hallow prism
dusk mulch
#

alright i will do seperate maps

blissful panther
#

Don't think it ever got finished, but it was a cool concept.

rancid musk
#

Wow, blast from the past

devout otter
dusk mulch
#

omg i didnt even think of that

#

ty

dusk mulch
#

should really get finished because it would be awesome

blissful panther
lucid iron
#

How existent is bridges over the ages

#

I heard of a very old map framework with them

blissful panther
#

Yeah, I learned about that after I started experimenting with that. I think it was broken even back then.

lucid iron
#

It's ok the bridges on ginger island isn't any better Dokkan

brittle pasture
#

I remember a talk about z level impl months ago

lucid iron
#

I don't think anyone in the convo did anything for reals LilyDerp

uncut viper
#

never able to figure out how to handle teleportation

lucid iron
#

The "tile action increment decrement your z index" would have been extremely fragile if the map gets patched

calm nebula
#

I think ginger island bridges just stop you from doing dumb shit on them

#

Also. Like

lucid mulch
#

tbh I think multiple 3x3 maps would be better performance than one map with huge gaps to join them together

#

though maybe not as the one map would share tilesheets

lucid iron
#

What if it's just 1 map asset

dusk mulch
#

I need them to come out of the same tent they went into

lucid iron
#

I still think it's nicer if they r buildings tho

lucid mulch
#

that is the nice characteristic of buildings, building interiors fix the warp to go to the correct place outside

uncut viper
#

well i did mention BETAS + spacecore can do it with just one map/location but you did say the way you were doing it worked fine, so

reef kiln
hard fern
#

buildings are so nice

#

doesnt it take the "exit warp" and spit you out one tile above?
or like... lowermost warp

uncut viper
#

because Buildings do not have Locations

#

Buildings have interiors specific to them that they take you to

#

unlesss you specify they should go somewhere global

#

it is important to remember that a Map is not a Location

reef kiln
#

I will just accept it works without my understanding for now.

lucid iron
#

Building warps r special and based on human door on the outside

#

Based on 1 tile above first warp on inside

shadow pagoda
# shadow pagoda Is the condition in `GenericSpawnItemDataWithCondition` considered a query or a ...

Replying to this for context. I'm looking at ShopBuilder's GetShopStock method as that seems to have the code I was looking for. But I noticed that is does use ItemQueryContext on top of CheckItemCondition with the latter being the one I want to verify it's in the shop. If that's the case, what is the purpose of the former?

Actually, I just realized I can just use GetShopStock for what I need in general. But I still want to ask just in case I need it for the future.

uncut viper
#

ALL_ITEMS is an item query. that is not a Condition

#

so its something you'd need to account for, too

#

you would need both item queries and GSQ conditions to fully understand a shops stock

shadow pagoda
#

That's confusing. But that's mostly bc I'm just learning about it. I assume I'll get it with practice. Though my brain rn is hoping that I don't need it any time soon.

reef kiln
lucid mulch
# uncut viper because Buildings do not have Locations

Buildings do have locations.
For some buildings like Greenhouse and farmhouse, the first instance gets the canonical name, with extras getting instanced versions.
all other buildings get the instanced versions, where its BuildingName<guid>.
you can debug warp directly into the third barn if you knew the start of its guid

uncut viper
#

they do not have Data/Locations

lucid mulch
#

Correct, but neither do cabins which aren't buildings

uncut viper
#

i didnt say buildings were unique in this regard

reef kiln
#

How would he apply that to themap with 8 tents is the question?. As they want each tent to exit to the entrance used to enter the tent.

#

That seems to be the issue they are having.

uncut viper
#

if they were buildings then its a non issue

lucid iron
#

Wait cabins aren't buildings?

uncut viper
#

they do exist in Data/Buildings but i thought they had Extra logic applied to them

lucid iron
#

With buildings included

calm nebula
#

Is there any attempt to path npcs into these maps

rancid musk
#

There is a little extra logic for cabins but I don't think that makes it particularly unusual for a building.

orchid glade
#

hi! Is there any reason a mod would need to use load instead of edit image (for portraits), and is it possible to make a compatability patch that makes another mod use editimage instead of load?

dusk mulch
#

So how do I setup a warp if there is no data/locations?

dusk mulch
lucid iron
#

if you are making a entirely new custom npc, you need to Load any assets that don't exist

orchid glade
#

ok, but if you are just modding vanilla npcs there's no reason for load?

devout otter
lucid iron
dusk mulch
#

Addwarps has the same format as Warp,

Value Value Location Value Value

lucid iron
#

some edge case include like, scale up 2?

uncut viper
#

if theyre buildings you dont set up the warps, the warps just are. you use the building door

devout otter
#

(Assuming a HD portrait mod.)

dusk mulch
#

and wdym the warps just are

uncut viper
#

the suggestion was to use buildings.

orchid glade
#

the new portraits add some emotes but they are just regular size, not HD

uncut viper
#

which do not use touch actions

lucid iron
#

i think if you want to use maps, you can still load from 1 tmx

#

to N different targets

uncut viper
#

if you absolutely require touch actions, you do not use buildings and the suggestion is disregarded

lucid iron
#

then do editmap on all of each of em

dusk mulch
#

I require tents which means I require touch actions

uncut viper
#

no, it doesnt mean that at all

#

if the tents are buildings then you dont

#

thats what the suggestion was

#

make them buildings and not built into the map

lucid iron
#

you can still have TouchActions inside the map (tmx) if you want, it just won't be for the warps

dusk mulch
#

So I map edit in the tents?

latent mauve
#

If you did want to take the approach of "I want to load one map as different locations and have separate warps " you can do what I did for the Pelican Valley Loft NPC Apartment floors

uncut viper
#

buildings are not map edits

lucid iron
#

this is bc of sprite index

uncut viper
#

there was a different framework suggested at one point originally that lets you just spawn buildings somewhere

orchid glade
#

so cool, if i wanted to make a compatability patch would it be possible to make the other mod use editaction instead of load (like, patch the content file I guess?) or would it actually require the original mod to change

uncut viper
#

i dont recall its name

latent mauve
#

What I did for the apartment floors was setting the separate outbound warps in Content Patcher for each floor rather than Tiled.

devout otter
uncut viper
lucid mulch
orchid glade
#

okay... hmm thinking

uncut viper
#

i also dont know why you would want to change another mod instead of just editing the image from your own after

#

so like Dolphin suggests, more context would be helpful

dusk mulch
#

Or, I could just have 1 accessible tent and the rest are all "occupied" or "locked"

#

(Because why would you need more than 1 tent in the first place)

latent mauve
dusk mulch
#

Ooo good idea lol

sharp swift
#

Hello, can anyone help me? I have programmed things in HTML, CSS, PHP, ASP, SQL and JS (I have only programmed with websites) but never C# with Stardew Valley mods. I downloaded the programs they ask for but I can't make the .dll. How can I convert my C# code into .dll?

Please be patient with my English because I am Brazilian, but I understand more basic words.

lucid iron
#

It occupied

orchid glade
#

ahh ok here's the situation. I have one mod that loads custom portraits, but only for portraits that need changing from vanilla (so, only some NPCs, only regular and winter portraits, not beach ones, only if certain conditions are met). I want to use anime portraits with this mod, so I'm making anime versions of the specific portraits in the mod, which i can replace in the mod's portraits folder. But I want to also change the other portraits and NPCs that are not touched by the mod, for a consistent look, but if I use the anime portraits, which are editimage, they will edit the portraits loaded by the other mod.

ocean sailBOT
uncut viper
#

er

#

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

lucid iron
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.

uncut viper
#

(wrong command sorry lol) look at the second bullet point

orchid glade
#

Basically I want the regular anime portraits to load (or edit) first, then the changes from the mod that currently uses load to apply second

lucid iron
#

The gist is you need to build with dotnet, and target net 6.0

#

There is a nuget package that setup sdv mod build

uncut viper
latent mauve
uncut viper
#

Load always happens before EditData/EditImage/etc. always.

latent mauve
#

So when the mod exists, your EditImage does not run for those portraits

orchid glade
#

neither of them are my mods

#

i just want to make them compatable

dusk mulch
#

...

#

oh

lucid iron
#

You can just make personal edits then

#

As in go into one of the mod and edit the json

latent mauve
#

Just note that you won't be able to publish whatever you do afterwards

orchid glade
#

ok.... yeah I was just hoping i'd be able to make something that would work for others too

latent mauve
#

This is for your use only

lucid iron
#

Yep

uncut viper
#

if neither of them are your mod then you do not have permission to redistribute their assets unless they specifically say you do

lucid iron
#

For others you could recommend what you did to the author perhaps, as a suggestion

latent mauve
#

Yeah, that's a no-no without permission from the authors to edit their mod and republish

orchid glade
#

no I know that 🙂

lucid iron
#

Need content patcher patcher

uncut viper
#

compatibility like that is not possible for anyone other than one or both of the mod authors then

orchid glade
#

I will see if I can suggest that to the mod author.... changing load to editimage should be the first step for compatability though right?

latent mauve
#

I am not super familiar with Portraiture, but I think you can use that to cycle through different portrait mods and lock one style per character?

#

Which would be a no code solution

uncut viper
#

i would not suggest them specific ways to do compatibility but rather just ask them for compatibility and let them figure out the best way to reach it with their vision for their mod

orchid glade
#

lol noted

uncut viper
#

there is no one answer for "what to change"

orchid glade
#

well thanks guys, at least now I know i'm looking at personal edits for the time being and compatability is out of my hands ^.^

devout otter
uncut viper
#

@dusk mulch i noticed you edited the wiki anyway despite getting no response, and broke the table somewhat by adding a random third column for that line only. there is no reason to recommend against the property as there is no reason it cant still be used with i18n in Content Patcher and there is no reason it has to be used with things that need translation at all. there is no one recommending against its use

dusk mulch
#

oop- srry

shadow pagoda
#

I am currently trying to figure out when a specific shop is open. Preferably to know the hours it will be open that day, if at all. I tried looking through the decompiled code, and haven't found anything yet. Though I figure I missed something as I assume the game does some sort of check to let you in. As of right now, the only way I have thought of is to use the schedule data for all shop keepers to see when they're open. But that seems very jank and not intuitive at all. Is there something I'm missing?

latent mauve
#

data/shops will tell you the owner conditions

orchid glade
latent mauve
#

As far as the map warps, those are locked door warps in the maps themselves

#

It won't necessarily be in the code as it is inside the tbin file

orchid glade
#

ok I gtg! thanks !!!

lucid iron
#

look at performAction for tile actions like "AnimalShop"

#

many game default shops are hardcoded like this so their conditions are a little silly

#

for modded shops it's not as bad, check for OpenShop tile action on maps

dusk mulch
brittle pasture
#

I don't see anything that's harsh in Button's response

dusk mulch
#

it just felt harsh, idk maybe its me

#

but tonetags hel[

#

help

hard fern
#

if anything, i think accidentally breaking the wiki is a problem 😓

brittle ledge
#

You might be taking the criticism too personally/feeling rejected because you made a mistake kyuuchan_nod2

dusk mulch
uncut viper
#

it was not my intention to sound harsh (like tiakall implies it wasnt meant as a personal criticism or anything, just a correction) but i will still make note for in the future to try and make sure i come across as not-harsh as i intend

hard fern
#

and this is why im too scared to edit my own section on the wiki

rancid temple
#

Button, just throw on some SMCKekLmaoDog

brittle ledge
#

yeah, so instead of feeling like Button was mean to you, I'd take the time to analyze what you did wrong and take steps to not do it in the future kyuuchan_nod2

uncut viper
#

i do not have nitro

rancid temple
#

Nobody can be offended if you add extra emotes

uncut viper
#

and never will

lucid iron
#

convince the unicode consortium to support 🐶😆

brittle ledge
#

use SDVpufferowo