#making-mods-general

1 messages ยท Page 140 of 1

tawny ore
#

That depends on the texture having the same path though, right?

calm nebula
#

So you would need the internal texture names for AT

tawny ore
#

Yeah, that's the same problem I ran into

calm nebula
#

Yup. It's not very relevant for npc sprites though

#

Tbh, Matt, we're getting into "atra is dumb and just knits" territory

#

Aka "atra is tired and doesn't have the spare brain capacity to think of these things anymore."

tawny ore
#

You could target a vanilla tilesheet, but AT replaces it with something else. I wonder if fixing that issue is as simple as AT updating the texture name back to the vanilla path.

teal bridge
#

Drawing happens with the texture instance, not the texture name.

tawny ore
#

No, but when you patch SpriteBatch.draw and use the texture parameter to match it's name, then your patch depends on that name to target the correct sprite

calm nebula
teal bridge
#

Yeah, you... you can't rely on texture names once you're at the SpriteBatch level.

tawny ore
#

spritemaster is that still a thing

faint ingot
#

This is spitting false but the game behavior tells me this condition should be true (and i expect it to be true):

calm nebula
#

Ish? It's clear glasses now

teal bridge
#

I'm not sure exactly what the relationship between Spritemaster and Clear Glasses is, but there's definitely SM code in CG.

calm nebula
#

