#making-mods-general

1 messages Β· Page 138 of 1

uncut viper
#

do event scripts support tokenizable strings in their command parsing?

velvet narwhal
#

yeah

uncut viper
#

not in dialogue but iun the commands

#

hmmm

velvet narwhal
#

airyn's crazy marriage thing proves dynamic tokens would work there KEK

uncut viper
#

i mean tokenizable strings not tokens

#

like [LocalizedText]

velvet narwhal
#

i mean it does it for weddings, so, i pray it would?

uncut viper
#

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

lucid mulch
#

events run the TokenParser, then splits by / to do events

uncut viper
#

good and important to know

lucid mulch
#

Gender switch blocks -> token parser -> split by /

uncut viper
#

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

velvet narwhal
#

ah true

lucid mulch
#

Depends if they are an actor in the event or not iirc

velvet narwhal
#

i'd prrrrrrrobably check their location in the real world, shove that into the tokenized?

uncut viper
#

id assume they are since this would be after gifting them, so i guess that makes that silly BETAS idea not work then

lucid mulch
#

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

faint ingot
#

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

uncut viper
#

the BETAS tokens just do getCharaceterByName or whatever and returen their positions so if that grabbed the event actor instead it wouldnt do well

velvet narwhal
#

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

uncut viper
#

dont quote me on this but i think putting NPCPassable on a tile at all makes it impassable

velvet narwhal
#

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

uncut viper
#

wait no i have it backwards

#

but i dont think it checks for T or F

rancid temple
#

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

uncut viper
velvet narwhal
#

y'know i think it'll just be easier if i code my own "put hats on npcs"

#

solves all problems

rancid temple
#

There was an issue with the timing on when I made the tile passable and the way schedules are chosen

uncut viper
#

with C# though you can craft up an event script on demand and start it as an event

rancid temple
#

The day I loaded a save NPCPassable wouldn't work, but if I slept and kept playing, then NPCPassable would work the next day

uncut viper
#

was the NPCPassable propertyu in the tmx itself

faint ingot
#

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

rancid temple
#

Can't remember, that was a while ago now

faint ingot
#

for mine it's in the tmx

uncut viper
#

do you have any other properties on that tile

faint ingot
#

Nope that's the only thing special about it

#

occasionally I remove the tile for a couple hours though

uncut viper
#

then ive got nothing tbh i dont know anything about pathing and little about maps

faint ingot
#

OK no worries thank you

uncut viper
#

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

rancid temple
#

Though, what happens to data on a tile when you remove the tile?

uncut viper
#

i imagine it gets wiped until the map is reloaded in some form

#

no tile, no tile properties

faint ingot
#

The tile removal is a red herring as far as my schedule question, because I only remove it between 3 and 5pm

rancid temple
#

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

velvet narwhal
#

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

faint ingot
#

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

velvet narwhal
#

unless Back not existing forces NPCs to think that there's "walls" there

faint ingot
#

I only nuke the building layer

#

basically to let the player pass through during the prison visiting hours

velvet narwhal
#

is it not at a door specific angle?

rancid temple
#

Can you show a screenshot of the tile property?

faint ingot
velvet narwhal
#

cause you can probably get around it with the door action, conditionally patch the doors to look like what you've got

rancid temple
#

And the layers list?

velvet narwhal
#

is that spot above the door a red herring as well?

#

or is that a building layer

faint ingot
rancid temple
#

And that data is on the Buildings object layer?

