#making-mods-general
1 messages Β· Page 138 of 1
yeah
airyn's crazy marriage thing proves dynamic tokens would work there 
you could maybe dump em next to the NPC with BETAS tokenizable strings, then
thats just me thinkin about funny hacky workarounds tho itd be much easier to just add a fadetoblack action
events run the TokenParser, then splits by / to do events
good and important to know
Gender switch blocks -> token parser -> split by /
if you were to try and get the position of an NPC with C# during an event, does it give you their position for like, the version of them in the event? or the version of them in the real world
ah true
Depends if they are an actor in the event or not iirc
i'd prrrrrrrobably check their location in the real world, shove that into the tokenized?
id assume they are since this would be after gifting them, so i guess that makes that silly BETAS idea not work then
This was a big problem during the 1.6 alpha, where multiplayer people would error out if the npc they started the event with walked out the room due to multiplayer
I'm going to have to tinker with this mail script some more because the behavior still hasn't changed after fixing the modid prefix... but I have another question... I have a buildings tile with "NPCPassable": "T"... is this like known to not work well with pathing scripts? I've had some issues and just noticed none of the mods I've been using for reference implement this property
the BETAS tokens just do getCharaceterByName or whatever and returen their positions so if that grabbed the event actor instead it wouldnt do well
tbh i think i'd grab the actor in their real position first, to then shove into the event?
or would it not react that way
dont quote me on this but i think putting NPCPassable on a tile at all makes it impassable
nevermind the brain has finally kicked in after having a cheese danish, i can't exactly create an actor that doesn't have it's own position because i assume i'd have to put it's position first and foremost
Yeah it's another one of those value doesn't matter as long as it's not null
I did some testing with NPCPassable once but it wasn't very exhaustive
with custom C# you can do anything. but with a preset event script i dont think this'd work
y'know i think it'll just be easier if i code my own "put hats on npcs"
solves all problems
There was an issue with the timing on when I made the tile passable and the way schedules are chosen
with C# though you can craft up an event script on demand and start it as an event
The day I loaded a save NPCPassable wouldn't work, but if I slept and kept playing, then NPCPassable would work the next day
was the NPCPassable propertyu in the tmx itself
In my case the NPCPassable property is permanently on but NPCs still seem to try going through other standard building tiles instead of using the designated opening
Can't remember, that was a while ago now
for mine it's in the tmx
do you have any other properties on that tile
Nope that's the only thing special about it
occasionally I remove the tile for a couple hours though
then ive got nothing tbh i dont know anything about pathing and little about maps
OK no worries thank you
well removing the tile after the schedule is chosen probably wont change anythijng
but thatd obv be a differnet issue if it started as passable so. shrugs
Though, what happens to data on a tile when you remove the tile?
i imagine it gets wiped until the map is reloaded in some form
no tile, no tile properties
The tile removal is a red herring as far as my schedule question, because I only remove it between 3 and 5pm
I would never automatically assume it has nothing to do with it, though it would be fairly easy to test by just not removing the tile and seeing how the pathing works
no tile would then make said thing passable by default unless you've got something on the Buildings layer, unless you're nuking all layers at once
at one point I was using warps instead of NPC Passable and I think that worked better as far as the NPC understanding where to move
unless Back not existing forces NPCs to think that there's "walls" there
I only nuke the building layer
basically to let the player pass through during the prison visiting hours
is it not at a door specific angle?
Can you show a screenshot of the tile property?
cause you can probably get around it with the door action, conditionally patch the doors to look like what you've got
And the layers list?
And that data is on the Buildings object layer?
"Action": "EditMap",
"Target": "Maps/sdvhead.LawAndOrderSV_Jail",
"MapTiles": [
{
"Position": { "X": 14, "Y": 11 },
"Layer": "Buildings",
"Remove": true
},
{
"Position": { "X": 14, "Y": 10 },
"Layer": "Front",
"Remove": true
}
],
"When":{
"LocationName":"sdvhead.LawAndOrderSV_Jail",
"DayOfWeek":"Monday,Tuesday,Wednesday,Thursday,Friday,Saturday",
"Time": "1500, 1510, 1520, 1530, 1540, 1550, 1560, 1600, 1610, 1620, 1630, 1640, 1650",
},
"Update": "OnLocationChange, OnTimeChange"
},```
yes
hi chat
I'll probably just go back to using an NPC warp on either side of the cell that seemed to be the least buggy solution
I was looking to edit a custom map with tiled, but when I loaded the map to Tiled it shows some missing squares.
oh it's probably because I'm using a tilesheet from a mod
is likely using custom tilesheets that arent included
you'll need to put any necessary tilesheet .pngs in the same folder as the .tmx when editing
yeah 
Usually at the top and bottom there's indicators you can click that will tell you what's missing, though this seems to have lost the references entirely
I would get a fresh copy of the map to work on
like this is the cause for my frustration right now: this is the schedule that currently applies to Pierre: "610 sdvhead.LawAndOrderSV_Jail 18 5 1/900 sdvhead.LawAndOrderSV_Jail 13 6 2 square_5_3/2000 sdvhead.LawAndOrderSV_Jail 18 5 1 pierre_sleep", and this is where he's stuck right now:
mhm. I had the required tilesheets loading but since they were from a mod had a few missing
Ty 
even though he has a path to get to the jail cell either by using the warps or through the NPCPassable T tile (btw this is the day after the event that changes his schedule. when it's two days after, its fine, because his home has been set to the jail by that point)
So, in theory, if I wanted to make an apartment building that other mod makers could then place their custom NPC homes in (for those who don't want to bother with custom homes), how much of the whole "assign NPC to apartment room" could be done with CP, and will this be the mod where I have to start learning C#? >_>
well did you want the other mod authors to self-assign, or did you want them to just say "i want my NPC to live in this building" and your mod gives them a room
In theory I'd like to be able to do both at some point, but the first seems more immediately do-able.
The second would be more useful for endusers playing a custom NPC mod rather than mod authors
then for the first one all you need to do is make the map
the second one seems far far more difficult to me on account of, how do you do schedules
or home points
Right
which would need C#
or a lot more work on the mod authors side
to have schedules for each possible room
events, too
quest dropboxes
the former is what Boarding Room did i think
just made a building and let people have at it
Ideally I'd love to be able to set each room as a Dynamic Token for the room's bed coordinates, and then have the hopefully encourage mod-authors to use that token in their schedules, but that seems way more involved
that would not be possible within CP, and wouldnt even really be feasible in C# either
a CP mod cannot create a token for other mods to use*
*CMCT can act as a middleman here but its a dependency and not 100% perfect
Something I think I'd probably need C# for would be if multiple mod authors try to use the same room to prevent conflicts, if that's even possible.
Yeah, I know about the token thing, Button
thats where you run into the problem of fixing all their schedules and events and efverything else that needs hardcoded coordinates
because even if you then made a custom CP token in C#
the value it returns would be the same for everyone
i would definitely leave it up to other npc author's discretion and maybe just have an open forum/excel sheet of where people have their npcs in your boarding house?
(also i just brought up the token thing because you mentioned setting a dynamic token for other mods to use)
My only other plan was "create additional floors based on how many NPCs are being accomodated through a config where a person puts a number in", but mod authors can do that themselves easily enough.
I'm well aware of CMCT, which is the only reason I even considered the token as an option. π
The bonus floors thing would have just been "Is this config value more than 10? Load another floor." and so on
my memory is not so good so i dont do well at remembering who knows about what so i like to start from scratch to be better safe than sorry and miss something/assume someone knows 
fair enough
is true, i don't remember if people remember the highly specialized features of BETAS so i peddle it as much as possible 
my memory is depressingly bad enough that sometimes not even i remember everything in BETAS
I have been making a point of finding all the cool bridge-mods and feature mods y'all are making and trying to make something with them. π
if nothing else, just so I know HOW to use them in my mod making
i mean it's also nice to be like, "there's a framework for that" without having to worry about writing the c# yourself
C# scares me, I will avoid it as long as I can
unless you want to write the c# yourself, i'm not gonna- 
--not gonna disparage anyone from staying away from c#, cause it is a gateway drug
meanwhile despite being the one making frameworks i will try everything to help someone make something work in vanilla if i think it might be possible before suggesting a framework lol
i dont even wanna use my stuff as dependencies for my own mods if i can avoid it
vanilla is definitely Just Easierβ’οΈ because contentpatcher is the footing for most other mods
So, another question
If I have wall lights that I want to light up on the map at night, do I have to use both DayTiles and NightTiles? Or just NightTiles?
daytiles for them being dimmed, nighttiles to have their uh, "lighted" sprite, and then paths with the little lightbulb should have the actual light property
okay, and DayTiles won't do weirdness even with it being indoors?
I'm lighting up sconces, not windows
ah, just saw on the wiki, it specifies window tiles for that glow behavior
That'll work then
does anyone know of a method that could remove/override a warp added by another mod in that mod's content.json?
asking because Aimon's cellar adds a random warp in the middle of my custom farmhouse. i wanted to remove these without nuking and rewriting the entire Warp property because my farmhouse has a decent amount of them
this was what i tried:
"Action": "EditMap",
"Target": "Maps/FarmHouse2, Maps/FarmHouse2_marriage",
"When": {
"HasMod |contains=Aimon111.AimonsTidyCozyCellar": true,
"FarmhouseUpgrade": "3"
},
"TextOperations": [
{
"Operation": "RemoveDelimited",
"Target": [ "MapProperties", "Warp" ],
"Search": "19 35 Cellar 4 3",
"ReplaceMode": "All",
"Delimiter": " "
}
],
"Priority": "Late"
},```
the patch applied, but i am still getting warped to aimon's cellar by that 19 35 one
Aimon's adds a second (20 35 Cellar 4 3) so make sure that one's being removed too in case you're clipping the edge of that Warp instead?
(that's vanilla's coord so it shouldn't matter? but we're going scorched earth approach to see what happens
)
Well, I don't know if Kisaa's farmhouse moves the cellar entrance or not xD
If it doesn't, then yeah, that one may need to continue existing. xD
when in doubt, set a bunch of conditionals and scorch earth
okay, i was overthinking. i nuked the warps
on this note, removing both via TextOperations still gets me warped, so i just did a direct EditData to the warp property lol
getting back in to modding and my dumb ass thinks i can forge a custom npc together (its going great actually MissCoriel's NPC creator is very helpful)
i mean yeah but i suppose some parts could be moved around
NPC data changed significantly in 1.6
crap
Lol, moved around, like completely rewritten
unless you write in old CP format and let it rewrite it for you, you're gonna run into a lot of problems that other tutorials have already gone over
yeah, its not a simple moving around
dang
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
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.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
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!
It might spit out the old format
its c ompletely incompatible if you want to use modern content patcher versions and features
good thing i cam here then
formats i mean
ive just been doing dialogue though so far so thank god
you csn still use modern content patcher versions, you'd just not hve access to modern content patcher things it can do
so yeah, best to not use that creator
yeah you don't get the benefits of:
spouse rooms, spouse patios
appearances
"dispositions", or highly specialized ways to tweak your npc in custom ways
!npc
Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:
-
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.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
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!
that was posted already lol
Oh lmao, sorry I'm only half paying attention
ill still use the npc creator for dialogue though because im pretty sure dialogue hasnt changed much unless theres a better option
drag a few files call it a day
uh, i honestly have never used it, but if it flat loads the entire dialogue you will not have access to Tokens
so things like {{Season}}, {{Gender}}, {{Whatever}} will not work
My builder linked in that command is specifically for 1.6, it's just not as fancy as Miss Coriel's, since I only code in CP and Google Sheets. π
And I focused on the main components needed to spawn an NPC in, so dialogue isn't specifically covered
i made my elliott diologue expansion in notepad++
π my flatboy template has reg dialogue and marriage dialogue
looking at the nexus page for it it doesnt seem to have any token support
im gon be real idk what a token is π im very amateur
or i18n i think
which is losing out on, technically speaking, a metric fuckton of possibilities
tokens are content patcher features that let you write placeholder values that will get swapped with actual values during gameplay
and content patcher will automatically update the game content whenever those placeholders are supposed to change
so you can do the simpler genderswitch like "Good morning, ${male^female^nb}$"
so for example, if you have dialogue to say "Isn't it a lovely {{Season}}?" your NPC will say "Isn't it a lovely summer?" in the summer, "Isn't it a lovely winter?" in the winter, etc. automatically
content patcher handles those changes for you
oh h ok
theres a lot more tokens than just that
(if you flatloaded it like "Isn't it a lovely {{Season}}" it will look exactly like that in game)
so like %pet or %book
and i18n is for translations, but can also be used for randomization or other fun shortcuts with dialogue to make a lot of things easier and automatic
i dont know what those refer to
those are commands in dialogue
when doing diologue you put a percent
then yeah its like that, but More
the modding wiki tutorial in that governor bot command earlier is very thorough and explains the process step by step, id highly recommend at least giving that a try instead of using an outdated creator, and then the google sheets version after if you'd still like to
ill figure something out
I cant find the sheet for Joja Cola. I wanna make a competing soda brand to be a gift for the NPC im making
anyone know where the Trash tiles are?
Maps/springobjects
hii just wanted to ask, when you have an entry here it doesn't disable / hide other entries in Data/ExtraDialogue right?
it does not
Does anyone know if monsters can walk on passible objects? Like objects you can walk through?
Yeah they can
Ok! Thanks!
need some help figuring out what values go in the draw method cuz what its not working like i expected it to be
im trying to draw the quest icon from cursors.png and i have verified that the top left coordinates are 383, 493
and width,height is 11, 14
but when i render it look like this
public override void draw(SpriteBatch b) { drawTextureBox(b,Game1.mouseCursors,new Rectangle(383, 493, 11, 14),24,24,11,14,Color.White,4f); }
the definition looks like this
You would probably just want a SpriteBatch.Draw() for that. The texture box is for something entirely different, isn't it?
Don't use drawtexturebox lol
ive seen other codes and people input a lot of arbitrary numbers alongside the height and width, and im not sure what those represent
oh
That is the game's nine slice
ill try using ClickableTextureComponent
if im trying to implement a single button, is there any use of extending the IClickableMenu class?
are we back in Game1.onScreenMenus again
yes, extending IClickableMenu will give you an all-purpose wrapper for your clickables for you to handle draw, update, hover, click, etc. behaviours
again, just check out OnScreenMenus/DateTimeMoneyBox/Toolbar in the decompiled game code
Oh r u back to using just the vanilla menu system?
Source Rect is where the sprite is on the texture, in terms of x y width height
yeah this time its a single button so i thought itd be overkill to use stardewUI
Yea sure, though if you intend to have stardewui dependency at all you can just keep using it?
I dunno what ur mod is supposed to do so I'm not sure what is best
like if it's just a button you really don't need to do a whole lot, just the most basic implementation of iclickablemenu and clickabletexturecomponent will get you there
Or heck
A single clickabletexturecomponent with smapi events
I guess controller haha
i, too, prefer to make an animatedsprite of a character and manually handle all their drawing and input through smapi events instead of using new NPC() 
Oh come on it was four different events π
Why is this not showing the items info when I press P? (trying to test the new ForEachItemContext functionalities)
private void onButtonPressed(object? sender, ButtonPressedEventArgs e)
{
// ignore if player hasn't loaded a save yet
if (!Context.IsWorldReady)
return;
// print button presses to the console window
this.Monitor.Log($"{Game1.player.Name} pressed {e.Button}.", LogLevel.Debug);
if (e.Button.ToString() == "P")
{
Utility.ForEachItemContext(delegate (in ForEachItemContext context)
{
this.Monitor.Log($"{context.Item.DisplayName}, {context.GetDisplayPath(true)}");
return true;
});
}
}
I think your check for button might not work
it works. I have another for it that I deleted from the code to not make it very extense
another that check player equips
But I would also use Buttonschanged with keybindlist
GetKeybindCurrentlyDown
It will work for multiple keys at once
This is my full onButtomPressed event:
private void onButtonPressed(object? sender, ButtonPressedEventArgs e)
{
// ignore if player hasn't loaded a save yet
if (!Context.IsWorldReady)
return;
// print button presses to the console window
this.Monitor.Log($"{Game1.player.Name} pressed {e.Button}.", LogLevel.Debug);
if (e.Button.ToString() == "L")
{
foreach (var equip in Game1.player.GetEquippedItems())
{
if (equip == null)
continue;
string ctags = "";
foreach (var tag in equip.GetContextTags().ToArray())
{
if (tag != null)
ctags += $" {tag.ToString()},";
}
//string[] ctags = equip.GetContextTags().ToArray();
this.Monitor.Log($"{equip.TypeDefinitionId}, {equip.QualifiedItemId}, {equip.Name}, {equip.BaseName}, {equip.Category}, Context_Tags: {{{ctags}}} ", LogLevel.Debug);
}
}
if (e.Button.ToString() == "P")
{
Utility.ForEachItemContext(delegate (in ForEachItemContext context)
{
this.Monitor.Log($"{context.Item.DisplayName}, {context.GetDisplayPath(true)}");
return true;
});
}
}
It looks like you are logging to trace, are you using the dev version of smapi?
just to register, this is me using this events:
== SButton.P is enough
interesting
and I will save this for a future project
Would definitely do buttonschanged if you intend to expose to user tho
nah, it is just a test mod for me to see how the game/smapi handles some things
Ppl might want to do Ctrl+P
I usually put debug things behind console commands cus I'll forget to remove if I don't 
the L one was me seeing if I could take equipped items context tags to filter things and how
what do you mean? create new console commands?
I yet need to learn how to do it. I will have more time for some weeks
I used to use preprocessor commands for that
Combined with disabling packaging for debug builds
thanks a lot
changing it to debug was what I needed...
I do the if DEBUG if I will keep it in the debug build long term
I should probably get the dev version
I am saving the repos you shared for reference later
My personal opinion is that it's never a one off lol
Even if it is a one off, I'll literally make it it's own compile flag
I don't like the dev version cus I see everyone else's trace log too 
but at least it would save me the shame of had forgot the level.debug in my new log thing...
My current solution is wrapper for monitor log + log level const behind preprocessor flag
So it logs to debug if I build debug and trace if I build release
I do that too lol
this sounds so neat 
the #if DEBUG is activated by the Debug compilation option in VS I presume
The default is debug I think
yeap. I had always used debug so far
even my releases I had build with the debug, getting the zip at the bin folder later
alas, if someone else thinks about doing it to test the ForEachItemContext thing, don't 
it really gets EVERY object in the world
Yup. You can disable that if you wish
I think it is practical for now. getting used to c# and VS so far
not able to activate click and hover actions in the following implementation. is something missing?
adding as an activeClickable menu does seem to make click work, but it takes up the screen, which is not meant for an HUD button
do you know if performHoverAction and receiveLeftClick gets called at all? Like what if you remove these two if containsPoint statements to see if it does anything
tried. doesnt work
Is this second part of var chest only a compatibility with Better Chests or something else?
Utility.ForEachLocation((loc) => {
foreach (var obj in loc.objects.Values)
{
var chest = (obj as Chest) ?? (obj?.heldObject.Value as Chest); <---
if (chest is not null)
{
//Do things
}
}
Auto grabbers and sprinklers with enrichers (their content is stored in a chest in heldObject instead of themselves being Chests)
whatabout Intro and OnRenderedHUD does that get called? you should see it too if you sneak in a debug print
the button does render on the screen so i think the onRenderedHud is called
plus the click does work when i set the button as active menu
but that is not ideal for a HUD button, since activeMenu is blocking all input for other regions of the screen
i want it do be like a HUD menu button or something like that
Is shift+tab a possible keybind to use for things?
Tab flips inventory rows by default iirc
So I think itβs possible but maybe a bad idea
I want to use it while in a menu
I don't think it should still affect the inventory rows there
I can't figure out what the keybind would be for combining shift with it though
(The string I mean)
Oh I think I found it
Hm, it seems to still think tab is being pressed even if I combine shift with it
Figured it out, I needed to handle checking the keybind that I set to shift+tab first before the one for tab
Well, you pass in the argument for a keybind to KeybindList.parse() as a string, no?
And that's how it shows up in the config file
Hi! I apologize if this isnβt the right thread. Iβm looking to 'rebalance' a specific mod for personal use, and I plan to extend the time it takes before harvest.
The crops take 10 days and I plan to change it to 28 days, the whole season. I don't know which json to edit.
Depends on how the mod is organized. Is it CP or JA?
It's Content Patcher
[[Modding:Crops]]
Dang it
I don't recall the field, but the modding page on crops should say
[[Modding:Index]]
I know that. I mean inside the crops file, I don't know what to add or which to edit.
I think it would be the days in phase. So there should be something like:
"DaysInPhase": [ 2, 2, 3, 3 ],
Which would be your 10 days
(and thats explained on the crops wiki page)
You would want to spread that out to be 28
Random question. For mod visibility. is it better to have a more recent "last updated" or just have been uploaded recently?
Thank you.
I still confused about its sprite and "DaysInPhase": [1, 2, 2, 3, 2],
They don't exactly match the numbers
if you're talking about Nexus trending, it's purely reserved for mods newly uploaded within the last week
That makes sense. Im just over-eager with my first mod so trying to figure out how nexus does things haha
the most important thing is to keep them supported and updated
talking about this, I may hide my minifridge cp mod as it doesn't work at all lol
it works, but you can't put the minifridge in the farmhouse without upgrades anyway
I may have found the issue. first of all Rectangle has its parameters in the wrong order, it should be:
width, height, xAnchor, yAnchor.
And it seems that after creating ButtonClass you need to call initialize on it. See pics related for an example
I made a custom object extending from the object class and Im wondering if there is something I need to do to assign a texture to it. Is there a way to do it in code or do I need to use content patcher?
ooh thanks
my dumb ass
there is a way to do it in code, as everything we do through CP is also able to be made through code
to find the right way though, this would require a more knowledgeable mentor
How does one do gift tastes?
Can I add it in the objects.json? Or does it need it's own json?
Thank you!!!
json placement doesn't matter, it's purely for organization
but if you meant "is this part of Data/Objects" then no
^ EditData actions set their own targets, so it doesn't matter which JSON the code is in in your mod files so long as the target is correct.
just imagine every object having its own list of people that like, love and hate them, instead the otherway around
oh ok! Thanks!
Most of these are a universal like! Is there a way to ammend the list slightly? The metal ore is a universal dislike but I'd like to make it a like for Clint.
I feel like giving a blacksmith ore would make him happy, lol.
I think personal list overwrites universal ones
os if you add them at the Clint's like list, it may work
Thank you so much!
since gift tastes still use (humongous) strings you need to use TextOperations to edit them
https://github.com/Pathoschild/StardewMods/blob/stable/ContentPatcher/docs/author-guide/text-operations.md
on my view, Clint liking bars instead of ores is just like 'oh, nice! less work for me to do!', and since seems like he gets the ore he needs himself, ore would not help him so much
I read it as '(homunculus)' at first and got confused
Ore is like "great, more stuff I have to smelt so it doesn't just sit around" /annoyed tone
but you gift only one chunk of ore, what is not a big help to this
I dunno. I like baking bread. If people bought me materials to bake bread instead of bringing me a pre-made loaf i wouldnt be upset
i imagine clint would be the same with ore
he is the same with bars
It depends on the person honestly, I know some people who DO NOT ever want to see the raw resources used in their crafts outside of working hours
giving ore would be like giving you the wheat so you can produce the flour to make your bread
Is there somewhere a list of notable differences between windows and mac versions of the code?
I have players who are on mac, reporting bugs that windows players are not reporting. I'm trying to figure out what's going on.
Specifically, they go to Marnie, and all the animals are greyed out, as if they had no coop or barn. They have this error in the console
[game] Can't read map property 'DayTiles' for location 'Coop64f4f86e-bf76-4809-8b7f-3cf94030222a' because the map is null.
My mod, as far as I know, does not change this shop, but it provides new ways to get coops and barns so it's potentially related. I have just no idea how to test that, I don't have a mac
It isn't the first time I have mac-specific bug reports. Once, I had a harmony patch that apparently just didn't trigger on mac. I assume the code is compiled ever so slightly differently. I switched to a different patch, and it worked, even though it should have been equivalent code
check the package your mod is built on. 4.3.0 was causing problems to mac and linux users
4.3.1+ solved this
hmmm it's apparently more outdated than that. 4.1.1. I'll update to 4.3.2 and ask them to try again 
Thanks for the suggestion!
hopefully you are not checking the SMAPI but the ModBuildConfig one 
IIRC 4.1.1 doesnt have that problem. only 4.3.0 does
you are welcome! I got similar issues, more related to how linux/mac would extract the mod folder and so not opening things as it should
the main 'difference' is that mac/Linux files are case sensitive
Yes I checked the one that is a Nuget package in my project
the path separator is different on windows, but i believe SMAPI fully handles that for you and i've never seen it be a problem
i didn't know modbuildconfig had an icon! (i'm not surprised to see abigail in it)
Is there a way to get the player's xy position on the screen?
I figured out where the facing direction is stored but not if it stores the xy position at all
Guys i know this is kinda offtopic but is it okay to ping pathoschild?
Yea but you can just ask ur question first
Maybe someone besides pathos has the answer and then u don't have to wait
Good evening (or morning) !
I'm trying some stuff before a big update of my mod and I struggle to get rid of moveentry errors in smapi 
Everything's fine in game so I wonder if it's even worth the hassle ...
For example, if a mod moves a shop entry before the grass starter but the grass starter isn't there because of another mod, would moving that entry somewhere else with my mod prevent the error in smapi ?
Or if not the xy position of the player, the xy position of a tile maybe? I'm not sure the best way to do this
it's not like a question i just have a suggestion regarding one of his mods
Player.getStandingPosition() then adjust for viewport with Game1.GlobalToLocal(Position)
Thanks!
are you 1000% sure i can ping him haha i don't wanna get in trouble
Pathos doesn't eat people as far as I know
As long as you don't do anything to break a rule, pinging Pathos isn't strictly disallowed
im one warn away from getting yeeted from the server (i wa a drama queen long time ago in here) so im scared hahaha
im a good boy now
maybe i'll send him a DM instead or wait for him to be active in the chat and catch him then. He got the moon status now so i don't wanna disturb him
If you are so concerned u can just tell us what is it you desire
Ok so im gonna tell you now, then if i catch him im gonna tell him that
If it seems useful and easy enough i can probably PR
so there is this mod CJB cheats menu right?
Also sometimes Pathos is just waiting and watching people talk about him
and there is a time freeze option. Did you ever froze time and forgot to defreeze it and felt bad because you've spend lots of time doing things on your save with frozen time
and felt like cheating?
Well, cheat is literally in the name
yeah i know but i mean in a situation when you don't really wanna cheat on your save that you really play on and you just use time freeze to for example test how other mods work in real time
Do you know how to get the width of a tile? I'm assuming it changes with zoom but I'm not sure where to find that either
I do do that though, freeze time and forget to un-freeze it and only notice when I check where NPC's are and wonder why they're still in bed lmao
So in my instance i do that - freeze time when testing new mods but other than that i never use any cheats.
And i had a suggestion to Pathos to add something like a small icon maybe under the clock in the top right corner that time is frozen
It doesn't change with zoom bc zoom applies at the very end of the draw
Sometimes I've started the day over but that was early days when I hadn't played through so many times
Now I just shrug, un-freeze time and continue the day
and i could even lend my hand and create the icon
I'm pretty sure this is already a feature, there's a time frozen popup on top left
Wait, no way
There is but I think something might be wrong with it
Yeah I worded that weirdly but I'm specifically looking for the width adjusted for zoom
It goes away now, fades out after a second
Let me just test and see if there actually is a popup]
I don't really get why you want it tbh
It's been a very unimportant to do on my list of things to see if I can fix and PR lol
Because as i mentioned before. Sometimes when i freeze time to test another mod i forgot to defrost it and i feel bad that i've been cheating through my gameplay
i hope you now understand
oh, okay!
If you have time frozen with CJB every time you warp the pop up will come back for a second
But it's in the top left so might not be immediately noticeable if you didn't know to look for it
Yes, i just checked and you are right. Im sorry that i didn't notice it before
Sorry was this directed at me?
Yea
What is purpose of obtaining zoom here
You don't want to draw in zoomed scale cus then u zoom twice
I'm trying to snap the cursor to the tile next to the player
And I need to know how much to add/subtract from the player's position for that
I also don't notice it usually and if I recall correctly it didn't used to fade out I think
If you know a better way to do that than tile size I am open to suggestions
The zoom values r in configs I think
Do you know how to get the tile size to begin with?
It's a constant 64
Thanks
Gives me a place to start looking :)
You will never see it used in the decompile bc it's a const
Makes sense
But hm is this something to fix the controller wackiness?
but still i think it would be a cool idea to add a tiny little icon that time is currently frozen in lets say this exact place (i made a demonstration very quick haha. it's an ice block)
What do you guys think? I would personally love something like that
This gets you the cursor tile
I think you can send in a PR if you want, but my opinion is unimportant because I only use cjb cheats on debugging saves
No, I'm trying to make a mod that adds keyboard support basically
Certain things behave weirdly when you have a cursor but aren't using it (especially placement of objects) so I'm trying to find a way to accomodate for that
Right yea it is similar problem then
It can't hurt to request it, Pathos is pretty busy so it's not something I would expect to see in any reasonable amount of time
I'm also personally unsure of Pathos's artistic capabilities 
Mine are bad which is why I would be sticking to those messages
I would probably just patch getters for cursor tile and grab tile rather than directly move mouse
Can you elaborate on that more? I'm not sure how to patch stuff, I'm still pretty new to modding lol
Use harmony to alter the return value of a method
A property getter in this case 
By changing the cursor tile/grab tile values you should be able to avoid a roundabout thing with moving the mouse
I see, I'm looking into harmony now
Hi !!
bro was tagged a potential spammer
Hi!
Like if you just have your keyboard send controller key presses and make game behave as if it was gamepad mode then u r half way done
The remaining work is deal with the analog stick stuff
That's judgy Discord
Pathos replied to my DM and i explained everything there and showed you my icon demonstration haha!
I'll be waiting for an answer
Tbh even just forcing gamepad mode in the game and adding a keybind to simulate clicking gets you most of the way there (aside from extra keybinds for convenience)
The only remaining thing left to handle is really just figuring out how to get the cursor out of the way
It's probably easier to do that outside of game
I'm not sure where I'd even get a gamepad emulator though
There's existing keyboard to gamepad stuff
I noticed something weird with my event code. Some of my events are supposed to add quests to the player's journal, while removing others. Problem is, some of my events seem to just not be doing that. I noticed that the second cutscene only removes the first quest if I've already read it, and never adds the new quest it's supposed to add.
content.json: https://smapi.io/json/content-patcher/c7371a7150d0482b9eb0639ce13153b7
SpiritWorld.json: https://smapi.io/json/content-patcher/71b3308595414532a60abe4cc993f68c
MonaArea.json: https://smapi.io/json/content-patcher/6e56afaec4704f63a6d35dc46f03fbdb
SpiritCave.json: https://smapi.io/json/content-patcher/469020af282d48c1bce74b88e3af3180
does your time of day not flash black-grey-black every second or so when CJB freezes time? (debug pausetime causes this; i assumed it was baked in whenever time is paused, e.g. in menus or dialogue)
Looks like with CJB it doesn't
wild
Might have something to do with there being like 36 "is time frozen" variables lying around
If you freeze and unfreeze time quickly, the pop-up in the top left actually gets removed before it has time to fade out, but if it fades out then when you unfreeze time it's already gone so nothing else happens to indicate time is resumed
Another reason I think the pop-up isn't working as originally intended
Well, there's also noises when you freeze and unfreeze but those feel like feedback that something has happened without indicating what
Hi so I tried working with Cross-Mod Compatibility Tokens (CMCT) - for my portrait mod, but I honestly don't know what to do. The examples give me nothing and I don't know sh*t about coding. qq any help?
I'm the Hector S&S case
I'm pretty sure something changed on CJB between 1.6.8 and 1.6.14 because I remember the Time Frozen notice staying put and it's only just started that.
I thought it was a feature though 
For the record, the HUD checks Game1.shouldTimePass() for this behavior.
The TimeSpeed mod seems to handle making that flash by setting Game1.paused = true; in the RenderingHud event and restoring it in RenderedHud. But I feel like just setting Game1.isTimePaused when pausing time, like the debug command does, would be the best way to handle things.
what are you trying to do with it?
I guess it is a feature lol
I have a dynamic token that scale up2 won't take
Hector is swapping gender based on that and I wanna make the portraits work with that mechanism
!json can you post your relevant jsons here with this website?
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
Spacecore can do high-res portraits and it uses content patcher format so your dynamic tokens should work (if it would work for a normal res portrait pack)
I wish SpaceCore did the entire set of portraits at once
I will when I'm home, but already did a few days ago on my PC account. And got scale up 2 recommended
Scale Up 2 also uses CP, so I would have assumed it would be fine with a dynamic token
just a heads up, but if you mean an actual separate discord account you use when you're on PC, that's not allowed in this server
But I don't have mine connected with my phone
im simply telling you the server rules
I'm glad most of the rules are just common sense stuff, because I cannot remember them all lol
this.. this is amazing to me
Big thank you to all of the people here who have helped me with stuff, if not for yall I would never have published anything ever
time to see if my reading comprehension has failed me and I've just been missing this config setting
Hm, not seeing it still
Hi,
sorry if this isn't the right place to write, but I'd like to ask why (using Visual Studio Code) I keep getting this schema code warning/error in the "Version" field (like in the included picture):
String does not match the pattern of "^(?>(?:0|[1-9]\d*)).(?>(?:0|[1-9]\d*))(?>(?:.(?:0|[1-9]\d*))?)(?:-(?:(?>[a-zA-Z0-9]+[-.]?)+))?$".
JSON file (please, ignore that update key error): https://smapi.io/json/manifest/606aff9eac6b4f72bb7d32252e4bbd59
one dot too many probably hmm that's the wiki example as well. it's probably harmless
VSC just likes to complain about that regex
If you put that schema into VS22 it doesn't complain
Not sure why VSC hates it
this was the log and https://smapi.io/json/content-patcher/0a1fff89d18c40c987191b206ea235ff an image of it
So I can ignore all these warnings?
Even if you were to set it as 1.0.0 it would still complain
it is somehow not, but i dont know how it works so...
Hm well there's no tokens here, but a little bit of backreading... is TrueShape a dynamic token from S&S?
yes
Did you use CMCT to steal it? Because dynamic tokens aren't usable outside their mod
how do i do that
Uhhh, I'm not very familiar with CMCT, gotta look at it again lol
{{Spiderbuttons.CMCT/Dynamic: DN.SnS, TrueShape}}
that what i found too but what do i do with this
(the unique id is DN.SnS)
i dont know how to write the json so pls help
This is a token you would use in place of the dynamic token
So basically what it does is just gets the value of TrueShape from S&S
so i replace the "trueshape" with this line?
Should do it, assuming I'm understanding it correctly. I don't really use CMCT currently
you cant target someone elses assets regardless
Oh is Hector using InternalAssetKey?
im unsure what the Platonymous.ScaleUp/Assets is meant for
in the first EditData
since ive never used scale up 2
It's a custom data asset added by Scale Up 2
just took it out of the example
oh i see, i was missing the original json and only looking at the smapi link
(also no internal asset keys are fine, i meant target for editing. internal assets are read-only)
also yes rokugin understands CMCT correctly so follow their correction
(i'm very much responsible for like half the S&S cast not using internal asset keys, so no, Hector is not using internal asset keys)
I appreciate this, I always have to do a big sigh when helping people deal with InternalAssetKey's
I have discovered the reason I can't find this config setting, it's only on the develop branch 
for what, CJBCheats?
this one, that is
i dont know what that is
Sorry, it's the config setting for if the message should fade
i dont know what mod that is for*
i only sparsely backread the convo having woken up only a short bit ago
i will test and see
but i was just gonna say i think pathos does like everything on develop
Yeah, I defaulted to switching to develop but I'm still using the regular release of CJB Cheats lol
develop is the primary tho
Been testing for too long, +2 speed feels slow lmao
Hi folks, hoping someone may be able to help me with some guidance. I am updating my C# mod allowing the player to rent tools from Clint, which involves creating, in code, a new version of a tool being upgraded one upgrade level lower (basically, what the player just handed over to be upgraded). My code is working perfectly for all the regular tools except the Pan. For some reason, my code to get a new Pan, regardless of the upgrade level, only ever creates a Copper Pan. Anyone have any thoughts on how to resolve this? If you want to take a look at the code, my mod is open source, located here: https://github.com/chronohart/RentedToolsRefresh
[Content Patcher] Can't apply image patch "Hector > EditImage Portraits/Hector" to Portraits/Hector: target area (X:0, Y:0, Width:512, Height:7679) extends past the right edge of the image (Width:128), which isn't allowed. Patches can only extend the tilesheet downwards. - how do i know how to set the scaling right? the format is usable in portraiture, and i made sure i use a scale that should work as hd portrait
I suspect the issue is connected to the fact the Pan's lowest level is Copper, while "Copper" is the second level for every other tool. I also suspect the upgrade system for the Pan may be hacked together in the standard code, but I don't know how to see any of that, if there's even a way to.
!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
Ohhh, thanks. That should be a big help!
You need to remove the EditImage and Load
Or actually, the Load is probably fine
It's just going to get overwritten anyways
Though realistically it's not necessary for an NPC that already has a portrait
I'm doing a Load to the Traveler for my Scale Up 2 example but that's because she doesn't normally have a portrait
i just wanna make a portrait mod that respects the mechanics qq
im not getting any errors in smapi anymore, but the portraits are not showing still
does scale up 2 collide with portraiture?
Oh I meant for the EditData
I didn't see a Priority on your Load
And you don't even need the Load
Or maybe you do, one sec
i currently have spring portraits and beach portraits
Oh, I think you should be Loading them into some like placeholder asset basically
I got away with Loading directly to Portraits because the Traveler doesn't normally have a portrait
It's possible it'll still work fine, but you're competing with any other mods that Load that asset
Does your mod have S&S set as a dependency?
yes
Okay, Load order should be fine then
For the example I made I didn't even use Priority anywhere, so maybe try without and see if just relying on dependency load order is enough
so action load without prio?
Action and the EditData
You'll need to Load the beach portrait and also add an entry for it in the EditData
But you can do that once you've determined the order works
so not the "EditImage" for beach portraits? instead i insert "load"?
EditImage won't work because of the HD nature of your images
Technically Load would normally not work right either but Scale Up 2 shenanigans
so i deleted the prio and changed into load, but still nothing, if it would work would it change the HDP images?
It should effect every Portraiture setting as it's an override after the fact
https://smapi.io/json/content-patcher/df60b8e041b5482d8fedf88a5cf2f255 this is what i've got now and still not doing anything
im a bit busy atm to help actively, but as you have it now leads to two exclusive loads, doesnt it?
Yeah, this should be complaining in the log
For now I would remove the beach stuff, you should focus on getting the regular portraits to work first
removing the beach stuff did nothing
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.
Log Info: SMAPI 4.1.7 with SDV 1.6.14 build 24317 on Microsoft Windows 11 Home, with 46 C# mods and 116 content packs.
Suggested fixes: One or more mods are out of date, consider updating them
I see, Hector isn't loaded to just Portraits/Hector
Looks like it's Portraits/spring_Hector and so on for each season
When making changes that affect another mod, it's important to crack that mod open to see how the other author has done things as your Target's need to be very exact
i tried that... but struggle without further knowledge tbh
i look at it and read stuff but my head is just "??"
Yeah, trying to start with a big mod like S&S is rough too
Have you asked the author about their setup?
they might be able to shed some light on how the setup works
Destynova hangs out in the east scarp server
i didnt want to bother them with this more than necessary tbh
i simply dont understand coding language
i just thought it would be so nice to make this work with the mechanics hector has, but idk this is messing with me so hard
ES and S&S will be my next playthrough, currently I just don't have enough context to be able to help further at this point
(That's not how seasonals are usually loaded, is it?)
No but it's using the Appearance system
So the regular portrait is just getting overriden all the time
I followed some advice for creating events in a custom area, but the event I have set up isn't working and no error appears in the console. Is there anything obvious I did wrong? I can confirm the trigger works & RorysCamp is blank except for two brackets.
"Action": "Load",
"Target": "Data/Events/Charlie.Underpressure_LobbyRoom",
"FromFile": "assets/RorysCamp.json"
},
{
"Action": "EditData",
"Target": "Data/Events/Charlie.Underpressure_LobbyRoom",
"Entries": {
"{{ModId}}_201/HasItem {{ModId}}_EarthRing": "none/8 9/farmer 10 15 0 {{ModId}}_Dobson 10 15 2/skippable/addConversationTopic cc_Begin/showFrame {{ModId}}_Dobson 1/move farmer -2 -3 0/pause 1000/speak {{ModId}}_Dobson \"Oh good, you made it.\"/pause 800/end warpOut"
}
}```
Edit: Added the content of the event
https://stardewvalleywiki.com/Modding:Event_data#Basic_format
I don't do event scripting but the thing that immediately jumps out to me is that you don't have the first three required commands
I do have them, I just cut it out of the block above for space
Any time you have quotes inside quotes you need to escape \ them
Either that or make use of the single quotes and double quotes
!json uploading your json is generally easier than pasting to Discord
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
that was a typo when I copied and pasted here. Now it looks like how its implemented.
will do
Oh, your location is Charlie.Underpressure_LobbyRoom but you used {{ModId}}_Charlie.Underpressure_LobbyRoom, assuming your ModId is Charlie.Underpressure then the location you loaded a blank to and edited would be Charlie.Underpressure_Charlie.Underpressure_LobbyRoom
ah
hey im sorry if im not supposed to be asking this here but what do u all use to make mods? im new to modding lol
!software
Here's a list of software for pixel art and JSON text editors we recommend: https://gist.github.com/ishanjalan/c8efb21afa21f74a052293176db107f7
For making SMAPI (C#) mods, see the Requirements section here for which IDE to install https://stardewvalleywiki.com/Modding:Modder_Guide/Get_Started#Get_started.
!startmodding for an overall getting started guide
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.
oh ty!!
depends on what kind of mod you want to make, but in most cases you only need a text editor, and perhaps a pixel art software
i want to add an npc (two actually) to the game. might require editing/adding maps since they need a place to live lol
!npc we have guides for that too!
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.
-
Aviroen has put together a template that will allow you to easily create a romanceable NPC.
-
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!
ty!!!
i got this warning on SMAPI 4.1.7 android
[13:52:36 WARN SpaceCore] GetLoadEnumeratorMethods: Found 5 transpiler targets, expected 4
[13:52:36 TRACE SpaceCore] <getLoadEnumerator>b__4 Void <getLoadEnumerator>b__4()
[13:52:36 TRACE SpaceCore] <getLoadEnumerator>b__1 Void <getLoadEnumerator>b__1()
i see it have new '<getLoadEnumerator>b__4 Void <getLoadEnumerator>b__4()'
what is mean? how can i find code about that '<getLoadEnumerator>b__4()'
on pc it don't have '<getLoadEnumerator>b__4()'
Log Info: SMAPI 4.1.7.7 with SDV 1.6.14.11 build 24341 on Android Unix 33.0.0.0, with 9 C# mods and 3 content packs.
It's a benign warning though I thought it was fixed already
Basically a transpiler is looking to patch some enumerators in a method, it expects to find 4, a 5th was introduced during some patch of the game, so it patched all 5 but warns just in case
If you want to find the <getLoadEnumerator>b4() you need to decompile the game into IL, ideally do this from the android build
I need a little help with the final quest in the mod I'm working on.
Here's content.json: https://smapi.io/json/content-patcher/f27d2c2446d94993b905a66983d4de7d
Here's MonaArea.json: https://smapi.io/json/content-patcher/539a5423944441ef85ace8f33ff6c175
The quest in question is {{ModId}}_134, which requires the player to obtain 25 of an item called Spirit Ore. Once the player has the right amount of ore, once they return to a previous area, it should trigger the ending cutscene of the mod's story. To do this, I added some reaction text that should send a mail flag that triggers the cutscene. As it's coded right now, will it work properly?
i think it should work but you can use {{ModId}}_SpiritOre for your item if you want
same with the event ids, they dont have to be numbers
and please avoid CustomLocations
So, as an ItemHarvest quest, it will be marked as complete as soon as the player gets 25 Spirit Ore, and the mail will be added? Itβs the latter part that concerns me the most.
Okay.
i double checked and naw u actually need it like this
AddMail Current {{ModId}}_Trigger_Mona_Rescued Now
trying to confirm where on quests does it run actions
Thank you.
did you intend to talk to mona for quest complete?
No. My intention is for the quest to be complete as soon as the player hits 25 Spirit Ore.
wouldn't work then, make a special order instead?
Okay, although I guess I could have the player talk to Mona to complete the quest.
Hi, Im creating a replacement of the fairy box trinket using content patcher, and I dont know how to make it so that users can use GMCM to change the color of the png. is there any tutorial for that somewhere?
I tried modding a map, how does the game decide if you can walk over a tile?
Like here you can walk over the bridge on the buildings layer. You can't walk over the water above it, but you can on the water below
they are both on back layer.
you can follow that guide to add a config option for the users, and then load different PNGs depending on the config selected
take a look at elle's trinkets for example
[[modding:maps]]
there's 3 collision things
- all tiles on Buildings are impassable
- all tiles on Back with Passable <anyvalue> is impassable
- all tiles on Buildings with Passable <anyvalue> is passable
if u want to make a bridge like that, make a layer called Back1 and put bridge tiles there
i need help plz
Ty
apparently you can set it up with tile properties but there aren't any near the bridge, and you can still walk over it
!mh
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).
Iβm private about my code but Iβm taking a break from it..
i not good at reading stuff it my 1st time moding
this aint the help channels pls go make a post in tech support
Nvm
my roulette mod is proving to be annoying itβs supposed to cash out x2 on even days and x1 on odd but something in my code paying out the second reward as stone like if you put in a Prismatic shard and win youβre supposed to get out a second PS or if you put in a diamond you get out a diamond and stone
@solid beacon You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!
Hello! I am back to working on this if I could please have some help
I posted some previous comments yesterday about it, but basically I am trying to resolve a furniture shifting issue when upgrading the Medieval Tiny Shed to Tardis and Tardis Plus upgrades. It's a custom CP building with 1.6+. I have been using the IndoorItemMoves option, but it seems to be wonky. 
I have tried to move all the items as a whole, I have tried moving the wall items separately from the floor items, I have tried column by column, row by row, and individually each tile as well, but it seems to throw the items in random places and is not consistent. I am not sure if I am doing something wrong or if this is a bug???
incoming photos and code:
This is the shed before upgrades, to show the furniture/objects:
https://i.imgur.com/58PKjNe.png
This is what it looks like after upgrade without any code change, which is what I am trying to fix, to center the items basically (I changed a few furniture items since to make it easier to figure out what was moving where):
This is what it looks like if I move each item individually and this is the code:
bruh, you need a formula for the item moving not manual coding for each coordinate
I tried that, this was the suggestion
I'll show you what happens when I do it as a whole
just a sec
shyzie, would it be possible to edit your .tmx and move your small shed to the right so the coordinates on the doors for the small and the big align (and presumably the items, which didn't move, would be centered?)
It would, but for the Tardis Plus it would be a problem because the wall is so far back, if someone is using a zoomed out interface or larger monitor it would look strange to not have the entrance flush at the bottom
So if I try to do the wall items and floor items separately, but as a block this happens:
https://i.imgur.com/FusBKmX.png
``` "IndoorItemMoves": [
{ "Source": { "X": 1, "Y": 1 }, "Destination": { "X": 4, "Y": 1 }, "Size": { "X": 7, "Y": 2, } },
{ "Source": { "X": 1, "Y": 3 }, "Destination": { "X": 4, "Y": 4 }, "Size": { "X": 7, "Y": 2, } },
{ "Source": { "X": 1, "Y": 6 }, "Destination": { "X": 4, "Y": 7 }, "Size": { "X": 7, "Y": 9, } },
],```
If I do it as a whole entirely it's even worse
I need ideas for fake flavor names for my Mods Soda Brand, Valley Mist. THeres the Mtn Dew Basic, a strawberry/watermelon, a sparkling lemonade and a root beer. Anyone have ideas for names?
should they be real existing sodas or just sound like sodas?
You could do Dr Harvey instead of Dr Pepper
the second one. Valley mist is Basically Mtn Dew
ive never even heard of cheerwine before
i dont know what atra means bc the name is entirely 100% new to me. never in a million years woulda named it when thinking of sodas
make Barqs but its spelled Barks and has a stardew tree on the can
Ginger Island Ale?
Golmorran Punch
Oh that works for the red one
Gotero or somethign?
gotoro
thats the one
Gotoro Ale for the Rootbeer could work
i dont know if ive ever not gotten it confused the first try with the golmore jungle from final fantasy
eulmore 
This is what they look like for reference
SD Cola
Cute!
Thanks
some initials to imitate A&W for the root beer maybe?
you should compete with joja by introducing jojo soda
sparkling lemonade could always be 8up or something lol
Junimo Punch for the red one? And maybe GInger Island-ade for the yellow?
how do i make npc visit island
Hai! Does anyone know a way to turn a png into a portrait or somewhere where I can look into it? I had a 1.5 portrait for one of the characters and the 1.6 winter outfit for that character was its own separate file
Oasis Spring Breeze for the green one?
or Slime Breeze lol
get lucky with canvisitisland and be one of the 5 chosen, but also not be married
The green one is the baseline "Valley Mist"
update GIMA so you can set forced visits 
This is what happens when I move the furniture/objects as a whole:
https://i.imgur.com/TREJb6k.png
{ "Source": { "X": 1, "Y": 1 }, "Destination": { "X": 4, "Y": 1 }, "Size": { "X": 7, "Y": 14, } },
],```
alternatively: 0 schedule
why you ban marnie from island
did she bring a cow and it pooed all over the resort
no im exiling her like napoleon
Oasis Root Beer then for the brown one maybe?
cow pooed on every single entrance to farm, i now exile their maker - chue 2024
THat works π
time to find out what makes wall decor light up because I can't seem to change it using the same code that makes anything else light up
and then I just need to make sure my changes persist between game loads haha
You're losing half the furnishings with that?
or is just the coords wrong?
oh I get it 4 vases are moved 3 and the rest are moved 6?
Kind of, it's so random I don't even know how to describe it, like the 2 hanging plants on the wall stay where they are, the 2 plants on the left move properly but the lamps around them don't, and neither does anything else
It would look like this before moving the furniture:
Although I changed the appearance of some of the furniture since that screenshot to help differentiate what moved
how about doing the move command twice? first time for everything else to the right spot, a second for just the vases since I think there's no overlap on the move
Well the problem is that this is supposed to work for every user regardless of the furniture
So if they have like a 2x2 wall item, or a 4x4 furniture, or mayo machines or whatever
can't do a loop to move each furnishing to x+3 either?
This is what happens when I try to move it X+3 over
if that's what you mean
I meant individually for each furnishing
When I tried to move each item tile by tile this happened:
They still ended up wherever randomly
somehow junimos don't seem like something that'd be commercialised. now when i think of Punch, i imagine Pierre's impressive left hook 
Pelican Punch?
@ivory plume CJB Cheats Menu used to have a method for launching the menu prior to this merge: https://github.com/CJBok/SDV-Mods/commit/c837fcdf941975f89b35f486e90dbcca80d54d94
I was wondering if the method could be brought back as that's how Toolbar Icons launches CJB Cheats Menu via reflection?
Alternatively, CJB Cheats could expose an API for launching the menu or it could use Toolbar Icons API to add the button itself. Toolbar Icons isn't very popular, but it tries to make mod/vanilla function more accessible to players by giving players options other than hotkeys to access them.
(remind me in 8 hours to dl toolbar icons
)
Gosh darn it, fine, bblueberry (#6423035) (8h | <t:1734426929>)
Sure, I'd be fine (re)adding a method to do it, if you wanted to submit a PR for that. (I'd be fine with an API too, but that would take longer to polish an API design.)
I'm working on ChroniclerCherry's mods, then I'll be doing an update wave when those are ready.
Is there a way to edit every single characterβs disposition at once and not have to list every single character?
need C#
Oh then maybe not
does anyone know why the npcs keep duping?
Still having this issue.
Do you by chance have 0 schedules in use?
how do you guys troubleshoot why a harmony patch isn't running? I'm trying to attach a postfix to a constructor and it isn't running when it should
I tried to use logging but it's just not running so nothing is being logged, and I'm not sure how to debug harmony patches
On the patch, add the annotation [harmonydebug]
thanks, will try
wuh, the event page is so different 
I dont think so no
well not in my mod
oh yeah event data looks saucy now
big fan of the verbose and invertable preconditions
Sorry for prodding again, but I've tried everything I can think of to get an event working in a custom location without much success. Anyone see anything wrong (line 279, the trigger works with other events)?
(change your JSON format on that page from None to ContentPatcher, it shows you have a typo Fromfile -> FromFile at line 101: https://smapi.io/json/content-patcher/dbece390a20c404ca194c622cffc2a26#L98)
try again after fixing that typo, it may be related
Its working now. Thanks.
...Do I need to make an NPC for the lobby/entrance of the apartment complex? The ground floor area, I mean.
Like for an office?
For my latest mod side-tracking
not necessarily, plenty of places in SDV just use a tile + tiledata action instead of an NPC
I think it'd be a little jarring to walk straight into the building and just have a hallway and rooms, so I'm wondering if I need an entrance area with a gym and such.
And if I need an NPC for that in terms of having something with a sprite and dialogue.
If you have like a leasing office, yes but they should always be unavailable
For realism
ideally a hotel should have at least a little lobby. i'd imagine something like the department store in the old pokemon games
Yeah, I was thinking the ground floor would house the 'common' areas
So a sitting area, a gym, etc.
I could still have a 'front desk' but maybe instead of having a person there and having to draw up a character, I can get away with just a note on the desk. >_>
(if someone eventually decides to add NPCs to the lobby area as well as the planned rooms I would not mind in the slightest)
"Out for lunch" *it's covered in a THICK layer of dust*
honestly just do a tile similar to the traveling cart lady, adds some life to the scene without much effort
That still needs a sprite though
well most things do haha
And my brain is resisting hard at the thought of doing more custom art
Because the Zelda mod is still ongoing for that
This is my "let's not look at the art right now" mod break xD
Just recolor someone from that mod
put a kot in there
I think Pauline's the only character I could get away with reusing, LOL
Everybody else is way too distinctive
even with a possible recolor
really you can drop anything in there for now, put in the jojamart cashier if you like. you can always come back to things after you've dropped in placeholders
trying to 100% everything as you go is just a waste of time
plan, place, proof, polish, in that order
Is there a way to give the player a specific item as part of an event? The only options I've seen have been restricted to prizes and weapons.
Yes. There should be a new command
AddItem I think but don't quote me
1.6 migration page should have kt
You can be a hero and edit the wiki
hey i only had a certain amount of time and preconditions was all i could do in that time
I would say something about being busy but for once that would be a lie; I'm just testing out and trimming some hair extensions
Need to test if a phone call edit goes well. There's no way to force a specific phone call to happen, is there...
i don't know one, but i suspect it would be easy to set up a console command for it
East scarpe c# has a console command to force a phone call
I can add phone calls to events tester but you're waiting for after Xmas for that one
Oh, I'd really appreciate that! There's no hurry on my end.
What's the difference between KeybindList and InputButton[]?
(Asking because I've been using KeybindList but the game seems to use InputButton[], and I want to override some of the game's settings for user convenience but I want to double-check there's no problem with putting the equivalent options in my config as InputButton[] variables so I can map them more or less directly)
KeybindList is a smapi construct
im not sure if you can store InputButton[] in configs, could try
otherwise just make conversion
I have determined that you can store an inputbutton in the configs but that it's much easier to store the keys directly and convert into input buttons that way
With the main drawback that there's no difference displayed to the user between keybinds (can store multiple keys) and keys (cannot)
you could store KeybindList and just make getter for equiv InputButton
does anyone know why this would have activated in the town map instead of the beach?
the boat tunnel event also activated upon entering the town on spring 2
how would I make it so a special order is only available after the final house upgrade?
Add PLAYER_FARMHOUSE_UPGRADE to Condition
special order entries have a Condition field that accepts GSQs (elaborating since it's not documented on either the migration page or the SO page yet)
OK, so that's separate from "RequiredTags" then
Let me know if anything looks amiss there thanks for your help
ah whoops I should have clarified, you need more params after PLAYER_FARMHOUSE_UPGRADE
Guys I previously made a Boomerang mod, I didn't have to f around much with the melee animations because I reused the sword's swinging animation for melee and created a custom projectile animation for the throw. But what if I want to add a new melee class? How would I go about adding that
yeah looks good
technically you may not want the last 3, but I'm unaware of any mod that adds a new farmhouse level
gotcha
I suppose you can make a new class that inherits from MeleeWeapon with your logic, and:
- Patch
WeaponDataDefinition.CreateItemso it makes your class instead ofMeleeWeaponif it detects your custom item ID - Register your class with SpaceCore's save serializer so the game doesn't blow up when it tries to save your custom class
or you can just harmony patch every relevant function in MeleeWeapon to run your own code if it detects a relevant item ID. this is probably simpler
or maybe add a new class that inherits Tool which more or less re invents the MeleeWeapon logic?
you could do that, but then you risk being an exception to any rule that expects a typeof MeleeWeapon
among other issues
sometimes there's no good solution to an issue
welp it kinda feels wrong patching such a big class, but im not sure how good SMAPI/Harmony copes with it if another mod also applies patches to it
wait so if the game expects typeof MeleeWeapon at some places wouldn't that also break if a new class is created that inherits MeleeWeapon?
depends what it's trying to do. i'm thinking of things like if Game1.ActiveItem is Tool tool and not MeleeWeapon then tool.DoAction()
which is entirely fictional ofc, but there's parts of the game that may care
tools have a lot of hardcoded bullshit
a class that inherits MeleeWeapon will also pass is MeleeWeapon checks
that's how inheritance works
si but is it now using typeof or is
i really meant is when using typeof, be grateful i didn't write instanceof
but yes, typeof(MeleeWeapon) will fail for any T : MeleeWeapon
(I sincerely hope there are no code in existence that checks for a base class exactly)
would be neat if ILSpy had a way to search for code in every class. Or if I had everything as a C# file to sift through it
you can export code with ILSpy
in bulk?
ohhh I found out how
you can also export it as a solution to open in an IDE like rider, which is what I have
just had to select this thingy, rather than a namespace/something from a namespace
(ILSpy can search across every class)
I meant like search for typeof so it searches through every class and what not that uses it in its code
like dis
wont do only typeof, but all the typeof will be in there
This also is somewhat better bc turns out if I use PowerShell to search for typeof and pipe the output to typeof.txt it will explode since it constantly finds typeof in typeof.txt, first time I saw a text file reaching 1.2GB in size π
haven't had a big file until notepad.exe just nopes out saying its too big
classic notepad experience. I liked it sometimes more than Notepad++ since I didn't had to manage tabs. But now notepad on Win11 comes with tabs and its somewhat even more annoying than Notepad++
Hii, I was trying to edit the Berry Woods mod on Nexus to be able to warp directly from your farm. The warp from farm to berry woods works, but when I try going back SMAPI gives me an error
[game] Warp to Farm_Foraging failed: location wasn't found or couldn't be loaded.
the "map" name is Farm_Foraging, but the location is still called Farm
oh 
That worked ty 
hey this is more of a nexus question rather than a modding question but I thought someone here might know... some people made translations for my mod and uploaded them to nexus, but not all of them are showing up on my nexus modpage...There's a chinese translation and a korean one, but the Korean one isn't showing up on my modpage? How can I fix that?
It's on the other mod's page, they need to put your mod as a dependency
Also, Iβve dealt with translations before and rule of thumb for me is to just upload the i18n with the mod as dependency.
Hello! I have a question about modifying marriage dialogue. Using the string "Rainy_Night_<random>" as the example, according to the modding:dialogue section in the wiki, "<random> is a number between 0β5 inclusively, each of which has an equal chance of being randomly chosen.". Does this mean that 0-5 variations of the dialogue is the hard limit? e.g. even if there is dialogue assigned for 'Rainy_Night_6' (or upwards), it won't show up in game?
I'm 95% sure the answer is 'no, it won't show up' but just wanted to double check.
You can go beyond 6
Just set your randomization beyond 5 if you wanna go beyond the limit
Are you using i18n?
Oh, amazing?! That's great to know, thank you. Okay now I need to figure out randomisation lol
If you havenβt set up i18n, Iβd recommend incorporating that. That way, itβs easier for your translators too (present or future)
Yup, lol, I used to limit my dialogue to 5 so you can def set it to that limit if you cba, but if you wanna add more, you can go beyond with randomization tokens
Yes I'll be using i18n! Another stupid question (sorry); when I look at the OG marriage dialogue files, I can't see the randomisation code included there. Is it somewhere else/am I being dumb?
(This is more out of curiosity since the wiki implies the dialogue is randomised inherently)
the game itself only supports rainy_day_ 0 through 4; the Random and i18n are Content Patcher features you can use to work around that limitation, in this case
This is both excellent news and utterly terrifying lol. The dialogue will be unstoppable!
Yup, what Esca said. CP is powerful haha
{{Random:{{Range:0,4}}}}gets replaced with a random number from 0 to 4 each time your CP edit gets updated (daily by default), and you can make that number as high as you want{{i18n:your_key_here}}loads translation-compatible text from somewhere else in your CP pack, where you can have as many lines as you want
!anyonecancook I know it will, good luck! 
!god (but make it CP)
so basically, the game will keep using rainy_day_0 through 4, but you can just replace all those lines with infinite random lines
OH I seeeee. This makes sense. How cool. Thank you so much!!
Avi lurksβ’οΈ
i recognize my own handiwork 
(Avi taught me abt the randomization bit, helped me a lot when I wanted to expand more on my dialogue)
alternatively if you need a visualization of what each of those randomized keys even look like: https://stardewmodding.wiki.gg/wiki/Npc_template#"I_don't_want_all_of_that_fancy_stuff,_I_want_just_seasonal_and_weekday_dialogue!"
@brave fable: dl toolbar icons
) (8h ago)
The lobby's not great looking yet, but functionally, the only piece left to do for the Custom NPC Apartments mod is to set up the exterior warp (and maybe build an exterior if I can find the motivation to create building art)
Where are these apartments going to be located?
ok i'm in love with toolbar icons. where has this been all my life
I didn't just spend like 3 hours drawing sleeves on the big muscley arm mod so I could use it with fashion sense, definitely not π€‘
This is the male farmer de-twinkified + farmer height variety + muscular farmer body all working together now
transpiler works. i hate it π₯³
can turn off journal btn, datetime boxes, sundial, and cashometer. incredible
that's amazing
He's so buff now lol
Hello everyone! As you may have read in the November update, we're working hard in the background to battle an increase in both spam and malicious mods being uploaded to the website. We've been looking into the patterns used by bad actors and how we can best combat them. One trend we've seen freq...
Interesting
Good change honestly
Are malicious mods thar common?
seems like they must be. maybe more common for other games?
verified mod author seems like a low bar to clear, but maybe the bad actors are making burner accounts or something so it may be effective
Huh
I would say something about not seeing malicious mods but I see zero mods these days
It's probably less of an issue for sdv than it is for other games, yeah
Yeah
Cobalt Core modding on Nexus has been a thing for almost a year now, and I think I have like 400 unique DLs on the mod loader
That STILL wouldnβt get me the verified mod author
Hm 575 actually
Point still stands
out of curiosity, i went to check my page, and...?? when did i get this many
that number is a bit of a mystery. it seems to update slowly, in big chunks
From what I hear Nexus is seeing a lot of malware-disguised-as-mods, but I imagine they're all targeting the pew pew shooty or shwing shwing stabby games.
people involved in stardew modding are too chill ig lol
Time to balance the scales and release malware disguised as a sdv mod /j
mod disguised as malware
if you just go to the nexusmods landing page and check the matrix of top games it's very funny. all grimdark swords and guns and then stardew and its bright colors
i guess cyberpunk is grimbright. my mistake
good ol stardew chilling inbetween
sigh, i wanna work on mod but i am.. tired. so maybe next week
Could someone please help me with the coding for my modπ₯Ί ? I've used Scale Up 2 before, and one of my previous mods that uses it works perfectly. However, when I try to load a portrait for my current mod, it just shows a blank portrait. I can't figure out what the issue isπ . I already asked for help in the Modded Tech Support, but my request got buried pretty quickly.
!json
JSON is a standard format for machine-readable text files that's used by Stardew Valley mods.
If you need help with a JSON file, you can upload it to smapi.io/json to see automatic validation and share the link here.
When making mods, it's recommended to edit your files in a text editor with JSON support, such as VS Code, Notepad++, or Sublime Text. These programs will check for syntax errors.
i tried that already but the validation gives nothing
well just so we can read it
@pastel aurora Hi PlatinumCats! Do you mind if I shoot you a quick DM about a permissions question?
hey friends,
looking into a reported shop bug where lavril adds a ring to hat mouse's shop and it does not honor a price cap i am setting at the stardew valley fair.
the ring seems to be added via custom companions, but i can't find how that mod is adding it to the shop. does anyone know how it works?
(also, if anyone knows offhand the requirements for the ring to be available to purchase, that would be helpful too!)
here are some relevant json snippets: https://smapi.io/json/none/32a2f110a66c4d68b9f712ae7828233e (please ignore the validation errors)
What is "Qi" type of mine? Is that Skull Cavern?
?
I'm working on a custom ore node spawning section. I'm setting up where the nodes spawn. I've figured out "Normal" is the regular mines, but not "Qi".
dangerous mines, probably
So Skull Cavern?
dangerous mines is from the qi walnut room thing
no, the qi quest that makes the mines more dangerous
Oh!
adds spiders, squids, forest floors, etc.
it looks like it's just 1000 total unique downloads, right? that seems pretty low for stardew mods from what I've been seeing in my literal just two days of publishing mods lol. I've got over 200 already (this community is WAY more active than I realised! it's fun)
yep, 1000 total gets you verified status
time to write some more mods then lol
Is there a difference between spawn chance and spawn frequency?
Yeah we are the sixth largest community on Nexus 
a tiny bit off topic, but for a while I thought those of you with 1k+ mods in your username meant you wrote that many mods, and honestly I'm still not sure if you wrote that many or use that many but either way I'm impressed and a bit scared



