#making-mods-general
1 messages · Page 520 of 1
Okayy... it will be one of the mods
Vanilla works fine
It will be 100% my mod lol
no
hmm
i think i'm overthinking this, but SawEvent <event ID>+ doesn't need said event's preconditions, does it?
No
great thanks
Yeah so I installed the 4.4.0 SMAPI doesn't matter which one, and my whole system just on the verge of dying
when I open the game
Doesn't happen when I do it with Vanilla
Yeah same with 4.3.2
I'm really not sure what's up
!log
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
hey there! what're you working on?
I know it says even if I don't see any errors but it's the latest version of the game with a clean install of SMAPI. No mods, nothing in logs.
But here you go: https://smapi.io/log/e865de45a72945ab9d1fb11844d3c07f
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on Windows 11 (10.0.26100.0), with 2 C# mods and 0 content packs.
I’m working on cape stardew but there were some issues lately with lag and map patching priority inconsistencies
Currently fixing that
If I want to add custom, respawning, large ore nodes to a map I'd need to use Farm Type Manager and Item Extensions, correct?
I'm using Mount Vapius as an example to add respawning large coal ores, and that seems to be the only way to do that
I'n just curious if there's a CP only way of doing so
the other option is spacecore
there is no CP only way of doing so
Would I need to use C with spacecore though?
no, it would be JSON either way afaik
Truth be told I haven't looked too deeply at Spacecore documentation for this yet, but always thought that was needed for C mods
Oh!
that's the purpose of frameworks
That's pretty great
(its C# not C btw)
Spacecore lets you do stuff without C#
(not to be nitpicky i just couldnt tell if you meant C# or CP)
Yeah, for some reason in my mind I had imagined Spacecore as the C# mod 
No, it's good to know! I get all the C's mixed up and was unsure if it was C# or C++
you can register things through spacecore's API with C# but that's for advanced stuff, most of it is through CP
Spacecore itself is a C# mod that makes certain features available to CP mods
(or other C# mods that want to use the content pipeline via C# i guess)
Yeah, now that I know it's also a framework for CP I can place it in my mind with the other frameworks
i actually don't know that there are any C# mods whose purpose is to be used by other C# mods? now that i think about it
wish i had that power irl
I wish I had the power to just C# anything I want into the game
a lot of core mods are just intended to be used by their main C# mod
like poohcore, atracore, birb core, etc
poohcore maybe less so since it does CP stuff too
Wait I'm looking at Spacecore, this is perfect!
And 1 more mod to add as a requirement instead of 2 😉
That's the "looking at Spacecore" experience in my experience
I had no clue it did mineables too
A+ framework, made the stuff I needed it for a breeze
and also the opposite experience with me looking at the spacecore docs where most of my thoughts are "this should be a separate mod"
(no shade to casey at all though)
Yeah, I think it's the most popular of the three too
its definitely not more popular than FTM
So adding it as a requirement is a little less painful (Even if FTM and IE are pretty commonplace too)
I think it has the most downloads, actually
FTM is higher in nexus's top files
and it has way more dependents
FTM: 456 dependents
Spacecore: 354
It's pretty close, SC has like .1mil more downloads. I think it just depends on what criteria we're using, haha
But with FTM I'd need item extensions too anyway, and that one's less popular
Yeah, and I might need it anyway, I need to look into how SC handles spawn areas because FTM seemed pretty straightforward on spawning in certain locations
you define rectangles in which to spawn with an optional arg for rectangles to exclude
the rectangles can be as small as 1 1 or as large as the whole map
I'm looking through documentation rn, yeah- I'm sure it'll come up soon!
I literally just started looking at it lol
yeah it took me a hot minute to understand everything lol
Just a thought, SVE probably makes up for a big part of that download popularity closeness between FTM and spacecore - it requires the former but not the latter
The only frameworks I'm confidently familiar with are CP and MEEP since I've pretty used what I needed for NPC mods
FTM has a bigger bubble on the dependencies graph so therefore it is clearly better
(/lh)
see? obvious
Modern art
i think spacecore's popularity comes mainly from JA actually
as for spawning stuff spacecore didnt have that feature until last year
i forget if the save serialiser changes were to be separated from spacecore in the rewrite/split. i suppose it'd make my projects an absolutely minute amount nicer knowing i'm only using what i need
i thought there was something with the base game itself re: serializer
or maybe it was SMAPI itself?
i'm not sure what you mean
Casey talked about the save serializer maybe getting promoted to smapi and or base game
Most likely smapi with base game hook support i think
oh that's cool. big fan
I have one (1) mod that needs the save serializer and I'm thinking of yeeting it
you can always write your own 😌
Perish
most of mine do lol. custom type objects everywhere
spacecore is MIT, just yank out the serializer bits
i did do a simple de/serialiser once or twice, definitely for giftwrapper
i was at one point considering doing something similar to just make a drop-in serializer for whenever i needed it but then casey talked about those somewhat tentative serializer plans and i gave up before i started
giftwrapper, raisedgardenbeds, probably love of cooking, probably a dozen custom serialised types in endless mod
I think I just don't have that much need for custom types for some reason 
is it that you dont have the need for it, or that you subconsciously avoid wanting it in the first place because you know you'd need the serializer
Usually I just yoink stuff out of mod data into a cwt
a cwt
is blueberry unfamiliar with CWTs
See I think I do a lot of stuff that's like "I 👁️ this ordinary object to see if I do special things or not"
the hundredweight (abbreviation: cwt), formerly also known as the centum weight or quintal
wouldnt it be great if you could make the object inherently special though on account of being a SpecialObject
conditional weak table
oh. never seen it abbreviated lol
Yeah but sometimes I also want to unspecial it whenever needed?
happens to us all
I dunno it just makes more sense to me cus custom asset invalidation handling
not me
Button is special, in fact I'd say Button is 1.2x more special than Torch
the S in SButton stands for special
and dont you dare confuse me with a blasphemous Key instead
thank you microsoft.xna.framework.input.button
i have to use Keys right now for what im working on and i miss my SButtons because then i cant type my name
The thing I used serializer for is scythe enchantments and that's about to become data asset (soon™)
custom types for serialisers just call my name. like item data definition types
do you hve a custom item data definition type
i have so many.
i have literally never seen or heard of anyone else using them
i have so many
dont. ill be 1.2x less special
I dislike those on principle cus I am on the other side. It annoys me that there's no strong association between the item data definition and the underlying data asset
what does 1.2x less mean
for me itd make even less sense bc there wont be an underlying data asset
but that just makes me wanna do it more
the same as 0.8333x more special
make sure to put your mod id in the qualifier to avoid collision with other people
(selph.SmallCraftables_SC)selph.SmallCraftables_SmallScarecrow this is a totally sane and valid item id
But what if I want to collide with other people
if only the modding scene has the same mindset, then we wouldn't be stuck with 4 butters /s
(Factorio mods have the concept of an anti-dependency, aka this mod must not be installed, and while it makes sense in the context of a game where total overhauls are commonplace I can't imagine that sort of thing in SDV lol)
only one example of that that i know of so far (the mod that would deliberately crash your game if you loaded any of a list of mods the author didn't like)
wait what
ah yeah i rember that
actually there's at least a couple cases
multiple-
it's actually really easy to do! any mod can check the list of loaded mods. then just do something that crashes the game. but it does get your mod classified as malware by pathos lol
which ones I- WHY
(justified!)
imo that's only not-evil if it's like one of those bigoted mods you sometimes see floating around
so one case was an old (very opinionated) expansion mod from way back, and there was a period of time where it would deliberately crash if SVE was installed
one other case is a debt/difficulty mod that would silently boot you back to the title screen if it detects a "cheat" mod (CJB, LA, etc.)
(it is listed in the description as a selling point)
(it did cause pathos some headache when he tested loading every C# mod at once)
(cant find the link and idk if it's still up$
i swear i saw the list of blacklisted mods somewhere recently but i can't find it again
huhhhhhh
theres only 2 mods in it right now for being actual malware
yeah you have to do seriously bad stuff to get on there, not just mild misbehavior
"Id": "OpUlarenous.PortableCommunityCenter", // 'Even Better Portable Community Center' (Nexus:35601, dfd9e53ee3e6fb997c04a2b0c7f49a50)
"Message": "It downloads malicious code from a remote server and runs it on your computer. SMAPI refused to load the mod, but you should delete this mod and run a complete anti-malware scan of your computer now to be safe."
},
{
"Id": "BrEvoiultion.GiveSpeedInMorning", // 'Give Speed In Morning' (Nexus:35650, 97860c755192a27cdb6c16ec32327774)
"Message": "It downloads malicious code from a remote server and runs it on your computer. SMAPI refused to load the mod, but you should delete this mod and run a complete anti-malware scan of your computer now to be safe."
}```
yeah big yikes
shitttt
and to clarify, Portable Community Center and Give Speed In Morning are legit mods that are still up rn
those two malware mods are reuploads that masquerades as them
damn
damn thats scary
gross that ppl would do that
Oh I meant it literally
Hugs are collisions!
ensuring SVE compat will be the death of me (no hate)
does pathos check for lag inducing mods (to crash the game)?
pathos checks every single mod the 3 major modding websites will allow him to download in order to check which ones work and which ones dont and why they might not work
he does this every month
Has anyone used Spacecore to spawn mineables/foragables/something else using spacechase0.SpaceCore_TriggerSpawnGroup?
🙋
I get no errors with my code, but nothing spawns in, so I'm trying to find an example since the one listed on github has the preperation for the trigger, but not the actual trigger
Wait awesome!
What's it called on Nexus? I can snoop through on my own
dead boy detectives, but i can also link you to the specific file on github if you like
If it's easy then yeah! I really don't mind snooping on my own though, just providing the file name is service enough for me 😸
https://github.com/nbeymer99/DeadBoyDetectives/blob/main/data/Spawning.json look at lighthouse beach forage and lighthouse grass forage
I've been going into mods that add sometihng similar and using their loot tables and hoping it's standardized with the rest of the game
you can download the mod to see the map too
Mostly Visit Mount Vapius or other Lumisteria mods
The lighhouse is gorgeous! I do love the art for DBD
thank you! that was one of the first buildings i made haha
And I have a soft spot for lighthouses
You arrive in Stardew Valley to find out that your grandfather had a secret. He left the farm to Haley, not you. If you want it back, you'll have to survive as her debt slave for a year - and if you d
damn
how do i find loot tables of things ?
if nobody present has answered, nobody here at the moment knows. it's not very helpful for us to spam you with "sorry idk"
@ocean wave It's not perfect, but this is the method I usually use
Again, Lumisteria's mods are pretty great for this
oh that was sen LATE - the delay on that im sorry 
i just wanted to make sure you didn't think we were ignoring you on purpose
i kinda meant base game like mixed seeds- thought i should ask here
Yeah, I don't know about base game. But using other mods for reference can be helpful, because maybe they used basegame
Plus I find Lumisteria's stuff to be pretty balanced
im not using lumisfstera srtuff?
a lot of what I managed to achieve in my mod was inspired by DBD, because if you were able to do it, I could do it too mindset. I saw the earlier discussion about spacecore and FTM, and it was good because I was originally planning on using FTM to spawn enemies, but I already have spacecore as a dependency
?..,
But you can use it as an example
Since her stuff is pretty great at having various comprable loot tables
the lighthouse is what inspired me to create my first map
and you recommended DBD when I talked about my 2 npcs that follow each other in their schedules. I love the way your characters interact with each other so much 
What's your mod, boxosoup?
that's the greatest compliment i could ever receive
I've been pretty away from modding the past year and a half, but DBD always looked pretty great!
I haven't played with it sincem modders never play... but again, the art and maps look gorgeous!
I have a sneaking suspicion base game mixed seeds are hard coded
haha yeah mood so many great mods have come out lately that i've barely or never played with
I haven't finished it yet, it was a npc mod that scope creeped into an expansion inspired by DBD, there's no similarities other than 2 characters that follow each other, and the fact it's from another popular media 😭
Ah! I guess I'm more curious as to what the concept is, exactly then
jufdy

if you want to look at something hardcoded, you'll have to look in the decompile
Why do you want the loot tables? In case there's an alternative
https://github.com/misty-spring/StardewMods/blob/main/ItemExtensions/docs/MixedSeeds.md looks like you can use item extensions
oh so it's a fetish
/.?
!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
wdym loot table, do you mean just the chance of mixed seeds turning into a certain crop
you can refer to the wiki: https://stardewvalleywiki.com/Mixed_Seeds
esidsft
LMAOOO why is that so funny
that is 100% a fetish mod
I have to say though, the dialogue is frying me
yeah, probably lol
I haven't even clicked it, I know it is with zero doubt
It's just so in your face about it
you know the carpenter menu where you build buildings? I want to make it so you can build an airship
- you explore floating islands like they're dungeons to get loot: meet NPCs and bring them to live in the ship; bring back animals for your farm.
- Only problem is idk what the gameplay loop is going to be since galaxy sword can basically 1 shot, and puzzles are hard to code
- there's going to be a story, I just don't know what it's going to be yet; because I'm also considering the limitations
- Initially it was a mod where 2 police officer adjacent robots move into stardew (+1 more after year 3), one of them is a shapeshifter, and sometimes transforms into other npcs
here is a cutscene I made using icortower's framework
so yeah, there's just a lot of brainstorming I need to do, and decisions I haven't made yet
alright, fine clicks, reads yeah that is 100% standard for that kind of thing
(for puzzles i can recommend using spacecore setpieces XD)
i'm having immense troubles spawning things on the setpieces though so make them small unlike me lol
yayyyy
you are the best nic, I'm not joking but the airship code was also the minecart network you told me about 😭; yeah I had the idea of those korok puzzles from BOTW, but wasn't sure of the limitations or the capabilities I can do
I was writing a nice compliment, then my laptop died. But I think I’ve seen bits and pieces in the ES server, and it looks pretty great!
Perhaps that’s my message to go to bed for the night…
that means so much to me and makes me feel good
thanks for being interested in my idea, and have sweet dreams
oh 
😭 When I'm going to be playing through DBD, if you have puzzles, I'm going to ask you how you did them if I don't figure it out myself xD 
off topic but omg crusader kings mention
puzzles is a strong word haha i've got a maze and that's about it
i guess i also have a monty hall problem in there too, but only in theory; see previously mentioned spawning problems
yeahh haha my idea was like "put move a rock into this circle of rocks" but dunno if thats feasible without going into make ur own code territory
hmmm it might be possible with MMAP map override shenanigans? it wouldn't be pretty though
you could also just do a "interact with this tile while holding x item"
forsake your apple to this statue puzzle will have to do I guess 😔
lol
to be fair that's on par with stardew puzzles like the galaxy sword and old man cannoli
sweet berry puzzle hahah, I guess I could just make a bunch of riddles
@uncut viper Hey I am testing some custom triggers with BETAS. I got a basic dialog opened trigger to work, now I am trying to add some conditions. How can I check if I am speaking to a certain NPC name? I see in the docs for DialogueOpened that the Target item should include an ItemId matching the NPC name. I tried "Condition": "ITEM_ID Target Rosalie" (Rosalie is the new NPC I added) for the condition, but that didn't seem to work. Any docs on working with the Target item returned from DialogueOpened? Thanks a ton! Docs I'm reading over here: https://stardew.button.gay/docs/betas/triggers#DialogueOpened
hey, not buttons nor will I really be able to help much here, but afaik ITEM_ID would ONLY apply to items, not NPCs
what are you trying to do?
is your NPC's internal name ModId prefixed?
hey, uhh afaik this is against the rules if you haven't asked for approval from staff beforehand
Oh, I'm sorry. I'll ask their approval first.
Ahhh that was it, using the full ModId prefix works! Thank you!
when doing modding stuff more often than not you'll always want to use an internal name and not a display name unless specified othewise
Will keep that in mind, tytyty
<@&239770080378880001>
oh should we ping junimos for that or just use apps/report?
in the past they've said we can do either but idk what the overall preference is
last time i saw someone ask which was preferred, the response was "if its urgent then juni for sure"
(juni as in pinging junimos)
i haven't seen that kinda scam here yet, usually just the typical mr beast coupon lottery bs
thanks
thank you arcane!
@ivory plume hello pathos i made a proof of concept for dynamic token includes
https://github.com/Pathoschild/StardewMods/pull/1172
Things I am not sure about:
- What is the syntax to use? Atm I just added a new field called
IncludeFromFiletoDynamicTokenConfig - Currently I chose to make tokens inside the include possibly invalid if the condition is an always false
HasMod, this is different behavior than dynamic tokens, but it seems better for performance and gives a stricter warning to content modders.
Pinging us is what we’ve been preferring for scams that slip through the filters since it’s pretty urgent to stop others from getting compromised
Reporting through apps doesn’t ping all of us so it wouldn’t get handled as quickly if no one’s actively moderating
honestly it gets asked so much i feel like itd be worth putting in the rules itself these ping vs report vs msg bouncer preferences
Thanks! I'm mostly focusing on the mod build workflow stuff, and then I'll be working on 1.6.16 alpha stuff. That will be on my list for the next major Content Patcher update though.
- Re syntax: what you have seems tentatively fine. Having the includes be in the
DynamicTokensfield (instead of underChanges) solves the main lifecycle issues with having dynamic tokens inside patch includes. If there's any minor changes (e.g. field naming), I can handle that before merging the PR. - Re handling of tokens inside immutably false includes: I'll need to look into that one when I review the PR. Even if the condition is immutably false for the current player, we'd need to make sure any logged errors aren't confusing.
I added a skipped because mods aren't loaded debug log (should prob be trace actually) and user would get the normal token not valid warning
the reason why it's separated is that it seems reasonable to define the token outside of include, then do some mod compat stuff inside an include that only loads if hasmod. in that scenario the token would just be valid still
Get small errors when joining but it works now!
If the When section on an include contains a HasMod condition that will never be true (i.e. mod not installed), the tokens inside will not be added.
My leaning would be to have the includes always happen but implicitly AND the conditions together
//content.json
{
"DynamicTokens": [
{
"IncludeFromFile": "dt_include/cmct.json",
"When": { "HasMod": "Spiderbuttons.CMCT" }
},
]
}
//dt_include/cmct.json
{
"DynamicTokens": [
{
"Name": "MyTok",
"Value": "Token Value Goes Here",
"When": { "Season": "Spring" }
},
]
}
would always make the MyTok token and it'll be ready and have a value when CMCT is loaded and its spring.
as I don't think tokens should have different behaviour inside an include vs in the main json file
That and author facing documentation doesn't define what is immutable/deterministic and what isn't, so having author facing behavioural differences on immutable vs mutable tokens would likely be confusing
Can you share a log for the errors?
Yes i can, give me like 30
can a very kind windows user unzip my mod and let me know if there are still those annoying hidden mac files in there...edit: nvm all good now
Yeah but I honestly want to change it for the single tokens too 
Except a lot of mods seem to rely on the unready behavior atm hence hesitation
I do remember when deterministic tokens got added it in turn exposed more startup errors due to being immutable and thus optimised for the stricter error management that pathos had to quiet down to reduce bug reports
AND on When is indeed what happens outside of the special case HasMod false include I put in
I made a new dt contextual no value thing that participated in update context and also tracked parent in each dt contextual
If parent not null then must match all conds on parent and self
Parent always updates first bc of the contextual list ordering
Maybe I can optimize it like if include is immutabley false, only push a placeholder token for included token if it hasn't been added yet
We can do the same thing for single token i think
<#making-mods-general message> is an example of what was happening when deterministic first launched
Wow ancient history
But yeah I only did any of this on HasMod cus it's immutable and always ready at load
Didn't do it for other immutables
tbh it would be nice to have general support for immutable dynamic tokens and that if the 'last' version is unconditionally ready to never check the earlier variants, and if its value is immutable to bake it in and no longer update as a token
I don't think being part of an include should be a requirement for that optimisation
That would make me feel better about people doing {{NPCName}} = {{ModId}}_NPCName
I dont have the data for it as profiler struggles with thousands of fast operations, but token update can get very slow when you have enough mods despite only a handful of tokens being picked up by profiler
I don't think I understand how "bake the value in" works exactly but i can see how to check if last version of a token is immutabley ready
when a token is immutable during load rather than being a fancy JToken that updates its context, it just replaces {{MyToken}} with the value in place and is no different than if you unwinded the token by hand
so ModId for example would never actually call any update logic because no patch has a reference to the token as it gets baked into the patches
I shall make an attempt at this 
its already a thing
its just that dynamic tokens are currently forbidden from being immutable
and I think currently initialize too late iirc
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/Framework/TokenParser.cs#L329 the inner most guts of cp
Hi folks, first post here so apologies if I get anything wrong.
I'm working on a mod that mostly uses Content Patcher, but as a quest reward I want to make the bus to the desert free, and my research has led me to believe that I'lll have to do that via a C# mod. My programming skills are unfortunately very rusty. I've been struggling through but have been having no luck. If possible, I'd like to:
- tweak the text box pop up to say (0g) instead of (500g) after completing a custom special order quest (added via Content Patcher, that as a standalone quest is working and has a mail flag)
- use the vanilla bus riding animation, not a warp.
- not break compatibility with other mods that add locations to the bus like Central Station.
- have no price requirements, ie not cost 500 but then refund it, but actually cost 0g.
- obey normal bus requirements (CC unlocked, Pam present, etc)
Is anyone able to help me?
No i mean do the "last immutable ready token"
I will probably also do this
I think central station does let you just edit the ticket cost to the desert?
Essentially it's a C# problem but someone's done it already for you
Another one is that book in button extra books which let you drive yourself to the desert (also C#)
if all else fails, you can write your own harmony patch like so
https://github.com/b-b-blueberry/DesertBus/blob/master/DesertBus/ModEntry.cs#L355-L368
if you're having trouble writing a C# mod, this should slot into the example on the wiki just fine, being sure to include the lines in Entry marked under // evil doings
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/Framework/ModTokenContext.cs#L252-L277 logic would be around here and just a case to detect when a variant of a dynamic token is deterministicly going to get shadowed to remove itself from DynamicTokenValues, and when all dynamic tokens have finished being added on content pack load to then check if the ManagedManualToken can promote itself to being immutable
I tried reading the documentation for Central Station but didn't know if I could modify a vanilla location, not just add new ones
central station with its default content pack already takes over the bus route to the desert so it would just be a case of overriding the stock entry when your conditions match
would be the location entry Pathoschild.CentralStation_Desert
Ok great, I'll have to take another look then. So I can say, when BusUpgrade quest complete (via a mail flag), modify the underlying cost (and price displayed) to 0g?
yeah
{
"Action": "EditData",
"Target": "Mods/Pathoschild.CentralStation/Stops",
"Fields": {
"Pathoschild.CentralStation_Desert": {
"Cost": 0
}
},
"When": {
"HasFlag": "{{ModId}}_MyMailFlag"
}
}
think that'll do it
And then just have central station as a dependency? Don't mind that
Another option is to have it be an optional dependency and just reword or remove the quest when central stations not loaded
Yeah ok. And sorry if this is a basic question, how would I check that and have that fork for present or not present?
// has central station
"When": {
"HasMod": "Pathoschild.CentralStation"
},
// does not have central station
"When": {
"HasMod |contains=Pathoschild.CentralStation": "false"
}
Thanks for the helpful nudges folks, I'll try that tomorrow and see how I go!
Hey, do functions using the helper have to return void or am I missing a change that should be here?
This is an event handler so it has to match the signature exactly
Even if you could return there where would the value go
thanks
it does describe the issue in the header for that message, you'd be matching void ReturnStones(object sender, UpdateTickedEventArgs e), so yes, return void
evening folks! continuing to make yesterday's Content Patcher mod menially, and i am done with one ingredient
did i understand correctly that if i separate all of these entries with a comma, the action will happen if the player has ANY of these cooking recipes?
and if none, then not at all?
uh.... i think it'll be all of them
i am looking at this
on the github
yeah it'll be any of them
i am just making sure in case this is wrong
i am stupid and just woke up XD
it's alright soup, good to see you
and yeah if the player has none of the listed recipes, then the patch won't apply
if i want an action to happen when the player doesn't have ANY of these i just do the same as above, except append a : "false", yeah? like in the following example?
yeah, for when you want to still apply a patch but only when x condition is false
understood, thanks
will this formatting work? as in, inserting a linebreak in the middle of the same one Value
so far i have only used linebreaks in the Delimiter
huh this invalidates my JSON
what am i missing
am i stupid
that :
i'm just doing this lol
if you look here, the "|contains=value" is all in one set of ""
but you don't have any of it
do i need to have a "|contains=" in there?
Please use the smapi one
oh shit i forgot about it
hi chu
so i need to add "|contains=" to the value and then list all of that stuff?
Yeah the When thing only takes a key: value whereas you tried to do key: value: value
contains lets you encode more stuff in the key
Hi!
How can I use GameStateQuery to check if a certain query will be true in a certain day? The query only consists of SEASON and DAY_OF_MONTH
Like you want to mock the day being checked?
Basically
If is possible to check in a more general way with other things it would be great, but in this case I just need to change the day being checked (today + n days or a specific day)
Hm the way I'd do it is probably
- make a new gsq CHECK_FUTURE <days> [GSQ]+
- in the CHECK_FUTURE I determine the day and season of this future day (SDate has helpers) and directly set Game1.season Game1.dayOfMonth Game1.year
- Check the GSQs given
- Restore those statics after checks are done
This assumes you care to let content packs decide how to check ofc, if u dont then u can do this except not register it as any kinda GSQ handler
Hello, I play Farm Frontier and I want to move my house to the other side, but since it's not the main farm, it seems impossible. I had hoped this mod would work, but apparently it can't do it natively. However, the creator provided this solution but hasn't released the modded version. Do you think this might work, and would anyone be able to do it? Thank you very much. Sorry, I'm terrible at coding, and you're my only hope.
https://www.nexusmods.com/stardewvalley/mods/20606?tab=description
what do you mean "this solution"?
anyway there's a lot of code in the game that assumes that the farmhouse is placed on the farm; with enough C# you can do anything but it's definitely not a beginner project
I'm modifying UIInfoSuite2 to read Custom Bushes correctly, so will use their conditions.
Changing the Game1.dayOfMonth or others won't change the current date in the game?
it will, that's why you change it back (EDIT: to clarify, this won't lead to side effects or anything since it's just an int)
Sorry I forgot to put the screenshot
In the commentary section you can see this reponse
I can't read french sorry
the original is in English, the screenshot is translated
anyway, what they said will probably allow moving the farmhouse/cabin outside the farm (if you familiarize yourself with making a C# mod and Harmony patching), however it will not change the fact that if you exit the farmhouse it will still boot you into the main farm + gods know how many other things that might break
Thanks for your response I think your right
Is there a token to check Which dialogue is currently showing. When talking to npc I want to change assets specifically for that dialogue.
You won't update fast enough normally
So token does not help here
You can maybe use BETAS trigger+change appearance
hmm, what am I missing 🤔 I'm using simple flower meads and trying to update ebagi's fancy mead texture for it but it still comes out as the default mead texture for fancy artisan goods. For whatever reason, even though the flower meads 'exist' they are not spawnable items in cjb and whenever I come across this it seems these items cant be [further] textured -- is this a fix that could be done with cp?
CJB Item Spawner doesn't know if an item can exist due to mods (e.g. Carp Juice)
CARP JUICE
idk what's going on with EBAGI though
may be better to just wait for chue to release DISCO
-# that's all i have to say i shall be leaving the conversation now 
Did you end up getting a chance to test it?
Remind me in 6 hours to see if I can reproduce the dungeons not syncing properly for farmhands
oh my goooooooooooood kittycatcasey fine (#7039538) (6h | <t:1769042897>)
Remind me in 6 hours to check chu's PR, too
all right kittycatcasey but next time you better bring me 20 nirnroot or i ain't doin it (#7039539) (6h | <t:1769042911>)
@iron ridge hi, can i ask what mod discovery tool you were referring to in m:p server? it sounds intriguing
(what is m:p)
modpub
heh reading this whenever I open the wiki after a massive failure is such an ego boost LOL
(saw this while searching for something, and it's from last night so I don't feel bad about bringing it up again)
I'll have you know, the old 1.6 alpha build of Moon Misadventures had a custom ItemDataDefinition!
Nope, I've been turbo busy irl. Still haven't gotten a day to mod :( I can hopefully check this weekend
No worries! It gives me a reason to postpone taking a look at chu's PR!
.timer remove 7039539
Timer removed.

...okay but actually I should take a look at it tonight if I'm gonna be testing the farmhand dungeon thing to
.timer unremove 7039539
Invalid time
smh uber
Remind me in 330 minutes to look at chu's PR after all
oh kittycatcasey you sweet summer child. trusting me with such a task? all right ;) (#7039573) (330m | <t:1769042736>)
as you prob know it is released but I am... very dumb and looking at documentation I have no idea where to go with it lol
guess I'll just make the sprites and have them for the future ocne I can get things figured out
Discord has distracted me so much today
I was gonna work on code stuff but instead I've just been flailing around uselessly
Hi, I’m having an issue with the changeSprite in an event. I’ve changed it several times, but the original sprite still shows up. In the content.json I set it so that ''not original'' sprite is only used when he’s at home, but I also want to use it for events. I’m not sure if that’s what’s causing problems and why it doesn’t show up in the events.
This is an example of an event: https://smapi.io/json/content-patcher/378d43e1cb60416cb921734d000978d9
And here’s the part of the content.json related to his sprites: https://smapi.io/json/content-patcher/32f0fcc5c7f248a38ab3223483a0a18d
So from what I can tell:
- This entry isn't doing anything, because it's always overridden by the exclusive load of "Caleb.png" above it
{
"LogName": "Caleb Alone Sprites",
"Action": "Load",
"Target": "Characters/{{ModId}}_Caleb",
"Priority": "Low",
"FromFile": "assets/Characters/Caleb_Alone.png"
},```
* Based on [Modding:Event_data](<https://www.stardewvalleywiki.com/Modding:Event_data>), the command `changeSprite {{ModId}}_Caleb Caleb_Alone` would require you to load a sprite to this target:
`"Target": "Characters/{{ModId}}_Caleb_Caleb_Alone",`
so you'd probably want another Load action that puts the Alone sprite there, in addition to w/e edits you do with it for non-events
can someone help me read the bundle strings?
they look like "Pantry/0": "Spring Crops/O 465 20/24 1 0 188 1 0 190 1 0 192 1 0/0/1//Spring Crops", but im not sure what each number means, aside from the item code
Okay, let me see if I’ve got this right: I just need to change the Target to, for example {{ModId}}_Caleb Caleb_Alone, so it doesn’t get overridden, and maybe remove the LowPriority
there're some descriptions for each field here: https://stardewvalleywiki.com/Modding:Bundles
didnt even know that page existed! thanks!
Characters/{{ModId}}_Caleb_Caleb_Alone with an underscore in the middle, not a space, but yeah, something like that should get the command working.
changeSprite expects it to be at "Characters/<actor>_[sprite]", where sprite is the last part of the command, which is a bit unintuitive with {{ModId}} involved.
(edit: I forgot the Characters/ part, case in point
)
Okay, thanks so much for your help!
@lucid iron oh chue
Do you know what kind of monsters the iridium and wilderness golems are?
Dangerous or not?
After the sniper and lava bat fiasco, I can't trust anything.
i think wilderness golems spawn on the wilderness farms too?
That's the only place both the wilderness and iridium golems spawn, yeah.
...checked the unpacked game and this tells me a lot-
hmm you can just check if they have a _dangerous variant in the spritesheets right
the class shared by stone golem, wilderness golem, and iridium golem is RockGolem
but yeah, _dangerous is a condition that just gets applied to stuff if it has the associated sprite, afaik
(also their spawn logic is "randomly replace wilderness golems based on rng and player combat level", making it obnoxious to do in C#
)
public RockGolem(Vector2 position, int difficultyMod)
: base((difficultyMod >= 9 && Game1.random.NextDouble() < 0.5 && Game1.whichFarm == 4) ? "Iridium Golem" : "Wilderness Golem", position)```
...oh, right, I forgot some dangerous-mode things like Carbon Ghost have distinct names (but those golems are unrelated)
Not quite, as the blue squid, for instance, is classified as dangerous without any suffix.
And the shadow sniper isn't????
ah yeah some monsters have hardmode set to true explicitly
it's awkward to define because iirc, everything in dangerous mode has stat changes and optional _dangerous sprites applied, but some are unique classes that don't get used elsewhere
on the bright side it seems like that's only the case for the blue squid and the leaping spooders
so i think those golems are not dangerous
yep, those should both only show up on the wilderness farm (mods aside)
Tbh the best way to check is to just encounter one and look at monster variety logs
Good luck to little 'ole me.
I think Shadow Sniper uses the Shooter class too 
(hard to confirm becuase shadows have always had weird classes)
godspeed radical 🫡
Possibly because they have unique animation/behaviour?
I don't know these things off hand either
Oh, that was sarcastic.
I don't have the right farm type for that.
I can give the current state of the mod to someone who can check, though.
Any takers?
🙂↔️
you can also use the witch shrine (or just start a new save?)
yes
@next plaza while you're here and planning on looking at dungeon stuff later, would you ever consider adding support for relative coordinates? the use case being i'm trying to spawn stuff on setpieces but since the trigger action to spawn takes the coords of a location, it has Issues™. if there were any way to build spawns into a map as a tile property, or a way to give the trigger action relative coordinates, then i could stop begging poor chu to add stuff to MMAP lol
i can provide screenshots of what i'm seeing right now if that will help illustrate the current behavior
No need, I get what you mean. Mainly because I'm been contemplating a relative coordinate system for something else.
...but actually, I think for set pieces in particular, there's a barely-or-possibly-not-at-all documented thing for spawning things as part of set pieces
oh??
It only supports single-tile-large spawn regions currently, but I could fix that for the upcoming release
If you even need it
howww did i miss that i've been knee deep in spacecore docs for months
i would definitely use larger regions if you decided to implement it but i can absolutely work with single tiles for now
Get waist deep then
I mean to be fair I'm not sure anybody else has ever made an actual mod using set pieces yet 😂
(actual mod = not counting my test stuff)
the trials and tribulations of being a trailblazer haha
I had a bunch of ideas for set pieces back when I made them, hence why they persist unless specifically vanquished
Stuff like puzzles that change depending on the date, structures that randomly appear temporarily on otherwise normal maps (whether time-based or based on user action), etc.
ooooh that would all be cool as hell
@pale river come look at this it might be the answer to your puzzle woes
It's also basically the only reason why SpaceCore's Spawnables feature had to add netfields
man i feel like a whole new world of possibility has opened up
man this channel really isn't helping how hungry I am right now
(It's almost dinner time, trying to wait a bit longer before I get something)
Can anyone help me? I'm using SpaceCore to edit Golden Walnuts. I used SourceSizeOverride to use a bigger texture. It works fine on map/interaction, but when you pick them up, it looks weird on this tab on the corner of the screen
mmm potato soup
(backed potatoes and boxosoup crossover?!)
Could you try this build of SpaceCore and see if it helps?
#1462189744371929293 message
It's a PR that will be merged Soon™. I don't know for certain it will help without looking at the golden walnut code for that screenshot, but it seems like there's a good chance it will
yes, thank u, i'll do it and see if it works 
Hm maybe i should have some soup for dinner
-# Eat some code for din
-# there's not enough bytes in the world to fill my stomach
Ahh thank you so much!! I’ll look into it tomorrow!
It worked! Thank you!
@lucid iron let it be known that your PR has helped at least one more person than you previously realized
hello all, i have been slaving away trying to solve a tilesheet issue for the past few hours. if anyone has ideas on how to fix, please let me know. when i boot up smapi, it gives me error messages about directory climbing, or where my tilesheets are being sourced from. currently i have them within the maps folder of my custom npc content pack, where the .tmx files for the maps i created in tiled are located. the tilesheets are vanilla ones that i copied and pasted from sdv content unpacked; i have not renamed them nor changed the file order within tiled as the wiki instructs not to do. currently, i have a symlink targeted at my custom NPC folder in my sdv mods folder, so that any edits i make to the content pack will sync and i can load it up quickly to check my adjustments. i have made sure to adjust the image sources for the tilesheets within tiled so that they are pulling from my mods map folder, but again, i am getting directory climbing errors. i am not a programmer by all means so any assistance is appreciated lolol. i had it working and loading in earlier but it's being finnicky now that i've changed some things
!tilesheetclimbing have you tried this fix? you can also try running your maps through the map fixer
When creating or editing maps in Tiled, one common error is tilesheet climbing, marked by red text containing "invalid tilesheet path '../../..'. This is caused by SMAPI not being able to find the tilesheets needed by the map file. To prevent this error, make sure that you have a copy of all necessary tilesheets in the folder containing your WIP tmx file. Copies of vanilla tilesheets can later be deleted, but must be present while working on your map.
If you get this error with a completed map, an easy way to fix it is to open your tmx file in VS Code or a similar text editor, find all of the places with <image source=, and remove the filepaths to so that only the tilesheet names remain. For example, if the code says <image source="Content (unpacked)/Maps/townInterior_2" width="512" height="64"/>, change it to just <image source="townInterior_2" width="512" height="64"/>.
i will check that again in VSC in case it changed. where might i find the map fixer?
!mapfixer
There is a map fixer tool by Spiderbuttons that can fix common map errors such as tilesheet climbing.
Upload your map file(s) as .tmx and click FIX to run. Your fixed maps will be downloaded as a .zip file and will need to be extracted in order to replace your old versions.
Feel free to let Spiderbuttons know if you run into an issue it can't fix.
thank you for the resources, imma do some troubleshooting hehe
good luck!
Damn, I was trying to avoid Harmony Patches like 5 days ago and now I am here, changing the limit of golden walnuts via literally only postfixes XD how things can change XD
i now remember why i edited the maps in the first place. i wanted to clean up a map error that smapi had to fix regarding the tilesheets i used for editing a copy of the WizardHouse.tmx. the tilesheets were not placed out of order, however they did get renamed from their og names, where paths was just 'p', townInterior was 'untitled tile sheet', and townInterior_2 was 'v16_TownInterior_2'. i also changed the image source for my copy of WizardHouse.tmx to pull from the pngs in my mod folder. i put the map through the map fixer tool just now but it said everything was fine with it. i've attached the error messages, if anyone might know what to do with it. the edited map i made still works and loads in-game just fine but i figured it'd be good to clean this up so smapi doesn't have to
I really need help
. While updating The Farmer’s Children mod, my test kids always end up as either 1 boy + 3 girls or 1 girl + 3 boys. I already made a bug report but haven’t gotten a response yet, and I haven’t seen anyone else mention this.
Has anyone tried the Little NPCs beta and noticed the same thing?
Oh yeah nic is doing some advanced gymnastics with the map overrides stuff I made alongside the spacecore set pieces for this sort of thing it's rad
nicee, thanks for letting me know. I like hearing what you're up to, and I'll let you know if I came up with anything good. I'll be a bit behind though, I've only ever used spacecore for tile property things, and haven't tried out trigger actions yet
actually don't even know what a setpiece is yet
Something i was unsure of is that the spacecore set pieces seem to get yeeted when I invalidate the map asset then do make map modifications again
how does one go about making their own mixed seeds? Can anyone think offhand of a mod that's done it? Cornucopia, maybe?
I did some stuff on my end to minimize the need to invalidate the map but i am wondering if you got any thoughts about why this happens
Yeah they use item extensions for this
(Also hi! Chu, I have been meaning to look into HMK, but I'm runing on mod-making lite atm.)
oh chu i think i forgot to tell you, i got a double Doors room map again the other night and it behaved Weird. i'm pretty much over trying to fix that, because i finally have just one Doors room working, but in case you wanted to know i thought i'd mention it
Is the map still getting reset even after u did the removebyid properly
the first room worked great, upon trying the first door in the second room it worked, while having the side effect of resetting the first door in the first room, but then doors 2 and 3 didn't work at all
no, i never lose the rest of the map thankfully
So removing the first door is intended, you are only allowed to have 1 map override by a particular id active even if they have different relative coordinates
I'm thinking of making mixed seeds for the ex-Passerby crops
Idk what's up with door 2 and 3 tho they should work the same way?
yeah it made total sense to me it would reset room 1
Remind me in 3 hours to check on this
you know what rhymes with jerkface? kittycatcasey. kittycatcasey does. but fine i'll remind you anyway... (#7039812) (3h | <t:1769045173>)
Mystery
I don't think it's that important cus idk who else is committing this particular crime anyways 
If spacecore setpieces can natively support this sort of thing too that'd be good
yeah lol rather than me pipe cleanering MMAP into shapes it was never meant to be
There's no shape it's meant to be besides my garbage bin 
it's a very useful and pretty garbage bin
Map overrides in mmap was meant to be 2nd cake of dynamic map tiles anyways
Maybe SpaceCore's spacechase0.SpaceCore_OnItemUsed trigger -> AddItem with random results? It also mentions some object extension stuff to use/consume items
https://github.com/spacechase0/StardewValleyMods/tree/develop/framework/SpaceCore#readme
I guess that's opening something for random seeds, vs planting something and getting random results, though
Looks like Item Extensions is set up for it. Now I just gotta make the sprites.
Honestly that seems pretty fun too
(I have been silently following the dungeon map progress even if I only understand half of what you guys are trying to do. I am very excited to see the result)
There's also a fully vanilla approach where you make a seed sorter machine
put something in and it spits out something else?
It's good for me who never plant mix seeds out of ocd lol
i might have a non-bugged video i can forward, let me see
you could even do that with a seed maker, maybe?
I needed that, I wanted an item where you can open it to get a random item, but none comes to mind that could work that way besides geodes
Yeah put in bag of passerby seeds, get 1 random actual seed out
That's perfectly doable in a cp machine
You can put that rule on seed maker too
To avoid drawing new machine
Will ponder. I also feel like I'm kinda procrastinating atm too.
I can't think of any base item that would work though, the only item I can think of that is used anywhere is a totem warp
(I should be writing marriage dialogue)
same, I'm like 95% ready to release a thing but I keep side-tracking to random side bits 
(but tbf today was "the serializer randomly forgets things")
The spacecore thing let you define any item for this
so like if you right click with a stone, you get a stick or moss? And the stone disappears
It's kind of hard to achieve random one of though
Back in december someone wanted that but presents
@merry river
And then they did geodes in the end cus you get to use item spawn field on there
Whereas the spacecore thing needs some kind of action that would give you "random one of" behavior
(also peep trinket tinker getting an NPC to follow me)
yeahh it's basically like a present, but it's going to be funny buying a capsule toy from the machine to ask clint to break open for you
thanks chu for helping me understand what's possible or not all the time
if you dont mind one more dep then PeliQ works
(FTM will accidentally support that soon too
)
(trigger action to run an FTM custom action™ -> do 1 random action from a list)
(AddItem that uses an item query)
custom geode: jar of pickles, ask clint to break open for you for pickles
What I really need to do is write Victoria's 14-heart event. Or at least script it.
ohhh is this the big middle room you were trying to get the setpieces in? I also love the door shenanigans, the idea that you dont see whats inside at first is so creative 
If u want to go this route then you'd combine a stored item query with the spacecore on use trigger
yep, each “room” in the maze is a setpiece. thank chu for the doors room reveal via map override
thank you chu 
now I'm thinking what if I made a sky island randomly generated version of your maze if you were able to make a randomly generated indoor maze but I would probably explode 😭
it's like those horizontal placing tetris blocks like game! (I don't know the name)
tbh it wasn’t overly difficult once 1) casey fixed a bug 2) i figured out how to place them exactly how i wanted. i drew each map in PS before making them in tiled and it was like following a blueprint
yeah I think what nic is trying to pull off with chu's help is very advanced stuff 😂
Pathos I'm sorry I just never know what to do with the 2dp Nexus gives me sometimes so I throw them at you and I hope it doesnt bother you .....
I think that's quite possible if you plan out the cells and make sure every cell has paths that match up
thanks for giving me 2 different solutions even though 1 was enough. I really appreciate the extra step you put in helping people. I'll go with the geode one since you mentioned it's vanilla friendly
hi all!! my apologies, i don’t want to steamroll your convo — i just have a question/scenario not shown in the wiki page if anyone has experience making dialogue packs for multiplespouses when boxosoup is all done 🩷
multiple conversations happen here all the time, don't worry about it!
yep i did a 4x4 grid with one exit each side of the square but tbh you could make your setpieces any shape that tessellates
houndstooth setpieces...
Do u mean free love
there is a mod called multiple spouses, I looked at the mod page, and the dialogue pack instructions for it is in WIP ok nvm I misunderstood
LOL, yall were in a flow state i didn’t want to bust you up!!
has anyone tested/made a pack where there’s an ‘A/B’ caller and a ‘C’ not farmer respondent?
for example:
Call: You left your shoes in the way!” Response: My bad Callers: Harvey, Elliot Responders: Shane
Same. Seed Demixer when
ceruleandeep has a multiple spouses dialog mod that got an unofficial patch after 1.6
My confusion comes from free love being the replacement for multiple spouses (erinthe made both of these)
ohh yeah def my bad then. I'm unfamiliar with the polyrelationship mods
Semi-related. Remind me in 2 hours to also look at the crimes involved in my past idea for no longer needing spacechase0.SpaceCore/*Extensions
[blinks] what now? yeah uhhh sure thing boss (#7039824) (2h | <t:1769043054>)
my friend made a maze generator in python or java (cant remember), and I still don't really understand how they did it. It would be the inverse of instead of putting pieces in a box to block the player, it would putting pieces to make the player able to move around, and it would require a bigger map
I still think it's really cool that you incorporated enemy spawns and random rooms
yeah, if maps were simpler and just had passable/impassable you wouldn't have to make bespoke setpieces lol but unfortunately Front and Buildings and Back etc mean you gotta tailor it a little
oh jk, disregard i found someone else’s pack with a set of three+ characters and it looks like they were able to do this!! thanks anyway y’all (and look forward to possibly chatting more :) )
how do i ensure non-social NPCs dont suddenly spawn in in the middle of town? 
should i give them a home thats just like leagues off the map somewhere
What are they meant for?
for events
and its sort of like a Gil situation? one of them shows up as map tiles and when you talk to him his portrait and display name shows up
You don't actually need a Data/Characters entry if they are event only
I think this is just temp actor stuff
yeah now that i think about it
The general answer to your question is to set the spawn if missing field to false
Ah okay. i forgot that the default is true, thanks chu
Level
are you looking for help with something?
look at their post history, they're trying to spam to level 5 lol
yeah I got that immediately after lmao
seems like an easy way to speedrun a ban before level 5 but maybe that’s just me
"Level in the discord" is what their scattered message says
Level
great way to make friends, spamming
What's the best way to preserve color/flavor of an input item?
CopyColor and PreserveId field
they don’t want to make friends, they want vc perms 
[[Modding:Machines]]
Awesome ty :3
well then, I'm sure that's a great way to not get VC permissions because people report them to the mods
Ah, so that's how it works. Time for me to spam so I can finally get rid of my peasant role
Yeah that's what I was thinking as well lol
You're not a peasant!
here is my spam: modding community, perceive my thoughtful cat.
Kitty baby!!!
BABBY
okay, I am done. You may now proceed with the mod talk
is this onix
nope 
^just attaching again for fresh eyes
Wow a cat
if anyone is familiar with tilesheets n stuff let me know^^
AAAAA cat!
First of all, is this for personal use, or are you planning to release it?
i'd like to release it at some point^
Because if it's for release, I'd recommend not changing anything about the tilesets, to avoid compatibility issues.
for example, the names of the tilesets within Tiled?
i couldn't find a good link on how to edit vanilla maps w/out causing issues, haha. i found a youtube tutorial but it was pretty outdated so i had to extend my search in random corners of the internet
Yeah, the names of the tilesets.
You are using vanilla tilesheet, right? You don't add anything to it?
And you use WizardHouse.tmx as base?
yes, i used vanilla tilesheets from the unpacked content. i just added a staircase to the wall beside the shop book in the wizard tower. and also yes, i used WizardHouse.tmx as a base^ i just copied & pasted the tilesheets i needed to reference into my mods folder, then directed the image source in tiled to go there.
@lucid mulch i think this is what we wanted to do? https://github.com/Mushymato/StardewMods-Pathoschild/blob/ContentPatcher.DynamicTokenIncludes/ContentPatcher/Framework/ModTokenContext.cs#L210
the thing that im unsure about is whether i need to do anything to mark ManagedManualToken as immutable forever
So generally what you need to do it:
- Copy the tmx and all the tilesheet pngs into your own mod.
- Open the tmx, edit the map as you need. Save.
- Delete the pngs from your mod.
- Every time you want to edit the tmx, you'd want to copy the png into your mod again.
With this you wouldn't need to redirect the image source or anything. And the third step is important so that any mod that changes the tilesheet (i.e recolor mods) would also affect your map.
would it be best to redo it with the steps you provided, then? it was a pretty simple change, so i don't think it would take long
ManagedManualToken uses ManualValueProvider which extends BaseValueProvider which defaults to IsMutable = true and the ManualValueProvider never attempts to change it
the ManagedManualToken.Token is just a stock token which inherits its mutable status from the value provider powering it
@next plaza: look at chu's PR after all (330m ago)
but then i dont have to do anything do i 
the Value provider (ManualValueProvider) never has its Mutable set to false
if it's already immutabled bc it's a LiteralString
oh do i just have to add the ismutable then
if it is a case where there's only the last immutable token left after pruning
@next plaza: see if I can reproduce the dungeons not syncing properly for farmhands (6h ago)
as currently that manual value provider is being externally driven by doing SetValue calls on it, but if you know you will never setvalue on it you can make it immutable
Technically no
please do though
..would it make it more likely that CP would stfu
But yes if you want other mods to be able to target them
please
okay i will i promise
dead-eyed stare in "fought with Haley's Bakery for too long because unloaded tilesheets"...
...We can get around that with modern smapi but still aaaaaaa
@next plaza: also look at the crimes involved in your past idea for no longer needing spacechase0.SpaceCore/*Extensions (2h ago)
Important note: Your computer username may appear in the log. If your username is your full name, please be aware of this before uploading it.
Please share your SMAPI log file. To do so:
- Open this page: smapi.io/log.
- Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
- After uploading, it will show a green box with a URL to share. Post that URL here.
Please do it even if you don't see any errors. This has useful info like what mods and versions you have, what the mods are doing, etc. If the issue didn’t occur in your last session, please load the game to the point where the issue occurs, then upload the log.
hehhh
you shouldn't be getting errors solely from not loading your tilesheets, something else should be wrong
hrm but if i do this i need to actually check for last immutable ready matching notoken value
i feel like that means i prune less things 
ikkk but it's good practice anyways
https://smapi.io/log/7cfb684ef4ca4573a52228aa84e7cbe0 (ignore me cussing out console hehe)
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 15.5.0, with 90 C# mods and 247 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
oh yeah I'm not on my testing mod load thing-
atm i can prune starting at "thingy {{Random:1,2,3}}" while the other way means i need to prune starting at "thingy"
assuming there even is a "thingy"
Just to make sure, did you handle case where a token refers to a previous value
yea i checked dependents
I think you still need to ensure in the ModTokenContext.UpdateContext that an immutable dynamic token doesn't get touched
as that logic has some "I dont know what needs to change, purge everything and start over"
oh yea i forgor to do something about this.InterdependentTokens
but having ModTokenContext simply stop tracking a dynamic token that has ascended to Ready = true Mutable = false would potentially also work
now I think about it, profiler probably could have partially tracked the cost of dynamic tokens by monitoring ModTokenContext.UpdateContext and would be per-content pack but not per-token (which is fine)
It's a wip and the last time I mentioned it I probably said a bit too much so.. you'll see in any time from a week to a year
tbh im not sure if i should do all this in the dt includes PR 
i guess ill commit it and pathos can kill the method if he decided it's better to revisit
Yar, if it's just a quick change, then I'd just redo to make it simple.
hey! looking through the wiki and saw this under the movie reactions thing, is the 'decreasing order of specificity' thing right?
i feel it's wrong but i gotta check in first lol
Decreasing order of specificity means it becomes more specific as you go down, which is what is happening in the list. So it is correct I think.
ohhh okay
okayyy how might one go about loading their tilesheets?
and would that change anything implementation-wise?
Are your tilesheets currently in the same folder as your map?
Does your map have that subfolder in the image source for the tilesheet?
...hopefullly?
Then you will need to remove that
Give the tilesheets a unique-ish prefix
mhm
Then Load to a Target of Maps/<tilesheetname>
(i already am luckily lol)
aaaah makes sense! and the game will automatically pair it to the new tilesheet bc it's in maps!
Yep
perfectt tysm!
rn I'm listening to boss fight music from my favorite video game to concentrate better 
oh, will the tilesheets still need the Z_ prefix?
@next plaza: check on this (3h ago)
Its kind of two different but related optimisations in 1
- Purge shadowed dynamic token values so that less work ever happens in UpdateContext to begin with
- Make ones that end up having a stable immutable value marked as immutable so patches can run more efficiently
with the caveats that interdependent tokens would mean values aren't shadowed anymore and thus isn't immutable as its value would be changing
both don't require the include logic other than that you did refactoring in the include PR which would impact the optimisation logic if you made it a standalone PR
atm i did 1 i think 
didnt do 2 yet since that was gonna touch files outside
ill prob just leave it as is now and look at 2 after this thing is merged
2 is what I really want but has some dependencies in timing to ensure dynamic tokens are fully initialized and have values before a single patch has been parsed/loaded
and I don't think that precondition is currently met as theres hardcoded logic in places to ignore static validation if its a dynamic token as it wont be ready
i think the main bit im unsure about for 2 is DT that don't have condition but do have tokens in Value, and DT that are interdependent
actually no I'm thinking of Query that breaks the rule
For the case of the token has no conditions but has tokens, that would be that the dynamic token itself needs to have the deterministic flag, as all the derministic flag means is "Immutable if all dependencies are also immutable but mutable if a dependency is mutable"
so {{Range 1, 3}} is immutable and will be 1,2,3 but {{Range 1, {{Hearts:Abigail}} }} is not deterministic/immutable so can't be optimised further
https://github.com/Pathoschild/StardewMods/pull/790 is the ancient lore for that functionality
Why not just put in the PR as is and do optimization later
its nice when I can get other people to write the optimisation PRs for me
atra trys nerdsnipe people all the time whats the harm when I do it
Two PR
New quote added by atravita as #7061 (https://discordapp.com/channels/137344473976799233/156109690059751424/1463711472822780037)
Also maybe bring me a pizza in the HEB line
the annoying aspect of the two PR process is that due to the refactoring that includes already does, the second PR would either have to depend on the first, or cause merge conflicts when one of them merges
if i have an eureka about set theory between now and when the Pathos Phase shifts back to mod updates ill maybe do it
rn i am just too dum to see what im actually supposed to poke at 
but sinz ill give u push permissions to my fork if u wish to do it tho
Remind me in 9 days to read this again
私のユニコードパーサーが壊れているのを助ける (#7040020) (9d | <t:1769825307>)
Thank you!
Im sorry your unicode parser broke
oh- where would i find the textures for the juminos during rebuilding cutscenes?
looked everywhere
unless im blind
Have you tried cursors yet
I was gonna say I bet you anything it's in cursors
That's 1.6 cursors if I'm not mistaken
yea
You would need og cursors
.q 6168 or something
Syntax: .quote [#|nick|add|edit|remove] [#|"quote"] [- nick] | On Discord? React to a message with 💬
true true
Cursors is massive, easy to miss things
.q 6168
there are examples out there but they may be a bit complex as they are part of mods doing lot of stuff
- @hallow prism (Jump)
nope
true true
should be pinned
i vote for cursors sticker so we can point out where things are
no, we have puffer clap and joja hash brown
I think smc used to have a cursors emote but I don't see it
Oops I didn't mean to actually send that
moomin?
Yeah, moomin with a knife
And you're not sharing? So selfish /jk
Well the problem is that unlike
which is the actual springobjects uploaded
had to be downscaled to fit filesize
This bothers me somewhat and idk how to fix
How many JojaRewards™ Benefit Points™ do you want for it
Actually now that I think of it, I'm really surprised nobody has attempted a moomins mod for stardew
Feels like it would fit right in thematically
to what end? new npcs? new tiny village? junimo replacement? knife?
Knife
Moomins isn't very expansive; you could fit the major characters in like one indoor and one outdoor map
if anyone was planning on doing it, id recommend looking at the moomin collabs/video games for inspiration
I unfortunately do not have the time
Maybe I'll put it in the ideas repo
I haven't seen any of the new moomin stuff, only classic moomins
the moomin collab for sky children is what im imagining right now, they made 2 new areas based in the story, and a tower/house
are there guides on setting up a testing environment for mods in game
Yeah I just copied my game folder and manually installed the minimum required mods to test what I'm making
You can make a csproj.user or a targets file to point modbuildconfig at it
I use Stardrop profiles
just use a profile with no mods checked and check the ones you're testing with, bam
Don't really need to uninstall anything, nothing loads you don't have checked when you run through Stardrop
Leave the cheat mods enabled in the testing profile for Testing Purposes, uncheck for my main profile
Yeah, but doing that is a pain in the ass when debugging c# mods
Much easier to just have a separate folder
oh I definitely have 0 C# experience
hmm any other mods not on that page? Like data layers is one that many consider essential off the top of my head
It’s a wiki! You can add!
these are my essentials (minus spacecore, MMAP, BETAS, and DR which i need for my mod)
There’s also this page which is less a rec list and more a tip list https://stardewmodding.wiki.gg/wiki/Debugging
I keep Mailbox Menu in, but that's specifically for spotting i18n problems on received mail
I’m super lazy so I only use Lookup Anything, CJB, and GMCM
I don’t use noclip because I can debug warp anywhere I need
And honestly I feel noclip can hide problems
Might be useful for different types of mods than I make tho
I also for a while used debug fin instead of CJB item spawner
yeah I think I'll only add those that give info
i only added noclip recently because i'm testing a literal maze :P i'd die without it lol
but i didn't use it before last week
no Fast Animations or Auto Load Game. what a prison
no DefaultOnCheats...
i use sinz event tester for fast forward :P
and default on cheats i just toggled it lol
Hey, so small json question, probably a really basic one too- if I want to just include a condition that is a negative. Like if I want something to load when it's NOT winter, is there some term I can use to do that?
I seem to remember there being some syntax for negating but I can't find it anywhere
!SEASON winter for a GSQ
!
(it can be found in the third sentence on the GSQ wiki page)
Oooh, thanks for this page
I keep trawling the wiki but I can never find out where anything is lol
it's good to keep a tab open at https://stardewvalleywiki.com/category:modding
the single source of truth in this cruel world
yeah I just spent a decent chunk of time but couldn't find the right page haha
there and Content Patcher's documentation on github
So, like this?
i see we've crossed wires
CP conditions behave quite differently from GSQs, and you'd instead use the "Key |contains=Value": "false" pattern as shown here:
https://github.com/Pathoschild/StardewMods/blob/develop/ContentPatcher/docs/author-guide/tokens.md#contains
so, for example, "Season |contains=Winter": "false"
Ohh, gotcha, thanks! Sorry, I was using the wrong terminology it seems
you're good, i just read the replies talking about gsqs and didn't think you might be working with cp hahah
yeah I should've specified haha, I'm using token with Content Patcher lol
ty for the help!
can I add multiple entries after contains= ?
like so:
"Dayevent |contains=spirit's eve, dance of the moonlight jellies": "false"
yep, it's described with an example in the same subheading as linked above
I finally updated for 1.6 compatibility.
Only like... a couple months late, right?
https://www.nexusmods.com/stardewvalley/mods/9875
Ah, I lost my author roll. no publishing for me i guess
want me to showcase it for you? 
sure :)
done! the mod looks great btw 
thanks!
Hello! I'm making a mod and for one part of it I want to add a new NPC. I've seen a few NPC creation tools out there, does anyone have any recommendations to help with all the things like gift tastes, schedules, dialogue timing etc?
I saw this:
https://www.nexusmods.com/stardewvalley/mods/39818
Recommended? Something else?
Who can send me a tutorial on how to build a new house in Stardew Valley?
there are several npc makers and we usually don’t recommend any of them. making an npc has many tutorials and these tend to become outdated quickly and have various “quirks”. This one, concerningly, seems to somehow make windows defender suspicious about its generated files, which is the first I’ve seen of that particular issue for non code
Fair, so if not those then how would you recommend I get started?
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
Tiakall has a great tutorial on making a custom NPC for 1.6.
-
NPCs no longer use dispositions, check the wiki page for the new NPC data.
-
Feel free to jump into the https://discord.com/channels/137344473976799233/1277457201077813280 thread for more interactive feedback and help!
-
Fireredlily has a WIP NPC Builder Please do report any errors you get with it into the NPC thread!
yes!
@dawn ore these are our curated recommendations. I know people have had a lot of luck with Tia’s tutorial (top link)
Hi everyone, Id like to ask for some help on making maps on Tiled.
On the Wiki it says that the tilesets are loaded on SMAPI based on their original IDs, and when adding a custom tileset, I should add a "z_" as to not mess with the loading order.
However I am a bit confused. I understand that tiles have IDs, which are their number on the tileset; but I havent understood where I can find or add the ID for the tileset. Is ID the image file name and it loads based on alphabetical order (like spring_outdoorsTileSheet coming after spring_beach)? or is there a specific property/config on the map that loads the tilesets in an order other than the order in which the tilesets show up on the Tiled tab?
Should I create a map from scratch to make sure the tilesets are loaded correctly?
generally you want to copy a vanilla map and edit it, because a lot of stuff has to be set up just right and the vanilla maps already have those things. you can do it from scratch but it's tricky
if memory serves, the z_ advice is slightly out of date because tilesheets are actually referenced correctly and order is not assumed any more (and i think maybe SMAPI does some z prefixing automatically? i don't remember that clearly)
Tilesets are what tilesheets become (kind of) once you add them to a map. They hold the data about a tilesheet.
The z_ advice is not out of date, it's just desirable for a different reason now. Vanilla maps no longer break when new tilesets are added without the z_ prefix, but for performance reasons it's still better to do.
generally speaking, what would be the tricky part about creating a map from scratch? for example, is there any particular configs regarding a map that do not show up under the "map property"/"layer property"/"tile propery" tab that I should know about?
However, what a lot of people don't realise is that you only need the z_ prefix if you are patching a vanilla map. Completely custom maps do not need that at all because the game has no expected tileset order for custom maps so it doesn't matter in the slightest what order their tilesets are in.
is that so 
I am not aware of it, so there isn't any problem for example if I do a farm map with Atoms' tilesheets and their tilesheet comes before paths?
Ensuring that you have the orientation, tile height, tile width, tile layer format, tile render order, and compression level. Not to mention animations and tile properties.
It's just never worth starting a new map from scratch, ever.
Farm maps actually might be the only custom maps that do require using the z_ prefix (and I say require because you should always use it with vanilla maps for performance reasons, not because it will break without) 
oh! this answers my question completely. Thank you so much. I was very worried that when I added a custom farm, the tiles would not show up properly because of the tileset order, but I didn't know what would be the correct order anyway... (!)
could you explain what does "tile layer format" and "tile render order" mean, please?
I might have a messy farm mod around that I can check the tileset order thing for, let me check
There's some hardcoding for the name (u should have untitled tile sheet for the greenhouse front tile)
this is deeply funny
They are not important and you don't need to know (and I don't know the answers, really). They just have to be correct, hence why you should always start from a vanilla map.
@urban crest You do not need to stress about it. Just copy a vanilla farm map and use the z_ prefix for any new tilesheets you add to it. There's no downside to using them (in this situation) so it covers you easily without you having to think much about it.
oh jeez.. this was my fear. I don't know the right order for hardcoded tilesets.
I read somewhere that I couldn't even use the spring_town tilesheet because it wouldn't be recognized/found when rendering the map in game.
(Speaking of downsides though, I discovered that Katrielle's Beach map patch doesn't have the water overlay because the modmaker added a second spring_beach tilesheet but called the tileset z_spring_beach instead of just using the Beach's existing untitled tile sheet. As soon as I renamed the tileset, the overlay worked. Times like that are where you can go overboard using z_.)
The order doesn't matter in completely custom maps, the thing i talked about is weird hardcoding on the name 
Oh yeah. I don't want to stress about things like that lol... I am asking out of curiosity and context, since I usually do the "usual procedures" for creating custom maps. I wanted to know the downsides of going commando in that case 
You can use spring town if u want and if it not work send ur code
Well, your answer to chu indicated to me that you are stressing about it though? You don't need to magically know the hardcoded order for tilesets, because opening any vanilla map will show you the order that the game is expecting for that map.
So for a farm map if you want to be safe without experimenting, you can just add all new tilesheets (including things like spring_town) with the z_ prefix. And if you want to experiment, all you have to do is delete one of the tilesheets that comes with the standard farm map after you've copied it for your custom farm and see if SMAPI tells you it fixed your map.
well, not stressing, just ... puzzled?, does it make sense to you hah? like... I have read the wiki back and forth but some questions arent answered in there, and I thought if I needed to check out about the exact thing chu mentioned, thr hardcoded names for farm maps
ohh I see
but would water overlays show up if they're named like that? earlier you mentioned that a map had a "z_" prefix and the water property/overlay didnt render in game?
Yeah, but their problem was that it was the beach, so they already had a vanilla tilesheet right there to pull from. Instead of doing that, they mistakenly thought they needed to add that same tilesheet to their map using the z_ prefix. But they shouldn't have done that because the map already contained that tilesheet. They just needed to add it to their patch using the same name it already existed with.
ohhh
I don't know the code quirk behind the water overlay not working, but that never would've happened in the first place if they hadn't incorrectly added it as a new tileset anyway instead of using what was already there.
I have one more question and will probably be done with it (thanks for the patience in explaining everything to me!).
If I were for example to use "farm_standard" to build a new map,and add the "spring_beach" tilesheet (as you mentioned just as an example), it could come before the "spring_outdoorsTileSheet", so would that cause any issues when loading the map into the game? I mean, the standard map doesn't use that tilesheet originally, so by adding this vanilla tilesheet and adding terrain containing its tiles, is it passive of corruption?
As I mentioned, just add new sheets using the z_ prefix so you don't interfere with the order. EDIT: if you don't want to experiment to test if it will object to the order
The map that you use as your base won't matter for whether the game cares about the order. The important thing is whether you're editing a vanilla map in game (like if you make your custom farm map a replacer for the standard farm) or, possibly, the game might care about the tileset order for custom farms because additional farms are a vanilla feature so it's possible there's code to check their tileset order.
You can easily test this by making your additional farm using the standard farm map and adding a new tilesheet, then testing it in game.
If the game doesn't like you adding the spring_beach tilesheet in, it will tell you. If that happens, all you need to do is rename it in Tiled to z_spring_beach and the problem will be fixed.
This explains a lot. Thank you so much for the advice 
I will be mindful of those notes in my farm creation 🙏
are these used in jumino stuff i think so but just to make sure
if so- is it 16x16
i think it's 10x10 actually
!mh maybe
For help with modding issues, please ask in #1272025932932055121! When asking for assistance there, sharing an error log will help others identify your issue (see https://smapi.io/log for instructions).
wait what's the difference between that and this channel??
this channel is for chatting about creating and maintaining mods. modded tech support is when you're having problems with your modded game
You haven't got any mods that add extra farm areas or anything?
Strange
I switched to riverland and back to frontier and then slept and restarted the game
that fixed it
so probably something weird in the savestate
but I was so confused that was even possible
Hello
If I wanted to add light to the existing bushes, how would I go about that? Do I need to use C# for that?
yes
Well map bushes r just map tiles u can regular light
The non map bushes r fixed position so u can also just regular light
This thing only supports wild trees atm 
I didn't add bush bc they don't have a data model so idk what to key by
O dear if only the creator of MMAP was around so they could add it to bushes
If only matt was around to let me scope creep 😌
(I joke because chu is right all you need is some json to add the light property to map tiles)
yeah I suppose you can just add lights to the same tile the bushes are on, but technically bushes are separate entities
that's why I said C# because on a strictest interpretation of the task you do need it
like if someone uses a bush moving mod 
or destroyable bushes
thank you! I'll look into it
unfortunately anyone who decides to destroy the bushes of my mod will have random light sources on the map, bc I do not want to touch C# so soon 
Arrrggggh I curse all people who do not use LogName 
I still use it for local tokens because I can at least explain in the logname that it is a local token patch
Yeah it just that the default log name does actually indicate which include this is from
So when I am looking through dozens and dozens of patches I know what to discard
Sometimes I have several edits to the same asset inside an include
But this, for example, is so unhelpful
slowly going to add lognames to my mod...
lmao 
https://smapi.io/log/424716aa2fb14ff389b3659f67062009 wtf went wrong man
Log Info: SMAPI 4.4.0 with SDV 1.6.15 build 24356 on macOS Unix 15.7.2, with 51 C# mods and 44 content packs.
ill try again
Probably an AVE
ave?
Access violation error
One of your C# mods suddenly going splut for no identifiable reason
ooo
Usually fixed by just running the game again, restarting computer, or removing and re-adding some C# mods

omg


testing my dumbino update before publisjing