#making-mods-general
1 messages ยท Page 63 of 1
so how does it use everything and not start at 0
oh
Oh it looked like a seed to me, but I still haven't been able to start a playthrough with it lol
I have never seen that object nor seed appear anywhere in my game
fair enough
Anyways, you don't have to use everything on your sheet
well yeah
It still messes up your index, but you can just skip those numbers
perfect ive got my potato in game now
and it doesnt use the fish texture anymore ๐
yeah i should probably be using placeholders instead of making actual textures that i will never use again
ah well
oh uh
how big are Crops sprites meant to be
16x16, unless you're making a giant crop
I think crops are 16x32 aren't they?
oh wait, actual crops 
mixed answers
these things, squints looks like 16x32
ok makes sense
the potato one barely squeezes into 16x16 so the green bean clears it up
I get an error for my NPC when I try to load my NPC when playing in a different language. Can anyone help me with it? 
Log: https://smapi.io/log/0cc86777845e47818f38327cb2b6755c
Content.json: https://smapi.io/json/content-patcher/686364edc56441c69bea5b432c06a840
ko.json (which was the language I tried in the log): https://smapi.io/json/content-patcher/7d459338474a4bd6b11d78c9098c5434
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 38 C# mods and 35 content packs.
some portrait somewhere got screwed
C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley\Content\Portraits\Aquarium.Curator.xnb is always my first notification that i screwed up my portraits somewhere
hmm
i am not sure it's different language thing, however?
there is a load for
{
"LogName": "NPC Curator",
"Action": "Load",
"Target": "Portraits/Curator, Characters/Curator",
"FromFile": "assets/{{target}}.png"
},
tis not
Aquarium.Curator
is the folder structured as Assets/Portraits/[Curator].png ?
i mean
the internal name search for Aquarium.Curator
so it should have a bit of code to say to use curator instea
d
Would it be a bug that isTilePassable returns false for a tile that is passable? It returns true for plenty of places where a player actually collides with things like the boulder blocking the mines in the first few days, but that's not an impassable tile per se. Anyway, it checks tile index properties, but makeMapModifications in IslandSouthEast.cs sets the tile properties of the tiles at the "Buildings" layer outside the cave entrance when the pirates are there, but their tile index properties remain without the Passable property, so isTilePassable returns false when those modifications happen.
isTilePassable is definitely of limited scope, but I bring this case up because that implementation of makeMapModifications seems unique. A fix would simply change those tile index properties in the .tmx to have Passable.
some bits of sentence were eaten by the fishes
lowercase a in assets, but yeah
yeah your internal name is looking for a portrait named Aquarium.Curator.png
(question for the map makers. is it correct that i cant have just loose TileData on my Buildings object layer with nothing on the other Buildings layer beneath, i need to have something placed in the data(?) Buildings layer too for it to actually get loaded in? or am i just doin something wrong)
invisible tiles count as 'something' being there
I'd rather just duplicate whatever is on the Back layer there instead lol
yeah, i figured, just wasnt sure if that 'something' was required. woulda saved a lot of frustration had i known, oops orz
i was using Buildings bc the TileData i was copying was in Buildings
Invisible tiles == hell
y'know i should probably go back and fix my interior because the entire buildings layer is just invisible tiles
hindsight is 20/20
in this case it makes sense for me to use Buildings anyway since it shouldnt be the case that theres nothing on the buildings layer in this context anyway where the tiledata is. just my first time in a long time actually doing anything map related and was trying to detect a custom tiledata property for testing and was confused why my game couldnt find it lmao
(trying to detect it in C# i mean)
I thought SMAPI would cry about it, but I can't remember
as far as i could tell it was completely silent about it
it just straight up ignores it, like "object? what object, i don't see a tile there"
tbh it might be a Tiled thing
!unpack
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!
(just make sure you get the version of xnbhack for 1.5.6, though)
Can you unpack sdv on mobile?
not a clue slash probably not? mobile modding in general is weird and not many people here will be able to help you with it
what's the other xnbhack? it might but that's like, a shot in the dark
Yeah having to have a version of the game you can't legally acquire makes it kind of hard to get into lmao
(i just looked at it, it's windows only)
i mean some people might just not have updated their mobile versions, thats a legal acquisition of it
Right, I mean for the rest of us 
(i'm dumb and my apps auto-update, but i also have a phone that becomes the sun when i just wanna gacha roll)
i thought steam has a beta branch that's old
this is mobile
its a random sprite there so it can be a placeholder image for any item without an image. if i put a real item sprite there, then unfinished items can get confused with real items
the sprite is from my mouse-ear cress crop mod
yeah, sorry, I got confused abuot what "the rest of us" was
i suppose if the spritesheet is the same between mobile and PC it would still work
can you even selectively pick versions of sdv mobile when you purchase it?
No, you would have had to have owned it before it updated
And then refused to update it
beyond that, we don't supply actual game assets because that's taboo and we support purchasing the game 
It usually is, I think only the code changes. Like the gamepad image has all the images for all platforms even though the code only uses one.
on a side note, for some reason theres a subset of players who like to look at mod spritesheets and assume that if they cant find one of the images ingame that there must be a bug making the item unobtainable
(my 103rd portrait is never called in game, it's an inside joke)
That's funny, I would assume it's some kind of joke I just don't understand lol
Like Avi's
speaking of unused sprites, I think it'd be funny if someone made the Angry Roger monster into reality... I was surprised to come across that sprite and it has at least a bit of code in the game
oh true, i kept glancing at it when i was making my FTM monster and was like, "am i crazy? have i never seen this?"
I don't recall ever seeing the Shadow Girl monster in game either.
at a glance (at the images and the code) it seems like a ghost variant more or less, though who knows what the idea of it was
a bunch of the monsters are unused
cat, crow, frog
to be clear there are cats, crows, and frogs in the game
just not using the monsters spritesheets
this is definitely tempting to make as a monster for like, a "transitionary" map
oh, huh, I just ignored them because of their names - figured they were the ones in game
And the crow, for some reason, is 64x64.
oh no, the demons in the brain are coming 'round, i want a timed active map with monster spawns, much like waiting on a boat to actually move
this man on a mission
strut
The aesthetic is more cutesy than demonic, though.
Also, fireball is a monster. Just because. (Did I mention that I hate the monster data? I think I may have mentioned that.)
spiker variants 2 and 3 when
unrelated to current conversation but when youre makign a crop where do you define which seeds are used
{
"Action": "EditData",
"Target": "Data/Crops",
"Entries": {
"Test_GreenPotatoSeeds": {
"Seasons": [ "spring" ],
"DaysInPhase": [ 1, 1, 1, 2, 2 ],
"HarvestItemId": "Test_GreenPotato",
"Texture": "Test/Crops",
"SpriteIndex": 0
}
}
}
thats my action
if that's your seed item id, then yes
tis
tyvm
the wiki is useful to some extent but when Pufferchick is both the seed and the product it doesnt exactly help me tell the difference
Pufferchick is neither a seed nor a product, it's a meme.
check the examples used for making a contentpatcher crop then get back to me
I mean, if you match the consistency that the examples have you wouldn't need to make the distinction either, it's just kind of a problem with examples vs actual practice
okay so that's weird, so my NPCDispositions in the content.json looks like this:
"Aquarium.Curator": {
"DisplayName": "Curator",
...```
The translation files just needs to change the display name, so my thinking was that I need to target the entry ``Aquarium.Curator``, but when I changed it to ```"Entries": {
"Curator": {
"DisplayName": "ํ๋ ์ดํฐ",```
it worked?! 
you don't need to change your content.json if you turn everything into a token with {{i18n:KEY}}
I didn't change the content.json, I changed the translation file
{
"Action": "Load",
"Target": "Test/Objects, Test/Crops",
"FromFile": "assets/Objects.png, assets/Crops.png"
}
A translation file wouldn't have an "Entries" in it?
this isnt working
but its pretty much a 1:1 copy of what the wiki uses
the issue is having two things
works fine with just objects
Sorry translation file is probably a wrong word, it's a json I include with a language token. The mod I'm working on predates i18n 
you can't have two "FromFile" things, you can just do assets/{{TargetWithoutPath}}.png
Right, but translating an entire content.json isn't so great these days, it's better to switch to the i18n syntax and provide an actual translation file.
(it'll be much easier for you in the long run, i promise for turning everything into an i18n key)
Of course you can just hardcode a different language in the content.json and tell the user to replace the whole thing, it's just... not a great design.
right okay
I appreciate that you can Target multiple things, but it does bother me that it's Target {} and not Targets []
mfw betrayed by the spritesheet website
Spritesheet website?
i think piskel just scooched everything
I mean, it looks kind of like the wrong size lol
oh true
using a website to generate my spritesheets
Ah
not using piskel i tried to import with their spritesheet thing and it took about 184618 years and didnt do it so im using a different thing for spritesheet compiling specifically
using piskel to make the sprites though
THAT IS NOT BETTER
tldr, the like, (idk how many npcs you actually have so multiply days by however many npcs) 2 days of transitioning everything into an i18n key means you can get away with crimes like this:
and then it's as simple as plopping the whatever new language right next to the default.json in the i18n folder and it Just Works โข๏ธ
"padding: 0 pixels" mhm sure you are
I don't know how that tool works, but you picked 16x16 as the size right
it just inserts the images as they are and theyre 16x16 pngs
it kinda looks like it's adding an extra pixel between the 16x16 so they're now 17 wide
Each tile in the sheet is 16x16 but the sprites inside usually don't take up that full space
yeah its automatically padding my sprites by 1 pixel in either direction when it adds them it turns out
I have no idea what that even does lol, I was just confused as to an entry with a prefix was the same as one without 
you should just make your spritesheet directly in your drawing program
...or I guess removing a pixel so they're 15 wide and the game grabbing the 16 pixel width shifts it right
piskel is dumb
it is a lot of initial work because of the transition, but you'll definitely just be like "holy paffer this is nice"
A lot of converter tools have been made by helpful members of the community to update outdated mods or convert existing mods to modern or alternative frameworks, and for 1.6. Here's a list:
- Convert XNB mods to Content Patcher
- Convert pants/skirt spritesheets to Fashion Sense
- Convert Custom Furniture mods to DGA/1.6 Content Patcher
- Convert visual Content Patcher mods to Alternative Textures
- Convert BFAV mods to work with 1.6 Content Patcher
- Convert TMXLoader mods to 1.6 Content Patcher
- Convert Custom Music mods to 1.6 Content Patcher
- Convert Shop Tile Framework mods to 1.6 Content Patcher
- Convert hair spritesheets and JSON Assets shirts & hats to Fashion Sense
- Convert regular Content Patcher to i18n format
- Convert JSON Assets to Content Patcher
- Convert fish data from field names to slash delimited values
- Convert markdown text to Nexus' bbcode
- Convert Custom Ore Nodes and Custom Resource Clumps mods to Item Extensions Framework
- Convert Content Patcher Animations to SpaceCore
- Convert More than Necessary to Content Patcher
- Convert SAAT to Content Patcher
Took me a minute to spot it lmao
I don't think we have an i18n command by itself
i reference it in the reload command but, uh, y'know hindsight i probably should've specified what i18n even is
i can go fix that 
It'd be nice to have a command that explains it + links to the modding wiki page/converter
-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload YourMod.UniqueID
-C# Visual Studio has a feature called Hot Reload
-C# Rider also has Hot Reload
-Generally working in C# it will be called "Hot Reload" (usage may vary)
gimp is so annoying what
this is so useless
i select a region
i use move
it moves the whole thing
i deselect all
cant use move anymore - expected
i select region again
try to move
MOVES EVERYTHING
Oh yeah, I had to look up a lot of things for GIMP, it's weird
if you want to move a selection you need the transform tool
good thing theres two things with transform tool in the name and neither are just transform tool
!i18n
So you'd like to stop writing all of your strings straight in your content.json? Introducing i18n!
-
Lets you put it all in one .json: default.json
-
Capabilities to have easy-access translations
-
Also has a converter
Not to be confused with
{{DynamicTokens}}since these require the specific{{i18n:<KEY>}}modifier

and now I gotta rs my computer to uninstall
Stardew reference assemblies
Well that command has personality lmao
sorry, i'm unprofessional
feel free to make it professional, i make everything quick-and-dirty
I don't think it has to be professional, I just think it's funny
Unified Transform-nvm you already uninstalled lol
GIMP is a powerful image editing tool, but you do need to be familiar with it
that goes for most image editors really
Yeah I complain about the other editors, but like I didn't pick up Aseprite and know how to use it intuitively, nor Affinity or Photoshop
I'm still always learning new things about them, it just sucks to learn a new program lmao
stoopid harmony question: if a code matcher doesn't match IsValid will return false right
and can I reset it by moving to Start()?
i think IsValid just checks whether you're still looking within the list of instructions i.e. havent gone index out of bounds
so if you dont stop the match early i thiiiink thats correct?
Probably could mention that it's primarily for translations so people don't think it's just some weird code thing?
Also I'd make the modding wiki link a little more clearer, like calling it a tutorial or summary?
my turn for a potentially stupid question: if im tryin to use some generic spawn item data to spawn something with the RANDOM_ITEMS query, is it not possible to have it reliably choose the same random item with repeated calls to ItemQueryResolver.TryResolveRandomItem
cause i woulda thought creating a new Random every time with the same seed would've done that but apparently not
its not like, the biggest deal since using RandomItemId instead will reliably choose the same item every time, but i was curious
why are u using TryResolveRandomItem if you want the same item
honestly i was just copying code from other places the game picks random things from a list of GenericSpawnItemData
rand: return 4 energy
its not so much that i want to use RANDOM_ITEMS but always be the same but rather i just want to support generic item spawn fields and that means someone COULD use RANDOM_ITEMS but it needs to be the same thing every time the menu is opened
ItemQuerySearchMode.TryResolve with ItemQuerySearchMode.FirstOfTypeItem maybe?
they all seem to be using context.Random
not sure if RANDOM_ITEMS gives u a random order everytime
(specifically i was copying GameLocation.TryGetGarbageItem)
or it's pulling a getFish and randomly swapping in game1.random somewhere
the fact that it works as id expect when using RandomItemId instead does have me convinced that it is actually using the context.Random im giving it which is why i am confused why the RANDOM_ITEM query itself seemingly does not
RANDOM_ITEMS seems to order the list of items it gets based on the random.Next value which i woulda thought would give the same values assuming nothing changes and a fresh seeded random every time
yea hm, i did check 1.6.8 vs 1.6.9 and doesnt look like there is change
im still on 1.6.8 anyway atm
uuuuuuuuhhhhhhhh post your code where you're calling the query?
idk lol, everything should work from what I'm reading
oh maybe it's this additiona layer of random TryResolveRandomItem
i think this will work for you
with RANDOM_ITEM or any other item query
oh i missed that message originally
me too 
see this is we need power to pick our own colors
every other person here is orange and its kind of hard to read without icons
Day 1: Sprite 1
Day 2: Sprite 3
Day 3: Sprite 4
Day 4: Sprite 5
Day 5: Sprite 5
Day 6: Sprite 6 (Should be grown at sprite 6)
Day 7: Sprite 6 (still not harvestable)
Day 8: No Sprite (harvest)
what is going on with my crop
and changing it to FirstOfTypeItem will actually choose a random item still with RANDOM_ITEMS?
and not just, like, Weeds
well it's still going to like, randomize the list first
so the first thing in that list is random
i will give it a shot 
u could also do the other way around
you should be comparing it to a vanilla crop
ALL_ITEM query with TryResolveRandomItem
what comparison can i even draw here
crops do not do one sprite per stage, there are seed sprites and specific locations for harvest sprites and sucj
this way might be nicer if you want to randomize other item queries
LIke look at vanilla crop data and compare it to that crops sprite
i wouldnt be the one choosing which query to use
theyre not one sprite per stage?
the first two sprites are both seed sprites for the same stage
Hold on i did draw a diagram for someone else
Let me find it
i see
This is a crop with 5 stages (each number 1 ie 1 day per stage) and 1 more regrowing stage
so this is too many stages for 6 sprites [ 1, 1, 1, 2, 2 ]
yes
if you compared it to vanilla crop sprites, you could figure it out
i was about to say the ItemQuerySearchMode.FirstOfTypeItem didnt seem to work
but no it turns out actually this seed i was using just happens to result in Stone lmao
(i figured maybe it skipped weeds for some technical reason. idk out of 900 odd items it just seemed Too Coincidental)
it does seem to work otherwise though when choosing different seeds so thank you chu 
ok the crop has successfully been added to the game
but
its giving exp
and i dont know how that exp is calculated
since i havent defined that amount
does it default to something that i can change or do i just not know how farming exp works
done (rain and winter)
needs a few transpilers to yeet every instance of rain and winter check I can find in FarmAnimal
perfect that makes my life a lot easier and a lot harder
ty
so i guess you could tweak the price of the resulting crop to tweak the calculation but you cant set a value specifically unless you wanna do the formula yourself
less effort right now so its fine
(float experience = (float)(16.0 * Math.Log(0.018 * (double)price + 1.0, Math.E)); if you're curious)
if multiple instances of the harvest item, ExtraHarvestChance
if extra different items (like hay and sunflower seeds), you need SpaceCore
(SpaceCore apparently also supports overriding xp gain on harvest)
or can i not
ah if just extra potatoes dropping then ExtraHarvestChance
right so how does it work with the chance to drop more than one extra
i would figure its like "ExtraHarvestChance": 0.1 then its like a 10% chance for +1
ty
also TIL animals can be forced outside in rain and winter if they're let outside the previous day (and the door is closed). for some reason I've assumed they just teleport back in lmao
(You can eyeball the expected value from the desmos)
Or calculate it
For small numbers it's about equivalent
i love restarting stardew 365827 times to test tiny changes
might need to get that quick start mod
!reload
-You cannot reload tokens, that's a forced restart unfortunately
-If you've done any CHANGES, then type into SMAPI:
patch reload YourMod.UniqueID
-If you've done i18n DEFAULT.jSON changes, then type into SMAPI:
reload_i18n then
patch reload YourMod.UniqueID
-C# Visual Studio has a feature called Hot Reload
-C# Rider also has Hot Reload
-Generally working in C# it will be called "Hot Reload" (usage may vary)
again, hot/patch reload aee your pals
As long as you aren't working on NPC's
(as long as you're not working on NPC schedules*)
not that you don't constantly need to reopen the game still, but it saves hours of time and years off your life
i mean unless you wanna run the npc chainsaw, go ahead
i don't specifically remember what for tmx doesn't work with reloading, though
you guys are lifesavers omg
"ExtraHarvestChance": 0.1,
is giving +1 consistently
whats up with that
Hey is there anyway to change a cutscen depending on the tyoe of pet you have? dif types of cats/dogs, maybe the first pet on the hearts list?
there's a gsq: PLAYER_PREFERRED_PET <player> <pet type>+
and then there's the event condition: h <pet> Current player does not already have a pet, and their preference matches <pet> ("cat" or "dog").
i don't think you can specify the index of the pet though 
seems to also do this for regular potatoes so im probably just misunderstanding the formula
does it have a minimum of 1 extra drop if extraharvestchance>0?
there is also PLAYER_HAS_PET
though that only checks the existence of one i guess
i dont think theres a vanilla way to detect existence of a specific custom pet though. or anything that isnt a cat or dog
it shouldn't; have you tested on more crops
ill run it back up rq
does the game support a beginning pet choice other than cat or dog actuallyPLAYER_PREFERRED_PET works with modded pet types, but that's about it. not sure about the event command
(BETAS does have a TOTAL_PETS query though if you dont mind a dependency)
omg im so dumb
no wonder it was doing the same thing over and over again
its based on tile and day
thank you BlaDe for this tiny piece of knowledge that i have retained at the last minute
yeah ok i moved 1 tile to the right and its 0 extra every time
...
maybe i should get checked for something
i suppose you could theoretically change the value directly in C# or with the debug command
i didn't realize there's so many more queries in betas, i been sleep
i realize now that the betas harmony would definitely confuse me now that i've been reading more harmony
did you implement a default "Last" priority on BETAS harmony?
there is no concept of priority with BETAS harmony
the patches run in whatever order Harmony itself placed my functions in
if you need a specific priority, you use Harmony. you dont use BETAS
fair enough
priority would require me to make a separate patch for every BETAS patch as opposed to my current system which is one function of all the patches placed in one patch under BETAS's name
shops have a 2x modifier by default
Pierre's mark up
lmao why
uh, cranberries iirc
so you lose money when you buy and resell i suppose
or some other multi-harvestable crop, caused a large discrepancy
pierre specifically has a 4x markup on the default object price
are you joking
but shops in general are 2x
theres no way
you can set a specific entry to ignore price modifiers if you really want
pierre is actually ripping us off so hard
so in this
"Action": "EditData",
"Target": "Data/Shops",
"TargetField": ["SeedShop", "Items"],
"Entries": {
"Test_GreenPotatoSeeds": {
"Id": "Test_GreenPotatoSeeds",
"ItemId": "(O)Test_GreenPotatoSeeds",
"Price": 200
}
}
is "Price" irrelevant
Price (Optional) The gold price to purchase the item from the shop. Defaults to the item's normal price, or zero if TradeItemId is specified.
i figured it would be the gold price that pierre sells it for?
IgnoreShopPriceModifiers (Optional) Whether to ignore the shop's PriceModifiers field for this item. This has no effect on the item's equivalent field. Default false.
if you set a price in the shop specifically, it will be set to that and ignore the global shop 2x
but Pierre has another 2x on top of that
lmao ok
if you put that entry in some place other than seed shop it would end up as 200
i see
(unless that other shop also had its own modifiers on top)
ive just made it awkward to explain by making my custom value 2x the sell value
i see how it is
pretty much lol
i think the usual thing is for people to just set the price on the object itself and not in the shop entry and just let the shop figure it out
or if not usual then at least common
up to you
because your file is long and it's trying to keep you aware of what context you're in re: the indentation/levels. like it doesnt want you to forget that you are inside Changes and insie Entries and inside Test_GreenPotatoSeeds
so it sticks to the top
dunno how to turn that off i dont use VSC
dang i guess i just reached a threshold
its annoying but ig it is what it is
ok anyway
is there a way to add this item into the shop like directly after potato instead of at the end
Cornucopia also has examples since I heard you mentioned it earlier
oh good point
ty both
damn i should really unpack this game
i dont know the potato seeds id 
is it just the numerical id
i think most in here would call trying to mod, especially doing stuff with shops like this, without unpacking the game a "(lightheartedly) fools errand"
!unpack
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!
right ok
is that different
should i be using a different id for my shop entry to the object id
like i have
"Entries": {
"Test_GreenPotatoSeeds": {
"Id": "Test_GreenPotatoSeeds",
"ItemId": "(O)Test_GreenPotatoSeeds"
}
},
vanilla likes to use matching item ID and shop IDs a lot so you can do the same if you want but it doesnt really matter as long as its unique
but its the Id you want to focus on for MoveEntries, not ItemId
so long as you remember that
I'm having trouble replacing my event entry with a translation I have. My events that I target "Target": "Data/Events/Gervig91.StardewAquariumCP_FishMuseum", works just fine.
But all the others aren't getting translated, they default to english. I've been using debug ebi to trigger my events, sometimes it can glitch out and start the event on a wrong map. But weirdly enough when it did that, the translation worked? But when it plays on the correct map it doesn't? (Screenshots below)
Log: https://smapi.io/log/9604a664135143d8aaebe6d74b291562 (I can see that the patches are loaded, conditions are met and they get applied)
json: https://smapi.io/json/content-patcher/7264c79237e6401aa42bfc72cb759e41
Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 38 C# mods and 35 content packs.
is there a reason you don't use i18n? it may be easier on translation stuff
the aquarium was before that, I can't be bothered to change it
i believe there's hu, converters
yeah i just made the new command
in case that helps, but i understand it's not the focus
is MoreFish actually a uniqueID of a mod you have installed?
yea it's not really gonna help me right now
(however i have no clue about what's going on)
yes, it's for More New Fish
yeah it actually is 
(so it's not like i can provide a better solution)
also unrelated but like the error at the top says too, but your two HasMod conditions on line 62 are not going to work right
do i need to do somethng for the random pick to work? i tried it out and the character is only saying everything in between quoptes instead of choosing one dialogue to say
(i get that, but hmm, i didn't feel like letting you go on fixing tedious translation related bugs without asking about that first, because it's the kind of stuff you kinda want to know about before deciding what approach you want, if that makes sense)
it works still, I know that's not how json works. But it works. Also it's not a relevant event I was testing
thanks everyone for your help today
test same day same save will have same result
it's a seeded random
heading to sleep now with a successful day
cant wait to see my summary screen at 2am
(well it might work sometimes but it 100% absolutely will not check for both json assets and SVE. it will check for one or the other. that said i dont really know how to help with the translation stuff, sorry)
no i mean, it even says "{{Random:"
like everythinginput seprator too
all at once
you're not Loading the file with this dialogue, right? this is part of an EditData patch?
๐ฎโ๐จ
oh
i might be
wait i have that on every dialogue of her, do i really need to put her whole dialogue on the content json?
anything you Load in cannot have tokens in it. they will not work
tokens need to be used only in EditData patches
didnt know that was a token
so yeah, you need to move her dialogue to EditData patches
thought it wasa smapi thing
no, you load, then edit with an include for ex
anything within {{ }} is a token
ohhhhh
(minor exception for When conditions where the outermost token will not have braces but dont mind that)
well thanks that explains a lot
THANK YOU
some C# mods may add custom tokens. dont worry about those unless you know a mod you wanna use adds em and you need em though
aight
just curious how does i18n work with event scripts?
works with everything string-wise
speak EdelweissSeung \"{{i18n:Edel.0Heart.1}}\"
so you'd have to save every piece of dialogue as a i18n string?
a lot of 1.6 stuff doesn't make sense to me
so this will work right (the json loaded is blank)
it's not 1.6, but i get it, it's a bit scary at first
there's several converters, i don't remember which one is best for events
does the i18n one not grab from events?
i don't really have anything to test on because everything of mine is i18n key'd
i mean, there is one from pathos and one from nomori i think?
technically yes. blank.jsons are recommended instead though
(and this yes also assumes you're going to re-add the dialogue in the EditData)
what's the magic word to find one of these converters?
!i18n
So you'd like to stop writing all of \"your strings straight in your content.json?\" and/or you'd like the capability to see all of your strings across all of your .jsons?
Introducing i18n!
-
How to make your mod compatible with other languages: stardewmodding.wiki.gg
-
The file where you can put all of your strings is called default.json, and it sits in a folder at the same level of your assets, named "i18n".
-
If you're converting from an older version of the game, there's a converter for ease-of-access.
Not to be confused with
{{DynamicTokens}}since these require the specific{{i18n:<KEY>}}modifier
fresh off the define command 
can i use the same blank json and edit it for multiple stuff?
yeah, you can load the same blank.json into multiple targets at once
it just creates blank templates for your EditDatas to work on
i guess user discretion for using the converter is advised, i have no idea how it deals with things
thanks, not sure if I want to go this route. Will be days of work to convert everything. All I want to know is why one of these works and not the other 
which one doesn't work, the left or right?
right
all of them?
yup
Is MoreFish the actual uniqueID of your dependency mod?
only worked when the event glitched out and started on the wrong map
not my mod, but it is a legit uniqueID
(i will just warn you, if you're unable to figure it out now and ask for help again later, just know/be prepared to be asked the same questions about MoreFish, about lack of i18n, and about the HasMod error lol)
i actually have no idea how different language content.json will work in conjunction with the english right next to it, you might have to finagle dependencies?
Yeahhhh, the standard ID format is moddername.modname, so that question is gonna happen a lot
are these two separate mods?
which mods are you talking about?
like, the english content.json and the korean content.json
not sure which content.json you're talking about. But I do have 2 CP mods
do you load the maps in both of them?
no, only one
you'd probably have to finagle dependencies then
make the one that doesn't load the maps dependent on the one that does

tbh i don't have the experience/history of understanding how old mods handled other languages, assuming the alt language just quite literally hard loaded everything
and set a false dependency on the original or something maybe
the way im doing events right now is just replacing the entire event entry with a new one that has the translated language written directly in it
Ah, the salted earth method of modding /lh
yup the dark ages of modding 
like true salted earth you can do it the way i did it to SVE
silence the original event ID through trigger actions, make the new event a different ID altogether
omg I fixed it...
the event checks for donated fish, MNF changed all their fish names. So it's not SmallMantaray it's MNF.MoreNewFish_small_manta_ray now...
it's always important to put away your tools after you use them. remember to call harmony.UnpatchAll() often ๐
with the events fixed it might be a good time to fix the hasmod thing then as long as you're lookin in the content.json anyway 
@velvet narwhal thanks for helping ๐
MNF over here laying the salt first lol
for a mere $20 i could transition all of your strings to i18n-- /lh
all the work for the aquarium is literally just having to fix all the new names I have to use because it keeps changing lol
You gotta treat urself better and ask for $20/hr at least
but what if i finish in under an hour /s unless
a mere 3 doller per string..
"a"
new channel meme, it really only hits the best when you experience it first hand
You know I did have a i18n that was just " Cave"
Most of mine are just things like that lmao
(Do you want me to do i18n for you.)
So that I can put "ๆด" in chinese
(im still annoyed that theres no existing in-game i18n i can steal for the literal title of the game...)
literally only, what, stardew rose or something?
I think this was the last translation hiccup, so we should be good now. But if I get stuck I again, we might need to go down that path 
thats the only place it seems to exist in text that i could find
Sounds good
Just OCR it from the logo ez
wherever possible, be sure to superimpose LooseSprites/YellowLettersLogo over the dialogue box
(I think this is why focustense was surprised by your seriousness lmao)
can i cause chaos with stardewui and put the loosesprite/yellowletterlogo into a menu
Yeah sure

That's what the sprites system is for
You can light whatever menus you want on fire
why would i do that? i can just crop out a sourceRect from the Intro minigame where it shows the words "Stardew Valley" on a highway sign
i've already set up like two different projects for when i'm sober and cognitive
U know I vaguely remember someone working on a dialog library/framework
That was supposed to let you do fancy dialog
wow that's actually perfect. it's even localised
No idea what became of that
wdym fancy dialogue
i often think about making a dialoguebox with waving/shaking/coloured text
how come nobody has
Oldschool RS style
Is this directed at me?
no it was directed at bluebs
Lmao, no that was for blueberry
was it my crack dream of creating junimofont as useable in game?
why did i read this as like. bi-gendian. like something to do with gender
Contrary to gamer boy sweats, xbox 360 can be used by any gender
They definitely needed bigendian for big numbers trust
Ooh, I'm in 2 commands now, nice 
Original xbox however was not small hand friendly, regardless of gender
i had to look that up and saw "little-endian, for storing least-significant byte" and i went "that's me"
interestingly, bi-endian is a thing
Still gotta work on that config i18nifier
so we can command you now? 
You can, but it's really hard to actually make me do something 
.choose add a global toggle, don't, don't, don't
Choose result: don't
thank goodness

man i thought you were gonna get #programmers-off-topic 'd again
anyway if anyone wants a global toggle for winter/rainy animals I suppose they can make their own C# asset editing mod
hell I'll probably make it myself
hmm yak that can go outside in winter...
I think my least favorite things to do are error handling, performance analysis, errore handling, dockumentattion, and errrorere hansdrfn g.l
what is this for??? theres no elaboration on the wiki
Delimiter is the character that breaks up the fields
Usually it's either a space or a / but it depends on where you're editing
Is there a specific template for a custom NPC's schedule that I'm able to freely use and edit it to my will? I'm new to making mods, and am working on my Custom NPC
It would greatly help if so. Is it only done manually otherwise?
I'm happy to provide my schedules as a template if needed, but I highly recommend learning it yourself as understanding what your code is doing is crucial.
It also helps to learn internal location names and such
In that case, is it okay if I have your template only as a reference and manually write and adjust it down as I learn?
Of course! Let me get on my laptop. Do you mind if I dm you?
I've had this part of Tia's wiki to guide me through it a little--though I learn quicker with references and examples^
I don't mind!
Also, it's written in military time so if you have trouble reading it, I recommend just pulling up a list of military to analog times
that was my biggest hurdle tbh
Aha no yeah, I figured it was a bit different to the usual--I study History and soon majoring Law/Criminology so I immediately figured it was military code or equivalent ๐
there's also one on https://stardewmodding.wiki.gg/wiki/Tutorial:_Making_a_Custom_NPC
which is part of the !npc command
Just remember it doesn't rollover like normal military when you pass 2400, 1 am is 2500, 2 am is 2600
Meaning the maximum is 2600 then
Unless someone has a mod to extend it
Got you!
(God I hope not)
Though I'm not actually sure how well that plays lol
i think there's one
Yeahhh.. I don't have plans to use any of that aha
I was using a mod that let me go until 6 for a bit lol
(Night shift goes allll the way up to 3000)
Tbh that reminds me too much of college
My NPC will only be dependent on Ridgeside whilst the rest run normally--I have my NPC placed here for their spawn location
i figured it just doesnt do anything about the npcs so they continue their 2600
Well it doesn't change their schedule, but I've never tried to schedule an NPC past 2600 lol
Not-so-fun fact, I actually sort-of planned for this in AFS https://github.com/focustense/StardewFishingSea/blob/master/FishinC/GameRules.cs#L18
Essentially my thinking was, "fine, I'll acknowledge that this might exist, but if it's that important to you, then you patch it".
That brings me to another question; do both of these contradict eachother?
I don't believe so? I haven't dabbled in HomeRegion but I'd assume it was just an identifier for code divers? (Don't listen to me though I could be 100% wrong)
Aha no worries!
And I assume the schedule will dictate whether that is the case or not, correct?
no, you determine it
HomeRegion is mostly used for collecting npcs for notice board quests, village events, etc.
I should jus' keep it at Town then
also the socialization quest at the start, if you dont specify IntroductionsQuest
winter star as well
I have them all on truee
then yeah thats pretty much everything important
Thank you! ๐
Does anyone know where I can look up CP Precedence? I see the code in some of the mods I am referencing and I am not sure what it means... I looked over the CP read me and can't seem to find it.
Precedence is only used in a few specific places, best to just look up the data for wherever you're seeing it
do you mean precedence or CP Priority?
if you mean the latter, its explained on the Advanced Fields sections for each of the actions readme pages
I trying to understand the code, because someone helped me with it a while back and I figured out everything except the line "Precedence": -100
Precedence is like a localized priority, the lower the precedence the sooner a thing will be checked
Usually it's used to try to make something more likely to be chosen than another thing with similar conditions
Ah, so it will be chosen first over another CP mod? So "Precedence": -100 will be loaded first over "Precedence": -50? or do I have that backwards?
It will be checked first at least, if the other conditions set on it aren't met then it will continue to the next highest precedence
Oooh, okay, that makes a lot more sense. Because I looked over the code for the Seasonal outfits mod and they had a line with "Precedence": -1500 for the Aerobics outfit. I am guessing that's to make sure to check if that condition is satisfied first. Thanks for you help on this btw.
.choose colorful lights, canned animation, more docs >:(
Choose result: more docs >:(
Hey guys! Maybe I'm the dumb one here, but I downloaded the mod Scale Up 2, cuz I had an idea for a mod. But the mod simply doesnt seem to work on my end. I have almost no mods that could possibly conflict and I'm running the latest versions (no beta).
SU2 is a framework, it doesn't do anything on its own
Yeah, the mod description says that. I downloaded and tried installing the exemple pack, no success.
It displays the upscaled textures, but not correctly
Oh I didn't try the example, dunno if it normally works lol
Throws a warning when I try to use it
Switched the Format to 2.3.0 and the warning went away
Beeg Krob
How are we able to find out the internal names of the Ridgeside locations? Need it for schedule!
open the mod files?
Check their manifest
also if you want to check in game (for comparison/verification) mods like Debug Mode can help
Oh wait, locations lol
Thank you
Photorealistic plant is too funny
lmao the chunky pixel shadow
raytracing: off
mod that makes the horse photorealistic if the farmer has low energy
What is the "correct" way to register an _modHelper.Events.Content.AssetRequested += and then make it work for any language for that specific asset?
Specifically, I was doing, inside the Event Handler method, e.NameWithoutLocale.IsEquivalentTo("Data/Bundles"). But this apparently doesn't work if you play in a different language, as the asset is now Data/Bundles-fr or something like that.
Plus, even if the event handler was correct, I also need a way to call modHelper.GameContent.InvalidateCache("Data/Bundles") on it. And I can't find an overload for it that would allow me to catch alternate versions of the same asset
NameWithoutLocale works though? or am I missing something
Hiii a question plz๏ผWhat should I do if I want to draw something when the mouse is over an area?
can you be more specific? by area do you mean map area, screen area, etc.
It seems you are correct, but I'm still stuck unable to invalidate it 
Hey! Can dialogues change when an NPC moves to a certain location within schedule?
If so, how?
Oh I found it! I can use this! bool InvalidateCache(Func<IAssetInfo, bool> predicate);
Time to test modHelper.GameContent.InvalidateCache(x => x.NameWithoutLocale.IsEquivalentTo("Data/Bundles"));
the people who works with UI can chime in with more (accurate) info, but you probably want to listen for UpdateTicked, check if the mouse is hovering over a screen region and draw the menu if it is
Does anyone know if chat messages support tokenized text?
modHelper.GameContent.InvalidateCache("Data/Bundles") like you posted above should also just work, unless I'm also missing something
IClickableMenu has a virtual void update which you can override to do something when the game updates it, like check where the mouse is and flag your thing to be drawn if it's in the correct area. then you can draw it in virtual void draw.
(you can also be lazy and check inside draw, which i have done at least once)
It's possible but I'm not sure how 
It did not and that was why I was pulling my hair out at my method not getting called as expected.
The change to the predicate fixed it! Thanks for the help ๐
wait dang, does the string overload of InvalidateCache not work with the locale-specific versions
welp TIL
uh, sorta
it invalidates THAT EXACT ASSET
which is why I made my little extension method
you can't change the NPC's loaded daily dialogue this way, but you can have them use a location-specific one as long as they're there
I am Not a Fan TM of just going direct to the delegate
i was just looknig for your little extension method 
(You need to justify a O(1) -> O(N) in my book.)
yeah to clarify by "not work" I meant "does not also invalidate the localized versions"
anyway browsed through my code and I'm only invalidating my own assets so I should be good right 
Until you start to localize them 
override performHoverAction
i think most mods use i18n to localize instead of making duplicate assets the way vanilla does
okk. After the user opens my menu, I want the user to draw something when their mouse is over an area of the menu
just override performHoverAction
thx alot I will try it
( @ivory plume this apparently catches people off guard. Petition for either (a) doc clarification or (b) an optional "includelocalized" bool arg?)
also do I have the ability to do text tokens in chat messages?
But it doesn't come with parameter spritebatch๏ผshould I judge in PerformHoverAction and then draw in Draw?
(yes.)
looks fine to me, though you may want to expand the left column to Down Right Up and Left
Is that supposed to be a general arrangement or for NPCs specifically?
no this is my framework
there's different "direction modes" that control what number of walk cycle sprites you need
this is the one that matches what game usually does
but u dont actually have to arrange them like this 
can have just 1 long row if u want
the thing framework cares about is number of sprites (4 * anim length)
hrm the theme i used does stretch on tables 
if you're asking for just manually typing in chat, no. if you're asking for Multiplayer.globalChatInfoMessage, also no
I suppose it makes sense, although if it's aimed at artists then a version with actual art would be even better.
Doesn't have to be good pixel art, but any demonstration of the actual content that should be in each frame would be vastly better than some letters and numbers.
Those cells aren't exactly enormous to start with, what are they, 32x32? It'll scale fine.
Hello ~ I'm trying to make my first edit/patch to a mod, could someone answer a few Qs I have? The source code for health rework is available on github, it makes it so that food does not restore player health, only life elixirs do, and I want to make it compatible with other mod's health potions. and I see the exact piece of code that checks the player has an elixir of life, it then allows that elixir to restore player health. There's a function in the utilities script that looks for the item ID, the checks if the consumable the player has eaten matches it. I feel like I should just be able to add a few more if statements for item IDs from other mods, but i have no idea how to find an item's ID...
Checking for item IDs from other mods is not a great way to go about it. Better to use context tags, maybe custom fields.
context tags are ideal for this, but if other mods haven't set them consistently you might have to do it by ids
whichever one you do, you can get the info by looking in the other mods' files or (most likely) with Lookup Anything
Yeah, you could hardcode a few IDs but make the long-term implementation based on context tags. Only way you're actually going to find those non-vanilla IDs, though, are to look at the source of the mods.
Or actually install the mods and use LA like ichor said.
Okay, I see the context tags in the mod's json's for each potion, but they are all the same...
that's good, actually
Context tags are supposed to all be the same, every item that wants to participate in this behavior adds the same tag.
That's what context tags are for, instead of a bunch of unique IDs you have many items all using the same tag.
if an item has the "health_potion" context tag (just as an example) then you can just look at whether the item the player ate has the context tag "health_potion" to decide if it should restore health
automatic asynchronous compatibility! (context tags my beloved)
so all items with that context tag will work without you needing to add each individual ID
Okay, so i would hypothetically say if a consumable has a certain tag then it can restore health right? but then would'nt all the potions/posions in the mod now have that extra functonality
and consequently if an item does not have that context tag, then you would not add the health
that's when you add a tag only to the items you want that behavior with
you can use either C# or another CP edit
Okay, so could I just edit the mod's context tags? or could that break things?
if the context tag is shared between good potions and bad potions/poisons then thats where you'd either want to make your own context tag or hardcode IDs (but ideally just add the context tags)
Items have context tags, mods do not have context tags.
Thank you! In fact, the way I did this before was to make a judgment in PHA, and then set up a bool type field to pass the judgment result from PHA to Draw.
I would certainly recommend against removing context tags that are already there, but it's normally safe to add more, particularly if they're new tags.
i would also recommend not removing the existing ones
ohhh so I items can have multiple context tags?
items can have as many context tags as you want
and the context tags can be any string you want
Then thats great I could make a custom one and use that
maybe dont go above the int.MaxValue for context tags but other than that you should be fine
Yes, maybe don't add several billion tags.
Thank you guys! That's seems such a simple solution, yeah I'll just add one more to any potion I want to restore health
(You'd probably run out of memory for the strings before you overflowed the counter)
But I had too many hover actions to judge, which was making a mess of my code, so I was trying to make sure I wasn't overlooking somethin
try me
Hey is automate client sided
How much you got
nothing is server sided cus there's no server
World of Stardew when
some things are decided by the host, though, and propagated to clients
any mod can arbitrarily choose to do nothing if not the host
for your specific question, I don't believe Automate has any host only or client only logic host only
ah whoops does it? I browsed the code only cursory and I cant find any reference
but I may be stupid
Yeah, it does
@rancid temple sorry if you already said but do you know whatโs wrong with my schedule? I really wanna get it working
Your schedule end points were on the warps between maps
Got it. Doing nothing on host, very rarely sleeping for an hour on farmhand
You need to make sure the coordinates for your schedule points are not on the warp tiles
The thing I was thinking about was 1.6.9!
And you can do with less schedule points in general unless you're trying to micro manage your NPC's schedule (which you probably shouldn't)
did somethin change with that in 1.6.9? or was it more of a pathos feature request
because i also just added somethin to something im workin on that needs to send messages in chat and itd be very nice to know 
Check museum donations in 1.6.9 ๐
gonna make me download the beta again...
(That's very close to the context I wanted it for, for Aquarium's fish donated message)
(its exactly the context i am using it for)
What are you doing with the museum?
making a framework to make my own
Nice!@!!
though, where am i supposed to be looking in 1.6.9 for whatever it is you're talking about 
TokenStringBuilder
oh. i thought you just meant you wanted to pass a tokenizable string directly into chat
Oh no
the tokenstringbuilder thing is there in 1.6.8 too, it just gets shoved into the {1} though
Just tokenizing the fishie name
whoops
my bad then!
you had the misfortune of just something slightly different but similar enough fresh on my mind to be annoyed about to have my brain be too confident it knew what you were talkin about when i answered 
(that annoyance being man, why cant i just pass an arbitrary string into it? why do i have to add it to Strings/UI)
Well, Button
Have you ever considered the theory that you should send the minimum possible information for multiplayer
in this case, the translation key itself is longer than the translation value
so im failing step 1 there
(but also, at the very least you could let me specify the translation key! it has to be in specifically Strings/UI, and specifically prefixed with "Chat_")
just a few more bytes, please. a crumb of bytes
its mostly not my problem though. its a framework. so its the problem of the people who may use it who wanna customize the messages to know they need to shove em into Strings/UI 
(yes the docs will say so)
Hello, I've been looking for Love of cooking mods, im playing at mobile SDV 1.5 with smapi 3.18.3.3
Apparently it does not compatible with the nexus current version.
Is there anyone that have it work on mobile?
@brave fable also been tracking your attachments history, but cant find the suitable one๐ญ
what kind of software would I use to open the .xwb files that contain the game sounds?
does AcceptItem/RejectItem_ works for making specific gift response dialogue?
you want AcceptGift_ and RejectItem_ (plus the item ID)
(yes, the ending is different)
what does that mean
sorry, I just meant AcceptGift and RejectItem
https://stardewvalleywiki.com/Modding:Dialogue has more info on them (and the other dialogue keys)
im there thats why i asked
was kinda confused if those only applied to those billboard quests or to general gifts
billboard quest deliveries will always go through (and IIRC those use generic dialogue)
those two are for gifting outside of quests
(side note for other C# code divers, but I looked at the switch case for item delivery dialogue, and dang those compiler optimizations hit differentโข)
huh no one ever made modding:buffs?
you can be the first to take the bold step
it was only really made possible mostly in 1.6 so, it still on the migrate page
whats 12 more
hm what wiki page documents GenericSpawnItemData
fuck it, done: https://stardewvalleywiki.com/Modding:Buffs
The following describes the upcoming Stardew Valley 1.6, and may change before release.
wdym I don't see that on the page
mustve been the wind
Fast Animations fucks up Juliet's 14-heart event something wicked. Does anyone know how I can work the event to make this... not happen? I suspect it's because the event is full of warping NPCs here and there and changing viewport regularly, but I've no idea how I can fix it.
(if you're still willin to change it, theres also a broken link to "color format" that should link to a different page now, for GlowColor)
Today on "Tired mod authors make silly mistakes": I spent over an hour fighting with a conditional patch that would not update correctly for some reason, only to discover that the new condition I added wasn't within my "When": {}, and was just outside of it at the end.
It works now, though, so yay
I can publish the update to Useable Community Center later this week and finally have true CC Reimagined compatibility with the Override SVE option
(I remember talks about this earlier but I don't remember if there was a solution)
okay figured it, lots of advancedMoves
hmm I should rework the framework page to split at least the <100 ones by category; I was thinking of adding a couple more but the list's getting unwieldy lol
but then there's stuff like EMP which defies categorization actually this one can go into mapping
i support adding a category just for museum frameworks. for the greater good totally not just for me
TrinketTinker docs
https://mushymato.github.io/TrinketTinker/guide/0-Trinket.html
now i pass out bye
oh and if u wanna fiddle
https://github.com/Mushymato/TrinketTinker/releases/tag/1.0.0-alpha
only runs on 1.6.9 btw
Is it bad that I have like 4 or 5 different WIP mods on my plate at the moment?
hi, i'm afraid i don't know which version of LOC was the last to be mobile-compatible, and i can't guarantee it ever worked correctly on mobile anyway. it was hard enough just maintaining it for PC only ๐ฆ
it's bad, but it's also normal lol
after a long and gruelling 5 minutes of thinking I've decided that framework mods fall into 1 of 3 categories: Items, Maps, and Misc. PTAL and let me know if I'm completely wrong and should be fired from wiki editing
https://stardewvalleywiki.com/Modding:Content_pack_frameworks#Specialized_frameworks
Do u want to dismantle the xxx content pack sections then
as they always say: lgtm
Seems better to have only 1 paradigm of framework grouping
Can't believe selph added my 4 features mod
my criteria is "have at least 1 user"
Well, soon to be 5 maybe, I was gonna make hole touch warps
For my nauscent farm map idea
also because I have no freaking idea where I'd put SpaceCore
It's the spaciest of cores, put it in all 3 categories 
i think spacecore is the exact opposite of specialized
i wouldn't worry about it, i'm sure spacecore will manage to patch itself into most parts of the wiki anyway
though id probably call half the frameworks not in the spceialized section as specialized too anyway
There's a secret 4th category actually
Infrastructure, for things like spacecores skills and save serialization
Stardewui goes there too
i dont think id call skills infrastructure personally
that's actually just misc (see BETAS)
Writing docs really does take a lot out of a person. I can write a few hundred words in the same amount of time it takes to write several thousand lines of code, and with twice the fatigue.
Have to take frequent breaks and alternate with something more hands-on.
this is why i think writing the docs as i actually implement the features instead of after everything is done is a good idea
i dont actually do it, but i like the idea of doing it
Can you check for passive festivals with is festival day?
are you looking at the game state queries page on the wiki?
yes
I would just use is passive festival, but for what I am doing I need that +1 offset
in that case no you cannot, unfortunately
you might be able to just add the passive festival dates to Data/Festivals/FestivalDates
iunno if that'd have other consequences tho
I'll look at a different way to do what I am looking at, but I'll keep that in mind. TY
i'm trying to make an update to a map after an event has been triggered. is there a way to do that with content patcher?
it'd be nice if IS_PASSIVE_FESTIVAL had optional fields for day/offset and time 
(i thiiiink the biggest consequence would be that you'd get passive festivals listed twice on your calender)
you could make it so in the event you get a mail and the use the mail flag as a requirement for the map change.
and you'd get "Festival" weather instead of "Sun" weather
which... i think is identical?
thats a good idea. thanks
there is also just a content patcher token for EventsSeen
or HasSeenEvent, something like that
oh! that may be easier
that's nice. I wish I knew that when I did one of my mods a couple of weeks ago.
I think so, It does prevent the use of rain totems though.
I actually haven't checked to see if passive events also disable those though.
the more significant consequence is the weather icon changes from โ๏ธ to ๐ฅณ
Or write the docs before implementing the feature...
it IS very strange that IsPassiveFestivalDay(int dayOfMonth, bla bla) just... exists, but isnt used for the GSQ
why must C# be so confusing
all I want to do is set the toddlers to a specific sprite when they sleep so they aren't staring straight ahead like they're having an existential crisis on a nightly basis
this is what I get for trying to branch outside of content patcher ig 
But then u gotta rewrite the docs
with how often i change my mind or make small edits, this is unfeasible
When u come up with better ways to do things
I wasn't serious, of course. I left the 50-page requirements binders behind a lifetime ago.
But on an actually serious note, spending too much time writing docs concurrently with implementation tends to just drag down the implementation, not vice versa. At least for me.
also if you're unable to figure out an alternative way to check for a passive festival and didnt mind a dependency it'd be a simple thing for me to add to my mod that adds a buncha GSQs if you wanted
(i would also totally get not wanting a dependency for it regardless tho)
I am starting to basically remake UIIS2 from scratch, so I would prefer not having dependencies if I can help it.
For almost any other mod I wouldn't mind, but I think that kind of mod should be self contained if at all possible.
oh i thought you were just makin a content patcher mod, yeah that makes sense
well in that case, Utility.IsPassiveFestivalDay will probably be useful for you
What license will you pick this time
I will figure that out once I finished writing it.
Please pick something now
WTFPL (/s for legal reason)
Can't retroactively apply license to code 
if its all your own code you can change the license on it
Wouldn't that just be once I put it out there? If it is only on my pc that shouldn't matter.
even once you put it out there, if its all code that you own and wrote, you can re-release it under whatever new license you want, whenever you want
it only becomes complicated if someone contributes to the code
alright
(that said without a license or without an open source license theres much lower odds of someone else contributing in the first place anyway, so its kinda moot, but it'd become complicated for them and you if you let it happen)
More about what do if creator of popular thing become inactive
Also u probably wanna check out #1293051032904925255
i mean the stardew community kinda turns a blind eye to that in such cases anyway..
Wouldn't say they turn a blind eye, often there's quite a lot of chatter and complaints about it. Stepping up personally to help revive it, though, well...
Whether or not an open source project survives the departure of the BDFL depends a lot on just how popular (thousands vs. millions) and to some extent what the alternatives are and how passionate those users are/were.
I think they were talking about when mods with a closed license gets an unofficial update/revive against the author's will
i meant turn a blind eye in regards to abandoned mods having unlicensed/not open source code getting unofficial updates and stuff anyway
not just open source mods being abandoned
Oh, well yeah, if it's not even open source then there's not much other choice.
case in point, UIIS2
I wasn't under the impression that it was abandoned, though, just moving a little slowly.
its an unofficial update
of a mod without open source permissions
(which is itself an unofficial rewrite of a mod without open source permissions, though i dont know the extent of modification vs total rewrite that UIIS1 was)
It's not a problem unless the original author decides to make a scene over it.
Which does happen sometimes, it happened a couple of times in the Bethesda community. Uncommon, though.
I have a hard time imagining it happening with UIIS2. Always good to have alternatives, regardless. Just doesn't look like UIIS2 is about to get shut down or something.
i mean i was just saying it in response to chu saying they should pick a license now in case they abandon their new mod later
You're definitely right about contributions, though. Highly unlikely any third parties are going to contribute to anything that's not MIT, Apache or GPL.
(I doubt the average game modder cares about license when they're obliged to make a contribution, but I digress)
I wonder. Certainly, the average game modder doesn't know or care about licensing. But the average game modder never has and never will make a contribution to another person's project.
Obviously some do, but it's got to be 1 out of 100 at best?
Plus the default perms on Nexus are in conflict with open source licenses.
So on Nexus there is no GPL license or derivatives?
There's an option to disable Nexus' permission checklist and just type your own notes in the permissions section
Ooh okay
I keep being unsure about what to do about permissions/licence for non-code mods so I have just stuck with Nexus permissions for now.
It's definitely true that Nexus modders aren't likely to know what those licenses are in general though
Nexus definitely goes the conservative route with perms, since by default unlicensed works are "all rights reserved"
Anyway, does anyone know why the community settled on Nexus and not on Curseforge (for example)?
For non-code one of the Creative Common licenses work well
Curseforge entered the scene only after 1.6 (it has 800 mods compared to Nexus's 18000)
also it's earned a kinda scummy reputation from Minecraft
man I haven't used Curseforge since like... Minecraft, and didn't much like it
I'm a bit in the community and I've noticed that recently many famous modders have move to another platform
But I've modded ten or so games on Nexus, so what's one more
anyway you can definitely use the custom permissions thing to say your license and link to it for people who don't know what it means maybe? It's just not really default knowledge or options
i remember when curseforge was just owned by curse.... then they got bought by amazon and it all went downhill. gamepedia and curseforge used to be good
if it's ModDrop, it's mainly from the fallout of the infamous "collections/deleted mods" change a while ago. Not many moved though in my experience
If it's Kofi, it's because they want to explicitly monetize/paywall their mods
If it's Naver, it's because they are Korean
I avoid CurseForge because of their behaviour. I avoid ModDrop because I'm unfamiliar with it lol
(probably modrinth)
I avoid ModDrop because it loads like shit
I don't know if my internet hates it or what, always takes so long to load
I didn't even know you could get mods on Kofi
I've just seen Kofi for tips, Patreon for paywalling
anyway at the end of the day Nexus is popular because that's where most ppl are, and most ppl are on Nexus because it's popular
the kofi ones i've seen have all been "name your price" downloads
Had no idea it could do that
(tangential fun fact, careful if you ever decide to go the paywall route for any of your mods. if you do, you officially cant put your mod on nexus)
i've never actually used kofi that much, i kind of assumed it was just an author's outside website to be like "unconditional tip if you were so inclined to be nice to me"
They moved on "Modrinth" (probably if you are not in the Minecraft community you will not understand because it is a platform only for Minecraft)
and apparently they do it because Curseforge doesn't pay enough, then there are other problems like modpacks are shown first so you can make a fake copy of the mods etc
https://ko-fi.com/lune/shop yep, you can make shops (very cute fashions sense mods here btw)
Oh I thought your question was about SDV and not MC ๐
Minecraft was never big on Nexus IIRC
Does this also apply if I leave a ko-fi link for donations?
and yeah Modrinth seems to be where the MC folks are heading
It was actually more of a statement to attest that Curseforge wasn't the best hahaha
yeah curseforge kinda had minecraft immediately iirc, especially bc the official wiki was hosted on gamepedia (owned by curse)
as long as you do not offer, imply, or suggest that any content will be provided only upon donation, and as long as you don't veer too far into solicitation (you can link to your kofi if you do it tactfully though)
Minecraft's one of those communities that does things in a slightly odd way, sometimes to their detriment (like how at the start everyone used these awful links that would send you to an ad that gave the person who made the link money)
that just used to be a thing, if you were downloading a mod, they ran it through a thing that showed you an ad and gave them money
i do not miss the ad fly days
adfly...
always used the mirror link on optifine to avoid it
the worst
god i'm so glad adfly went the way of cursormania banners
It is a thing that I am glad has shriveled up into a dead husk
3 doller for pixel, the games have changed now that those things have died 
3 billionths of a cent for a mere minute of your time
sometimes u press New Layer on an old file and remember the hard times
every stroke a layer, can't be too careful
sorry i'm a fiend for that, the different dithering colors are actually linked layers to the base color
version control for sprites ๐
never know when i might need hair copy 15 for something down the line
i don't actually have the pieces like that separated, just the emotes if that makes sense
like i have all of the portraits' hairs on one layer, merged
How much I hated them
i think that's a fine habit, especially if you're tweaking the colours
And some people use linkvertise now, annoying
is it a newage adfly? 
Yeah and fun fact: adfly merged with linkvertise
kill it with fire
(veering back into mod topic, selph has enabled me to cause problems with this how-to-framework link
)
I found a mod on Nexus yesterday where the author was very blatantly advertising their patreon with subscriptions to access exclusive content.
I wonder if Nexus is (usually) so strict on that because mods are fan content and are therefore technically illegal.
its not hard to find, its in the top 5 sdv mods on nexus
i've actually had peace of mind for the past like, 5 days cause i haven't gotten an email from nexus to force me to check nexus
(I was reading about how fan content is illegal but is covered under fair use and therefore is given a blind eye mostly as long as it's not too monetized which one reason why AO3 doesn't allow monetized fan content)
im sure every user-facing financial decision nexus makes has a team of lawyers behind it to figure that all out for them
I have no idea which mod you're referring to but the one I meant is definitely not very popular - and the mod description itself was "come subscribe to my patreon and get access to exclusive content!"
(it was a joke about SVE blatantly advertising 1.15 early access for patreon subscribers)
I find early access such a strange idea. I actively do not want to use a buggy, content-incomplete version of something let alone pay for the privilege of it lol
(y'yknow, i should really make a bookmark folder instead of attempting to type in things to see if i can get back to the damn pages i need, BETAS, stardewui, spacecore, FTM...)
i am unsure if i have OCD or not, but i actively close my tabs 
it also gets me to stop and take a break because that's my brain going, "i am done"
I have so many tabs open I can't find stuff anymore