faint ingot
#
            "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"
        },```
buoyant zenith
#

hi chat

faint ingot
#

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

buoyant zenith
#

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

uncut viper
#

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

buoyant zenith
#

yeah Frieren3

rancid temple
#

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

faint ingot
#

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:

buoyant zenith
#

mhm. I had the required tilesheets loading but since they were from a mod had a few missing

#

Ty AgirComfy

faint ingot
#

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)

latent mauve
#

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#? >_>

uncut viper
#

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

latent mauve
#

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

uncut viper
#

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

latent mauve
#

Right

uncut viper
#

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

latent mauve
#

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

uncut viper
#

that would not be possible within CP, and wouldnt even really be feasible in C# either

latent mauve
#

ah, I see

#

I wasn't sure where the line for C# was as far as what it can do

uncut viper
#

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

latent mauve
#

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

uncut viper
#

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

velvet narwhal
#

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?

latent mauve
#

That seems more reasonable.

#

and less of a headache

uncut viper
#

(also i just brought up the token thing because you mentioned setting a dynamic token for other mods to use)

latent mauve
#

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

uncut viper
#

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 SDVpuffersquee

latent mauve
#

fair enough

velvet narwhal
#

is true, i don't remember if people remember the highly specialized features of BETAS so i peddle it as much as possible meow_awauu

uncut viper
#

my memory is depressingly bad enough that sometimes not even i remember everything in BETAS

latent mauve
#

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

velvet narwhal
#

i mean it's also nice to be like, "there's a framework for that" without having to worry about writing the c# yourself

latent mauve
#

C# scares me, I will avoid it as long as I can

velvet narwhal
#

unless you want to write the c# yourself, i'm not gonna- KEK

#

--not gonna disparage anyone from staying away from c#, cause it is a gateway drug

uncut viper
#

i dont even wanna use my stuff as dependencies for my own mods if i can avoid it

velvet narwhal
#

vanilla is definitely Just Easierℒ️ because contentpatcher is the footing for most other mods

latent mauve
#

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?

velvet narwhal
#

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

latent mauve
#

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

unique sigil
#

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

latent mauve
#

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?

velvet narwhal
#

(that's vanilla's coord so it shouldn't matter? but we're going scorched earth approach to see what happens KEK )

latent mauve
#

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

velvet narwhal
#

when in doubt, set a bunch of conditionals and scorch earth

unique sigil
frosty bobcat
#

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)

uncut viper
#

that NPC creator is not updated for 1.6

#

last i checked anyway

frosty bobcat
#

i mean yeah but i suppose some parts could be moved around

uncut viper
#

NPC data changed significantly in 1.6

frosty bobcat
#

crap

rancid temple
#

Lol, moved around, like completely rewritten

velvet narwhal
#

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

uncut viper
#

yeah, its not a simple moving around

frosty bobcat
#

dang

velvet narwhal
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

rancid temple
#

It might spit out the old format

uncut viper
#

its c ompletely incompatible if you want to use modern content patcher versions and features

frosty bobcat
#

good thing i cam here then

uncut viper
#

formats i mean

frosty bobcat
#

ive just been doing dialogue though so far so thank god

uncut viper
#

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

velvet narwhal
#

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

frosty bobcat
#

yikes

#

yeah thanks for telling me all this

rancid temple
#

!npc

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

uncut viper
#

that was posted already lol

rancid temple
#

Oh lmao, sorry I'm only half paying attention

velvet narwhal
#

o

#

🀝

frosty bobcat
#

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

velvet narwhal
#

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

latent mauve
#

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

frosty bobcat
#

i made my elliott diologue expansion in notepad++

velvet narwhal
#

πŸ‘‹ my flatboy template has reg dialogue and marriage dialogue

uncut viper
#

looking at the nexus page for it it doesnt seem to have any token support

frosty bobcat
#

im gon be real idk what a token is 😭 im very amateur

uncut viper
#

or i18n i think

#

which is losing out on, technically speaking, a metric fuckton of possibilities

velvet narwhal
#

uhhhhh

#

afaik genderswitches won't work either

uncut viper
#

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

velvet narwhal
#

so you can do the simpler genderswitch like "Good morning, ${male^female^nb}$"

uncut viper
#

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

frosty bobcat
#

oh h ok

uncut viper
#

theres a lot more tokens than just that

velvet narwhal
#

(if you flatloaded it like "Isn't it a lovely {{Season}}" it will look exactly like that in game)

frosty bobcat
#

so like %pet or %book

uncut viper
#

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

velvet narwhal
#

those are commands in dialogue

frosty bobcat
#

when doing diologue you put a percent

uncut viper
#

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

frosty bobcat
#

ill figure something out

pseudo roost
#

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?

rancid temple
#

Maps/springobjects

buoyant zenith
#

hii just wanted to ask, when you have an entry here it doesn't disable / hide other entries in Data/ExtraDialogue right?

uncut viper
#

it does not

high maple
#

Does anyone know if monsters can walk on passible objects? Like objects you can walk through?

rancid temple
#

Yeah they can

high maple
#

Ok! Thanks!

fallow musk
#

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

blissful panther
#

You would probably just want a SpriteBatch.Draw() for that. The texture box is for something entirely different, isn't it?

calm nebula
#

Don't use drawtexturebox lol

fallow musk
#

ive seen other codes and people input a lot of arbitrary numbers alongside the height and width, and im not sure what those represent

fallow musk
calm nebula
#

That is the game's nine slice

fallow musk
#

ill try using ClickableTextureComponent

#

if im trying to implement a single button, is there any use of extending the IClickableMenu class?

brave fable
#

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

lucid iron
#

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

fallow musk
#

yeah this time its a single button so i thought itd be overkill to use stardewUI

lucid iron
#

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

brave fable
#

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

calm nebula
#

Or heck

#

A single clickabletexturecomponent with smapi events

#

I guess controller haha

brave fable
#

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() SDVdemetriums

calm nebula
#

Oh come on it was four different events πŸ˜›

blissful saddle
#

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;
                });
            }
        }
lucid iron
#

I think your check for button might not work

blissful saddle
#

it works. I have another for it that I deleted from the code to not make it very extense

#

another that check player equips

lucid iron
#

But I would also use Buttonschanged with keybindlist
GetKeybindCurrentlyDown

#

It will work for multiple keys at once

blissful saddle
#

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;
                });
            }
        }
lucid iron
#

It looks like you are logging to trace, are you using the dev version of smapi?

blissful saddle
#

hmmm.... I forgot to put it as Debug

#

some weeks since I changed it

lucid iron
#

Still even if u r set on using button pressed

#

There's no need to do tostring

blissful saddle
#

just to register, this is me using this events:

lucid iron
#

== SButton.P is enough

blissful saddle
#

interesting

blissful saddle
lucid iron
#

Would definitely do buttonschanged if you intend to expose to user tho

blissful saddle
#

nah, it is just a test mod for me to see how the game/smapi handles some things

lucid iron
#

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 Dokkan

blissful saddle
#

the L one was me seeing if I could take equipped items context tags to filter things and how

blissful saddle
#

I yet need to learn how to do it. I will have more time for some weeks

lucid iron
#

Then when you type help in smapi console you should see the thing

calm nebula
#

Combined with disabling packaging for debug builds

lucid iron
#

Yea but sometimes it's like

#

Completely unrelated to mod 1 off thing

blissful saddle
lucid iron
#

I do the if DEBUG if I will keep it in the debug build long term

blissful saddle
#

I should probably get the dev version

#

I am saving the repos you shared for reference later

calm nebula
#

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

lucid iron
#

I don't like the dev version cus I see everyone else's trace log too kyuuchan_run

blissful saddle
#

but at least it would save me the shame of had forgot the level.debug in my new log thing...

lucid iron
#

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

calm nebula
#

I do that too lol

blissful saddle
#

this sounds so neat SDVpufferwow

blissful saddle
#

the #if DEBUG is activated by the Debug compilation option in VS I presume

lucid iron
#

The default is debug I think

blissful saddle
#

yeap. I had always used debug so far

lucid iron
#

dotnet build -c Release

#

For release build

blissful saddle
#

even my releases I had build with the debug, getting the zip at the bin folder later

blissful saddle
#

it really gets EVERY object in the world

blissful saddle
#

I think it is practical for now. getting used to c# and VS so far

fallow musk
#

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

winged basin
#

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

fallow musk
#

tried. doesnt workpensiveblob

blissful saddle
#

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
                    }
                }
brittle pasture
#

Auto grabbers and sprinklers with enrichers (their content is stored in a chest in heldObject instead of themselves being Chests)

winged basin
fallow musk
#

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

hybrid talon
#

Is shift+tab a possible keybind to use for things?

tender bloom
#

Tab flips inventory rows by default iirc

#

So I think it’s possible but maybe a bad idea

hybrid talon
#

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

calm nebula
#

Look at shopmenu

#

How the multibuy worjs

#

Tbh a string shouldn't be involved at all

hybrid talon
#

Figured it out, I needed to handle checking the keybind that I set to shift+tab first before the one for tab

hybrid talon
#

And that's how it shows up in the config file

vital shale
#

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.

brittle ledge
vital shale
#

It's Content Patcher

brittle ledge
#

[[Modding:Crops]]

#

Dang it

#

I don't recall the field, but the modding page on crops should say

#

[[Modding:Index]]

vital shale
drowsy pewter
#

normally people name their stuff crops.json

#

oh

oblique meadow
#

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

drowsy pewter
#

(and thats explained on the crops wiki page)

oblique meadow
#

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?

vital shale
#

Thank you.
I still confused about its sprite and "DaysInPhase": [1, 2, 2, 3, 2],

#

They don't exactly match the numbers

brittle pasture
oblique meadow
blissful saddle
#

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

winged basin
high maple
#

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?

blissful saddle
#

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

zenith steppe
#

How does one do gift tastes?

#

Can I add it in the objects.json? Or does it need it's own json?

brittle pasture
zenith steppe
#

Thank you!!!

brittle pasture
#

json placement doesn't matter, it's purely for organization

#

but if you meant "is this part of Data/Objects" then no

latent mauve
#

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

blissful saddle
#

just imagine every object having its own list of people that like, love and hate them, instead the otherway around

zenith steppe
#

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.

blissful saddle
#

I think personal list overwrites universal ones

#

os if you add them at the Clint's like list, it may work

zenith steppe
#

Thank you so much!

brittle pasture
blissful saddle
#

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

blissful saddle
latent mauve
#

Ore is like "great, more stuff I have to smelt so it doesn't just sit around" /annoyed tone

blissful saddle
#

but you gift only one chunk of ore, what is not a big help to this

oblique meadow
#

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

blissful saddle
#

he is the same with bars

latent mauve
#

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

blissful saddle
glossy cargo
#

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

blissful saddle
#

check the package your mod is built on. 4.3.0 was causing problems to mac and linux users

#

4.3.1+ solved this

glossy cargo
#

hmmm it's apparently more outdated than that. 4.1.1. I'll update to 4.3.2 and ask them to try again thinkign

#

Thanks for the suggestion!

blissful saddle
#

hopefully you are not checking the SMAPI but the ModBuildConfig one SDVpuffersquee

brittle pasture
#

IIRC 4.1.1 doesnt have that problem. only 4.3.0 does

blissful saddle
#

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

brittle pasture
#

the main 'difference' is that mac/Linux files are case sensitive

glossy cargo
tiny zealot
#

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)

hybrid talon
#

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

half mason
#

Guys i know this is kinda offtopic but is it okay to ping pathoschild?

lucid iron
#

Yea but you can just ask ur question first

#

Maybe someone besides pathos has the answer and then u don't have to wait

warped spade
#

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 SDVpufferpensive
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 ?

hybrid talon
half mason
#

it's not like a question i just have a suggestion regarding one of his mods

lucid iron
half mason
#

are you 1000% sure i can ping him haha i don't wanna get in trouble

lucid iron
#

Pathos doesn't eat people as far as I know

rancid temple
#

As long as you don't do anything to break a rule, pinging Pathos isn't strictly disallowed

half mason
#

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

lucid iron
#

If you are so concerned u can just tell us what is it you desire

half mason
#

Ok so im gonna tell you now, then if i catch him im gonna tell him that

lucid iron
#

If it seems useful and easy enough i can probably PR

half mason
#

so there is this mod CJB cheats menu right?

rancid temple
#

Also sometimes Pathos is just waiting and watching people talk about him

half mason
#

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?

rancid temple
#

Well, cheat is literally in the name

lucid iron
#

You can just use timespeed instead

#

That one's got more control

half mason
hybrid talon
rancid temple
#

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

half mason
#

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

lucid iron
rancid temple
#

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

half mason
#

and i could even lend my hand and create the icon

lucid iron
rancid temple
#

There is but I think something might be wrong with it

hybrid talon
rancid temple
#

It goes away now, fades out after a second

half mason
#

Let me just test and see if there actually is a popup]

lucid iron
#

I don't really get why you want it tbh

rancid temple
#

It's been a very unimportant to do on my list of things to see if I can fix and PR lol

lucid iron
#

But yeah I recommend just using timespeed for this

#

More knobs Dokkan

half mason
#

i hope you now understand

lucid iron
#

Sorry I was speaking with other person

#

Regarding zoom

half mason
#

oh, okay!

rancid temple
#

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

half mason
hybrid talon
lucid iron
#

Yea

#

What is purpose of obtaining zoom here

#

You don't want to draw in zoomed scale cus then u zoom twice

hybrid talon
#

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

rancid temple
hybrid talon
#

If you know a better way to do that than tile size I am open to suggestions

lucid iron
#

The zoom values r in configs I think

hybrid talon
#

Do you know how to get the tile size to begin with?

lucid iron
#

It's a constant 64

hybrid talon
#

Thanks

lucid iron
#

I think there's Game1.tilesize or something

#

Forgot name Dokkan

hybrid talon
#

Gives me a place to start looking :)

lucid iron
#

You will never see it used in the decompile bc it's a const

hybrid talon
#

Makes sense

lucid iron
#

But hm is this something to fix the controller wackiness?

half mason
#

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)

half mason
#

What do you guys think? I would personally love something like that

lucid iron
#

This gets you the cursor tile

lucid iron
hybrid talon
lucid iron
#

Right yea it is similar problem then

rancid temple
#

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 dogekek

#

Mine are bad which is why I would be sticking to those messages

lucid iron
#

I would probably just patch getters for cursor tile and grab tile rather than directly move mouse

hybrid talon
lucid iron
#

Use harmony to alter the return value of a method

#

A property getter in this case Bolb

#

By changing the cursor tile/grab tile values you should be able to avoid a roundabout thing with moving the mouse

hybrid talon
#

I see, I'm looking into harmony now

lucid iron
#

Tho hm

#

Have you already considered a gamepad enumlator?

oak moat
#

Hi !!

patent atlas
#

bro was tagged a potential spammer

calm nebula
#

Hi!

lucid iron
#

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

rancid temple
#

That's judgy Discord

half mason
#

I'll be waiting for an answer

hybrid talon
lucid iron
#

It's probably easier to do that outside of game

hybrid talon
#

I'm not sure where I'd even get a gamepad emulator though

lucid iron
#

There's existing keyboard to gamepad stuff

near sierra
#

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

tiny zealot
rancid temple
#

Looks like with CJB it doesn't

tiny zealot
#

wild

rancid temple
#

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

pine elbow
#

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

brittle ledge
#

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 SBVLmaoDog

rancid musk
#

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.

uncut viper
rancid temple
#

I guess it is a feature lol

pine elbow
#

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

uncut viper
#

!json can you post your relevant jsons here with this website?

ocean sailBOT
#

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.

drowsy pewter
#

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)

rancid temple
#

I wish SpaceCore did the entire set of portraits at once

pine elbow
#

I will when I'm home, but already did a few days ago on my PC account. And got scale up 2 recommended

rancid temple
#

Scale Up 2 also uses CP, so I would have assumed it would be fine with a dynamic token

uncut viper
#

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

pine elbow
#

But I don't have mine connected with my phone

uncut viper
#

im simply telling you the server rules

rancid temple
#

I'm glad most of the rules are just common sense stuff, because I cannot remember them all lol

rigid musk
#

vibincat 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

rancid temple
#

SDVpufferweary time to see if my reading comprehension has failed me and I've just been missing this config setting

#

Hm, not seeing it still

flat sluice
#

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

brittle pasture
#

one dot too many probably hmm that's the wiki example as well. it's probably harmless

rancid temple
#

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

viscid ice
flat sluice
rancid temple
#

Even if you were to set it as 1.0.0 it would still complain

viscid ice
rancid temple
#

Hm well there's no tokens here, but a little bit of backreading... is TrueShape a dynamic token from S&S?

viscid ice
#

yes

rancid temple
#

Did you use CMCT to steal it? Because dynamic tokens aren't usable outside their mod

viscid ice
#

how do i do that

rancid temple
#

Uhhh, I'm not very familiar with CMCT, gotta look at it again lol

#

{{Spiderbuttons.CMCT/Dynamic: DN.SnS, TrueShape}}

viscid ice
#

that what i found too but what do i do with this

finite ginkgo
#

(the unique id is DN.SnS)

viscid ice
#

i dont know how to write the json so pls help

rancid temple
#

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

viscid ice
#

so i replace the "trueshape" with this line?

rancid temple
#

Should do it, assuming I'm understanding it correctly. I don't really use CMCT currently

uncut viper
#

you cant target someone elses assets regardless

rancid temple
#

Oh is Hector using InternalAssetKey?

uncut viper
#

im unsure what the Platonymous.ScaleUp/Assets is meant for

#

in the first EditData

#

since ive never used scale up 2

rancid temple
#

It's a custom data asset added by Scale Up 2

uncut viper
#

but i was assuming that was supposed to be an internal asset?

#

ahh

viscid ice
#

just took it out of the example

uncut viper
#

oh i see, i was missing the original json and only looking at the smapi link

uncut viper
#

also yes rokugin understands CMCT correctly so follow their correction

finite ginkgo
rancid temple
#

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 dogekek

uncut viper
#

for what, CJBCheats?

uncut viper
#

i dont know what that is

rancid temple
#

Sorry, it's the config setting for if the message should fade

uncut viper
#

i dont know what mod that is for*
i only sparsely backread the convo having woken up only a short bit ago

viscid ice
#

i will test and see

uncut viper
#

but i was just gonna say i think pathos does like everything on develop

rancid temple
#

Yeah, I defaulted to switching to develop but I'm still using the regular release of CJB Cheats lol

uncut viper
#

i dont think there even is a master/main branch for his main mods

#

just a stable

calm nebula
#

Release and develop I thought

#

Or stable and develop

#

That

#

He works on develop

uncut viper
#

develop is the primary tho

rancid temple
#

Been testing for too long, +2 speed feels slow lmao

dense solstice
#

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

GitHub

A mod for Stardew Valley. Contribute to chronohart/RentedToolsRefresh development by creating an account on GitHub.

viscid ice
#

[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

dense solstice
#

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.

ocean sailBOT
dense solstice
rancid temple
#

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

viscid ice
#

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?

rancid temple
#

Probably, try changing the Priority to Late

#

I noticed you had it set to Early

viscid ice
rancid temple
#

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

viscid ice
#

i currently have spring portraits and beach portraits

rancid temple
#

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?

viscid ice
#

yes

rancid temple
#

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

viscid ice
#

so action load without prio?

rancid temple
#

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

viscid ice
#

so not the "EditImage" for beach portraits? instead i insert "load"?

rancid temple
#

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

viscid ice
#

so i deleted the prio and changed into load, but still nothing, if it would work would it change the HDP images?

rancid temple
#

It should effect every Portraiture setting as it's an override after the fact

viscid ice
uncut viper
#

im a bit busy atm to help actively, but as you have it now leads to two exclusive loads, doesnt it?

rancid temple
#

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

viscid ice
#

removing the beach stuff did nothing

rancid temple
#

Can you do a patch summary and upload your log?

#

!log

ocean sailBOT
#

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:

  1. Open this page: smapi.io/log.
  2. Follow the instructions at the top of the page to upload the log file. (Don't copy & paste from the console window!)
  3. 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.

viscid ice
ocean sailBOT
#

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

rancid temple
#

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

viscid ice
#

i tried that... but struggle without further knowledge tbh

#

i look at it and read stuff but my head is just "??"

rancid temple
#

Yeah, trying to start with a big mod like S&S is rough too

brittle ledge
#

Have you asked the author about their setup? SDVpufferthinkblob they might be able to shed some light on how the setup works

lucid iron
#

Destynova hangs out in the east scarp server

viscid ice
#

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

rancid temple
#

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

brittle ledge
#

(That's not how seasonals are usually loaded, is it?)

rancid temple
#

No but it's using the Appearance system

#

So the regular portrait is just getting overriden all the time

tame nebula
#

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
rancid temple
tame nebula
#

I do have them, I just cut it out of the block above for space

rancid temple
#

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

ocean sailBOT
#

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.

tame nebula
#

that was a typo when I copied and pasted here. Now it looks like how its implemented.

#

will do

rancid temple
#

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

tame nebula
#

ah

lilac wigeon
#

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

brittle pasture
#

!software

ocean sailBOT
brittle pasture
#

!startmodding for an overall getting started guide

ocean sailBOT
#

Making mods can be broadly divided into two categories:

Usually it’s easier to start with making content packs, since you don't need to learn programming.

lilac wigeon
#

oh ty!!

brittle pasture
#

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

lilac wigeon
#

i want to add an npc (two actually) to the game. might require editing/adding maps since they need a place to live lol

brittle ledge
#

!npc we have guides for that too!

ocean sailBOT
#
Creating a Custom NPC

Keep in mind that making NPCs is a complex process that requires learning many different aspects of Stardew modding.
Here are a few links that can help get you started on all that you need to know:

lilac wigeon
#

ty!!!

frosty hull
#

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()'

ocean sailBOT
#

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.

lucid iron
#

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

near sierra
#

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?

lucid iron
#

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

near sierra
lucid iron
near sierra
#

Okay.

lucid iron
#

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

near sierra
#

Thank you.

lucid iron
#

did you intend to talk to mona for quest complete?

near sierra
#

No. My intention is for the quest to be complete as soon as the player hits 25 Spirit Ore.

lucid iron
#

wouldn't work then, make a special order instead?

near sierra
#

Okay, although I guess I could have the player talk to Mona to complete the quest.

lucid iron
#

special orders r a lot nicer to work with blobcatgooglyblep

#

except for lack of unlimited time alas

tropic lichen
#

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?

buoyant zenith
#

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 Frieren6 they are both on back layer.

brittle pasture
#

you can follow that guide to add a config option for the users, and then load different PNGs depending on the config selected

lucid iron
#

take a look at elle's trinkets for example

lucid iron
#

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

silk spoke
#

i need help plz

buoyant zenith
# lucid iron [[modding:maps]]

Ty AgirComfy apparently you can set it up with tile properties but there aren't any near the bridge, and you can still walk over it

silk spoke
lucid iron
ocean sailBOT
#

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

solid beacon
#

I’m private about my code but I’m taking a break from it..

silk spoke
#

i not good at reading stuff it my 1st time moding

lucid iron
#

this aint the help channels pls go make a post in tech support

solid beacon
#

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

ocean sailBOT
#

@solid beacon You leveled up to Cowpoke. You can now speak in our voice channels and share images in all channels!

solid beacon
#

I’d show my code but again I’m private about my code

#

Dumb auto fill

rare prawn
#

Hello! I am back to working on this if I could please have some help cryge 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. wa
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??? reeee 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):

tender agate
#

bruh, you need a formula for the item moving not manual coding for each coordinate

rare prawn
#

I tried that, this was the suggestion

#

I'll show you what happens when I do it as a whole

#

just a sec

brittle ledge
#

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?)

rare prawn
#

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

pseudo roost
#

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?

gentle rose
rare prawn
#

You could do Dr Harvey instead of Dr Pepper

pseudo roost
calm nebula
#

Hmmm

#

...what is good for cheerwine

uncut viper
#

ive never even heard of cheerwine before

pseudo roost
#

Valley Mist Grassroots?

#

I think he means the root beer?

uncut viper
#

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

calm nebula
#

You miss out on cheerwine?

#

It's pretty much only a thing in the Carolinas lol

uncut viper
#

make Barqs but its spelled Barks and has a stardew tree on the can

rare prawn
#

Ginger Island Ale?

uncut viper
#

Golmorran Punch

pseudo roost
#

Oh that works for the red one

uncut viper
#

wait not golmore

#

whats the other nation in stardew

pseudo roost
#

Gotero or somethign?

brittle ledge
#

gotoro

uncut viper
#

thats the one

pseudo roost
#

Gotoro Ale for the Rootbeer could work

uncut viper
#

i dont know if ive ever not gotten it confused the first try with the golmore jungle from final fantasy

velvet narwhal
#

eulmore SBVPensiveButt

pseudo roost
#

This is what they look like for reference

uncut viper
#

SD Cola

calm nebula
#

Cute!

pseudo roost
#

Thanks

gentle rose
#

some initials to imitate A&W for the root beer maybe?

tender agate
#

you should compete with joja by introducing jojo soda

pseudo roost
#

hilarious but impractical

#

and thats what the V is for. its VM for Valley Mist

gentle rose
#

sparkling lemonade could always be 8up or something lol

pseudo roost
#

Junimo Punch for the red one? And maybe GInger Island-ade for the yellow?

lucid iron
#

how do i make npc visit island

low slate
#

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

gentle rose
#

or Slime Breeze lol

velvet narwhal
pseudo roost
brittle ledge
rare prawn
#

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, } },
  ],```
