#making-mods-general
1 messages · Page 288 of 1
If it's for a specific NPC:
"When": {
"Relationship:Abigail": "Dating, Engaged"
}
thanks!
How do i mark my tech support case as resolved?
You should be able to add the Mark As Resolved tag to the post (right-click the header and choose 'edit tags').
Thanks!
thank you!
Hi, I'm using the built-in translation API but can't access to the strings other than English. The same issue happens with Game1.content.LoadString() as well. How to fix it?
I also used translations for GMCM and it works fine. So I think the problem shouldn't be with the json file.
quick question? how do i edit map files?? Pelican town food truck by 8BitAlien and Overgrown Valley by lune seem to both work but the tree and the truck clip to each other
idk how to really edit that
honestly knowing how to scoot objects over would be very useful for the future
https://stardewvalleywiki.com/Modding:Maps#Editing_maps a look at this then opening vanilla maps and looking at the layers may help as a first step
cool cool! it might take a moment to get it but thank you!
yeah allow yourself some time for stuff to be processed
yee! i wish there were videos on it. i tend to have an easier time understanding it when it's taught in a visual format ;w;
there are some videos on it, for stardew on youtube, but they're a bit dated.
Also it's easier to just copy all the maps/tilesheets to a working folder somewhere, and open/edit an existing map. You're mostly just painting on tiles to the correct layer
and then crop the map to whatever size you want for the patch/edit
so like most digital art programs??
yes. just "painting" with tiles, but you're normally just placing them,
and like a good paint program, there are layers, and you "paint" on the correct layer
I am debugging a mod that shows the incorrect sprite during an event . It’s a mod that depends on another mod, so i’m not sure which mod’s jurisdiction the error is. If i wanted to modify the content.json to enable debug mode, which pack’s content.json should i put it on?
you can use the patch summary mod.id in the smapi console to see what each mod is doing
Good advice! Thanks
Adding recycling data to an object would just be editing data/machines for the recycling machine right?
yes
Thank you 
vmv has one example if you want me to grab it
I'm gonna go take a break for now cause I'm tired but sure! If you ping me I'll make sure to read it later when I work on stuff again :3
https://smapi.io/json/none/224d34a6f1e5414f8e5cad0f71fbe98a
@rigid musk (doing it now because otherwise i will forget)
Hopefully my indentation/commas are right because i removed the other machine change
(also i hate you discord when you prevent me to just copy paste some json stuff)
!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 to know, the update with the unlimited special order is a WIP with no ETA yet, right?
hiya folks, i took quite the break from mod dev, just as a quick refresher, we can't traverse the sdv codebase without ILSpy or the likes of right? ignore me -.-
Hi there! I'm struggling to find an easy tutorial on how to make a mod that adds a house to an existing map. If you know of one, could you please share it with me? I'd really appreciate it!
and look at a simple mod doing what you want to do too
https://stardewvalleywiki.com/Modding:Maps (this may help too)
Yeah it's 1.6.16 feature and we got no date on that
thanks
Hi chu!
atra 
anyone know where in the game files the creation of the lil bubbling fishing spot is ?
Gamelocation 
Vaguely recall the function name as "update every ten minutes even when farmer is not here"
i believe its in performTenMinuteUpdate
updateEvenIfFarmerIsntHere doesnt do too much in GameLocation itself iirc
thank you, i'll have a look into it ^_^
For gifting if i wanted to everyone except 3 people in town to reject an item is there i global place to put a RejectItem_Itemid or do i just need to do it for every character except those 3?
Hmm doesn't seem to be a specific method called for the creation of a splash point which im assuming is the reference to those bubbly spots
there isnt going to be
its handled within that update function
many things are just kinda scattered in places and not given their own functions
what are you hoping to do
i kinda wanted to toy around with creating a splash point around the player for example a x% chance to create a splash point near a player if there isn't one there already
i kinda wanted to see how it was implemented i suppose
yeahh so i think im going to be able to assign a new splashpoint spot closer to the player if there isn't one already close by. i just need to learn a little about how it all works, im a little bit rusty you see
https://github.com/Lumisteria/VisitMountVapius/tree/main/VisitMountVapius the code, i don't remember what is the actual license
(there are other stuff here)
no idea how to actually check if there's already a sparkly spot however (and i don't code)
so this may be of limited use for the specific case
i have the bit to check if there is a current splashpoint, and i am sure i can figure out from the gamelocation how far away it is from the player with enough trial and error lols, its just learning how to use the back layers of the map and restrict the x + y to a radius i believe but i might be wrong. thank you for an example, i appreciate it
which is worse: my building being absent from town entirely during the egg festival on year 2, abigail getting stuck beside the building during her advancedMove before the egg hunt, or me trying to find a way to edit her advancedMove? i would love to just plop her somewhere else and retain her advancedMove but character coordinates are hidden in Set-Up or somewhere else that i can't find
The desert turns back to normal during the desert festival even if SVE is installed, tbh I think people would be more focused on the eggs than counting the buildings
i also don't think people would care about abi being stuck 😄 but to be fair i wouldn't advise anyone to add a building to town
it's been a bit of a struggle yeah :') but so far all of the y1 festivals work okay
speak for yourself, she's an egg hunting MACHINE
usually it's me and whoever I'm playing with VS abigail lmao
if she wins it means we're bad
do I have to listen to pathos here? I feel like I know what I'm doing but also I recognize that I'm an idiot
using the property version is fine
I mean I can't get the event on the wrapped version, so I need it right?
ah yea urite 
Usually you'd want to use the property instead, but in this case you're using the net field deliberately to access its events. So you can suppress the warning in this case.
oh hi lol
great, thanks 👍
I also would not advise adding a building to town, I say while adding a building to town (weeps)
https://www.nexusmods.com/stardewvalley/mods/31888 for fans of the show OR anyone who likes characters and content with a hint of the supernatural about them, i've just released my first mod, with many more updates planned in the future!
and by "it's done" i mean i still have one zillion more things i want to do but here's the initial release
oh it's for this mod
i guess a disappearing building isn't too out of theme honestly
haha yeah
in the end nobody gets stuck during the actual egg hunt, so i decided it was okay to have abigail get stuck in the beginning every other year
Don't forget to dm bouncer to get the mod author role so you can showcase it 
oh yeah i leveled up yesterday i forgot!
Eyyyyyy first bug report! I'll be tackling that tomorrow it seems :3
ooh nice!
It's for something else. That's used for certain items like torches or fireplaces to check if they're lit.
stupid and pointless thing I made.
we need more movies limey i love the other one you posted😭
such an unexplored area in sdv modding ngl
well the field is wide open for others... hopefully ones with better drawing skills
From: Sonic Riders | Real-Time Fandub Games.
hey pathos while I have you here, is there a good reason why solar panels don't update MinutesUntilReady until you go to sleep? is it just a function of the MachineData using an Overnight Condition? Once you place it, it stays at 0 until the day cycles
I think I said in here, I know I have in other rooms, the main problem with making custom movies, is that it's a lot of work. For something that only gets watched once during late game.
To clarify, you're asking why they don't set their initial MinutesUntilReady until overnight? (They should then decrement normally once that happens.)
If so, that's because solar panels use a DayUpdate trigger in Data/Machines to set their initial output (and not MachinePutDown). The solar panel logic it calls already accounts for the fact that it's run overnight.
yeah that's what I was wondering, it works normally after you sleep, I just don't have anything to deal with the initial data, and heldObject isn't set.
I can make a workaround for it, I think it's one of the only machines that does this, it just bothers me that my current logic doesn't work with a solar panel at its default state
the real mystery is why a solar panel and a lighting rod generates a battery.
Is it necessary to create a separate i18n entry for both the plural and singular of a noun, or is there an easier way?
I'll do it if I have to, but if I can get away with only using one entry for both Duggy and Duggies, for example, that would streamline things a bit
i don't really see another option unless you can grab the vanilla text somehow
theres auto pluralization for some context (probably not monsters tho)
thats how you end up with Weedses
they had gollum do their translations /j
Fair enough. Different question then: If I wanted to i18n my config options, do true/false for AllowedValues need to remain true/false and not have translations to function?
(the example in the CP documentation for Config > Translations uses Metal and Wood, so not quite the same situation)
They should be true and false. Content Patcher will detect that it's a boolean field, and represent it as a checkbox in the config UI.
Thanks! I will skip the config.<name>.values.<value> key for those config options then
Mod build package 4.4.0 is now available!
This has two big changes:
- Added
%ProjectVersion%token formanifest.json.
The token is replaced automatically with your project's<Version>when the mod is deployed or zipped, which avoids needing to set it twice when following .NET best practices. This also works with bundled content packs, so you can keep all your versions in sync. - Revamped the package readme.
This makes it easier to see the features at a glance, and collects the info for each feature into one place.
i18n question: Can comments be used in i18n files?
Yep.
Thank you!
I'm having trouble finding the specific event where you get the magnifying glass from Krobus (not the part where you see him at the bus stop, but the part after you investigate the bush) in the unpacked files... Is that possibly hardcoded?
(I mainly want to change the NPC's name in the resulting dialogue)
I don't know off-hand, but you can use Debug Mode to see the event ID for the event that's currently playing.
Thank you for this!
do you mean the part where it says "Shadow Guy: Eeeep!"? thats in Strings\Locations:Town_mgThiefMessage
it just loads that string directly since its not an actual event when you shake the bush so editing that should do it
That's really helpful, I apparently haven't scoured String/Locations enough since I missed that
when you edit CustomFields like this
{
"Action": "EditData",
"Target": "Data/Machines",
"Fields": {
"(BC)24": {
"InteractMethod": "LivestockBazaar.OpenBazaar, LivestockBazaar: InteractShowLivestockShop",
"CustomFields": {
"mushymato.LivestockBazaar_Shop": "Marnie"
}
}
}
}
is CustomFields entirely replaced
i would think so
%ProjectVersion% 👀
if you need to add/remove things, use TargetField/Entries
Does FarmTypeManager's "CPConditions" work with configs?
ModBuildConfig and ModManifestBuilder approaching on eachothers turf
the reason why i was confuse is cus if u do just TargetField into there the dict gets made if not exist
sooo... when is globalfadetoclear going to not be broken
id like to use it but god hates me :-|
What do you mean, broken? I use it.
The way to think about what the patch will do:
TargetField moves the scope of what both will look at
i used it but it like was kind of a jarring fade in instead of.... smooth
like globalFade
i wouldn’t call it broken but i would call it annoying (<-person who cannot wrangle event commands to save their life)
ooh this is good i like this
It's kind of weird because it goes mostly light quite quickly and then takes most of its time just to remove the last little bit of black overlay but I use it without it feeling jarring, I think.
i get the idea i think, tho it is kind of pain to need 2 edits for properness here
my second confuse is why does droping an item into machine not block interact method 
im not sure if that is just how it works or what
do fadein and fadeout work at all
there's no fadein or fadeout but there is fade
and unfade if fade's parameter is set to not true
so with that
if i want it to fade and stay faded
and then unfade ... later...
do i do fade true first? and then just...?? or does it not work like that?
is it even true that you type? or just fade unfade?
im just tired of doing the globalFade viewport -1000 -1000 trick because i can't fade it back in right when moving the viewport
so i thought this would be better, but it is still not doing what i want lmao
public static void Fade(Event @event, string[] args, EventContext context)
{
string option = ArgUtility.Get(args, 1);
if (option == "unfade")
{
Game1.fadeIn = false;
Game1.fadeToBlack = false;
@event.CurrentCommand++;
return;
}
Game1.fadeToBlack = true;
Game1.fadeIn = true;
if (Game1.fadeToBlackAlpha >= 0.97f)
{
if (option == null)
{
Game1.fadeIn = false;
}
@event.CurrentCommand++;
}
}
it looks like fade's parameter is optional, so to fade to black you would just have /fade/. and then yeah i think to unfade later it would be the rest of your commands and then /fade unfade/. however i also struggle with the viewport -1000 -1000 thing (it never pans far enough for me) so i don't think i have much to help there
ok wait i just had to add true to globalfadetoclear
i'm going to jump off a bridge. sometimes talking about it helps figure it out lol
nvm fellas
but thank u for rubber ducking for me
rubber duck debugging is great
i'm trying to understand how UnlockConditions for NPCs and GSQs work. i think the GSQ that i want would be IS_EVENT {{ModId}}myeventname, because it just has to check if you've seen the event and then the NPC is unlocked forever, right?
that would make the character only unlocked while you are in the event
wouldnt it be PLAYER_HAS_SEEN_EVENT
yes
my big brain status restored...
the UnlockCondition has to remain true after for them to stay unlocked
i see!
(ModManifestBuilder is safe, since it has a different philosophy from the mod build package. The mod build package sees the manifest.json as the source of truth for the mod info; the version is an exception only because it's a standard .NET build property, but even then the source of truth is still the manifest.json (which can optionally pull the version from the project). So given that philosophy, it'll never replace ModManifestBuilder which sees the project file as the source of truth for the mod info.
And of course you can use both together, in which case ModManifestBuilder just creates the manifest.json which the mod build package then uses.)
ok new weird thing: after setting the viewport to -1000 -1000, i try setting it back to the original viewport after some dialogue, and it's 1 tile off. tried changing the x to be one tile more, but it still sets it back 1 tile off. what the flip.
globalFadeToClear what voodoo are you doing rn.
is it not recommended to have the player be All? i wouldn't want the character to be permanently inaccessible because you invited joe to play once and he never played again for example, but to me it makes sense that logically all players should have seen the event, otherwise you would be minding your business fishing and she would pop up lol
All would mean everyone has to see the event
events are sooo cursed
which you dont want
you generally do not want NPCs unlock status to differ between players
okay
would every player still be able to see the event at whatever pace they choose?
assuming you didnt gate them out of the event somehow, sure
you can always make it a broadcasted/shared event too
oh that would be ideal i think
because it's story-wise a one-time occurrence to bring her into the game
then i would make it a shared event and check either the Host or Any for having seen the event
sounds good!
also, wtf does clamp do
idk how it works, but it's supposed to lock the camera from moving like how it does when you approach the edge of the screen. i'm not sure how useful it would be in an event where you don't control the farmer
i think. i just went to check the wiki and it's not there so actually idk where i got that from
i think it will make it so that if you set your viewport too close to the edge of a map, it will shift it as needed to make it not show off the map
emphasis on "i think"
from a cursory glance at the command code
i dont know what the unfreeze part does
i guess it means if you dont include the unfreeze part then the viewport wont move after. i guess. shrugs.
anyone understand how to spawn artifact spawns via farm type manager
I remember talks about it few days ago
Usage of "buried" in ftm
Oh yeah clown i added thing to open animal shop from a big craftable https://github.com/Mushymato/LivestockBazaar/blob/main/[CP] Error Chicken/data/interact.json
What would be a fair price for a specialty milk item? (Lon Lon Milk and Large Lon Lon Milk)
Previously you could do it by BetterCrafting or Calcifer
I know what the normal milk sells for to Pierre, so I'm not sure if should just mark that number up a bit and then double it.
Does it still come from a cow
The farmer cannot get it from a cow.
HOLY SHIT
so i can make a catalogue?
It is from the ranch cows specifically
I didn't actually get the impression that lon lon milk is better than regular milk when i played
If I want to change the character spawn location on summer fridays only after a certain event is seen, would it be better to put those conditions as a When in the EditData, as a GSQ condition in the "Home" part of Data/Characters, in both at once (redundent..), or to split the conditions (like When event is seen, EditDate so Home changes on condition summer friday)?
its name brand how could it be worse
I'm gonna play into the "special feed" aspect, so these are the cows Marnie spoils with Amaranth.
Yeah u can, though the animals still cost money
I feel like it'd be unbalanced if they are free free
hell yes
thats exactly what i need too I can get rid of that tree thing in my animals buildings
Also it's gotta be a big craftable not furniture bc I am using niche vanilla feature for this 
sounds good to me > : 3
SMAPI and/or content patcher aren't friendly with android, right? i just got a comment about my mod not working with android lol
What's the list of dependencies you have
the above two along with spacecore and BETAS
and an optional dependency for SVE but i assume that's not relevant
when i get a comment about my mods not working on android, i say something like "sorry, good luck" and attempt to forget it happened
yeah that's the reply i went with 😂 but then i realized i know nothing about android so might as well ask
Well ik spacecore need the special fork
So i guess android doesn't like something in BETAS?
any mods other than the ones that get SVE to run is most likely not compat
Content patcher does work tho
(actually does SVE even work on 1.6 android)
With difficulty
With a fork yea i believe so
Question, since I can't easily test without making yet another save and progressing it to CC unlock: Does adding an object with the context tag large_milk_item automatically make it work for the Animal Bundle in the Community Center?
(in unrelated news, got another Android bug report for EMC today
)
(I'm okay with it not being valid, just not sure if that's something I need to deal with)
But yea nic you as a content pack mod really can't do shit about it
bundles use exact item IDs
Excellent!
Just dw about it™️ is my recommendation
I wanted the NPC item, but not to make the bundle too easy, so that works out great for me.
that's pretty much what i thought, but thank you for confirming!
Do they have a log this time 
none
1oo
actually the report is just "the furnace cannot be used", but I'm 95% sure it's android
I thought emc just refuse to load on phones rn
it loads, but then explodes machines
Unrelated to ur android woes selph, but i think it would be fun to make interactmethod that passthrough to trigger action
Hey if you have an NPC that spawns on the beach, will they spawn during the night market?
And perhaps to tileaction (you do get a location in the arg
Like directly out in the beach 
I wanna say no cus night market beach is swapped out for different location right
But all me crab pots r not there
yeah I just remembered
Oh so not the same location then?
I think it's just a map change-- would warping to the beach during night market be a good test or nah?
you can warp there during night market
I think your NPC will show up there but it's not really hard to test quickly.
true
No
I'm also still preoccupied with whether I should put conditions for using that spawn location in Data/Characters or on the patch that edits data/Characters!
the Night Market schedules all direct them to the Beach
It is not a map change
It is truly a location chanfe
But every third thinf in the family checks for that
And redirects
Warps redjctr
ah, and there's C# shenanigans that make the references to Beach in schedules work anyway, I take it?
tag yourself i'm sxbeudsls
I'm gonna go ro bed now
Wha that sounds complex
I checked Willy's schedule and it seems he spawns in the saloon on night market days?
Are you doing ok atra
I'm doing fine just tired and will sleep
I guess she just wouldnt spawn on nightmarket then. I can work with that I guess
I looked at Elliott's
But anyways bezajel if you give your npc a little house map to spawn at u can deal
Doesn't elliot spawn in his house?
yeah, I just knew he had an easily findable night market schedule entry
"winter_17": "800 ElliottHouse 1 5 0/1000 ElliottHouse 6 4 0/1100 ElliottHouse 1 5 0/1130 ArchaeologyHouse 21 11 2 elliott_read/1650 Beach 38 36 2 \"Strings\\schedules\\Elliott:winter_17.000\"/2500 ElliottHouse 13 4 1 elliott_sleep",
Oh yeah do schedules auto redirect Beach to nightmarketBeach
but I'll pull up his Home entries too to be thorough
yes it does auto redirect
cool
Yeah, Elliott never changes his home
I am guessing squidfest and trout derby work the same way?
So I suppose, an easy solution if the NPC doesn't spawn on the beach, is spawn them in town on the bridge and have them walk to the beach first thing.
on Night Market days.
Those might be passive actually
Night Market is also passive, chu
I don't remember misplacing me crab pots during those
According to Data/PassiveFestivals
Yeah it's quite a different NPC, I don't want her actually to travel anywhere like a normal person
Just sort of, 'be'
A map tile 
The thing that seems different to me is how u get the map edit earlier
TroutDerby and SquidFest have "MapReplacements":null
and are just map patches
That's the difference
Ohh cool
Yey
(that's also why you can get silliness with desynced players seeing the Squid Fest map patch a day later and not interactable sometimes in multiplayer when using pause time mods, I think)
hmmmm
could be fun, but better crafting already kinda does that, though it is only tile action
Is changing homes one of the things that risks duplicating the NPC?
did they provide a log bc if it is something with BETAS i would at least be interested in seeing
they didn't, but if you're interested i could ask? this was the comment https://www.nexusmods.com/stardewvalley/mods/31888?tab=posts
nah i wouldnt go out of your way to especially since it might not even be BETAS, i was just curious if they had. no ones reported anythin to my page directly so
yeah who knows 🤷
could easily be bc they installed wrong spacecore
would i need to have done anything on my end re: android spacecore? or is that handled by spacecore
no
Hm I'm not sure
there's a special fork of spacecore that works on phone
if they didnt get that then spacecore doesn't work
The thing for Home says that it takes the first one that meets conditions, so unless that's what bugs out sometimes. It's only something I've heard passing mention of though.
hey y'all! is there anyone who's familiar with modding maps specifically down to chat and help me out as someone who's never modded before? basically there's this edited vanilla map in a mod i really like but i dont want anything else in the mod but the map... idk if it's possible to get it out? much thanks!
As long as you don't mean vc, yes :) what's the mod?
yes hello! here or dm's is perfectly ok!! the mod is stardew valley expanded. basically i really love the changes it makes to the vanilla maps and i was wondering if there was a way for me to like... just keep the map changes?
Wow okay I was definitely expecting a smaller mod but that's ok lol. I think it will mostly be a case of commenting out everything from the content.json except the stuff that applies to maps, though because there are probably map changes from events and things that will complicate things slightly.
haha mb it IS a big mod 😅 im lookin thru the json files and i see the edits i think i need. i think i'm able to locate the map tmx & tbin files and set up the json file, the only thing im not super sure on is stuff like xnb's or tilesheets? like idk if i have to do anything to those
You don't need to touch any files except .json files.
You can just leave everything from SVE in the folder and just comment out the json that tells the game to use most of it.
"Comment out" means to add comment characters to the lines to indicate that the line is a comment and should therefore not be read as data/executed as code, by the way. It's how you can "delete" code/json without actually deleting it.
Is there actually a way to 'delete' events and content using a CP mod or something rather then directly editting the mod?
yes
it depends
button has considered something i did not
If you want to just extract the bits of SVE that you want to use and create your own (personal use only*) mod with those you can, but I think at the beginning at least it's going to be easier to approach it my way instead because there's less work involved so you can see if it actually works and then if it does you can just pull the stuff that isn't commented out into your own mod.
There is a certain event in a mod that doesn't suit my personal headcanon, so I do wish to personally edit it out, although I don't have anything against the mod itself
awesome! i'll def try your way first, i anticipate needing quite some time to go through everything but i'm ready for that haha. tysm for your help!!!! and ofc i will definitely keep it personal use :)
it also somewhat depends if you mean delete or if overwriting will suffice
audiochanges, for instance
deleting an event is easy
if you target the same event asset with EditData, and use the same key with Entries but specify null for the value, the event will be removed
also make sure your patch comes after the one that adds it. recommend a Priority value for this
if a mod Loads over top an entire asset, you cant really simply delete those edits either. at best you can simply become the one loading instead
Tysm, I always get scared of replacing stuff with 'weird' data types even though I know as a coder that it's not only acceptable but pretty normal haha
lol i do consider events a weird data type, that much is true
(you can of course edit the data after their Load, but you wouldnt stop them from having replaced the entire asset in the first place)
You should be able to do the bulk of the changes just in the content.json by commenting out the "Action": "Include" code blocks for anything that isn't map-related, but for map stuff that is dependent on certain events having been seen etc you'll have to decide individually what changes to make.
I won't be at my computer for several more hours so I can't look at the SVE files yet but if you run into trouble you're welcome to ping me about it and I can have a look when I'm free.
Worst case scenario I'll just edit the event to have the farmer just stare at the normal situation and just leave lol
thanks so much! i'll be chippin at it bit by bit when i have time and i'll for sure send a message if it doesn't seem to be working. appreciate all ur help :)
AudioChanges is the main exception to the rule, because its not the asset itself, its a list of mutations to run on the audiobank(s)
so removing an entry in AudioChanges wont remove the audio (or if it was an override, wont revert back to the vanilla value)
wheew taking a break and spending time to overthink my npcs paid off
i have newfound inspiration
Is there anyone here that's super familiar with using the mod Theme Manager? I'm attempting to get more compatibility made for my Dark Mode UI, and there are some niggly little texts I can't seem to find the name of to add to my theme.
Namely these bits. I'm assuming this is Small Font and Tiny Font.
While my mod has those replaced via the png, that's not super helpful with hard coded colors like this.
in event UpdateTicked, how to check if game is not paused?
I don't know if there's a better way, but there is Game1.shouldTimePass()
Summit?
the definition of 'paused' is very vague
Summit
that is the summit, the panoramic background is hardcoded
what is a "harmony patch postfix"?
!harmony
Harmony is a framework for patching .NET code, allowing you to take any portion of the game's logic and insert or substitute your own. This gives you more flexibility and control than SMAPI helpers and events, at the cost of being typically more complex and difficult to use safely and correctly, and more likely to break with a future update of the game and/or SMAPI.
If you are trying to do something that isn't possible or practical with SMAPI alone, then Harmony is usually the solution.
For more information, refer to the following:
- Harmony Modder Guide - Intro, Use Cases, Initial Setup
- Tutorial: Harmony Patching - Types of patches and code examples
- Decompiling Stardew Valley - For finding methods to patch
i think i got it mixed up. thanks
@latent mauve @vernal crest
You're the saviour of all our NPC icons 
so where is the panoramic background picture?
its cursors
the sky is 1px wide but drawn across the whole thing
the bushes are from minigame clouds
just like real life
if you want a panorama i made framework for that 
https://github.com/Mushymato/MiscMapActionsProperties/blob/main/docs/panorama.md
for a default one just stick map property mushymato.MMAP_Panorama MMAP_MountainView
i don't know what you mean by an anime 
you can add some moving stuff with temporary animated sprite i suppose
i will take a try. thanks!
Hey do all objects inherently support quality? Like even tools, rings, bait etc? ( I know it wouldn't do anything without extra work)
i was going to say yes but im not sure honestly
I think so
CJB item spawner lets you spawn stuff in like that (not sure about the rings but i know bait does)
not tools though
i think... i think id have to go and test it actually now that i think about it
as long as it subclasses from Item it can have a Quality, tools included
Thank you oh knowledgeable Button
items, tools, clothing, rings, and special items
or well, objects* not items, which has its own subclasses as well i.e. furniture and mannequins etc
(there are Items and there are Objects and there are Objects but Objects =/= Objects. do you get it)
dude lewis working hard lol
the mayor yearns for the mines
i have people asking if they can translate my mod (i have it in my permissions that i don't want AI translations, but we'll see how that goes), but would they even be able to if it's not i18n-ified?
relatedly, does anyone speak chinese lol
that would require them to basically redistribute the files
are you okay with them redistributing the files?
the code i don't care about, but the art no at least for the time being
i think i have one sign in english
maybe some tmxs too if theres text in those like message actions
oh yeah i've got a bunch of message and dialogue actions
but tmxs i'd be okay with them distributing
by doing the file redistribution way of translating, itd also require users to, yknow. overwrite your files. which is not reversible. and it'd break in every update
regardless that sounds like a recipe for breakage
eesh
how do i make a custom shop contain wine with a type?(not the semi-rare "wine" item, but like "strawberry wine" or whatever)
and not even the kind of break thatd be easily fixable, since theyd have to replace the files again... which wouldnt have your updates
theyd be broken until the translator updated the mod
yeah, I recommend i18n-fying your mod if you can. there's an i18n converter you can try, though you'll probably have to convert the tmx files to reading from an asset
FLAVORED_ITEM Wine 400
see https://stardewvalleywiki.com/Modding:Item_queries for more info
yeah it's on my list of things to ideally do, but it's not a high priority for me at the moment. i'd rather add the additional characters etc. that i've started making
the longer you wait to do i18n, the bigger pain in the ass its going to be later
oof
see: exactly this scenario
if it sucks to i18nify it now, its gonna suck a lot more after adding a bunch more characters and locations and dialogue
yeah...
imo you should think of i18n-ing it as a one time effort payment and you might as well pay it while its the cheapest itll ever be again
but its up to you ofc
going forward, would i have to learn how to write things in i18n for new content?
you'd be moving all of your current user-facing strings (dialogue, map messages, mail text, etc) into a different file and replacing the stuff in your content.json/includes with tokens, but its not really learning anything new
you would probably want to come up with some sort of convention you remember for giving your i18n keys, though
like "dbd.somemail.title": "Letter from Whoever", "dbd.charactername.dialogue.Sun4": "My sunday 4 dialogue" etc
doesnt have to be like that and doesnt technically need to be any convention at all, but it helps to be organized about it
how does one add priority to things with CP again
going forward, it would mean you have all your dialogue and messages and mail text in a different file and not in your patches themselves, so it might take some getting used to
my brain is refusing to understand how to do it
the priority syntax differs between editdata/map/image and Load but it should say on their respective docs pages
Loads and the other stuff use different words for the priorities since they work differently, so whatre you using
I'm looking at it for EditData cause I'm trying to edit one of SVEs events to work with my mod heehoo
then "Priority": "Early" for example
and I want my version to load before SVEs without me having to add SVE as a false dependency
Ah so I was just over complicating it in my head
can replace early with Default or Late instead, or a relative value like Early + 50
thank you button
i want to use mail to unlock my crafting recipe, what is the "key"
can i use {{ModId}} in mail?
the key is what your recipe is named (in the key) in Data/CraftingRecipes
and yes, you can use {{ModId}}

I have an i18n question, if a mod has the default.json in another language and an en.json (or whatever the code is), would I need to rename the en file default or does the game know to get the english one instead? (like is default only loaded if there is no file matching game language)
actually, right now en.json is broken and completely ignored
WHHAAAAA
default is loaded if there is no matching language file found, but switching to english wont make it use en
itll just use default
known SMAPI bug
Ok, so if a mod with default in another language wants to add an english translation, they need to make it default
Or, the user does
either or
Does this look like correct use of local tokens to randomise schedule?: { "Action": "EditData", "Target": "Characters/schedules/Nari", "Entries": { "rain": "1100 {{Random: {{mountain_x}}, {{mountain_y}}, {{mountain_z}}}}/2200 Mountain 57 20 2", "Mon": "GOTO spring", "Tue": "GOTO spring", "Wed": "GOTO spring", "Thu": "GOTO spring", "Fri": "GOTO spring", "Sat": "GOTO spring", "Sun": "GOTO spring", "spring": "1000 {{Random: {{mountain_a}}, {{mountain_b}}, {{mountain_c}}, {{mountain_d}}}}/1600 {{Random: {{mountain_a}}, {{mountain_b}}, {{mountain_c}}, {{mountain_d}}}}/2200 Mountain 57 20 2" }, "LocalTokens":{ "mountain_a": "Mountain 57 20 2", "mountain_b": "Mountain 68 20 2", "mountain_c": "Mountain 56 31 2", "mountain_d": "Mountain 53 36 0", "mountain_x": "Mountain 77 9 2", "mountain_y": "Mountain 81 12 2", "mountain_z": "Mountain 58 6 2" } },
i wrote an event with question forks (listen, i know) and, while the different forks all show up, whatever choice i pick just defaults to the NPC dialogue for the first choice. i'd like to use what i've done without recoding it into quickQuestion and setEvent, if it's possible at all
you may want to show what you have so people can compare with documentation
however quickquestion i believe is a bit more common/familiar to people
oh yeah, sorry
no prob!
speak Peter \"{{i18n:skipdozerMP403P}}\"/showFrame 95/pause 300/playSound coin/pause 600/showFrame 0/pause 500//question fork0 \"{{i18n:skipdozerMP404P}}#{{i18n:skipdozerMP405P}}#{{i18n:skipdozerMP406P}}\"/fork skipdozer.MP41/friendship Peter 125/speak Peter \"{{i18n:skipdozerMP407P}}\"/pause 250/emote Peter 40/question fork1 \"{{i18n:skipdozerMP408P}}#{{i18n:skipdozerMP409P}}#{{i18n:skipdozerMP410P}}#{{i18n:skipdozerMP411P}}\"/fork.skipdozer.MP42\fork.skipdozer.MP43/friendship Peter 60/pause 500/speak Peter \"{{i18n:skipdozerMP412P}}\"/emote farmer 60/globalFade/viewport -1000 -1000/end position 20 12", "fork skipdozer.MP41": "pause 500/stopMusic/friendship Peter -500/speak Peter \"{{i18n:skipdozerMP413P}}\"/question fork2 \"{{i18n:skipdozerMP414P}}#{{i18n:skipdozerMP415P}}#{{i18n:skipdozerMP416P}}\"/fork.skipdozer.MP44/friendship Peter 50/speak Peter \"{{i18n:skipdozerMP415P}}\"emote farmer 28/globalFade/viewport -1000 -1000/end position 20 12", "fork.skipdozer.MP42": "pause 500/speak Peter \"{{i18n:skipdozerMP419P}}\"/speed Peter 2/move Peter 0 8 0 true/globalFade/viewport -1000 -1000/end", "fork.skipdozer.MP43": "pause 500/speak Peter \"{{i18n:skipdozerMP420P}}\"/speed Peter 2/move Peter 0 8 0 true/globalFade/viewport -1000 -1000/end", "fork.skipdozer.MP44": "pause 500/friendship Peter -250/speak Peter \"{{i18n:skipdozerMP418P}}\"/action AddMoney 2000/emote Peter 12/speed Peter 2/move Peter 0 8 0 true/globalFade/viewport -1000 -1000/end"
that's the relevent part, the stuff before it works fine (character walking into the event scene etc)
spring is the default anyway, so you don't actually need all the GOTOs. The randoms\tokens look fine but you do have the potential for the character to just stand in the same spot all day
The GOTOs are because Mon-Fri already exist in the schedule I'm editing (but didn't load myself) and it was either GOTO or null I think to delete them?
ah
So this looks like part of a single event, and the forks are meant to lead to new event ids.
Or at least that's what I have in my notes, which might have been context specific, let me check
oh yeah i was uh. trying to use them to branching dialogue paths in one heart event. the way i wrote the script for my mod was to always have one or two paths that continue the scene and a third option to cut it short
which i'm sure i can do with quickQuestion and setEvent, i just learned it the wrong way first
I think the events the forks point to play as part of the same event, it's just they look like a new event entry
just with a slightly different format, i.e. no preconditions
question fork can only end the current event and start a "new" one (new in quotes because it specifically starts a fork, not a whole separate event like switchEvent does - edit later in case someone reads back: I was wrong about switchEvent - it also changes to a fork that doesn't need the initial event setup) or continue the current event. You cannot have more options than those two, so if you need three different paths you cannot use question fork.
I know it sounds like it should do more lol
no like, you're helpful for sure
this is my first mod
so i don't know what the heck i'm doing
(I didn't weigh in earlier because I'm not familiar enough with using question fork to be able to read it properly, but I confirmed the other day that it definitely cannot take more than two options which is why I did jump in now.)
i mean you can have multiple forks in the same event, just each question only has two paths leading from it
right right
Yeah
i do definitely have three options in at least one spot though, i know that
But your format I don't think was doing that anyway
like, fork was not being used correctly, I don;t think (but it was hard to tell with all the i18n and no formatting)
if i'm using quickQuestion/setEvent can i have a branching path that just, like, ends the whole heart event early?
Here's a tutorial for the use of quickQuestion, by the way: https://stardewmodding.wiki.gg/wiki/Events_for_Everyone#QuickQuestion
i have trouble reading it with the i18n tbh
You can use dialog response codes, but I don't think you can use q dialogue format in an event?
more descriptive i18n codes could help
i've been coding in notepad++ and looking at the i18n in visual studio
which doesn't help here, granted
People combine quickQuestion with switchEvent to do that.
By the way, not sure if you would find it easier, but you can multiline events.
that's not a bad idea
Like so
dream format for event
There's even a Visual Studio Code extension that converts single line events to multiline (it's how I read vanilla/other people's events because I hate single line).
Unfortunately it only works with complete events, so I couldnt use it with the partial event you sent
AND you can't seem to open multiple events in different windows (with that extension), it just pastes it at the bottom of the open one!
It's just so, so, so much easier, right? You could even put the dialogue from the i18n into a comment at the end of each speak line if you want to be able to see at a glance what's being said during the event.
I used to just have a find replace macro to split up the event commands and rejoin them
mostly finding / and replacing with \n /
You could just add the starting commands to make a dummy complete one if you really wanted to, I guess.
Yeah I just don't know those off the top of my head and I'm lazy...
i cut it out because i was already pasting in like 2000 lines of broken code 😔
but next time i'll try to just format it in a more readable state
That's smart! I just use linkoid's extension. Even did a bunch of hacky stuff to make sure I could use it in VSCodium lol
I'm going to try my own idea of adding the dialogue in a comment actually. See if it makes it easier to follow.
thanks all for the help btw. asking for help is really hard for me so i appreciate it
found the old video I made for someone years ago..
that really does help with readability
Wow that's really straightforward actually
And I can do it my preferred way with the forward slash at the end too
So intensely screamy in my theme lol
Which part? Forward slash at the end?
I find it easier to read and it stops me forgetting that I need a forward slash between the command and my comment. Doesn't stop me forgetting that I need a forward slash at the end of the comment too though lol
but of course, can reverse the whole process too, if needed for whatever reason.
Like you're sending your event to one of the weirdos (affectionate) who prefer to read them single-lined lol
that or for anything in the future where you're splitting things but has to be in 1 line
Now to find out how N++ handles its file associations so I can tell it my events file is in JSONL so it's not so eyesearingly red
That might be handy for me for schedules actually. Schedules are technically supposed to be capable of handling multiline too but I have found it is way more fragile than events so I gave up on it.
slight tangent, Whenever I deal with CR and/or LF always reminds me how some things in computing date back to earliest days of type writers.
Even the shift key is called "shift" because on a type writer you held it to shift the mechanism to stamp different characters for typing Capitals/special symbols
I remember doing that with the shift on a typewriter (only for fun, not old enough to have needed to use a typewriter for work).
Caps Lock, a physical lock, locking it in place
Bug
ancient tape
It's not actually the reason why we say "computer bug"
Or written by Grace Hopper
But it's cute
I think my favourite etymology is "upper case" and "lower case"
Okay so usually when I'm on my dev profile I can run debug commands just by going like /sleep or /time ..., but now that's not working when I launch through Stardrop (I have to write /debug in). Have I just disabled a mod that makes that possible, or is it the result of the latest SMAPI update? Anyone else use Stardrop and having the same issue?
Probably (a)
It's not part of the main game
Either you (a) have a mod that enables it (I think Event Tester does but not by default) or (b) it's set that way in the save file
Hmm, I'll see if enabling Event tester works if it's disabled. I think I had just enabled or disabled that around the time it stopped working.
Okay it works with Event Tester enabled, but I was sure I don't usually have that on. Either I'm tripping or there's something else going on too! Thanks for the help though 😄
There are a bunch of mods that can enable it
Like, I think everyone's debug mod allows it haha
Wouldn't surprise me.... I couldn't figure out what else it could have been, so i'll just keep event tester on for now
nooo I thought it was both
I'm sad now
Hi Iro 
looking into this did lead me to discover that Thomas Edison had very weird handwriting though 
I'm not here 
nooo come back
Go the duck to sleep
Did hospital map change in 1.6? 
I think it got some changes 🤔
But minor ones
...or i really don't remember what the hospital looks like
Hi all, I'm not sure if this is the right place to ask, but I have a question. I updated a mod in which the content patcher code had to be updated to the newest format. The code simply did not work in 1.6.9. I tried to contact the mod author for permission on Nexusmods but I received no rssponse. It has been nearly 7 years since the author logged on. Other people in the comments of the mod seem to want the update. Currently, I have not shared the mod update with anyone. What's the best way to share this with others without the NexusPolice™ on me?
without permissions you cannot
^ If they don't have open perms you can't share it unfortunately
We're equally as strict as NexusPolice
It's a matter of respect, too. Sure they haven't updated it but it's still their work, and redistributing it without their permission isn't very cash money if you get what I mean
Fair enough. This is why I am asking before I do something absolutely stupid.
You can make stuff for personal use all you want
Of course. Thank you all.
And you can use what you learned from personal edit to make your own mod 
it was 2pm 
is there an event that fires when a player changes options ?
or do we want to check for changes in an update tick method?
Changes options in GMCM?
like zoomLevel for example
Hm idk if there is good way beyond harmony patch Options
But you can also detect menu changed perhaps, and only do a check then
It helps if you explain why you want to detect change zoom level
ohh im just building a common library for helper functions for lots of things to make my life easier is all. i'd prefer not to use harmony patches but am not oposed
do we know the performance impact for checking to see if there are changes in options in the updateTick function
something that looks a little like this ZoomLevel = (ZoomLevel != Game1.options.zoomLevel) ? Game1.options.zoomLevel : ZoomLevel;
Well I just don't see why you need to check this at all
It applies at render so anything you queue onto spritebatch get the zoom level
ohh right fair enough
this is wwhy i ask cuz i am rusty af and stoopid lols
thank you
Go the duck to sleep anyways 
are texture sizes constant? like for example each tile size is 32 x 32 and the game rescales it? so for something that is two tiles high, textures are 32 x 64 or is that a gross simplification and in total not true?
i am aware that there a sprite sheets and so its not that simple but
If I want to add an object to be available through panning, what do I edit? I'm assuming it's some kind of EditData with a target of Data/something, but I can't find the something XD
You need Item Extensions to add extra pan drops; it would be an EditData operation on the custom target it provides
Ah, thank you! 🙂
usually tiles are 16x16; for drawing purposes the game scales it up by 4x
i see, so if i wanted to use a 2 tile high texture i can use a 16x32 ?
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!
If I understand Item Extensions right, I can't edit the mystery box loot with it? Anyone have another framework for that, by any chance? 😉
not sure, but it definitely sounds like a feature request for IE
I think misty is still busy though
Oh, it isn't that necessary to go bother people over. I'll just add my thing as another panning drop for now 🙂 Thanks again!
Some menu tiles are already at 4x scale (64x64)
I see and is that menu specific or just some and not all tiles ?
If i have two of the same event, one that has a condition and one that doesn't, will the one with the condition overwrite the base one ?
(specifically: I'm adding a 'playerkilled' cutscene when the player dies in Qi's Arena, and I want an alternate version for when the player is married to Qi so I'll add a condition for when he's their spouse. However I don't know if I need to also specify a condition for the base cutscene itself)
It's not consistent, so always check the draw call in decompile
a total of 2555 frames the most I could get before it would no longer read any more frames (511 rows). Not the full song,
Can you fit more if you drop some frames
Im sure everyone brains have badappleinterpolation.dll installed by now
technically, timing becomes a pain, would need to do the maths right with the gap between frames
Im sure one of ffmpegs 11000 arguments is suitable for this
I'm not fully sure what the timing gap even is for the movies, I thought it was in ms but when I did the maths right for 30fps, it ran too slow, changed it to 1 and it ran at the right speed (I think, might be a bit fast)
Rule ⁹
I'm not sure about whether it would overwrite it, but I think a workaround would be to make them two different events with the first having the condition that the player isn't married to Qi
That's true... I don't remember how to do the reverse of that
like a 'when spouse is not' instead of spouse is
is that just the ! in front of it?
i would genuinely give you money if you could find a way to fit the whole song in there, skipped frames or otherwise, and make it available for me to download. please.
also Lily if your events have the same key then whichever patch is applied later will overwrite the original
Yeah, I've used !D for not dating or married, but if you're just looking for not married !O should work
if you're doing it as a when condition you dont need to do anything
I wouldn't need one specifically for the uh.. m ybrain is not letting me think right now
I have one version of the event that has a condition and one that doesnt
if the base version is adding an event with the key eventid/preconditions and your patch with the when condition is also editing eventid/preconditions then it gets overwritten
same as if you were editing an object you added previously but with a when condition
very nice very cool
@uncut viper and anyone else... enjoy...
is there a download link anywhere—
not currently, need to just tidy up my test-junk/names/etc
What's the villager preference on Bad Apple
currently none
now.. how well it runs on someone elses computer.. will be interesting, I do wonder if the timer-gap is CPU related
Are you at 60fps
yes
A mystery 
the vast majority of this json is:
{"Image":561,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "561"},
{"Image":562,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "562"},
{"Image":563,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "563"},
{"Image":564,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "564"},
{"Image":565,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "565"},
{"Image":566,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "566"},
{"Image":567,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "567"},
{"Image":568,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "568"},
{"Image":569,"Music":"","Sound":"","MessageDelay": 68,"Script":null,"Text":null,"Shake": false,"ResponsePoint": null,"ID": "569"},
Button is eager to test 4 u so perhaps u can send wip build here for ppl to try
See how it goes etc
scope creep: make the response point the name of the touhou character that appears on screen at that moment so my NPC can call out their names
(/j... unless)
I dunno that sounds like a core feature
sadly any kind of interaction like that would desync the audio completely
need a Better Movie Framework mod
unless.. maybe a speech bubble above their head.. as that wont have a need to "click to continue"
i thought thats what movie theatre reactions always were
i dont go to the movies much as you can tell
well they are mostly all dialogue boxes that pop up.. from what I can tell they're like normal events/etc.. but a speech bubble doesn't need to be clicked..
@uncut viper there you go
the film seems to not want to start 
I can only assume it's something due to system differences and the sheer number of frames.
I would have gone over the "safe" limit for image size
maybe i just need to sit on the first frame long enough and eventually itll start
since it seems to at least load the first one
Is your texture bigger than 4096 in either direction
yep
do movie frames have to be a specific number of columns?
I tried extending columns, didn't seem to work sadly
public static Rectangle GetSourceRectForScreen(int movieIndex, int frame)
{
int yOffset = movieIndex * 128 + frame / 5 * 64;
int xOffset = frame % 5 * 96;
return new Rectangle(16 + xOffset, yOffset, 90, 61);
}
it does assume 5 :v how unfortunate
i assume you used some sort of script to lay out the frames or did you actually make the png manually
I used imagemagick and shell commands
if it was easy to generate one thatd be within the 4096x4096 limit i kinda wanna write a transpiler just to make this work
to allow more than 5 columns
montage `cat filename2.txt` -geometry +0+0 -tile 1x438 movie.png
(final comand after putting them in rows)
what is it that causes a recipe in a shop to show with the torch ingredients again?
as far as I can tell the recipe itself works, at least it shows up when I use lookup anything
if the recipe itself works then it may be a discrepency between the item id the recipe makes and the Name you gave it in its objectdata
OH oh
ffmpeg -i Touhou\ -\ Bad\ Apple.mp4 frame%04d.png
magick mogrify -resize 90x61\! -path resized/res%04d.png
montage `cat filename.txt` -geometry +3+0 -tile 5x1 all3/all-%04d.png
convert * -resize 480x64 -gravity north -extent 480x64 pad-%04d.png
montage `cat filename2.txt` -geometry +0+0 -tile 1x437 movie.png
all my commands and bizzare filenaming.
only had to do a minor manual thing at the very end, to align the frames in the exact spot
(why do the Movies spritesheets have so much padding around them anyway...)
Hm.. actually i don't know it seems to be right. I didn't actually add an item so much as do a few patches over the pre-existing 'qi arena totem' in the game, so the object's item ID and name are just 892
do you want all the small-resized frames button?
then i have no idea as recipes are not my strong suit
im not sure what you mean!
small resized?
You should probably add an item
the individual frames I used to make it, wasn't sure if you were going to try to stitch them together yourself
Ik you are reusing the unused qi arena totem but for future compat i would do custom
if the alternative is no frames at all then i will take em and give it a shot
technically I could save a few frames by making the initial one have a longer pause as it's just black.. but wouldn't save enough to be worth it
Is this the appropriate place to ask for help using tiled? ;-;
yes
So I'm trying to edit the mining farm map, but when I try to open the tbin file, it just says "file format not recognized" and I'm confused.
what item category would totems be in?
Lemme check
Also they should be tmx files iirc
Nope. It's a tbin file
like the unpacked game files made them a tbin?
The file I'm trying to open is Farm_Mining.tbin
what did you use to extract the game files?
Mine have always exported as .tmx
!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!
Do I have to install things for this? >_>
^
Oh thank god, my laptop's hard drive is tiny
and you'd need to install a plugin to get tbins to work... but TMXs are easier to deal with anyway
as they are just xml files
Of course the recommended option requires me to have the very large game on my crappy laptop 😒
don't have a friend who has the game who can do it for you?
Nope!
well you need to look for the tbin plugin for tiled to open them then, if that's all you have
One of them can't even follow basic instructions
TMX files also have the added benefit of letting you use flipped or rotated tiles.
May I suggest investing in a cheap external SSD
I have one, most of my games are on it
I move my laptop too much
Or you can alternatively put all your other stuff on it to leave room for games
It could easily get disconnected
but you can move a portable drive??
Me too, the external SSDs are very portable
Can we do patch summary for the game asset? 
You can disconnect them when not in use no problem
Honestly, even the cheapest of the cheap 32GB flash drives would do it. Slowly, but they would do it!
Yes
and tons of old small SD cards in peoples desks
Even with all my map edits living in the unpacked contents folder, the unpacked folder still fits on a basic USB drive.
I have figured out that they are considered 'basic' 
My laptop doesn't have an SD card slot 
asset "<asset>"
but it has a USB slot? there are many tiny USB drives
How small are we talking?
That's tiny
i mean even the old thumb drives i have are no more than an inch long
that's 32GB
I really recommend getting a USB drive or a USB powered external SSD, both can be unplugged from your laptop when not in use and nothing will happen to the files on them unless you actively try to mess them up
What if I'm actively editing said files and it gets unplugged?
That's what I'm scared of
well you'd struggle to accidently take out that tiny thing,...
Obviously not the tiny one
It's a lot harder to accidentally unplug such a small USB
Are you walking around while editing? Because if you're not, it'll be really hard to accidentally unplug it lol
but like all flash memory, make sure you're buying genuine-branded stuff
I have 3 cats
Wasn't the idea here just to put the full, too large game on it to do the extraction? Once you've got the files you need, you would move them to your main laptop storage and work on them there.
at some point one must consider "having access to the game in some form" to be a requirement for modding and dedicate 1 gigabyte somewhere
not the 100s of fake listings on Amazon that Bezos fails to remove
unless your cats have opposable thumbs you'll be ok for sure with the tiny thumb drive
so a cheap tiny flash drive is the easiest way to meet that requirerment
This is what I have, it fits snugly into the USB C slot and doesn't come loose
It even tucks under my laptop stand and out of the way
It's not even the size of my palm
I think I'll look and see how much the tiny one is
The tiny tiny one should be pretty cheap
I bought this boy in India so idk the exact amount in dollars or euros, but a tiny thumb drive will always be cheaper than an external ssd
i just bought a 128GB usb at micro center for like $8
Amazon has it for $9 USD, so you'll likely find it for similar pricing elsewhere, too: https://www.amazon.com/SanDisk-16GB-Ultra-Flash-Drive/dp/B077Y149DL/
The SD card that lives in my phone was free
i remember as a kid i got a 16GB usb drive from the library reading program as a reward for reading some quantity of books and thinking that it was more storage than anyone could ever need
the adaptor to join the sd card from your phone to a slot in your laptop probably costs the same as that 128 GB drive
I was looking at thumb drives 😅 I don't think my laptop has a big slot anyway
Big slot?
And that SD card is now a part of my phone
type C drives exist
Oh an sd card slot
probalby only has usb c ports on their laptop. i have one the same way
USB, USB-C, and HDMI
wait if you have a normal USB-A then why can't you put a thumb drive in if u buy one
Microcenter has the same Ultra Fit USB with 64 GB for $11, so definitely look around!
Why are we (people on Amazon) spending $92 on a terabyte
for funsies :3c
wait do we make terabtye flash drives nowadays?
That is really good value holy shit
Could've gotten this one for my linux install shenanigans instead of the one I bought, that one was a bit more expensive iirc
is anyone here familiar with AT witchcraft/arcane curses 
Hey
what's your problem, I vaguely looked in the direction of AT compat before
Strings/StringsFromCSFiles
so uh. at is being weird and rearranging the frames of this animation
and I don't know why
here is the minimal repro pack. The affected animation is BowlLong which is summer/winter
Is just use spacecore anim not an option 
the source rect seems fine and the other things it does make me think it's not a sourcerect problem
not for debugging an AT bug, no
this was meant to be a minimal repro pack for something else entirely
I guess there's no choice but to run debugger on AT iro
hahahahahabsolutely not
if nobody knows what is causing this I will simply assume all AT is dark magic 
i just did this yesterday, give me a minute
and let's not start with what my problem is, there are too many /lh
i didn’t include the recipe though if that’s what you mean
[[Modding:Items]] follow the links for BCs/Furniture
ohh don't worry about a recipe for now, just getting it in would be fab
Are you in C#
yeahh i haven't made a content pack yet , unsure where to put it and all the finicky details
yes im in c#
I unfortunately did not deal with AT animations; the most I did was reading the alt AT texture in modData and use that instead for custom crab pots
Well if you don't want to make content patcher pack then you need to edit the data
you got my hopes up just to let me down selph
it would be an edit on Data/BigCraftables or Furnitures in AssetRequested to add your entry
anyway this is how the texture looks (the animation is literally just each frame in order for 200ms), but
If u have a more specific mod idea we can probably help better
this is what happens in game (ignore the fact it's only half height, I can't find the newer screen recording)
I've fixed animations with AT before (specifically when patching over chests and the spinny wheel thingie that does wool (i cannot remember its name)) but I have no clue what you're doing there Iro
this is a chest
I'm taking a crack at the LogBook idea from the mod ideas github, i just drew out a probably temp sprite cuz im cheeks at art and want to just get it in-game for now and so im at the stage of registering furniture i think it will be
are chests special?
that... is a chest?
that is a chest
can i ask you why
lizard-shaped
uh...huh...
lily are you not familiar with my lizards
it appears as though I am not
crime
Will your furniture do anything special or are they just decorative
oh wait you said LogBook
Wow it's like alamac 
the functionality would be c# then, but adding the furniture item ingame can be done either way.
if you want to keep it all in one mod then follow the instructions from the wiki above to edit an asset
Anyways i say you just add a big craftable with interactmethod (yes i have acquired yet another agenda)
I don't think you need to worry about the part where player opens up a book rn honestly
im going to use StardewUI i think to create the UI but i'd like to learn how to add a new furniture item for the sake of knowledge lol
I'd break this down into
- Gather and print data
- Make a menu to display the data
- Decide how this ui should appear to player
If you want to experiment with 3 first then sure why not
Refer to this if in C#
Otherwise check the content patcher docs
Yeah i'm a fan of obsidian so i have noted down my data structure on how i'm gonna store it and gathering it is kinda like filling in the holes ^_^ i guess the furniture part is more fun for right now so im obvs gonna make that mistake and do the fun bit before the nasty boring bit oops...
The data may not always exist in a nice form for you
of course, i'm gonna have to finagle gathering and parsing data as i go which will be.... gross x_x
probably just need to harmony postfix a bunch of places and maintain a counter yourself tbh
Or netfield event in some cases
It's definitely the bulk of the mod
yuhhh is gonna suck, im sure i can get away with hooking into some events but the majority of it is gonna be a whole lotta harmony which i aint looking forward to thats for sure.
and then organising the data storage is also gonna be a pain in the butt storing data day by day, another issue i think is that i can't store a whole season's worth of data into a single json file either
If it's just counters I don't see why not
surely loading 30 days worth of data from a single json file could cause hitches
niceee lily helped me and now I caused the crash I wanted to reproduce 
It's not that big compared to the save itself lol
which confirms it is indeed caused by what I thought it was caused by
then imagine loading 4 seasons which, 120 days worth of data and thats just for 1 year, imagine extrapolating that over 10 years, thats ALOT no ?
As long as you aren't doing it like, save timestamp per incident
ohh no no no im not gonna recreate a replay mod xD
altho that would be kinda interesting.... xD
I love this emoji actually
1 day is probably just 10 to 20 counters o stats
Also I'm glad I... helped you crash the game?
Rotate yer log ofc, and load on demand 
mmm yeah true, thats a later me problem. i'll probably test a season's worth of data when i get to it and see how it feels for sure
would you like to also crash your game using just AT and a minimal repro pack? 
i cannot count the amount of times I have done this... 
I... I mean...
I feel like I crash my game enough by just existing
Mwehehehehe
I shouldn't be modding this game with my current sense of humor
You better not be making an xnb mod
go to summer 28th. put down a scarecrow. put the texture on it. make sure the texture is red when you go inside. sleep. try going outside
That is ... oddly specific
Chu if I made an XNB mod how many times would you blow me up
that will break the entire save so do this in a spare save



I would absolutely not do this in any save I cherish - oh my
Don't worry I would never make or install an XNB mod... cursed creation that they are
(hint: it has nothing to do with the colour, I'm using the colours to more clearly see something else)
Is it just specifically a frame or a number of frames?
using this: https://stardewvalleywiki.com/Modding:Furniture + https://stardewvalleywiki.com/Modding:Modder_Guide/APIs/Content, how do i write the data for it to be returned in OnAssetRequested ?
Y'all, do you know if there's a mod that changes the legendary fish context tag?
Stardew Valley mod framework for adding new trinkets and companions. - Mushymato/TrinketTinker
I got some example here
Tho for a big craftable
oooo thats wonderful thank you this is exactly what i needed 😮
Same concept tho
yeahh, part of me was concerned with the whole slash delimited string thingybob which ermmm is funky to me lol
It is funky yeah
That's why big craftable is better
Honestly if you don't need a thing bigger than 1x1 footprint and 1x2 appearance just use big craftable
gosh darn it i did it again 
love that band /j
hi hi
i didn’t die
i just took a break for minecraft, which i’m going to continue for another few more months
cya
there is no FurnitureData which kinda sucks here because i cant use Furniture but i want a 2x1 footprint thats the issue which makes using BC kinda... yucky... i mean i could redraw the sprite to be 1x2 but that would take more time and i suck at art soooooo
Well again it's literally just a string
You can edit in that string same way as long as format's correct
are we talking <name>\\<type>\\<width> <height>\\<width> <height>\\<rotations>\\<price>\\<placement restrictions>\\<displayname>\\<sprite index> ?
ohh wow first try? amazing xD
Awful but doable
yeah slash delim strings are.... new to me
and also unpack and compare against vanilla
!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!
!decompile
If you want to make SMAPI mods with C#, one important resource is decompiling the game to read the game code. Here's how to do it: https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#How_do_I_decompile_the_game_code.3F
Prior to 1.6 almost everything was slash delimited strings.
1.6 unfortunately didn't remove all of them
i decompiled it, but didn't unpack it
Hey im quite a noob when it comes to modding but could anyone help me with a few questions i have, im planning to make a dialogue mod
!startmodding
Making mods can be broadly divided into two categories:
- Content packs are formatted text files, and don't need any programming knowledge. They can add/edit NPCs, maps, new items, shops, and more. To get started, see the list of framework mods, the wiki tutorial for Content Patcher, and there might be relevant guides on the tutorial wiki.
- C# mods use programming code to change fundamental game mechanics. See getting started with C# modding.
Usually it’s easier to start with making content packs, since you don't need to learn programming.
ive seen this but it doesnt answer all my questions
or maybe it does and i just dont know what to look for on the page
but im not sure on how to make it so if i interact with something like a bookcase in someones house and the npc is nearby that then triggers them to say something
Well for a dialogue mod, i would start with basics of content patcher
For map interactions take a look at the maps page
[[modding:maps]]
ah ok thank you
(yup! it's to do with switching from a longer animation to a shorter animation while on a frame number that's outside the range of the shorter one, e.g. you're on frame 7 out of 10 and you switch to an animation which is 5 frames long)
found out it uses / instead of \\ after unpacking. ty for telling me about unpacking otherwise i'd cry xD
you'd use \\ if you want slashes inside an entry, like if you loaded your furniture's texture into MyCoolMod/CoolChair but don't want the furniture data to think you gave it two fields MyCoolMod and CoolChair
ie. MyCoolMod\\CoolChair
now that you said this, i am having issues loading the texture -.- which is essentially Mods/LogBook/assets/Textures/LogBook.png soooooo.... i have:
public static string LogBookPath = "assets/textures/logbook.png";
public static string LogBookId => $"{ModEntry.ModId}_LogBook";
public static string LogBookQId => $"(F){ModEntry.ModId}_LogBook";
public static string LogBookTexture => $"Mods/{ModEntry.ModId}/LogBook";
internal static void OnAssetRequested(object? sender, AssetRequestedEventArgs e)
{
if(e.Name.IsEquivalentTo(LogBookTexture))
{
Log.Debug("LogBookPath: " + LogBookPath);
e.LoadFromModFile<Texture2D>(LogBookPath, AssetLoadPriority.Exclusive);
}
if (e.Name.IsEquivalentTo("Data/Furniture"))
{
e.Edit(Edit_Furniture);
}
if (e.Name.IsEquivalentTo("Data/Shops"))
{
e.Edit(Edit_Shops_Robin);
}
}
but this quite simply isn't working... it doesn't even trigger the log either because it errors out... so i think i am doing something wrong
it means you aren't actually requesting the texture at any point
patch export Mods/<your literal mod id here>/LogBook
try this and see if u get a png
This is the encoded delim string: LogBook_LogBook/decor/2 1/2 1/1/10000/-1/LogBook/0/Mods/LogBook/LogBook
i think the issue is that it uses / meaning it is taking the Texture field and thinking its the last 3 fields in the string
do i use \\ here instead?
so it looks a little more like: LogBook_LogBook/decor/2 1/2 1/1/10000/-1/LogBook/0/Mods\\LogBook\\LogBook
or literally any other separator?
is your ModId just LogBook?
it wasn't originally but i changed it to simplify debugging, before it was a little more unique
it was chadlymasterson.LogBook
it has to match the LogBookTexture above (with the slash changes of course)
I think you can just switch that field to backslashes as well
and pass it in as is
it now looks like Item: LogBook_LogBook/decor/2 1/2 1/1/10000/-1/LogBook/0/Mods\LogBook\LogBook
pffft i think it works now but the texture is too zoomed in so i may need to redo the sizing
maybe just don't use / in the texture asset name
nothing wrong with {ModEntry.ModId}_LogBook
lols xD
im assuming i set the width and height of the spritesheet to the size of the file lol xD
bruhh texture sizing is so confusing xD
Does anyone know why it would be showing the 'indoors' dialogue instead of the 'funleave' dialogue 
Friendly reminder that things in game tend to be at a 4x scale and assets shouldn't actually be that size xD
My coding teacher is making me use ReadOnlySpan when working with data from file, and it’s so tedioussss
yes... uhhh so i was working at 96x96 and now realised it shouldn't be... which is mighty delicious. idk what to do now, do i have to remake this damned thing in 32 x 16 ? for a 2x1 ?
yea
the unpack is in a spritesheet right
yes
it is also what the game actually uses
the wiki scales things up for visibility
also you can resize yours if you use nearest neighbor
Yeah, I was about to say: Resize with "nearest neighbor" and it should keep the hard pixel edges
May mess up some details, but there'd be less to fix
(I literally thought you were suggesting resizing the wiki image, sorry)
so am i just resizing a 96x96 down by 4?
I gotcha
Yeah, basically. Just make sure it's nearest neighbor so it doesn't do any blending
surely that ends up as 24x24 which also isn't quite 32x16?
It's not likely to be perfect, but it's better than starting from scratch
hmm i'll give it a go i guess
the original asset wouldn’t fit 32x16 either, i’m confused
the catalog's collision size is 3x2 (EDIT: no, it's 2x2)