(And again, we are getting into the atra is tired territory, I'm so sorry.)

teal bridge
#

So some part of SM, if not the whole thing, is definitely still alive.

calm nebula
#

So I'm probably gonna head out, it's not something I want 6o figure out lol

tawny ore
#

That 100% returned the relative path to the vanilla asset

#

So if I was patching TileSheets/bushes, that value would be "TileSheets/bushes" in the SpriteBatch.draw method

teal bridge
#

What I'm saying is you cannot assume that condition will always hold true, only sometimes hold true.

#

For example, suppose the texture has been drawn (or is drawing to) a RenderTarget2D. Or even is a copy of the vanilla texture.

tawny ore
#

Yeah, I can only speak anecdotally in my tests for the vanilla game objects like Bushes, Plants, Crops, Floors, Fruit Trees, Giant Crops, Grass, Hoe Dirt, Resource Clumps, Wild Trees, Tools, every item in the game, Characters, and every building in the game. I'm guessing there could be edge cases, but for all intents and purposes it worked well enough.

calm nebula
teal bridge
#

I guess so. Like a lot of things, it might work OK on vanilla but mod compatibility would be another story altogether.

calm nebula
#

It is not guaranteed for some random Jane modder doing new Texture2d

#

Or Casey doing new Texture3d

teal bridge
#

Or me using render targets.

#

And if you are changing the texture resolution then you have to deal with issues like the size of the render target, active scissor rectangle, etc. Even the origin property, and I'll bet you dollars to donuts that several of the draw-patching methods out there aren't very careful with it, because the way it works is wacky.

#

Again, a lot of things are fine for really simple cases and a lot of the actual drawing that happens in vanilla game is indeed really simple cases.

tawny ore
#

Yeah, there was a lot of math involved to patch sprites out of the existing bounds of the original sprite to make sure everything scaled and was positioned correctly.

acoustic summit
#

Ive already updated a mod I released yesterday once for performance/ one small bug fix just to get it sorted, but two people sent in translations of my mod (one for chinese one for spanish). Do I wait a bit to update or immediately update with the new languages? I feel bad updating so rapidly

tawny ore
#

Most people who are opposed to updating frequently will just ignore mod updates anyway

#

If you really want to throttle your updates, you can just wait a week and try to bunch together multiple things. Especially if it's just translations you're adding.

calm nebula
#

I'm going to be honest; I only get annoyed with rapid bugfix updates if it happens to be things that "should" have gotten caught during testing

#

But yeah, some people bitch

#

Some people bitch about everything though

#

I enjoy bitching

tawny ore
#

In the pre ModManifestBuilder days, I've mid-day updated because I forgot to change the manifest

calm nebula
#

For example. It's entirely stupid my fridge moves the hot air out of it just to make the hvac system deal with that

#

And there have been plenty of times I've stepped out of a toasty car into a cold house and wondered if thermodynamics could do me a favor

acoustic summit
#

I think I'll update it, yeah. I mean it saves people downloading it in the mean time from having to update it

calm nebula
#

Also can my car grow a small 1 sq yard solar panel hooked up to a fan to keep the inside cool during...is dragged off

acoustic summit
#

So the longer I stall the more people will need to update

lucid iron
#

Some people opt to just let others make tl pages

#

So they don't have to deal with it

acoustic summit
#

These were people that just kinda asked if they could translate it, if they had asked to make seperate pages I wouldn't be opposed. I randomly looked up another one of my mods and there was like 4 other pages in different languages without me knowing - was kinda cool to see

gentle rose
lucid iron
#

Yea ppl had great desire for bosses Dokkan

brittle pasture
#

I'm surprised no one made translation pages for my 75k UDL mod
(granted those are debug lines that no one should ever see in regular gameplay, but still that's ez DP right there)

gentle rose
#

also I published the compatibility fix for my map event markers mod so thank you so much again for helping me guys! your patience was appreciated ๐Ÿ’– I've got some things going on right now which meant my head hasn't exactly been clear so I'm very grateful for your help

gentle rose
uncut viper
brittle pasture
#

Doodly Poodly
Donation Points. Nexus' Reward System, where you can opt in your mods and you get rewarded depending on (roughly) how many downloads you get

rigid musk
#

when you have an NPC name that has a space in it - do you write it as "Npc_Name" or "Npc Name" in events

uncut viper
#

you use the internal name, which ideally should not have spaces

brittle pasture
#

I dunno the answer, but I'd use underscores everywhere

rigid musk
#

Ideally it wouldn't but I'm working on making it so that it's using the actual in game npc Mr qi instead of my own to see how it works (for compatibility's sake)

#

And his NPC name is Mister Qi

uncut viper
#

my condolences

#

id expect some things to not work tbh

rigid musk
#

Most of it is pretty easy but the event thing is what's throwing me off ... how unfortunate

#

It would make it far easier for me to incorporate compatibility with other mods like the gender neutral Qi mod or Mr Qi Dialogue Expansion

teal bridge
#

Because the translation actually isn't an update to the mod. Nothing has changed in the mod itself.

brittle pasture
#

the game seems to use MrQi for him in events

rigid musk
#

I prefer for people to send me the pastebin for it so I c an add it myself honestly - I appreciate people translating it but I also put in a lot of work writing stuff so it feels weird to have everything I made uploaded with another mod entirely-

#

it does?

brittle pasture
#

not sure how that works

calm nebula
#

Weird

rigid musk
#

I was literally about to say how does that even work if his internal name is Mister Qi ...

#

Giving me a headache for real

calm nebula
#

You can probably use "Mister Qi"

#

Tbh

uncut viper
#

if someone is redistributing your entire mod in order to translate it, that is the incorrect way to do it and you should tell them not to

teal bridge
#

Yeah, that's precisely why I'd rather not post an update or include the translation at all in the original mod.

#

Because I don't have the knowledge to update the translation when I update the English content.

rigid musk
#

Solution: never add content again ever forever /j

calm nebula
#

Ez. Just learn all 12 lang

teal bridge
#

So you end up with a mess of, first update the content in your own language, then post an update, then receive one translation, post another update, then receive a few more, post more updates, ugh.

rigid musk
#

Learn every language ever

teal bridge
#

Or, you reach out to all your translator friends before you release your update and wait 3 weeks before you can finally post it.

rigid musk
brittle pasture
#

I still have no idea how MrQi works, but apparently getActorByName has an option to try replacing underscores with spaces if an exact match wasn't found, so Mister_Qi may work?

rigid musk
#

I mean I can always test it, it just gives me a headache to think about ... curse me for wanting to make everything compatible

brittle pasture
#

to clarify said option is flipped to true for event code

rigid musk
#

I was overjoyed when I saw that SVE didn't edit the part of the casino that I edited lmao, less fixing for me..

#

I will try it and see what happens

#

I have a backup... and a backup for my backup, so if I mess anything up it'll be okay

brittle pasture
#

okay I think I found my answer - Mister Qi and MrQi are two different entities. the latter is transient and only exists in events, and the game has a hardcoded branch to draw the impostor MrQi with the real Mister Qi's texture

teal bridge
#

Qi has hardcoded spawn code in a couple of places.

#

Like, created with new NPC(...) and a bunch of random stuff jammed in.

rigid musk
#

Of course Qi has some hoodoo voodoo ghost stuff going on

#

Why would he not

#

I got rid of him once I can do it again >;[

rancid temple
#

A little (or sometimes a lot) of C# should clean that hardcoded right up

rigid musk
#

I lied I will not be doing it because that is

#

Not on for me

#

Extra work does not equal extra fun :(

calm nebula
#

No, I seriously meant try \"Mister Qi\"

rigid musk
#

No no that wouldn't be the only issue - I did a bit of a test and it does work technically - but because of the hardcoded stuff there's two Qi's and I don't want to figure that out

#

Maybe I will when I'm less tired but as of right now I have decided that I will not, in fact, be editing his vanilla NPC stuff - and he will be a new NPC ... because I said so

versed wyvern
#

Wait a second... could Spacecore's HD texture support theoretically be used to scale up an NPC if I painstakingly used texture override on every frame of their sheet? cathuh

rancid temple
#

Most likely that is what you would have to do

#

That's what you have to do for portraits so I assume same problem for sprite sheets would exist

versed wyvern
#

There's no guarantee it would solve the incompatibilities I'd like to resolve but it might be worth a shot

#

Cutting up NPC sprite sheets into 50+ pieces though

tender bloom
#

Online sprite splitter tool

lucid iron
#

I don't think you have to split it into pieces but you do have to write all the actions yes

calm nebula
#

I thought spacecore texture override allowed recs

#

you also don't have to write allll the actions, I feel like this is a simple nested four loop

lucid iron
#

Atra coming in with the C# elitism \j

buoyant zenith
#

Ehh I made a large-ish map mod and it lags during raid furicry

#

Ig the game renders rain for the whole map, and not just the part in view

lucid iron
#

How large is it?

buoyant zenith
#

128 x 96

rancid temple
#

Pretty sure the Town is bigger than that

buoyant zenith
#

hmm maybe

calm nebula
buoyant zenith
#

there's also a lot of trees

tiny zealot
#

i heard once that the game renders the same amount of rain no matter how much screen space it actually needs to fill

calm nebula
#

correct, rain is rendered only on the screen

rancid temple
#

I made a 5000x5000 map that was literally trees from top to bottom with just enough room to walk between them

calm nebula
#

it's not rendered [much] off screen iirc

#

that said

  1. The game's rendering is pretty slow
  2. The game's rendering on farm is preetty damn slow
rancid temple
#

My computer is kind of overtuned though

buoyant zenith
#

playing on laptop with integrated gpu Frieren3

rancid temple
#

Honestly I'm always surprised when integrated graphics even runs the operating system

tiny zealot
#

i haven't used a computer with a discrete graphics card in years and i don't currently have plans to change that

rancid temple
#

Integrated graphics was the second dumbest thing done to computers, the first was Windows in general

tiny zealot
#

shrug i guess, i'm not a graphics guy

calm nebula
#

I'm on integrated graphics and I do cad work on my personal computer

rancid temple
#

Vanilla Town is 129x109

calm nebula
#

or (please insert appropriate meme) I WOULD IF I HADN'T BROKEN MY UBUNTU PARTITON

versed wyvern
# lucid iron I don't think you have to split it into pieces but you do have to write all the ...

Mm, with no coding experience I don't think I quite understand any of the talk about being able to simplify organizing the sprites or writing the TextureOverride actions, at the very least it seems like I need to point at individual target rectangles for every frame of the target texture, which each then need to be given a different source texture as there's no field for specifying rectangles in the source texture rosedopHuh

wanton pebble
#

already done

#

annnnd they gone

#

Odd they chose THIS channel to try that stuff

wooden junco
wanton pebble
#

I guess we're the cool kids? IDK

opaque cobalt
#

Does this look correct for the general format for seaonsal portrait with multiple per season? Pulling from wiki but want to double check.

{
"Action": "EditData",
"Target": "Data/Characters",
"TargetField": ["Penny", "Appearance"],
"Entries":
{
"{{ModID}}.Penny.Spring_1":
{
"Id": "{{ModId}}_Penny_Spring1",
"Season": "spring",
"Portrait": "Portraits/Penny_Spring_Sun_1",
"Sprite": "Characters/Penny_Spring_Sun_1",
"Indoors": true,
"Outdoors": true,
"IsIslandAttire": false,
"Condition": "TRUE",
"Precedence": 0,
"Weight": 1
},
}
}

fervent horizon
#

isthere a facing direction when you add a warp?

latent mauve
#

For the actual map property, no.

versed wyvern
#

Hrmm... I successfully got Spacecore to target Penny's sprite and set a 2x resolution copy of her standing frame as a TextureOverride, along with a SourceSizeOverride of 32,64, but this definitely isn't what's supposed to happen rosedopHuh

rigid musk
#

oh my god kekw

versed wyvern
#

It works correctly with portraits, though... henyaHmm

brave fable
#

love how shes using her boobs as a hair accessory. now that's fashion

versed wyvern
#

"My eyes are down here, bub"

teal bridge
#

Is that what that weird thing on the top left is? I thought it was, I don't know, a beige-colored ghost.

versed wyvern
#

Yeah it's the breathing overlay which is still in its original spot

#

But either way I can't fathom why TextureOverride would do this to NPC sprites and not portraits

#

This is what my json for Penny's first frame looks like, if anything sticks out

#

Removing SourceSizeOverride or changing it to the vanilla 16x32 size instead just leaves the top left quarter of the sprite but keeps her beeg

rigid musk
#

Is there a game state query for the amount of qi gems a player has

uncut viper
#

PLAYER_HAS_ITEM

rigid musk
#

ah so it would be that how interesting

#

thank you :]

rigid musk
#

when doing the 'trade item' thing for shops- can you specify two items and if so is it just lsited with a comma or do I add another line

uncut viper
#

you cannot have more than one tradeitemid

tardy adder
#

Weee I managed to make ze specific bait for ze fishy from the non-fish item

#

Now how to change texture >->

#

That is a problem for future me

brittle pasture
#

you can't, not without changing it for every targeted bait item

rigid musk
#

ouh that sucks I wanted to make an entry that uses qi gems and a weapon .... that isssssssss agonizing

tardy adder
#

๐Ÿ˜ฆ

rigid musk
#

Ah i can set the currency - and i think the default for qi's walnut room is gems anyways so this works very well :]

tiny zealot
#

you can't use currency and also tradeitemid. it's either or

uncut viper
#

shops with both tradeitemid and a price set will require both

tiny zealot
#

oh. my mistake!

uncut viper
#

however you cant set currency per-item

#

but if its qi's shop it doesnt matter

#

unless someone else mods the shop to use gold, i guess. or star tokens

brittle pasture
#

qi gem shop still uses trade item id

brittle pasture
#

but yeah money and trade item (in this case qi gem) should work

rigid musk
#

If someone mods it to use money I am NOT supporting that

#

nuh uh no way no how

calm nebula
#

Qi gem us not a currency

#

You could use item extension

uncut viper
#

qi gems is specifically set to currency 4, that said qi gem shop does actually still specify qi gems in the tradeitemid]

#

so i guess the currency field might just cause the qi gem pop up to display in the corner

calm nebula
#

...huh

brittle pasture
calm nebula
#

Why did I think it was nit a currency

#

interesting. I'm surprised it's not a netint

haughty condor
#

hey everyone I had a cool idea for a mod and Im struggling to locate something in the base game files, could anyone help me rq?

haughty condor
#

the scarecrow

rigid musk
#

Textures or actual code

haughty condor
#

both would be helpful

#

my idea is for a super scarecrow, and seeing the original coe would be very helpful

#

code*

rigid musk
#

scarecrow textures are in Tilesheets/Craftables

#

the crafting recipes for it would be in Data/CraftingRecipes

haughty condor
#

can I call you/ screenshare? im not seeing either of those I'm really sorry :[

rigid musk
#

Did you unpack them?

#

the data files that is

haughty condor
#

is that a separate dll?

uncut viper
#

!unpack

ocean sailBOT
#

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

rigid musk
#

oh there's probably a command for this but I don't actually - thank you button

#

I don't know where the data for how scarecrows works would be stored though

brittle pasture
#

Data/BigCraftables

#

specifically the context tags

uncut viper
#

in order to be a scarecrow, a bigcraftable either needs to have the context tag "crow_scare" or have "arecrow" in its name

rigid musk
#

oooh thats nice to know..

#

Now I can make a Qi Scarecrow

uncut viper
#

you can affect its radius by giving it the context tag crow_scare_radius_# where # is a number of tiles obv

rigid musk
#

Utilize Mr.Qi's frightening presence to scare away crows today

rancid temple
#

Just be warned if you make the size big and use mods that show their radius it will cause lag

#

Maybe Pathos fixed Data Layers, I can't remember

haughty condor
#

for reference im using ILspy to peek at stardewvalley.dll and I cant find any of the data files we've referenced in trying to help me

#

๐Ÿ˜…

uncut viper
#

follow the instructions in the unpack command i posted

rigid musk
rigid musk
haughty condor
#

it's unpacking my game right now into a folder that will make all the files easy for me to view?

#

xnbhack is doing this

uncut viper
#

its unpacking your Content folder

rigid musk
#

It's very helpful, I've used it for years for modding and all of that

brittle pasture
rigid musk
#

vibincat thank you

haughty condor
#

I'm confused..... the original scarecrow (BigCraftables line 114) has no context tags, but the deluxe scarecrow (line 1916) also has no context tag? even though it has a different radius?

#

this would be my first ever attempt at modding with zero code knowledge

#

only many years of gaming

haughty condor
#

just to give you an idea of who is asking

haughty condor
# uncut viper .

oh so because the title of the item has arecrow in it it doesnt need the context tag?

uncut viper
#

them having "arecrow" in their names makes them scarecrows. scarecrows that start with "Deluxe" get a radius of 17 if there is no context tag. if it doesnt have a context tag and doesnt have "Deluxe," then it defaults to 9

#

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

uncut viper
#

you'll want to look at the first bullet point there about content patcher

#

as you will not need any C# code for a scarecrow with a custom radius whatsoever

haughty condor
#

I was hoping to make a brand new scarecrow (well I guess 2 different workable concepts) that I want to try and make a new recipe in order to make it because it would be pretty OP

uncut viper
#

that would be done with content patcher

haughty condor
#

but knowing how to make it function the same way was what I was hoping to learrn?

#

like a copy paste but with edits?

brittle ledge
uncut viper
#

the things you found in Data/BigCraftables is how they function. thats the data that the game loads (converted into json by xnbhack)

#

in this case the vanilla scarecrows just happen to function entirely by name

#

if you made a new BigCraftable with content patcher but gave it the name "Scarecrow 2" it would function exactly the same as a normal scarecrow automatically

hard fern
#

Reminds me of how stools function

haughty condor
#

....can I copy paste the idea notes I had? maybe that would be helpful for seeing how ambitious I am with this?

uncut viper
#

if its the size of like 20+ chat messages id put it on pastebin first but sure

velvet narwhal
#

SDVpufferlurk waves hands at atra's idea of just nuking the addcrow function

haughty condor
#

approximately 15 lines of text

#

not long

#

where is the pastebin pplz?

uncut viper
velvet narwhal
haughty condor
#

this is new to me XD my bad

uncut viper
#

i wouldnt recommend C# or harmony to someone doing their first mod ever when content patcher is available and plausibly closer to what they want

velvet narwhal
#

ah yeah i saw the "looked at ILspy" and went "do you know what that entails?"

haughty condor
latent mauve
#

There's no debug code to clear error items, right? Someone in modded-farmers just brought up a question about if it's possible to remove museum items that become error items after the mod that added them is removed

uncut viper
#

i dont believe you can make a bigcraftable have a 2x2 footprint but someone more familiar with BCs or frameworks may correct me

#

that said all of this would require C# i believe

latent mauve
#

Normally you just throw away error items but unless there's a way to get them out of the museum again ..

uncut viper
#

ive never considered error items in the museum before.... im not familiar with a debug command for it

#

you can clear the whole museum, but...

#

not ideal. but possibly the only way

#

without a custom C# command obv

haughty condor
#

go into your save file directly find the museum inventory and set the requisite slot to say empty? not that I'd know

uncut viper
#

i think you could do that too, yeah, if you knew which item was an error item, since it'll still have the old item id

haughty condor
#

I ran into a bug where we lost a whole watering can in multiplayer so I had to debug give us back one

rigid musk
#

How are weapon levels calculated bceThinkPonder

#

Cause I just made four weapons that are more powerful than the Infinity ones and yet they're calculated as lower level despite having all higher stats

haughty condor
uncut viper
haughty condor
#

!!!!!! thank youuuuu

#

on a real note though.... hairy though it might be, I'm convinced I'm can do this. If ConcernedApe can make the entire game by himself, I can learn how to make my one idea be a thing, surely, right? and on top of that......I just found out that you guys are here to help which makes me even more confident about it

uncut viper
#

you can, if you are willing to learn C#

brittle pasture
haughty condor
#

that's feasible too

uncut viper
#

if the 2x2 footprint is super important then probably

haughty condor
#

I thought about that but wasnt sure which'd be easier

rigid musk
#

I just realized that the actual weapon stats are not, in fact, accurate in the Weapon Json ... why? i have no clue but alright then

haughty condor
#

I figured for a thing that covers your whole farm a single block would be mildly......broken

rigid musk
#

no wonder its calculated as lower face_palm

#

Mr.Qi's face on a scarecrow could do it

#

Scare the crows for miles

#

Do I make a Qi Crow... do I dare...

haughty condor
#

also it'd give me more pixels to play with when I wanna try my hand at art-ing

uncut viper
# rigid musk How are weapon levels calculated <:bceThinkPonder:995181808889114676>
float weaponPoints = 0f;
weaponPoints += (float)(int)((double)((this.maxDamage.Value + this.minDamage.Value) / 2) * (1.0 + 0.03 * (double)(Math.Max(0, this.speed.Value) + ((this.type.Value == 1) ? 15 : 0))));
weaponPoints += (float)(int)((double)(this.addedPrecision.Value / 2 + this.addedDefense.Value) + ((double)this.critChance.Value - 0.02) * 200.0 + (double)((this.critMultiplier.Value - 3f) * 6f));
string qualifiedItemId = base.QualifiedItemId;
if (!(qualifiedItemId == "(W)2"))
{
  if (qualifiedItemId == "(W)3") weaponPoints += 15f;
}
else weaponPoints += 20f;
weaponPoints += (float)(this.addedDefense.Value * 2);
return (int)(weaponPoints / 7f + 1f);
rigid musk
#

Best tip for SVE pixel art is to never outline anything in black - CA doesn't really do that

haughty condor
#

if you do make a qi-crow......please help me make my eye-of-sauron-esque super scarecrow too?

rigid musk
#

I think the only thing I've encountered that was officially outlined in black was Mr.Qi himself in like one spot maybe

haughty condor
#

unless its a simple reskin

rigid musk
#

Oh no I would just make a scarecrow using C#

haughty condor
#

that'd be different

rigid musk
#

NOT c# ...

#

CP*

haughty condor
#

content patcher?

rigid musk
#

Yeah :]