velvet narwhal
#

alternatively: 0 schedule

lucid iron
#

that sounds like a lot of effort MitsuYawn

#

ill just harmony patch and exile marnie

brittle pasture
#

why you ban marnie from island
did she bring a cow and it pooed all over the resort

lucid iron
#

no im exiling her like napoleon

gentle rose
velvet narwhal
#

cow pooed on every single entrance to farm, i now exile their maker - chue 2024

pseudo roost
#

THat works πŸ™‚

gentle rose
#

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

tender agate
#

oh I get it 4 vases are moved 3 and the rest are moved 6?

rare prawn
#

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

tender agate
#

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

rare prawn
#

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

tender agate
#

can't do a loop to move each furnishing to x+3 either?

rare prawn
#

if that's what you mean

tender agate
#

I meant individually for each furnishing

rare prawn
#

When I tried to move each item tile by tile this happened:

#

They still ended up wherever randomly

brave fable
pseudo roost
#

Pelican Punch?

tawny ore
#

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

brave fable
#

(remind me in 8 hours to dl toolbar icons SDVdemetriums )

patent lanceBOT
#

Gosh darn it, fine, bblueberry (#6423035) (8h | <t:1734426929>)

ivory plume
#

I'm working on ChroniclerCherry's mods, then I'll be doing an update wave when those are ready.

prime gull
#

Is there a way to edit every single character’s disposition at once and not have to list every single character?

lucid iron
#

need C#

prime gull
#

Oh then maybe not

golden basin
#

does anyone know why the npcs keep duping?

latent mauve
gentle rose
#

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

lucid iron
#

you can use normal debugger stuff

#

and logging ofc

gentle rose
#

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

calm nebula
gentle rose
velvet narwhal
#

wuh, the event page is so different SDVpuffersweats

golden basin
#

well not in my mod

brave fable
#

oh yeah event data looks saucy now

#

big fan of the verbose and invertable preconditions

tame nebula
brave fable
#

try again after fixing that typo, it may be related

tame nebula
#

Its working now. Thanks.

latent mauve
#

...Do I need to make an NPC for the lobby/entrance of the apartment complex? The ground floor area, I mean.

rancid temple
#

Like for an office?

latent mauve
#

For my latest mod side-tracking

brave fable
#

not necessarily, plenty of places in SDV just use a tile + tiledata action instead of an NPC

latent mauve
#

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.

rancid temple
#

If you have like a leasing office, yes but they should always be unavailable

#

For realism

brave fable
#

ideally a hotel should have at least a little lobby. i'd imagine something like the department store in the old pokemon games

latent mauve
#

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)

rancid temple
#

"Out for lunch" *it's covered in a THICK layer of dust*

brave fable
#

honestly just do a tile similar to the traveling cart lady, adds some life to the scene without much effort

latent mauve
#

That still needs a sprite though

brave fable
#

well most things do haha

latent mauve
#

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

rancid temple
#

Just recolor someone from that mod

lucid iron
#

put a kot in there

latent mauve
#

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

brave fable
#

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

tame nebula
#

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.

calm nebula
#

AddItem I think but don't quote me

#

1.6 migration page should have kt

brave fable
#

surprised it wasn't folded into /Event_data with the precondition changes

calm nebula
#

You can be a hero and edit the wiki

tiny zealot
#

hey i only had a certain amount of time and preconditions was all i could do in that time

calm nebula
#

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

devout otter
#

Need to test if a phone call edit goes well. There's no way to force a specific phone call to happen, is there...

tiny zealot
#

i don't know one, but i suspect it would be easy to set up a console command for it

calm nebula
#

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

devout otter
#

Oh, I'd really appreciate that! There's no hurry on my end.

hybrid talon
#

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)

lucid iron
#

KeybindList is a smapi construct

#

im not sure if you can store InputButton[] in configs, could try

#

otherwise just make conversion

hybrid talon
#

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)

lucid iron
#