#

Actually you know what, im going to do that right now

haughty condor
#

lit, I actually love that idea

rigid musk
#

It will make a great addition to my Qi NPC mod

haughty condor
#

did you read the idea notes I had lily?

#

a sub idea I had woud be to take the actual counter for crows scared....and have it make resource every tick

#

crows eaten -> turned into bug goo -> I think is hilarious and cool at the same time

rigid musk
#

I didn't see that no - Pff that's horrifying but also neat

#

That sounds like a nightmare to code though, as far as I'm aware you wouldnt be able to use CP for that

haughty condor
#

watch me become a pro in like a week and a half KEKW

#

pain

#

I appreciate you guys tho fr

#

I'll be back/around

brittle ledge
#

Question, are books like regular items, i.e., could you use them as machine input/output?

uncut viper
#

books are just regular items yeah

#

their functionality is controlled by their category

brittle ledge
#

sweet, I have a silly idea I'll think about tomorrow

uncut viper
#

(the reading part i mean. the item id is v important too obv)

rigid musk
#

Qi crow is just as horrifying as i thought it would be

haughty condor
#

can I request a rarecrow custom edit? LUL all 4 ninja turtles, master splinter, shredder, beebop and rocksteady

#

random idea I just had

rigid musk
#

I think there's a forum you could add mod requests to :3

#

Oh my god wait im level 25 I can get the mod author role now :O

acoustic summit
#

๐Ÿ˜ฎ woo

rigid musk
#

!modideas

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your ideaโ€”modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

rigid musk
#

there is a forum!

#

I hate it :)

acoustic summit
#

I didnt realise how much like a scarecrow mr. qi naturally looked

faint ingot
#

I think I would probably cut it off 3 or 4 pixels higher

rigid musk
#

No no not the pixel art (i think my qi sprites look nice actually which is what I took that from)
just.. i hate it looking at me

faint ingot
#

make it a machine and when you feed it qi fruit it waves its arms

rigid musk
#

bcaCrySob absolutely NOT

#

Huh it's working but the radius isnt showing with UIinfosuite

uncut viper
#

what did you name it?

rigid musk
#

I named it Qi Crow but added the scarecrow context tags

uncut viper
#

apparently UI Info Suite 2 only checks for the existence of the string "arecrow" in the name to decide if its a scarecrow

#

and does not use IsScarecrow()

rigid musk
#