you could store KeybindList and just make getter for equiv InputButton

meager dome
#

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

faint ingot
#

how would I make it so a special order is only available after the final house upgrade?

brittle pasture
#

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)

faint ingot
#

OK, so that's separate from "RequiredTags" then

#

Let me know if anything looks amiss there thanks for your help

brittle pasture
#

ah whoops I should have clarified, you need more params after PLAYER_FARMHOUSE_UPGRADE

faint ingot
#

Gotcha, better? "ItemToRemoveOnEnd": null,

#

oops

vast kraken
#

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

brittle pasture
#

yeah looks good

#

technically you may not want the last 3, but I'm unaware of any mod that adds a new farmhouse level

faint ingot
#

gotcha

brittle pasture
# vast kraken Guys I previously made a Boomerang mod, I didn't have to f around much with the ...

I suppose you can make a new class that inherits from MeleeWeapon with your logic, and:

  1. Patch WeaponDataDefinition.CreateItem so it makes your class instead of MeleeWeapon if it detects your custom item ID
  2. 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

winged basin
#

or maybe add a new class that inherits Tool which more or less re invents the MeleeWeapon logic?

brave fable
#

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

winged basin
#

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?

brave fable
#

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

brittle pasture
#

that's how inheritance works

winged basin
#

si but is it now using typeof or is

brave fable
#

i really meant is when using typeof, be grateful i didn't write instanceof

#

but yes, typeof(MeleeWeapon) will fail for any T : MeleeWeapon

brittle pasture
#

(I sincerely hope there are no code in existence that checks for a base class exactly)

winged basin
#

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

brittle pasture
#

you can export code with ILSpy

winged basin
#

in bulk?

brittle pasture
#

I have the full SDV source file as a 350k line file

#

that I search with vim

winged basin
#

ohhh I found out how

gentle rose
#

you can also export it as a solution to open in an IDE like rider, which is what I have

winged basin
#

just had to select this thingy, rather than a namespace/something from a namespace

lucid mulch
#

(ILSpy can search across every class)

winged basin
#

I meant like search for typeof so it searches through every class and what not that uses it in its code

lucid mulch
#

wont do only typeof, but all the typeof will be in there

winged basin
#

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 πŸ˜†

lucid mulch
#

haven't had a big file until notepad.exe just nopes out saying its too big

winged basin
#

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++

buoyant zenith
#

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.

lucid mulch
#

the "map" name is Farm_Foraging, but the location is still called Farm

buoyant zenith
#

oh PaimonThink

buoyant zenith
#

That worked ty AgirComfy

mystic sparrow
#

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?

fossil osprey
mystic sparrow
#