aw :(

#

I like the sound of Qi Crow but fine

uncut viper
#

i think you should keep it as Qi Crow tbh thats a UIIS2 issue not yours

rigid musk
#

Yeah but the radius is really helpful (to myself and anyone else who also uses UIIS2)

uncut viper
#

yeah, but its something UIIS2 should fix, not you

rigid musk
#

Huh.. it still isnt working after changing the name actually

uncut viper
#

did you spawn in a new item?

rigid musk
#

I did - I thought it was just the patch reload thing not working right with the translation stuff but nope it just... did not

uncut viper
#

what is its name now?

#

the item id

#

or actually no just the Name actuall

rigid musk
#

"Action": "EditData", "Target": "Data/BigCraftables", "Entries":{ "{{ModID}}_QiScarecrow":{ "Name": "{{ModID}}_QiScarerow", "DisplayName": "{{i18n:Aos.QiCrow.name}}", "Description": "{{i18n:Aos.QiCrow.description}}", "Price": 5000, "Fragility": 0, "CanBePlacedOutDoors": true, "CanBePlacedIndoors": true, "IsLamp": false, "Texture": "Mods/{{ModId}}/QiCrow", "SpriteIndex": 0, "ContextTags": ["crow_scare", "crow_scare_radius_25"],

uncut viper
#

you have a typo

rigid musk
#

o

#

Where

uncut viper
#

{{ModId}}_QiScarerow

#

in the name

rigid musk
#

oh my god

uncut viper
#

does it work after fixing that?

rigid musk
#

Sorry I had to take care of an issue in another server - yes it works great! And I can keep the translation name so it reads as "Qi Crow" still :D

unique sigil
uncut viper
#

@light jasper any chance of changing ShowItemEffectRanges.cs to use Object.IsScarecrow() instead of checking for Name.IndexOf("arecrow")? currently items with non-standard names that work as scarecrows in game wont actually show their effect ranges, because the game checks for a context tag first (in the aforementioned IsScarecrow() function) and UIIS2 does not

rigid musk
#

He watches over all

unique sigil
#

drives away crows through his sheer aura

rigid musk
#

Is the Qi Gem limit hardcoded GruHolUp

#

I didn't even know there WAS a limit for those

#

at least not such a low one

unique sigil
#

oop i missed this reply but personally, i just publish my farm maps as either a replacement OR an AdditionalFarms one for convenience. I've moved to the AdditionalFarms format for a long while because of how in control I am of the map design SDVpuffersquee

due to the amount of farm maps out there, imo as a user custom farm types are more appreciated. If you ever want to try making a custom farm there are guides on the wiki, but the gist is that you have to learn the AdditionalFarms format and how to create a Location data for your farm. feel free to dissect and study my farm map files (that's what i did while learning!) or hit me up if you need help SDVpufferheart

velvet narwhal
#

i don't remember specifically if the overflow of qi gems was fixed think_eyes

unique sigil
#

last i remembered about qi gems is that going over the limit just resets the counter

#

maybe it is a hardcoded limit SDVpufferthink

velvet narwhal
#

also tbh i prefer the additionalfarms method because then i'm not fighting demons with all of the editmap things if something happens

rigid musk
#

Yeah it just resets itself after 999

#

Which is inconvenient because what on earth is the point of having a qi gem crop (that regrows) if you can't collect a bunch of them

#

Runing my plans >:[

unique sigil
#

maybe you can set the time in between harvests to be longer?

rigid musk
#

I mean it takes 14 days but ... still

#

I was adding an upgrade to the Infinity weapons using them :(

hard fern
#

๐Ÿ˜ญ i fell asleep making assets for my mod

#

incredible

royal stump
terse plank
terse plank
reef kiln
#

is there a mod that prevents me from destroying my crops with the axe by accident? I am constantly doing it by mistake.

drowsy pewter
reef kiln
#

I keep doing that. I forgot to switch channels after asking a mod making questions

spark verge
#

is it possible to get a list of fruit trees and select the sapling of one based on what fruit it outputs using content patcher

drowsy pewter
#

Nope

spark verge
#

that makes my sapling maker mod alot more tedious to implement

distant radish
#

I mean, you can, but you can't apply a general rule, you've got to match every single ID

#

My mod, MPS, does this with its Seed Makers

drowsy pewter
#

You can use C# or do everything one by one

#

content patcher doesnt do lists, loops of items, or more complex functions like that (unless already supported by a gane GSQ, which sapling output is not)

spark verge
#

c# is prolly my best bet then cause i know c#

lucid iron
#

what you can do is to implement in C# an item query

#

like quindao.ModName_SAPLING_BY_PRODUCE <produce qualified item id>

#

then u can use that in shops and stuff

spark verge
#

that will work

light bramble
#

Is there a way to make an NPC have a different dialogue based on a SPECIFIC item or context tag?

hard fern
#

isnt that just done via dialogue

rancid temple
#

Like as a gift response?

light bramble
#

yes

hard fern
#

you can take a look at vanilla npcs for an example ?

rigid musk
#

im not sure about context tags but i know you can 100% do that for gifts

hard fern
#

yeah, context tags might be harder

rancid temple
hard fern
#

oh, it takes context tags

#

good to know

light bramble
#

Like for example, Loved gifts for my NPC include food_sushi and coffee_item But I want the coffe items to have differring dialoge from the sushi

#

Oh, lol thanks roku

rigid musk
#

oh yeah that's absolutely possible

#

idk how i didnt realize you could do context tags ive literally done it myself

tiny zealot
#

context tags my beloved

hard fern
#

i feel like i should have just made my own context tag instead of listing out 20 something individual items but

#

oh well

light bramble
#

Also...did y'all know....Mosses are small, non-vascular, flowerless plants that are part of the taxonomic division Bryophyta

rancid temple
#

Those sure are some words meow_bongoderp

hard fern
#

like. the moss and stuff on rocks?

light bramble
#

In getting dialogue made for my NPC I have learned many many facts about moss

#

XD

hard fern
#

i understood one word in that sentence ๐Ÿ˜ญ

#

i am not a biology person

light bramble
#

Niether is the person I am making this NPC for...He just has a love of plants

tiny zealot
rancid temple
#

I really wish AcceptGift was AcceptItem instead. It bothers me that it's RejectItem and AcceptGift

hard fern
#

I made (half) an npc and i learned nothing ๐Ÿ˜ญ

light bramble
#

But like real talk, I'm still super happy that the NPC is at least IN the game...even if not where I want him

tiny zealot
#

i decided it's only a gift if they accept it and allowed myself to become unbothered

rigid musk
#

im making an npc and all ive learned is that qi scares me as a scarecrow

hard fern
#

im still hung up on the events SDVpufferchickcry

tiny zealot
#

(but i do frequently make errors because they use different words, so that's still annoying)

rigid musk
#

Events are pretty hard... i dont know how many times I watched the four heart event I coded but it was a lot

#

I have that entire dialogue memorized

hard fern
#

tbh, my issue is less the technical part, and more the actually needing to write the dialogue part

rigid musk
#

do you not enjoy writing?

hard fern
#

ehh...

rigid musk
#

You could always work with someone to help you if you don't prefer it

#

The dialogue was the easy part for me

hard fern
#

im just no good at coming up with ideas

tiny zealot
#

in my experience there's an extra editing pass after coding up the event. i write some shit and it sounds or feels good, but then i put it in the boxes and it becomes wrong and i have to make edits

light bramble
#

Someone make an event builder like we have a NPC builder lol

rigid musk
#

The amount of edits I had to make just to make sure the animations worked and the npc moved just right and then the timing was perfect...

hard fern
#

there's an NPC builder?

rigid musk
#

I run the event - i see that one thing is slightly off, i fix it, i run the event again, its still wrong, repeat 4739874974538 times

rancid temple
#

Well, considering the NPC builder is outdated, wouldn't be hard to make something equivalent

light bramble
rancid temple
#

Unless you mean fireredlily's

tiny zealot
#

miss coriel was making an update but i don't know how far she got on it.
fireredlily has a spreadsheet version or something which probably works better

light bramble
#

The one I am using is a google spredsheet

rancid temple
#

That's probably fireredlily's then

light bramble
#

Ye

#

It is

#

How do I make it so that my messages don't have the embeds when I send them?!?!?!? ๐Ÿ˜ญ

rancid temple
#

The One Guide To Rule Them All

#

You can wrap the link in <>

tiny zealot
#

<put your link between angle brackets>

light bramble
#

Facepalm

tiny zealot
#

i don't think that's a facepalm. how would you know that in advance

light bramble
#

Also, I noticed, the server doesn't like people trying to do tiny text

light bramble
tiny zealot
#

ah yeah subtitle text is verboten

rancid temple
#

I only know that because Pathos mentioned it near when I joined kyuuchan_ohoholaugh

light bramble
rancid temple
#

You can do โ„ข๏ธ though

#

Because it's technically an emoji

light bramble
#

well yea, that's a emote technically

tender bloom
#

The tiny text unfortunately mimics official discord messages in some capacity

tiny zealot
#

yeah, the subtitle text lets you convincingly imitate Official Discord Messages so it's an anti-spam measure on a server as huge as this one

light bramble
#

brb crying

granite bluff
#

when i try to updload a new version of my mod, nexus loads forever. anything i can do against this issue? it persits since a few days

rancid temple
#

I can't remember the last time I saw an official Discord message lmao

hard fern
#

same lol

rancid temple
#

Vortex or Nexus?

granite bluff
#

nexus^^

hard fern
#

if nexus is acting up again

light bramble
rancid temple
#

I know there was recently some database issues for Nexus

granite bluff
#

aah

rigid musk
#

nexus acting up isnt a surprise to me .. it does that

#

frequently

hard fern
#

you might just have to wait for it to behave

tiny zealot
#

nexus is just Like That Sometimes. depending on where you are in the world you may have better or worse results (CDN)

granite bluff
#

is it normal to take several days?

gentle rose
#

I think it imitates the โ€œthis message is only visible to you. dismissโ€ thing, and ppl can replace the dismiss link with a malicious link

rancid temple
#

I once couldn't fix a mod page for 3 days

rigid musk
#

I should organize my assets folder but I truly do not want to ever forever

granite bluff
#

ou :/ okay
i'm midwest europe

tiny zealot
light bramble
#

So like, I have another question. Is there update keys for curseforge? XD

rancid temple
#

Yep

gentle rose
light bramble
#

SOBBING Now I have to put them in all my mods ๐Ÿ˜ญ

rancid temple
#

I'm personally against uploading to CF, they can sit and spin

light bramble
#

You know what? no...I'm not gonna because I know CF will alert people to updates

gentle rose
#

whatโ€™s wrong with cf?

hard fern
#

everything

rancid temple
#

Bad company, bad practices, bad people

#

Bad site, worse app

gentle rose
#

never used it so Iโ€™m out of the loop

light bramble
gentle rose
#

ah, I see

hard fern
#

i only ever used curseforge for minecraft but i gave up bc i hated the weird site layout

light bramble
#

I mean...the company behind it (twitch/amazon) might be bad, but it's lowkey kind of easy to make dependencies auto install for people...

rancid temple
#

Oh yeah, I wasn't even considering parent company lmao

gentle rose
#

is split screen coop common enough for people to assume mods are compatible with it???

rancid temple
#

I wouldn't just assume their compatible, but I'm unsure what kind of things cause issues with split screen

#

I usually test my mods in split screen anyways

tiny zealot
#

most mod authors i know on here ignore split screen as a concern entirely (myself included)

rancid temple
#

If I didn't just always have a controller plugged in, I would just ignore it lmao

tiny zealot
#

i don't really have a controller, so it's not really available to me to test

rancid temple
#

Testing split screen is way easier than testing multiplayer by yourself

tiny zealot
#

i do test multiplayer, which suuuuuuucks

rancid temple
#

Trying to deal with jumping back and forth between programs is annoying

light bramble
#

I test, multiplayer, split screen, and controller XD

rancid temple
#

I'm still avoiding UI, so I haven't really needed to test controller

light bramble
#

I just have a fruend help with multiplayer

gentle rose
#

luckily this mod has no keybinds so controller shouldnโ€™t affect it lol, but I donโ€™t think itโ€™s compat with any kind of multiplayer

rigid musk
rancid musk
#

Split screen isn't that hard to support. Controller is easy too as long as you have a controller for testing.

light bramble
#

but now I must go. Have a doctor apt

hard fern
#

i have 3 months of premium that i havent claimed

#

i dont use nexus that often to justify it

rigid musk
tender bloom
rancid temple
#

I had just activated one of my free months when I hit 30k, had to wait for it to run out before I could active the lifetime

rigid musk
#

I had like six months but I only redeemed it whenever I would actually go on my account - now I got the uhhh lifetime one once the one i have currently runs out

hard fern
#

dang

tender bloom
#

If someone points out an obvious thing to do for controller I will, I otherwise donโ€™t do anything

rancid musk
#

Do you want a controller?

tender bloom
#

Not really?

#

Like idk how to use one

#

Iโ€™m sure they have buttons and what not

rancid temple
#

And sticks

rancid musk
#

Triggers too. And a d-pad.

rancid temple
#

Normally I prefer controller for games, it's just more comfortable

tender bloom
#

I didnโ€™t grow up playing video games, so I mostly know them from occasionally playing smash at a friends house

#

And there I just button smashed

rancid temple
#

But something about the grid-ness of SDV makes me hate using a controller

tender bloom
#

I assume thatโ€™s why itโ€™s called smash

rancid temple
#

It's actually because playing it with your friends makes you want to smash their console

rancid musk
#

Yeah, I vastly prefer Stardew with mouse and keyboard.

rancid temple
#

(I was actually the turd who was too good at Smash and made it not fun for anyone but my brother)

#

Controller also has some weird quirks in SDV that just make it really annoying to use

gentle rose
#

I have to install SVE to test my mod with it. Wish my poor computer luck, I don't think it can survive this

rancid temple
#

Just gotta make an install that's only your mod, SVE and SVE's dependencies. Best chance of success

gentle rose
#

I don't see a reason why my mod wouldn't be compatible with it as things are right now, but someone commented that I should make it compatible and I can't tell if they tested it or not

rancid temple
#

Almost certainly not

rigid musk
#

To be fair you don't HAVE to make it compatible

tiny zealot
hard fern
#

๐Ÿ˜” "is this compatible with sve?"

rancid temple
rigid musk
#

I love compatibility, it's the whole reason why I didn't want to have to make an entirely new npc for qi... but like, SVE modifies a l-

#

WHAT

gentle rose
#

I mean it would be nice bc so many people have it installed, but it's so weird how people assume everything is compatible with everything. The person listed like 7 mods they expect to have compat with

gentle rose
rancid temple
rigid musk
#

Again I love compatibility but like, it's so hard to thing of every single thing that needs to be done to make a mod compatible with stuff

#

Mods themselves are hard to make, adding compat for like, every single thing someone could ever create is ridiculous to expect

rancid temple
#

Another reason I tend to avoid maps and stuff, don't wanna deal with SVE compat dogekek

rigid musk
#

I know damn well im going to get comments on if my mod is compatible with SVE even though im going to put it in the description because people do not read

hard fern
#

at this point i think im just gonna say "feel free to make your own personal compatibility patch."

gentle rose
#

also it's one thing to make a mod compatible with the main way of doing things in a way that doesn't clash with other mods, but another thing entirely to have to code a new thing for each mod you want to be compatible with like I did for RSV because it does its maps weirdly

rigid musk
#

I love SVE I truly do - I wouldn't be a council member over there if I didn't - but like.. that whole 'is it compatible with-' is so infamous it makes me shiver

#

Does it? I didnt know that

rancid temple
#

Been a hot minute since I cracked open RSV's files, can't remember lol

rigid musk
#

I think people forget that they arent the only one asking for a mod to be compatible with something. If one person wants compatibility with Ridgeside and another one wants compatibility with SVE and so on it becomes a lot to code in

gentle rose
#

as I suspected, the mod is compatible with sve and they just didn't check ๐Ÿ’€

rancid temple
#

Meanwhile, with SVE it's like a daily occurence

gentle rose
# rigid musk Does it? I didnt know that

well, because the nice unified way to do world maps is new to 1.6, RSV still uses its older map which it did differently. So not their fault, just a different system

rigid musk
#

It's because of how much SVE edits ... I actually hadn't realized it edited the weapon stats for the Infinity weapons so I had to go and make a whole different set of stats for the weapon if you were using that because otherwise the trade in wouldnt even make sense

hard fern
#

is there any part of the game that sve doesn't edit?

tiny zealot
rigid musk
#

The skull cavern enterance map

rancid temple
#

I would wager the actual mines and volcano dungeon lol, just because those are busted to mess with

gentle rose
#

"make the mod compatible with SVE" it IS

rigid musk
#

I found that out when I was testing my compatibility with it so far kekw

rigid musk
#

And are very entitled

gentle rose
rigid musk
#

I felt so bad for the Deep Woods mod author - I love that mod so much but the amount of horrid comments they were getting was ridiculous - idk how people expect others to just make something in .2 seconds

hard fern
#

meanwhile i've been staring at this damn event dialogue for so long ๐Ÿ˜ญ

rigid musk
#

Why are you just staring at it

hard fern
#

if i stare at it long enough, maybe it will write itself

rigid musk
#

Unfortunately not u_u

hard fern
#

๐Ÿ˜” shame

rigid musk
#

I wish I could only do dialogue for my qi mod it would be so easy.. but nooo i had to go and add weapons and crops and a scarecrow and ten billion other things

hard fern
#

ah yes, scope creep

rigid musk
#

No no, I have a whole list of what I want to do (though I have added a few more things once I thought of them), I just am complaining because it would be easier if I just didnt do those things. I'm gonna, and it's entirely possible, im just lazy

distant radish
#

Is there a way to make a parameter like "MinStack" or "Amount" configurable through GMCM? For example, I change "DaysUntilReady" with "{{x Machine Production Time}}", but the same thing throws an error for those fields

tiny zealot
lucid iron
#

Just download the 1.6 magic compat wizard \j

brittle ledge
#

Sometimes I think "is this compatible with SVE" is a secret passcode to a club and all of us aren't in it, like an inside joke SBVLmaoDog

rancid temple
gentle rose
#

(closed) could not replicate bug: controller is out of battery.

rancid temple
#

I've definitely provided like Price with a value from a config, which parses as a string

gentle rose
brittle ledge
rancid temple
#

Price normally would be an integer, but because the code can convert it, it's fine with receiving a string of numbers

gentle rose
#

am I compatible with sve

hard fern
#

๐Ÿค”

gentle rose
#

is stardew valley compatible with sve

brittle ledge
#

Me trying to hang with all the twenty somethings

rancid temple
#

If it's throwing errors, likely whatever your supplying the string to can't convert it to the appropriate type

distant radish
rancid temple
rigid musk
distant radish
#

"DaysUntilReady": "{{Chocolate Bunny Production Time}}"

This is what I have for DaysUntilReady, for example

hard fern
#

๐Ÿ˜ญ why do i feel old sometimes talking to people my own age?

unique sigil
hard fern
#

im always scared of the comments on my own mod pages

rancid temple
#

Or delete them SDVkrobusnaughty

unique sigil
#

(i also ignore anyone who claims they have an issue but dont even provide context, aka. a SMAPI log and/or image of said issue)

#

to be fair, i did warn that i would ignore them lol

gentle rose
rancid temple
tiny zealot
#

got one a week ago with basically no info. asked for a log, as you do... crickets

distant radish
rancid temple
#

I still love the one I got where when I asked for a log I was linked to a youtube video of a 2 hour stream of them playing with friends

unique sigil
#

i dont even bother asking for their log atp

brittle ledge
gentle rose
#

that calls for the block button atp, that is not something any of us should be willing to interact with snort

unique sigil
#

i already gave instructions and warned that i would ignore comments/reports that dont provide what i instructed. if you dont follow it youre on your own buddy

rancid temple
#

They at least provided time stamps for where the issue occured (it wasn't my mod causing the problem lmao)

gentle rose
#

that's where the (second) most cursed bugs are found

royal stump
rancid temple
royal stump
#

technically those fields don't accept* strings (quoted text), but CP generally converts quoted numbers into actual numbers on its own

distant radish
#

Got it! Let me test it out. Thank you both for your help โค๏ธ

calm nebula
#

Including am entire book on mushrooms

drowsy pewter
#

Sounds like the best of both worlds

lethal wadi
#

is there a guide to starting with making farm maps?

rancid temple
lethal wadi
#

ty!

rancid temple
#

If you look at Farm_Ranching, it's the most recent Farm added to the game and is added through AdditionalFarms

#

Though if you want to mimic it's Coop starting mechanic, that requires SpaceCore

#

I think I remember another mod being able to do it, but I'm tired and can't recall which

lethal wadi
#

tyty ^^

distant radish
velvet narwhal
patent lanceBOT
rare orbit
#

any idea if someone uploded an npc portrait template? i wanna know to make sure that i am aligning the portraits right

teal bridge
velvet narwhal
#

I mean, unpacked is pretty much a template for everything SDVpufferthink

rare orbit
#

ahhh

#

so just upload it into a program with layers then go from there?

velvet narwhal
#

I take vanilla portraits as the undermost layer when I'm first starting, yeah

hard fern
#

pretty much

velvet narwhal
#

If you have a program that let's you have a personalized grid you'll be better off

rare orbit
#

ahhh

#

any idea how to reach the artist for Seasonal Outfits - Slightly Cuter Aesthetic? i am this close to editing the nyapu portraits for personal use as i cannot live without seasonal outfits ;-;

hard fern
#

theyve retired, afaik

#

?

rare orbit
#

ahhh ;-;

#

i wonder if it's cool to make seasonal portraits based off that then

lucid iron
#

I have seen some nyapu portrait for sca outfits mods

#

If you setup your mod in a way that requires sca then it's fine to do whatever

hard fern
#

it's just a color edit iirc, so it's not accurate to the actual outfits, so i think what they want is to actually match the outfits?

rare orbit
#

basically yeah. it has the winter, beach and regular outfits

#

but id like to match to the outfits in sca

haughty condor
#

so I'm peeking at the building data, and it says builder 'Robin' ..... can I make a different villager do the construction??? Would I have to add sprites of them all holding a hammer? XD

rancid temple
#

Robin is hardcoded to do all physical construction

#

Changing Builder there lets you set up other NPC's to sell buildings

hard fern
#

(mod that makes seb step up and help his mother out XD)

rancid temple
#

As someone who codes all day and occasionally thinks they can handle minor repair work around the home, I suggest not making Seb do anything of the sort

haughty condor
rancid temple
#

Bro gonna hurt himself and screw up the project

hard fern
#

lol, maru would definitely be the better candidate, if anyone

haughty condor
lucid iron
#

Instructions unclear Sebastian is screwed into the light fixture

hard fern
#

how many people does it take to sebastian a lightbulb ๐Ÿค”

lucid iron
#

mushymato.MMAP_ShowConstruct

rancid temple
#

Well, that I did make, I just haven't finished working on it

#

Wanted to add in them giving you random crap

#

If you're doing a building though, you're gonna have to use C# and Harmony to affect the crow mechanics

haughty condor
#

Omg friendly crows bringing shinies so wholesome.....meanwhile I've just been convinced crows are the enemy

#

Is harmony another coding language?

rancid temple
#

Nah, C# though being able to decipher IL helps when doing transpilers

gentle rose
#

my next qol mod will be one that lets you designate a category/filter (e.g. Iridium Crops) for a chest I think then has one button to put everything from your inventory that matches into that chest but I'll need to figure out some UI stuff to do that

#

๐Ÿ˜ญ

fervent horizon
gentle rose
fervent horizon
#

I know if you hit z it sends your items to the chest they have stacks in

#

and you can set categories

gentle rose
#

I'll have to mess around with it, ty

chrome mountain
#

Can someone help me with changing the water color of a fish pond? I can't seem to target the field I want to add/change.
It's a legendary fish so the pond gets colored purple by default, I would like to change it to yellow.

      "LogName": "Pufferchick Water Color",
      "Action": "EditData",
      "Target": "Data/FishPondData",
      "TargetField": ["{{ModId}}_Pufferchick", "WaterColor"],
      "Entries": {            
              "Id": "{{ModId}}_Pufferchick",
              "Color": "255 255 0"
        }
    },```
Log: <https://smapi.io/log/925484000f554fcba0d7fe604b837443>
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 41 C# mods and 18 content packs.

rancid temple
#

According to the log there's no entry in Data/FishPondData for Gervig91.StardewAquariumCP_Pufferchick

chrome mountain
#

Yea I haven't added any entry, it just sems to work by default, maybe because it's a legendary fish?

rancid temple
#

You can't change the color on a fish that's not in that data

lucid iron
#

LegendaryFish WaterColor CrimsonFish

rancid temple
#

It's probably just using the default value

lucid iron
#

but hm do u want the LegendaryFish produce list?

chrome mountain
#

I'm okay with the default produce it has now, I just want to change the color of the pond

lucid iron
#

for targeted fields

rancid temple
#

Yeah, any fish marked with the context tag fish_legendary will use the LegendaryFish entry

lucid iron
#

change crimsonfish to pufferchick's id

rancid temple
#

If you don't match one of the existing legendary Ids then it'll be default

#

You could also add pufferchick to that list

#

I didn't even know the legendary fish were in here, I don't think they were before

tiny zealot
#

added in 1.6.9 i believe

rancid temple
#

I should probably become more familiar with this new stuff if I'm gonna start telling people to stop using my fish pond color mod

tiny latch
#

genuine question, how did you guys get into making stardew mods? i can't find a lot of tutorials out there or guides.

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 ledge
#

...remind me in 4 hours to make sure I put fish_legendary in the fish tutorial

#

Or don't, it's fine

tiny zealot
fervent horizon
#

I wanted to add to or change a few things from mods I was playing with, and decided to try it out

#

The wiki does have a lot of good information if you can find it. Also, the githubs of SMAPI and Content Patcher help if you know code

#

I really like how many comments are in the code files

lucid iron
#

be the change you want to see and stuff

velvet narwhal
fallow musk
#

never worked with NPCs before, does ForEachVillager also include NPCs from other mods?

brittle pasture
#

yes, the game doesn't know the difference

tiny zealot
velvet narwhal
#

in terms of learning i will not advocate for what i did, which was pick apart said dialogue mod and understand each and every process as i like to Figure It Out on my own

fallow musk
#

most of the times i just search this discord chat for keywords

#

hit and trial everything until it works

fervent horizon
velvet narwhal
#

not if you're trying to use CP in 1.6+

#

there was a lot of information that i had to shed because there was a drastic change for npcs between 1.5.6->1.6

fervent horizon
#

I just throw stuff together until it works, then go back and figure out how I did it

velvet narwhal
#

i should specify that actually

#

don't use a highly technical mod as your form to learn from*

tiny latch
#

ooh okay! thank you all for the advice!!

fervent horizon
#

If you get stuck, ask for help. There are some very helpful people here

velvet narwhal
#

generally if you're open to learning this channel is open to help

#

(as well as being sincerely grateful to those who help you, we all love headpats here)

tiny latch
#

alright, will do. for now im just trying to get the basics re-understood. last time i attempted i pretty much ripped it from the tutorials online and i actually want to know what i'm doing lol

velvet narwhal
#

basics are like, change portraits/world sprites, add a line of dialogue somewhere, write a very very basic event, and you'll start to see how everything interacts

chrome mountain
#

Tried doing it like this now, but it still doesn't seem to work.

      "LogName": "Pufferchick Legendary Fish Pond Color",
      "Action": "EditData",
      "Target": "Data/FishPondData",
      "TargetField": ["LegendaryFish", "WaterColor",],
      "Entries": {
        "Id": "{{ModId}}_Pufferchick",
        "Color": "255 255 0",
      }
    },```
Log: <https://smapi.io/log/4d67f6bc67f54f6da4744dae409c9b34>
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 41 C# mods and 16 content packs.

brittle pasture
#

Id is only for identifying

chrome mountain
velvet narwhal
#

Remind @brittle ledge in 3 hours to put fish_legendary in the fish tutorial

patent lanceBOT
#

hey siri remind me to remind aviroen in -- oh woops they weren't supposed to see this NOTHING TO SEE HERE I'M A REAL BOT (#6428346) (3h | <t:1734646968>)

brittle pasture
#

it's optional as in "if you don't specify anything this will match every fish"

unique sigil
brittle ledge
#

I got into mods because I wanted to fix a broken BFAV mod and also have Bulbasaurs on my farm SBVLmaoDog

unique sigil
#

tbh it depends on the mod,, some have easier learning curves than others, some rely on your other soft skills (i.e. aesthetic mods)

chrome mountain
brittle pasture
#

the game also already has a Default field with no condition, so your entry is never checked

rancid temple
#

I feel like this is one Conditional field that shouldn't be optional lmao

brittle pasture
#

let me clarify, what you need is:

  • Move your entry to the top of the WaterColor list so it gets checked before the Default entry
  • Add a Condition to it so the game doesn't use your entry for every legendary fish, just yours
chrome mountain
tiny zealot
#

and you gave your modded fish an id, so you use that

brittle pasture
#

in this case you want ITEM_ID Input {{ModId}}_Pufferchick

hybrid talon
#

Can somebody help me with drawing sprites? I have no idea what I'm doing really. I'm trying to copy the game code, but the code for drawing is all over the place and I'm not having much success tracking down where/how I should do things.
This is what I have:

private void OnTick(object? sender, UpdateTickingEventArgs args){
 if(Context.IsWorldReady){
  for (int i = 0; i < Game1.onScreenMenus.Count; i++){
   if(Game1.onScreenMenus[i] is Toolbar toolbar){
    DrawToolbarNumbers(toolbar, Farmer.hotbarSize);
   }
  }
 }
}

private void DrawToolbarNumbers(Toolbar toolbar, int cols){
 for (int j = 0; j < cols; j++){
  Vector2 toDraw = new Vector2(Game1.uiViewport.Width / 2 - 384 + j * 64, toolbar.yPositionOnScreen - 96 + 8);
  Game1.spriteBatch.DrawString(Game1.tinyFont, toolbarLabels[j], toDraw + new Vector2(4f, -8f), Color.DimGray * toolbar.transparency);
 }
}
  1. I'm not sure if UpdateTicking is the correct event to call this method from (does it even need to be called every tick?)
  2. As written I'm getting an error that says I need to call "begin" before calling "draw string," but I'm not sure where to put that.
lucid iron
#

you can only draw stuff to spritebatch in specific places

#

when the spritebatch is open for u to draw

fervent horizon
#

maybe onRenderingHud instead of ontick

lucid iron
#

this is why i just harmony patched draw so i dun have to figure it out sleep

brittle pasture
#

to draw stuff use one of the other events specifically made for drawing

hybrid talon
#

I did not see that there were drawing events, I will look at those

lucid iron
#

smapi event is an option yes, but it does look like u are draw shit to toolbar

chrome mountain
#

@brittle pasture Tried this, but still doesn't work

      "LogName": "Pufferchick Legendary Fish Pond Color",
      "Action": "EditData",
      "Target": "Data/FishPondData",
      "TargetField": ["LegendaryFish", "WaterColor",],
      "Entries": {
        "Id": "{{ModId}}_Pufferchick",
        "Color": "255 255 0",
        "Condition": "ITEM_ID Input {{ModId}}_Pufferchick"
      },
      "MoveEntries": [
        { "Id": "{{ModId}}_Pufferchick", "ToPosition": "Top" }
      ]
    },```
Log: <https://smapi.io/log/2d617b12d3ba4ebcb3048df68788b9b7>
ocean sailBOT
#

Log Info: SMAPI 4.1.10 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 41 C# mods and 16 content packs.

lucid iron
#

so if u do the harmony route u can get access to useful instance var

rancid temple
#

WaterColor is a list of models

#

You need to encase those 3 fields in a containing model, named the same as your Id

brittle pasture
#
{
  "LogName": "Pufferchick Legendary Fish Pond Color",
  "Action": "EditData",
  "Target": "Data/FishPondData",
  "TargetField": ["LegendaryFish", "WaterColor",],
  "Entries": {
    "{{ModId}}_Pufferchick": {
      "Id": "{{ModId}}_Pufferchick",
      "Color": "255 255 0",
      "Condition": "ITEM_ID Input {{ModId}}_Pufferchick"
    },
  },
  "MoveEntries": [
    { "Id": "{{ModId}}_Pufferchick", "ToPosition": "Top" }
  ]
},
#

like that

lucid iron
#

here is example

#

transpiler for replacing the calls

lucid iron
#

if u dont need to change the original toolbar's drawing, u can do all your draws in prefix/postfix

hybrid talon
#

Putting it in renderedhud seems to work (except that the size is completely wrong, gotta go figure out why lol)

#

Does tinyfont only support a small number of characters?

#

(Just numbers or something?)

lucid iron
#

what are you hoping to do

#

the tiny digit stuff in game draws sprites not text and yea only 0-9 digits

hybrid talon
#

I'm trying to replace the default toolbar labels (1,2,3...-,=) with custom labels (and then use similar custom labels for other things as well, but I'm starting with this)

teal bridge
#

Yeah, that's exactly what tinyfont does. The rest is not tiny at all.

lucid iron
#

oh you shouldnt need to write any draw code then

teal bridge
#

But the tiny digit sprites used in item quantities are not tinyfont either. That's a different thing.

lucid iron
#
    public string[] slotText = new string[12]
    {
        "1", "2", "3", "4", "5", "6", "7", "8", "9", "0",
        "-", "="
    };
#

just change this its public Dokkan

hybrid talon
#

I will also be adding similar labels to other places that don't currently have labels so I'll have to draw stuff at some point

lucid iron
#

transpiler

#

chop off the check for gamepad mode

#

anyways u can see tinyfont in Fonts/tinyFont.png

#

in the unpacked

#

its not very tiny for most things

#

for your particular case it might be good to get one of those key bind icon sets

hybrid talon
#

How would I get one of those?

#

That does sound useful

lucid iron
#

this one's free Dokkan

#

theres pixely ones on itch io but usually u need to buy

#

this one perhaps

#

these r pretty big but u can draw it at 1x instead of 4x (default)

hybrid talon
#

I'd need one with keyboard (despite enabling gamepad mode my mod is not in fact for controller users SDVkrobusgiggle)

wild crystal
#

hi! does anyone know what could cause a vanilla farm to load instead of a custom one? i tried to make some small edits to a map that previously worked totally fine and now its broken :( it has all the tilesheets it asked for

hybrid talon
#

Genuine question first, how hard would it be to just extend tinyfont (or make a new tinyfont) myself?

lucid iron
#

its got gdb-keyboard-2.png for keyboard

#

u can load ttf fonts i believe, there's font mods

tawny ore
#

@teal bridge is there a way in the Radial Menu Api for me to know whether the primary or secondary action button was pressed? I'm trying to allow different actions between the two.

opaque cobalt
#

Dumb question. Is there a tutorial on how to do overlays? Such as a ginger vs light brown hair version or blue/green/purple eye version? On the wiki that taught me how to do seaonsal outfit wasn't seeing anything for overlay but am unsure if it is just called something else.

tawny ore
#

If it's an NPC doing hair isn't very different from doing outfits.

teal bridge
fair sluice
#

heya all, new Modder here, I'm looking for a way to do something when a big boulder is destroyed while in the mines. I learned that those are called resourceClumps. The problem is im not seeing any way to do this using SMAPI world events, the do not show up in the ObjectListChanged, TerrainFeatureChanged or the other events. I looked up the custom resource clumps mod, and noticed they do most things with harmony, is that my last resort? I can code so i'm not afraid of harmony, but if there is another way to get a hook in the right spot I would love to know it.

lucid iron
#

i think they r big terrain features?

rancid temple
#

They should be under GameLocation.resourceClumps

lucid iron
#

hm nope GameLocation.resourceClumps

#

you can directly use the net collection events

#

this example is with location.terrainFeatures, a different netcollection

#

but the event work the same way

fair sluice
#

Right OnValueAdded on that collection then

opaque cobalt
rancid temple
#

Doesn't atra always say to not use those net collection events lmao

ocean sailBOT
tawny ore
#

I recommend by checking out how to mod using Content Patcher. That is all possible, and it's well-documented.

uncut viper
rancid temple
#

Not sure, atra does do a lot of things they suggest to not do dogekek

uncut viper
#

might just have to make sure you're discarding the event handler or somethin idk

rancid temple
#

Maybe it's a "for your sanity" thing

uncut viper
#

i dont know much about things

rancid temple
#

And stuff, me too

wild crystal
lucid iron
#

my understanding is, atra says to use these instead of harmony but atra also says make big ol disposal class to clean up after yourself

#

in my case i am removing my handlers when player leave area

tiny latch
#

okay, another stupid question. how much dialogue is necessary for an npc or like whats reccomended? i'm trying to just make a basic npc to get started right now, so bear with me.

fair sluice
#

Yeah I figured this was the type thing you need to remove, like eventlisteners in JS. Thanks I got my event on boulder removal!

rancid temple
#

You could just give them a dialogue for each day of the week and call it done

#

Technically speaking I don't think any dialogue is necessary for them to load in the game, they just won't talk to you

tiny latch
rancid temple
#

If you just do Sun through Sat then they would just repeat every week

tiny latch
#

oh okay! thank you!

latent mauve
#

you may also want to include an "Introduction" dialogue key for the first ever dialogue with the NPC.

tiny latch
#

ah okay, thanks. gonna look on the wiki some more ๐Ÿซก

uncut viper
#

(to be clear thats not required, just very highly recommended. the more dialogue the better, really. as much or as little as you want to write, so long as you have the days of the week!)

tiny latch
#

okay! also, one other thing. what is an "entrydll"?

uncut viper
#

nothing you need to worryu about for a Content Patcher mod, it should not exist in your manifest

#

thats for C# mods

#

it tells SMAPI what compiled C# code .dll to load

tiny latch
#

ah, okay great.

uncut viper
#

if you're making an NPC, has someone already posted the npc command for you?

tiny latch
#

no, i dont think so. how do i even see what commands exist, anyways? would probably be helpful lol

uncut viper
#

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

uncut viper
#

im not sure about seeing all the commands though, sorry

tiny latch
#

its fine, no worries!

pine elbow
#

some CP help please!
I'm testing and changed the aquarium and object sprite accordingly, but only the aquarium one shows up in-game...? The content.json is like, sparse
https://smapi.io/json/content-patcher/de749c424cb8479395541ca9deadfe44
and I've emptied out my mods folder besides CJB and CP to double check if anything else was messing with it. Sprites are all completely lined up in the proper place too
I'm completely baffled why this isn't working, usually this works fine

#

is the blobfish object located on another tilesheet...? I've checked other mods and people just edit on the AquariumFish

uncut viper
#

if i had to guess you also need to change it in Maps/springobjects, since thats where most items have their sprite

#

aquarium sprites is just aquarium specific sprites iirc

#

blobfish is on Maps/springobjects near the bottom, beneath the 4 big boulders

#

as an aside, you should really be choosing specific areas to edit with EditImage

drowsy pewter
#

I dont know why the object sprite is duplicated on the aquarium sheet

uncut viper
#

is it the one drawn when you open the fish tank menu to retrieve the fish?

drowsy pewter
#

Oh maybe

calm nebula
uncut viper
#

(i dont know why itd need to be, but, yknow, CA)

pine elbow
uncut viper
#

thats what i thought but figured i should mention it just in case SDVpufferthumbsup

calm nebula
#
  1. Do not throw an exception
  2. Do not spend too much time in one of those events
  3. Do not cause a memory leak
uncut viper
#

what happens if you throw an exception in a netevent handler?

#

what makes it worse than throwing an exception anywhere else i mean

calm nebula
#

You may corrupt net sync is what i was told

uncut viper
#

that does sound decidedly unpleasant

#

just to be sure, putting in a try/catch and just silently failing if an exception happens would be fine, right

fervent horizon
#

I don't think the bottom fish sprite is used anywhere tht I have been able to find. Maybe there are plans to migrate all fish sprites to the aquarium sheet at some point?

calm nebula
rancid temple
timid plover
#

Can you hot load CP mods? I vaguely remember it being possible

shadow pagoda
#

Is there a int/dictionary that keeps track of the number of a crop the players has harvested, (not including foraging)? Ex: bluberriesHarvested would be 0 in spring year of 1. But could be 100 at the end of summer year 1

uncut viper
#

not for specific crops i believe

#

and not for harvested either actually just shipped

shadow pagoda
#

Unfortunate. Though would it be theoretically possible to make one? If there's a method when the player harvests a crop that I'm able to modify in some way, I could make my own dictionary and increment that crop's value by one.

uncut viper
#

i lied, check Farmer.basicShipped

#

i thought it was a simple yes/no but it seems to count times shipped
tho i also forgot you wanted harvested. im a bit distracted sorry lol

#

a postfix on Crop.harvest should be enough though

shadow pagoda
#

which would require harmony?

uncut viper
#

correct

shadow pagoda
#

i've been trying to avoid using that as much as possible since it seems a little scary, but if this is the only, then I'll have to dive right in

rigid musk
#

i love game state queries so much theyre so nice Waahhh

brittle ledge
#

(Sorry, typing aroud a cat)

tiny latch
rigid musk
#

obscure dialogue for things people may never even see is my favorite

#

theyll never know... and if they do thats cool they saw The Thing

tiny latch
rigid musk
#

Is there a way to see schedules happen quickly with NPCs? so I dont sit there and stare blankly at a screen while waiting for each tick to pass so that they move and i can see if I need to tweak it a little

hard fern
#

You could change the time via cjb menu (this is what i do)

brittle ledge
#

Not really. You can use Fast Forward, but like CJB or patch reloads will break their schedule

calm nebula
#

Yeah

#

Fast forward is great

brittle ledge
#

(well, CJB won't break it per se but if you go an hour beyond when their next schedule starts, it'll just start thn instead of being an hour into it)

calm nebula
#

I would set time to ten minutes before they moved next tbh

#

Works fine

brittle ledge
#

(so it's not great for telling when an NPC will arrive)

calm nebula
#

I also have a ff in Event Tester

#

(And ofc gima scheduler checker)

#

Says the lazy person:P

brittle ledge
#

(does that still work?)

calm nebula
#

I meannnnn

#

I need to actually fix atracore, which would take maybe fifteen minminutes

patent lanceBOT
brittle ledge
#

I did have the tag, but I said it didn't affect vanilla behavior because that's what the official wiki said

#

but apparently it changes pond color

rancid temple
#

Specifically the Default color for unspecified Legendary is 150 50 210 which is like purple-y

#

So it might not actually be that noticeable given the blue hue shift

brittle ledge
#

it's apparently noticeable if you're trying to change the pond color SBVLmaoDog that's what sparked the convo

rancid temple
#

Well, the issue they were having was trying to change colors with a bad model

#

They weren't even getting to the color change part, it was failing to be able to do anything at all

#

I dunno what they ended up with because that didn't get fixed until the very end basically

calm nebula
#

I enjoy the royal purp

rancid temple
#

I might try changing a fish to it to see how it looks, seems nice on a website lol

drowsy shadow
#

Is it possible to put dynamic tokens inside i18n text?

Here's what I've done so far.

"DynamicTokens": [
    {
      "Name": "dynamicRyan",
      "Value": "Ryan",
      "When": {
        "Alex_To_Ryan": "true"
      }
    }

EditData - Characters/Dialogue/Alex - Introduction: "I'm ryan." (WORKS)
EditData - Charcters/Dialogue/Alex - Introduction: "I'm {{dynamicRyan}}." (WORKS)
EditData - Characters/Dialogue/Alex - Introduction: "{{i18n: Intro_Ryan}} with i18n - Intro_Ryan: "I'm Ryan" (WORKS)

But as soon as I do: EditData - Characters/Dialogue/Alex - Introduction: "{{i18n: Intro_Ryan}} with i18n - Intro_Ryan: "I'm {{dynamicRyan}}". It no longer works

uncut viper
#

you need to pass the token into the i18n

brittle ledge
#

Yes, you have to pass them in though

drowsy shadow
#

Ah.

#

Thanks.

uncut viper
#

im on mobile so I can't get an easy link but it's on the content patcher docs for translation

brittle ledge
#

I think I have an example on the modding wiki

drowsy shadow
#

I can find it then. I was just staring at content patcher's author guide.

brittle ledge
#

btw Button, I'm thinking of doing a thing with books and wondered if I could add compat for your Extra Books?

uncut viper
#

compat in what way

brittle ledge
#

basically, it takes a book as input and spits out a random book overnight. I don't know if all your books are designed to be one-offs or if some are rarer than others though

shadow pagoda
#

How would I fix this harmony error?

System.Exception: 'Return type of pass through postfix Boolean Harvest_Postfix(Int32, Int32, StardewValley.TerrainFeatures.HoeDirt, StardewValley.Characters.JunimoHarvester, Boolean) does not match type of its first parameter'

I copied the parameters straight from Crop.harvest.

ModEntry.cs

public override void Entry(IModHelper helper)
{
    HarmonyPatches.Initialize(Monitor);

    var harmony = new Harmony(this.ModManifest.UniqueID);

//the error happens with the line below
    harmony.Patch(
       original: AccessTools.Method(typeof(Crop), nameof(Crop.harvest)),
       postfix: new HarmonyMethod(typeof(HarmonyPatches), nameof(HarmonyPatches.Harvest_Postfix))
    );
}

HarmonyPatches.cs

internal class HarmonyPatches
{
    private static IMonitor Monitor;
    internal static void Initialize(IMonitor monitor) { Monitor = monitor; }

    // patches need to be static!
    internal static bool Harvest_Postfix(int xTile, int yTile, HoeDirt soil, JunimoHarvester junimoHarvester = null, bool isForcedScytheHarvest = false)
    {
        try
        {
            Log($"A crop has been harvested");
            return true; // run original logic
        }
        catch (Exception ex)
        {
            Log($"Failed in {nameof(Harvest_Postfix)}:\n{ex}", LogLevel.Error);
            return true; // run original logic
        }
    }
    private static void Log(string message, LogLevel logLevel = LogLevel.Debug)
    {
        Monitor.Log(message, logLevel);
    }
}
calm nebula
#

Turn the return type to void

uncut viper
shadow pagoda
uncut viper
#

you dont return true

#

the signature of a harmony patch does not necessarily match the signature of the method you're patching

#

its a separate thing

#

a Postfix is just a function that runs after the original method, in this case Crop.harvest

#

Harmony can optionally give that function the arguments that were also given to the original function as well as the original result

#

wrong clipboard link lmao

#

only a Prefix patch can return a bool

#

postfixes return void

shadow pagoda
#

got it

uncut viper
#

transpilers return an enumerable instruction list

#

and dont ask me about reverse patches idk what the fuck they do

shadow pagoda
#

let's hope I dont have to use them

uncut viper
#

i think maybe 2 people have ever said theyve used them

#

ever

calm nebula
teal bridge
#

Reverse patches are a better alternative to any place you'd find yourself copying and pasting large parts of the decompiled game code into your own mod (y'all know who you are).

calm nebula
#

Okay! Copying large swaths of game1.fixproblems

#

Maybe that will fix my problems :pufferthink:

#

narrator: no it won't

brave fable
#

i'm often tempted to reverse-patch but really anywhere i've thought 'wow... i could..... reverse-patch this bullshit..' i could just as easily transpile in some new (opcodes.call, the-rest-of-the-method) and let the game do its thing

#

one day i'll find a use

lucid iron
#

tbh i think the case where i copy paste some code is usually like

#

hm if i just do this i can yeet harmony

#

so reverse patch solves nothing here

brave fable
#

or i've completely changed enough stuff in a subclass that even though i've copied some code, it's completely insignificant and anyone patching that method would have to do some crazy bullshit on mine too anyway

calm nebula
#

There are a handful of places in an unreleased mod where I carefully follow what the game does, just with new code that is...faster

teal bridge
brave fable
#

it's not that the solution is either-or, but rather i'm actively looking for places to use reverse-patch before realising 'nope it's another transpiler'

teal bridge
#

Just depends on what kind of problem you want to solve. I suppose a lot of modders are focused on the set of "replace vanilla thing with my thing" which, yeah, is always going to be a transpiler or in the best case a postfix.

#

But say you wanted to do something like: make a tool that performs both the axe and pickaxe functions. Or an axe you can swing as a melee weapon.

#

It's kind of a crappy case for a transpiler, and you don't really want to rewrite the DoFunction of all those tools.

calm nebula
#

Eh, I would instantiate an Axe and a Pickaxe, etc

#

And call the methods on that class etc

brave fable
#

reverse-patch is also the same amount of effort as a transpiler but with none of the sense of adventure or reward

#

so very unappetising

teal bridge
lucid iron
#

i can imagine case where i reverse patch out some portion of the big ol Object.performAction method

#

but wouldnt that mean i lose compat with other mods doing postfix on that think

teal bridge
#

Yeah, reverse patching presuppose you don't want the whole thing - or don't have everything you need to call the method containing that code. Otherwise obviously you would just call the method and not reverse patch.

teal bridge
lucid iron
#

well i dont know what other ppl's postfix look like

#

its not that clear to me how i would grab their code too

uncut viper
#

the harmony docs on the execution flow pf patching dont even mention reverse patches