ohh okay... ill try to contact them then

#

thank you

round dock
weary sphinx
#

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.

round dock
#

Just set your randomization beyond 5 if you wanna go beyond the limit

#

Are you using i18n?

weary sphinx
round dock
#

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

weary sphinx
royal stump
#

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

weary sphinx
round dock
royal stump
#
  • {{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
round dock
ocean sailBOT
#
round dock
#

!god (but make it CP)

ocean sailBOT
#
royal stump
#

so basically, the game will keep using rainy_day_0 through 4, but you can just replace all those lines with infinite random lines

weary sphinx
round dock
#

Avi lurksℒ️

velvet narwhal
#

i recognize my own handiwork meow_stare

round dock
#

(Avi taught me abt the randomization bit, helped me a lot when I wanted to expand more on my dialogue)

velvet narwhal
patent lanceBOT
latent mauve
#

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)

hard fern
#

Where are these apartments going to be located?

brave fable
inland wren
#

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

brave fable
#

transpiler works. i hate it πŸ₯³

#

can turn off journal btn, datetime boxes, sundial, and cashometer. incredible

inland wren
#

He's so buff now lol

calm nebula
#

Interesting

proud wyvern
#

Good change honestly

calm nebula
#

Are malicious mods thar common?

tiny zealot
#

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

calm nebula
#

Huh

#

I would say something about not seeing malicious mods but I see zero mods these days

hard fern
#

It's probably less of an issue for sdv than it is for other games, yeah

proud wyvern
#

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

hard fern
#

out of curiosity, i went to check my page, and...?? when did i get this many

tiny zealot
#

that number is a bit of a mystery. it seems to update slowly, in big chunks

brittle ledge
#

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.

hard fern
#

people involved in stardew modding are too chill ig lol

finite ginkgo
#

Time to balance the scales and release malware disguised as a sdv mod /j

hard fern
#

mod disguised as malware

tiny zealot
#

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

hard fern
#

you're right its so funny lol

#

i just checked it

tiny zealot
#

i guess cyberpunk is grimbright. my mistake

hard fern
#

good ol stardew chilling inbetween

#

sigh, i wanna work on mod but i am.. tired. so maybe next week

fathom hound
#

Same ):

#

I have such a simple mod but I’m frustrated at teaching myself C# rn

rich talon
#

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.

ocean sailBOT
#

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.

rich talon
#

i tried that already but the validation gives nothingSDVpufferwaaah

hard fern
#

well just so we can read it

brittle ledge
#

@pastel aurora Hi PlatinumCats! Do you mind if I shoot you a quick DM about a permissions question?

tiny zealot
#

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)

zenith steppe
#

What is "Qi" type of mine? Is that Skull Cavern?

hard fern
#

?

zenith steppe
#

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

tiny zealot
#

dangerous mines, probably

hard fern
#

yeah, wouldnt it be?

#

speaking of ore nodes

zenith steppe
#

So Skull Cavern?

hard fern
#

dangerous mines is from the qi walnut room thing

tiny zealot
#

no, the qi quest that makes the mines more dangerous

zenith steppe
#

Oh!

tiny zealot
#

adds spiders, squids, forest floors, etc.

zenith steppe
#

Can I just use "All"?

#

Hehe.

gentle rose
tiny zealot
#

yep, 1000 total gets you verified status

gentle rose
#

time to write some more mods then lol

zenith steppe
#

Is there a difference between spawn chance and spawn frequency?

brittle ledge
#

Yeah we are the sixth largest community on Nexus SDVpuffersquee

gentle rose
#

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