#making-mods-general

1 messages · Page 29 of 1

lucid iron
#

It's cool that the first sdv mod is a horse replacer actually

rancid temple
#

Right but that's good, I'm more worried about why so many people think the horse needs to be one of the NPC's or an anime character

brittle pasture
#

funi

calm nebula
#

Rokugin, the internet is like that

plucky reef
#

I liked the mod where the horse was a ducati cafe racer motorcycle.

teal bridge
#

For any speakers of non-English languages here, are there situations where noun phrases don't exist or can't be substituted for nouns?

Example:

  • Sentence 1 is "XYZ is visible with {{thing}}"
  • Sentence 2 is "XYZ requires {{thing}}"

Where "thing" could be either "X profession" (an actual noun) or "equipped ABC" (noun phrase).

I'm wondering if some languages will make it impossible for the substitution to be grammatically correct, like if in some cases "equipped ABC" would have to be written as the equivalent of "ABC to be equipped" which makes no sense in the context of "visible with ABC to be equipped", etc.

tiny zealot
#

seems very likely that this sort of thing would come up. you should check out project fluent, which is about this situation

rancid temple
#

I mean, the very little I know about Japanese, I believe this does in fact happen

#

One of the reasons I think English is so fucked to learn is that its sentence structures are absolutely buck wild, you can do whatever you want basically

velvet narwhal
#

it's like russian, throw words wherever you want

lucid iron
#

there's "comprehensible" and then there's "actually what native speaker would say"

teal bridge
#

I know this definitely comes up; hoping to know if it would come up in this specific situation.

{{XYZ}} and {{thing}} are both variables so I need a way to write this where they can both be substituted, and not have a combinatorial explosion of translation keys.

lucid iron
#

i often struggle to translate -ble words like visible into chinese

tiny zealot
#

try something less verbose, like Required: {{thing}}

#

that strikes me as easier to manage but what do i know

teal bridge
#

It's a good suggestion, I might do that. Still curious about the more general formulation.

lucid iron
#

this is part of reason why i preferred icons over text

#

maybe you can just draw a lock icon (is there one) to indicate the required

teal bridge
#

Well, every GSQ can be more or less described with a pithy name, but there isn't going to be an icon for all of them.

#

For something like "equipped {{thing}}" the message has to communicate that you not only need {{thing}} but it has to actually be equipped.

#

I'll rework and muddle together something, hopefully. Thanks again.

tardy adder
#

@rancid musk
Hi! Sorry to bother, but I was wondering if the dynamic rules in Better Crafting can be done with context tags through PerItemCondition: ITEM_CONTEXT_TAG <target> <tags>

🤔

#

Urgh I am probably not putting the rule in correctly vv

brittle pasture
#

can you post the json/GSQ?
(FYI if you only need to match context tags, SpaceCore is also an option, which I think has slightly better compat with other crafting/cooking mods)

noble jolt
#

Okay, So I know I'm missing something, or something is in the wrong spot, but I can't tell what.

  "Action": "EditData",
  "Target": "Mods/leclair.cloudyskies/WeatherData",
  "Entries": {
    "{{ModID}}_IrrGH": {
      "Id": "{{ModID}}_IrrGH",
      "Condition": "BUILDINGS_CONSTRUCTED All \"Irrigated Greenhouse\"",
      "Trigger": "DayStart",
      "Actions": [
        "leclair.cloudyskies_WaterDirt --indoors \"Irrigated Greenhouse\" ALL"```
tardy adder
#

Essentially its this part I am not sure

"Rules":[
{
"ItemId": "RANDOM_ITEMS (O)",
"PerItemCondition": "ITEM_CONTEXT_TAG Target kss_breakfastitem"
},
],

I might just repatch :3

brittle pasture
#

ITEM_CATEGORY checks that the item has a category number (like -6 for milk)

#

You want ITEM_CONTEXT_TAG

#

Also Rules is a list of models, so you want curly brackets surrounding both of those lines

tardy adder
#

dammit wait I wrote it wrong

brittle pasture
noble jolt
#

it's a new map

marsh wraith
#

hallo, would it be okay to copy this mod’s code stuffs (just for leo's outfit replacing, not their custom dialogue or perched bird outfit), but replace all of their art with my art? is that moral?

or should i try to talk to them directly to ask about it?

i still haven’t quite got the jist of mod ethics yet 😵‍💫

https://www.nexusmods.com/stardewvalley/mods/11247

Nexus Mods :: Stardew Valley

Seasonal outfits for my Improved Leo

brittle pasture
lucid iron
brittle pasture
#

(you can test it in the console to get immediate results)

lucid iron
#

then you only load your sprites over their targets

noble jolt
#

Oh! I'll try that out

lucid iron
#

no need to copy code for changing appearance

marsh wraith
#

interesting ^^ thank u for being smarter than me on this hehehe

brittle pasture
tardy adder
rancid musk
tardy adder
#

😮

#

Time to break the performance 😄

rancid musk
noble jolt
#

😮

rancid musk
#

Also you want the command to be leclair.cloudyskies_WaterDirt --indoors Location \"Irrigated Greenhouse\"

#

I believe.

noble jolt
#

do i also need to indicate Tile All?

rancid musk
#

Nope. Using Location will do every tile in that location automatically.

noble jolt
#

thank you 🙂

rancid musk
#

You can use debug action "leclair.cloudyskies_WaterDirt --indoors Location \"Irrigated Greenhouse\"" to test the behavior in your console.

tardy adder
#

Ok let me see if I can get the dynamic rule to play nice in the category

noble jolt
#

would the MarkActionApplied be on it's own Action line?

#

Ah, i clicked links to read more, so i know it does 🙂

rancid musk
#
{
    "Id": "something",
    "Trigger": "DayStarted",
    "MarkActionApplied": false,
    "Actions": [ ... ]
}```
noble jolt
#

ty ♥

noble jolt
#

smapi is saying my location doesn't exist -_-

rain oracle
#

Question for folks. I only really dabble so my scope is limited.

Is there a way to have your custom farm map spawn fish similar to the river farm? I found the "FarmFishLocationOverride" property but I dont think thats quite it

noble jolt
#

if you look up Large Meadow farm on nexus, I've got that so you can fish up the different kinds of fish, you can check out the content file to see how i did it 🙂

rain oracle
#

Will do. Much appreciated

noble jolt
#

https://smapi.io/json/none/28663af337dd44239b48793ab131f22f Not sure what's going wrong here.
15:59:12 ERROR game Trigger action 'Zinnalynn.UpgradeableGreenhouse_IrrGH' has action string 'leclair.cloudyskies_WaterDirt --indoors Location Zinnalynn.UpgradeableGreenhouse_Greenhouse' which couldn't be applied: Unable to parse value for argument 'Target': Could not find location with name 'Zinnalynn.UpgradeableGreenhouse_Greenhouse'.

rancid musk
#

Ah. Because it's a building interior, it's probably instanced so its Id won't be exactly that. I'd probably need to do a Cloudy Skies update so you can use non-instanced names as well.

noble jolt
#

ah.

rancid musk
#

I do want to maybe do some updates next week, so I'll put that on my list.

#

The summer work rush has been slowing down.

noble jolt
#

I see. Do you know of anything I could do in the meantime, or will i just need to wait?

rancid musk
#

Nothing immediately comes to mind.

noble jolt
#

Alright. Waiting it is then. I can make the maps for the upgrades look nicer in the meantime

rain oracle
bronze sable
#

Is this where I can possibly suggest an idea to any modders?sunflo7Shy

teal bridge
#

!modideas

ocean sailBOT
#

If you have a mod idea that you aren't planning to make yourself, you can put it in the mod ideas github: https://github.com/StardewModders/mod-ideas

However, this does not mean anyone is guaranteed to work on your idea—modders who are looking for ideas sometimes go through and work on what they find interesting off this list. If you want to pay someone to make your mod idea, there are a few people who do commissions (mostly art, sometimes code); you can ask around, search usernames for the word comms, or see !commissions.

noble jolt
#

It felt right i guess lol

steel rose
#

How do I edit maps without getting path errors... I used to know but it's been a while and forgot... I put all the tile sheets in one folder when I edit the tbin but as soon as i re add the tbin it throws the error... i use the vibrant color recolors so when I try to add the tile sheets to the same place the tbin is in my mods file... all the trees are missing. when I use the main tile sheets the recolor does not apply 😦

noble jolt
#

you open the file in an editor like Visual Studio, and delete the bits that are like
<image source="../../../../../../../Program Files (x86)/Steam/steamapps/common/Stardew Valley/Content (unpacked)/Maps/townInterior" width="512" height="1088"/> should look like

#

or if you have a tilesheet asset/mod that you are using it would be like
<image source="[CP] HxW Tilesheets/Assets/Vanilla/Spring/hime_outdoorfurniture.png" width="512" height="352"/>

steel rose
#

🙂 thank you ❤️

frail plank
#

Should I decompile the game myself or is there a version available?

noble jolt
#

you gotta do it

frail plank
#

Alrighty thank you!

noble jolt
#

🙂

rain oracle
#

I will say, I'm learning alot by just reading this content file lol

#

Whether Im doing it right though, only time will tell

#

also, how do you get that red null/false text?

velvet narwhal
steel rose
heady relic
#

Made a mod that added a few extra crops a little while after the update. Managed to get the seeds sold, and managed to get all the crafting with the plants working. Somehow I never checked to make sure that the plants themselves worked. I can't plant the seeds.

#

I could have sworn that I wasn't that stupid

dusty scarab
heady relic
#

content patcher. As a full disclosure, it was essentially an update to the long dead PPJA mod

velvet narwhal
noble jolt
rain oracle
#

Probably just a formatting thing. Makes no difference for output. nvm

dusty scarab
#

I highlighted them in mine to show you what I mean

rain oracle
#

Oh, the DisplayName isnt functioning with my LookupAnything mod. The area isnt displaying in the fish locations

#

how do

heady relic
# dusty scarab you need to remember to add a season entry to your crop.json for every crop
"SourDieselSeeds": {
  "Seasons": [ "spring", "summer", "fall" ],
  "DaysInPhase": [ 2, 3, 3, 4, 3],
  "RegrowDays": 3,
  "IsRaised": true,
  "HarvestItemId": "Sour_Diesel",
  "HarvestMinStack": 3,
  "HarvestMaxStack": 5,
  "HarvestMaxIncreasePerFarmingLevel": .05,
  "ExtraHarvestChance": "{{25Percent}}",
  "HarvestMethod": "Grab",
  "Texture": "SakakiYumiko.YumikosArtisanUpdate/Crops",
  "SpriteIndex": 2
}```
steel rose
velvet narwhal
#

is it a personal edit? it's pretty simple to just change the filetype in the content.json

lucid iron
noble jolt
heady relic
heady relic
rain oracle
steel rose
rain oracle
dusty scarab
heady relic
lucid iron
rain oracle
#

so far, ive been able to catch sunfish so I assume it works?

steel rose
lucid iron
#

prob something to fix in LA instead then, ive never looked at that part of code

rain oracle
#

Its more likely something I did but idk

#

Ill keep testing

steel rose
#

the path issue i was having was a direct climbing error...

heady relic
dusty scarab
dusty scarab
#

"Type": "Seeds", and "Category": -74, are what you need to tell CP that that item is a plantable seed

heady relic
#

Yep. All the info is correct, lookup anything links just like it should

drowsy pewter
noble jolt
#

ummm is there a thing in buildings that say where Robin goes when she's doing an upgrade? cause this isn't right lol

dusty scarab
#

hmmm. and they're not planting? that's bizzare. the only thing I can think of is that there must be a mismatched connection somewhere, but I can't think of where it might be

heady relic
gaunt orbit
#

Check the wiki

noble jolt
#

ah, i see it. thank you

drowsy pewter
heady relic
dusty scarab
heady relic
#

Hopefully. going to try and add a better path to link the crop and then I'll check that

heady relic
rain oracle
#

Update: i dont think its actually applying. I checked it with the ModdedMeadowFarm aswell and it doesnt function there either.

#

Is it cause its an AdditionalFarm?

noble jolt
#

actually, i don't see that, i misread

noble jolt
rain oracle
#

As is mine.

lucid iron
#

prob need to have the fishing area data in locations then bolbthinking

noble jolt
#

hm

rain oracle
#

I can try adding one sure

stark snow
#

can you mod on nintendo switch?

lucid iron
#

yesn't

#

!switchmodding

ocean sailBOT
#

Modding on the Nintendo Switch is technically possible in a very limited capacity, but it requires jailbreaking your Switch, which is only possible on select models or by physically altering the hardware of your Switch, and can run the risk of bricking your console and/or being banned by Nintendo. Only visual texture and dialogue replacer XNB mods can be installed. Due to these limitations, we do not provide guides on how to mod the Switch and it is up to the individual if they want to take these risks.

noble jolt
#

i don't see in the Buildings file anything about where Robin should stand. Closest I see is

"UpgradeSignHeight": 18.0,```
lucid iron
#

this channel is for making mods btw, not using mods

stark snow
#

my switch is patched sadly

rancid temple
#

I think the NPC that's doing the building is positioned based on those values

#

Either that or this animation is for the building itself, never sure with temporary animated sprite what the hell it's using

noble jolt
#

I see. I tried looking up with Tiled the coords to see where she is, and if those numbers matched anywhere, but didn't see anything matching

#

I'll just have to play with the different numbers and see if anything magic happens lol

marsh wraith
# lucid iron you can choose to make that mod a dependency to your mod

sorry for the delayed ping -- i was debating with myself whether this was worth asking or not, but i figure it’s better i be safe (by making sure) than sorry (by assuming i know what’s best)

but would you say your advice of making my mod dependent on zilchaz’s is still the same, even though my plan for my mod isn’t 100% the same as zilch’s? since i’d ideally like to add a flower dance outfit and winter star outfit, which zilch’s doesn't have?

and if it’s indeed the same advice, is it okay to just go for it and upload the dependent update to nexus, or would it be rude not to message zilch about the situation and wait for a response before that ?

( thanks again for your advice btw -- i’d be helpless without this chat >v< )

brittle pasture
rancid temple
#

Ew, hardcoding

lucid iron
noble jolt
#

😮

lucid iron
#
Stardew Modding Wiki

If you want to add seasonal outfits for your NPC, there's two ways you can do this: the token way or the Appearances way. Appearances is a new code structure added in SDV 1.6, so if you're looking at an older NPC's code for reference, they'll most likely be using the token way. The main difference between the two is that the token way is simpler...

brittle pasture
noble jolt
#

same

#

so i can't change it :0

rancid temple
#

Not without C#

noble jolt
#

eugh

noble jolt
#

i don't have the mental capacity to learn c#

drowsy pewter
lucid iron
#

its ok robin is just working on the windows

noble jolt
#

we'll just pretend she's peaking through the windows lol

rancid temple
#

Just patch Robin's tilesheet to have those frames be invisible when she's working on your building lmao

noble jolt
#

😮

brittle pasture
#

Yeah about to say that you may be able to replicate the suspended platform that Robin stands on while upgrading the Shed

ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Pro, with 24 C# mods and 5 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

rancid temple
#

Oh yeah, adding some kind of scaffolding would be easier

#

I'm not sure if you could reliably find out when she's working on a building without C#

brittle pasture
uncut viper
#

you could change the spritesheet to be invisible when the player is just in the greenhouse right

rancid temple
#

Oh yeah, that's probably perfect

uncut viper
#

(to get around having to check when shes working on a building specifically i mean)

brittle pasture
#

Alternatively since Robin is actually physically warped to the Farm when a building upgrade happens, maybe you can do something with the Appearances system

rancid temple
#

Oh yeah, if she's actually there then I guess you could reliably tell when she's working on it lol

noble jolt
#

Well, the upgrade allegedly happened, but the map didn't change like it was supposed to, so that's something i gotta figure out now

heady relic
drowsy pewter
#

zip your whole mod and send it here

#

i got home

drowsy pewter
#

your seed id is wrong

#

these two things have to be the same value so it knows what your seed item actually is

#

also please dont leave the cornucopia thing there

dusty scarab
heady relic
#

Ah, yeah there's a bunch of stuff I need to do before I publish it, if I ever even decide to

heady relic
drowsy pewter
#

yeah

ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Home, with 22 C# mods and 43 content packs.
Suggested fixes: One or more mods are out of date, consider updating them

drowsy pewter
#

even if you redrew all the art

heady relic
#

Yeah, if I ever released it I would definitely redo basically everything from scratch. Even if I don't I'm considering paying a pixel artist to make custom assets for me

heady relic
#

Now it's time to actually add a new crop. Gonna add mustard seeds, since google says that they grow well in winter. And I think it'd be fun to figure out how to turn them into mustard.

brave fable
#

@next plaza hi, just wondering if you'd had any reports about spacecore skill progression seemingly pausing from time to time. i've had a couple of posts about the cooking skill in loc building xp way past the end of the experience curve value for the current level and then not showing the level-up screen after sleeping. is it something i couldve screwed up myself, or known issue?

tribal sable
#

@distant arch wany updates on Wood Maker??

uncut viper
#

its generally not appreciated to bother mod authors about updates to their mods

patent lanceBOT
#

@next plaza: look into marriage schedules with your 0 schedule fix (19h ago)

next plaza
#

(Well, I have, but they were because S&S has 5 skills and one skill was adding exp for the wrong skill - so nothing related to spacecore)

lucid iron
#

did they have a mod called skill rings

brave fable
#

@night harness details please 💏
actually if you have a log from when last playing with love of cooking that'd be incredible since i think it logs your skill progress

#

reminds me i need to add better crafting hooks for xp gain

distant arch
tribal sable
brave fable
#

can i make the 'start with debugging' green button build the CP folder as well as the C# project? annoying having to 'rebuild solution' for every change

lucid iron
#

how do out parameters work in harmony postfix?

brittle pasture
#

I think out and var compiles to the same thing, the former just gets the compiler to complain if it isn't assigned

lucid iron
lucid mulch
#

if you had the CP thing a dependency it should rebuild with it

lucid iron
#

there is some AfterTargets thing u can do i feel

brave fable
#

i was hoping for a more project-based solution rather than symlinks haha

#

the cp mod is a dependency on the c# mod actually

#

i wanted them to be mutually dependent so the c# mod spits an error and dies if the cp component isnt found, rather than the cp component quietly doing nothing if the c# component isnt found in a When HasMod condition

next plaza
#

This is why I wrote my CP alternative

#

So I could just embed them into my project

#

That being said

rancid temple
#

After that one person deleted the CP element of my crane game mod, I forced my C# mod to die and throw an error if the CP mod was missing

next plaza
lucid mulch
#

(I meant a C# project reference/dependency to the CP "project")

next plaza
brave fable
#

examples please 👁️

rancid temple
#

I made the CP mod dependent on the C# mod, so they'll both die without the other, but I couldn't do circular dependency so it was easier to put the kill in the C# lol

next plaza
#

Yeah, just a dependency entry in the manifest for CP, and a mod registry check in Entry for the C# mod

rancid temple
#

Plus I could log additional shame in the console

brave fable
#

aw man i thought i was just adding skill xp in better crafting, but i still need to apply custom seasonings, burn the food, play animations, ...

next plaza
#

This is specifically what I have in S&S

        public override void Entry(IModHelper helper)
        {
            if (!Helper.ModRegistry.IsLoaded("DN.SnS"))
            {
                Monitor.Log("Failed to find CP component of S&S, make sure you installed everything from the download. (S&S will not load without it.)", LogLevel.Error);
                return;
            }
            // ...
#

(Just noticed I'm missing a "the" there)

lucid mulch
#

visual studio / dotnet will rebuild the entire dependency tree, so if you have a project reference, it should rebuild the other thing too, though you would then need to deal with potentially getting rid of it from the bin folder

next plaza
#

One thing I don't like about the copying-project-from-VS approach is you still have to relaunch the game when editing the content pack instead of patch reload (or edit in two places)

#

I added a workaround for my CP alternative so that it would read from my dev folder when a debug build is launched

lucid mulch
#

could the copying-project-from-VS approach just create a symlink instead of actually copying

next plaza
#

(Specifically, I'm doing:

#if DEBUG
                Content.OnReloadMonitorInstead("assets");
#endif

with

        public void OnReloadMonitorInstead(string pathModifier, [CallerFilePath] string path = "" )
        {
            if (path == "")
                throw new ArgumentException("No caller file path?");

            Parser.ContentRootFolderActual = ContentRootFolderActual = Path.Combine(Path.GetDirectoryName(path), pathModifier);
        }

)

calm nebula
#

The compiler enforces that you assign to an out but it is invisible in IL

#

But in is different

brittle pasture
#

.choose now, wait for 1.6.9

patent lanceBOT
#

Choose result: now

brittle pasture
#

FUCK

lucid iron
#

do you think people would want to have different machine rules per location

brittle pasture
#

That's already possible

next plaza
#

That could make sense if someone replicated bee houses

#

Or casks

lucid iron
#

no i mean, turn it on and off per location

brittle pasture
#

ah okay, probably? I can't think of any use case for myself though

lucid iron
#

yea same blobcatgooglyblep

next plaza
#

Night time only rule?

#

Or day time only rule

#

Or conditionally enable it after a mail flag (story progression)

brittle pasture
#

This is for chu's mod which allows dynamically enabling/disabling rules in game

#

Otherwise all of that are possibls

#

one of my upcoming mods gate machine rules behind a special order

next plaza
#

Ah, I thought chu's mod was an editor for machine rules

next plaza
patent lanceBOT
#

oh kittycatcasey you sweet summer child. trusting me with such a task? all right ;) (#6236489) (24h | <t:1726184111>)

calm nebula
#

Super cool

rancid temple
#

Buildings data has a Builder field that you can specify any NPC that has a construction menu apparently, but the construction animation seems to be hardcoded to Robin lol

calm nebula
#

Yes

lucid iron
#

hm it occur to me that i have to make emc compat LilyDerp

rancid temple
#

Which makes me wonder, does the other NPC just show up and do nothing or does Robin show up?

lucid iron
#

and multiplayer compat

calm nebula
#

Very a hardcoded system

#

It's nice I like hardcoded

lucid iron
#

pfm doomed not worrying about that one

brittle pasture
next plaza
#

PFM doomed?

lucid iron
#

no i need to support displaying custom fuels

next plaza
#

Is Digus not around anymore?

brittle pasture
#

ah okay lol

lucid iron
#

*compat with pfm doomed

next plaza
#

Ah

lucid iron
#

digus still around i think

teal bridge
#

When I was looking at some SpaceCore stuff for that Skills discussion the other day, I noticed that mods seem to use SpaceCore's types directly. How does that work, aren't we normally required to go through the mod API system? Do the "direct" users have to jump through various hoops to use the SpaceCore types directly (i.e. is this easy to replicate with a different mod)?

brittle pasture
#

and your mod as I understand it is per input

teal bridge
#

(Or is it just a nuget import, non-private assembly, modbuildconfig handles the rest... somehow?)

lucid iron
#

it was actually inputs product outputs, at somepoint i refactor to inputs x 1 output

#

but not hard to go back to original layout

brave fable
#

ooooh btw suggestion for gmcm, clicking into a page currently clicks both the link and the following page:

#

suggestion is pleaese ifx ✅ thanks

velvet narwhal
#

isn't there so many hacks for gmcm that if casey updates it, the world will implode?

calm nebula
#

Nah

#

Most people are not that brave

#

To patch other mods like thar

brittle pasture
teal bridge
#

I think I'm the only one doing that. (Hacking GMCM)

brave fable
#

my next suggestion is make page links look less like headings and more like clickables haha

lucid iron
brave fable
#

loc's menu is so hacky

next plaza
teal bridge
#

Lots of people hack the game, but not lots of people hack other mods.

lucid iron
#

but i guess its time to make use of the foldable widget

next plaza
lucid iron
#

so u can see more than one rule but disable em together

next plaza
wise berry
teal bridge
#

So someone using SpaceCore skills would just add an assembly reference to... the SpaceCore DLL inside their Stardew installation? Or they copy the SpaceCore DLL to a "lib" directory like I did for GMCM/publicizer?

velvet narwhal
brave fable
#

add a button background or smth! even the scrolls that loc uses are fine

wise berry
velvet narwhal
#

oh silicon you're here eyeshake

teal bridge
#

I take it that causes some problems with source control, building on different machines, etc.?

uncut viper
next plaza
teal bridge
#

Since ModBuildConfig does magic to find the correct assembly location, and direct references will not.

lucid iron
#

i think my to do is

  1. make it work
  2. determine how it will work for multiplayer, perhaps only host gets to do anything
  3. support excluding particular items rather than whole rule
  4. emc compat, which should just be display?
brittle pasture
#

just display yeah

brave fable
#

behold, love of cooking's hacky centred scroll buttons in gmcm

string s = new(c: ' ', count: 46);
int offset = 20 * Scale;

gmcm.AddPageLink(
  mod: mod,
  pageId: "info",
  text: () => s);
gmcm.AddComplexOption(
  mod: mod,
  name: () => string.Empty,
  draw: (SpriteBatch b, Vector2 v) =>
  {
    v.Y -= offset;
    int width = SpriteText.getWidthOfString(text) + 32 * Scale;
    SpriteText.drawString(
      b: b,
      s: text,
      x: (int)v.X - width / 2,
      y: (int)v.Y,
      width: width,
      scroll_text_alignment: SpriteText.ScrollTextAlignment.Center,
      drawBGScroll: 0);
  });
teal bridge
rancid musk
#

You can use my ModManifestBuilder to reference mods without worrying about their paths

teal bridge
#

Is $(GamePath) an MSBuild variable that's available whenever using MBC?

next plaza
#

This is the example on the manifest builder docs:

<ItemGroup>
    <SMAPIDependency Include="spacechase0.SpaceCore" Version="1.10" Reference="true" />
    <SMAPIDependency Include="spacechase0.GenericModConfigMenu" Version="1.9" Required="false" />
</ItemGroup>
teal bridge
brave fable
#

hi khloe, do you call CraftingPage.clickCraftingRecipe at all in BC 👉 👈

teal bridge
#

Hm, I had no idea about this SMAPIDependency. I'll go check that.

#

Is it new, or just infrequently used?

next plaza
#

I use it a bunch

teal bridge
#

Oh, that's not part of SMAPI proper, it's part of Khloe's builder. Right?

rancid musk
#

It's ModManifestBuilder, yes.

next plaza
#

Yeah

teal bridge
#

(I did a search and that was the only result that came up)

rancid musk
teal bridge
next plaza
#

GMCM 2.0 looms in the distance

#

(Very far in the distance)

#

(Perhaps past the horizon)

brittle pasture
#

perhaps... in space?

teal bridge
#

Anyway, thanks Khloe and Casey, maybe what I can do (if I go forward with this) is provide "easy mode" instructions with ModManifestBuilder and regular/more byzantine ones for vanilla SMAPI.

brave fable
ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 11 Pro, with 24 C# mods and 4 content packs.

next plaza
#

ModManifestBuilder is great... even if it's one thing causing me to postpone converting my mods to 1.6, since my common.targets assumes my projects use it now

calm nebula
#

But also that code dies if a content modder inserts an invalid recipe

brave fable
#

well i'm the content modder in this case so that sucks

calm nebula
#

Have fun!!!!!!

#

Enjoy suffering

teal bridge
#

(fwiw, on the whole GMCM_hacking thing - lot of separate threads going on at once here - I do plan to de-hackify that and externalize the custom menu so Casey doesn't have to worry about updating GMCM, whenever that happens. Anyone else doing serious hacks should consider doing the same; it's not nice to create implementation dependencies, I just did what I felt I had to do at the time.)

brave fable
#

does the error go away if i fix the mod, or do i have to rollback to a backup

next plaza
#

I'm looking up that line right now

#

It doesn't look serializer related in theory

wise berry
next plaza
#

????????????????

#

                if (this.craftingRecipes.ContainsKey(recipe.Key))
                    continue;

teal bridge
#

Silicon - I don't think you need to worry, unless your code changed a lot.

#

If you didn't copy any of the crazy Publicizer/Reflection stuff, you'll be fine.

calm nebula
#

Ngl

#

That code is bonkers

#

"Farming10" unlocks at level 0

brave fable
#

so not a per-save issue

next plaza
#

Can you run patch export Data/CraftingRecipes and show the resulting file?

brave fable
next plaza
#

Ah, that would make sense

calm nebula
brave fable
#

i think i removed the asseteditor behaviours to add the propagator to bigcraftablesinformation when i dded its itemdatadefinition entry, so that code probably was also responsible for formatting the recipe data with the item id

night harness
#

Should I just post it here later?

next plaza
#

(Since it does profession choice instead)

brave fable
#

if only sdv1.6 had another year in the oven, we could've had a crafting recipe data model

brave fable
calm nebula
#

Iterate fast

#

Break shit

#

Make stardew 1.7 a thing

brave fable
#

i like to use a waterfall approach to development. it's named for the amount of crying

next plaza
#

I like to use an agile approach. Constantly dodging all the right ways of doing things

#

(And bug reports)

calm nebula
#

I'm currently doing the knitwear design method to development

teal bridge
#

(it's a real thing!)

rancid musk
next plaza
#

So does JA!

brave fable
#

there are now 3 conflicting standards.

next plaza
#

(dodges tomatos using previously mentioned agile approach)

rancid musk
#

The number of conflicting standards will increase until morale improves.

brave fable
#

love of cooking was meant to be the big mod that people have to make their mods compatible with. how come i still have to make compat updates. it's not fair

tiny zealot
#

so far, i have a monopoly on secret note data models (afaik)

night harness
ocean sailBOT
#

Log Info: SMAPI 4.0.8 with SDV 1.6.8 build 24119 on Microsoft Windows 10 Pro, with 102 C# mods and 119 content packs.

teal bridge
#

It's because your mod doesn't have the word "better" in its name.

#

That's required for any major Stardew framework.

night harness
#

I would want to provide a screenshot too for the sake of it but I'm a bit short on time.

next plaza
brave fable
#

i fully intend to make Best Crafting

teal bridge
#

Bestest Better Cooking

brave fable
#

you're all gonna be out of business then

teal bridge
#

Rename to that and you will capture 100% of the market

rancid musk
#

Just wait till I show up with Worse Crafting and corner the market

teal bridge
#

Worse crafting = you can combine anything with anything but the output is always trash?

brave fable
#

random input, random output. good luck

rancid musk
#

(That reminds me I still need to fix a bug with trash cans in Better Crafting when using a different UI zoom level)

velvet narwhal
#

If you implement minecraft crafting I will laugh and cry

rancid musk
#

Worse Crafting would just be the minecraft crafting grid.

velvet narwhal
#

GOD

brittle pasture
rancid musk
#

Honestly I had thought about doing that for April Fools with Better Crafting.

#

Maybe I should.

lone ice
#

Anyone know the best way to add sub entries in Locations to existing lists? I tried this but it erased all other forage entries for the location:

  "Action": "EditData",
  "Target": "Data/Locations",
  "TargetField": [ "Woods" ],
  "Entries": {
    "Forage": [
      {
        "Chance": 0.2,
        "Season": "Summer",
        "Condition": null,
        "Id": "{{ModId}}_Butterfly",
        "ItemId": "{{ModId}}_Butterfly",
        "RandomItemId": null,
        "MaxItems": null,
        "MinStack": -1,
        "MaxStack": -1,
        "Quality": -1,
        "ObjectInternalName": null,
        "ObjectDisplayName": null,
        "ToolUpgradeLevel": -1,
        "IsRecipe": false,
        "StackModifiers": null,
        "StackModifierMode": "Stack",
        "QualityModifiers": null,
        "QualityModifierMode": "Stack",
        "ModData": null,
        "PerItemCondition": null
      }
    ]
  }
}```
teal bridge
#

modidea: all cooking requires you to wait several minutes in real time for the recipe to be ready. 🙃
(totally not a DQVIII reference)

rancid musk
#

Generate random recipe layouts for every recipe. Set up a fake JEI-like interface.

calm nebula
rancid musk
#

brb inventing a way to harmony patch socks

next plaza
#

Please let me do it on my brain

#

I'm begging you

lucid iron
#

best crafting

brave fable
teal bridge
#

what fresh hell is that

brave fable
#

but let it be known i wanted it

teal bridge
#

(referring to chu's thing)

lucid iron
#

one of those android minigames where u do wood work

#

i rmbr playing one when i was wee lass

brittle pasture
#

that looks like one of those minigames from squid games

rancid musk
#

Android didn't exist when I was a wee lass SDVpufferpensive

teal bridge
velvet narwhal
lone ice
#

AH

#

thank you

brave fable
#

i didn't, i just gave up and released it completely broken

#

i'll take the praise tho

teal bridge
#

Hmm... would I prefer a broken anti-feature or a working anti-feature?

brave fable
#

oh no, the whole mod was broken. completely

rancid musk
#

Technically you could interrupt a crafting event from Better Crafting to display an animation or something, and only send a complete signal once the animation is done.

teal bridge
#

I think I'd prefer the broken one, as long as it breaks the bad part.

brave fable
#

the feature didnt even exist lol

next plaza
#

Brb implementing cooking mama style cooking

#

For all content

rancid musk
#

You'd definitely want special handling for bulk crafting to not accidentally trap the user in a hell of their own making though

teal bridge
#

Is this not the mod you're working on now? It was broken from day one?

brave fable
lapis creek
teal bridge
#

(As a user of Better Crafting: If you implement this feature, I will have to make a mod to Harmony-patch the removal of that feature.)

#

Let the black-hat/white-hat arms race begin.

brave fable
#

please do not look at the number of pages of bug reports on the mod

teal bridge
#

Right, I figured 1.6 broke it, but sounded like you were saying it was broken even before that.

rancid musk
#

Better Crafting already has asynchronous crafting. Just no one uses it for something silly like playing animations. I implemented it for the Buildings add-on. When you go to place a new building, the craft starts, puts you into a menu to actually construct the building, then it either cancels or completes based on how you interact with the menu.

brave fable
#

this pos has taken years off my life

rancid musk
#

BC is very over engineered lol

teal bridge
#

Async is OK - not my preference but it works sometimes - but that is very different from "sit here and watch this 5-minute cutscene in order to get an item that boosts luck for 30 seconds"

#

I'm exaggerating of course, but it did feel like 5 minutes sometimes.

rancid temple
#

An optional minigame that can increase the value or buff strength would be nice

rancid musk
#

I'm just glad I finally fixed mutex handling forever. It's been months with no more users reporting bugs.

#

(On the topic of being over engineered)

teal bridge
#

Mutexes in Stardew. I guess there's no useful SynchronizationContext.

next plaza
rancid temple
#

I mean, that's fine, if that's what they want to do

#

If it was requested I'd probably even just add an option to disable the game and still give the reward

lapis creek
teal bridge
rancid musk
#

They're weird mutexes, used for exclusive access to inventories like chest contents. Forcing them to update in non-current game locations was a lot.

rancid temple
#

Is it? I've never used Qi seasoning lmao

rancid musk
#

Qi Seasoning just boosts the quality of food you craft.

teal bridge
#

Yeah I never do either because it's a late-game item and at that point I'm only cooking for Perfection. But that's what it does, increases the strength/duration of buffs.

#

(By way of boosting the quality... which increases the buff strength/duration)

rancid temple
#

Well, that's half of it done, just need to make a minigame

rancid musk
#

Yeah, I've never used it outside of testing.

teal bridge
#

Late-game balance is still a bit wacky in Stardew, Qi gems and radioactive ore are ridiculously rare and there's no way to make them less rare. So why waste gems on Qi seasoning?

#

But it is there, technically.

lucid iron
#

maybe if u could mass produce qi seasoning

rancid musk
#

Qi Seasoning should be more like... a casino reward or something. Maybe something you can get at a festival once a year, but in bulk.

#

Being so endgame and expensive just makes me not want it.

velvet narwhal
#

I contemplated a recipe for qi seasoning for my tree mod tbh SDVpufferflat

lucid iron
#

found your empire upon cooking triple shot expresso, somehow

teal bridge
#

It would be useful for gifts, since some NPCs are very difficult to gift with gold/iridium items.

rancid temple
#

Just reverse engineer his secret recipe: salt

teal bridge
#

^ nah it's gotta be MSG

lapis creek
rancid musk
#

This whole time it's just been MSG

brave fable
#

MSQi....

rancid temple
#

Also very good lol

tiny zealot
#

MSG is just Salt 2

rancid temple
#

Salt 2.0

rancid musk
#

I'm waiting for Salt 3

lapis creek
#

salt 3 is fish sauce

rancid temple
#

SMSG (super)

teal bridge
#

I was thinking MMSG (more MSG)

#

Since you can never really have too much.

tiny zealot
#

starting work on a new mod Better MSG

teal bridge
#

(starts pounding an entire container of Accent seasoning)

rancid musk
#

I'm pretty sure your doctor will tell you that you can have too much sodium.

brave fable
#

noooo... i have to harmony patch... better crafting seasonings behaviours for my own custom seasonings

noble jolt
#

I got my updated map to load, now I've just got to figure out how to get planted stuff to move too

calm nebula
#

Oops

tiny zealot
teal bridge
#

My doctor says a lotta things. Just call me George.

rancid musk
noble jolt
#

would plants count for this?

 "IndoorItemMoves": null,
brave fable
#

well love of cooking adds 2 new seasoning items (silver and gold quality), so naturally it has to transpile the base seasonings behaviour to get whichever items are defined

#

and also show a different popup on seasonings exhausted

#

i'm not sure if it's something you can really add to BC by default

brittle pasture
#

speaking of new release have you looked at the PR on better crafting? It's technically not needed anymore (I've put the fix in YACS instead) but might still be useful 🙏

rancid musk
#

Yeah, I've looked at that. One of the reasons I want to do a release soon.

#

Though I also am trying to remember why I specifically didn't expose the vanilla crafting recipe for SpaceCore modded recipes.

uncut viper
#

(speaking of PRs, if i wanted to submit one to a mod thats a part of a big monorepo, is my only choice to have to pull down the entire repo and all the billion mods just to edit the one i want SDVpufferflat)

next plaza
#

Unfortunately yes

rancid musk
#

As for LoC seasoning, maybe I should just add an event for applying seasoning to cooked items. Ill think about it.

noble jolt
#

;-;

uncut viper
#

ah well

brave fable
uncut viper
#

(obv not a big deal just a ":/" thing)

brave fable
rancid musk
#

Well in theory I gues it would be two events, since there needs to be a check for ingredients first, and then a consumption later

brittle pasture
#

could the seasoning only be consumed in postcraft and the item modified? it wouldnt show up in the ingredients list then but

lucid iron
#

what is good way to match for ldloc.*

rancid musk
#

You want to modify the item before then for proper stackability checks.

uncut viper
lucid iron
#

arbiturary one yea

brittle pasture
#

aaaahhh that might be why I cant bulk craft in one of my mods that use postcraft. Thanks

next plaza
#

This is what I did for stloc recently

#
            if (insn.opcode == OpCodes.Stloc && (int) insn.operand == local ||
                 insn.opcode.ToString().StartsWith("stloc.") && insn.opcode.ToString().Substring("stloc.".Length) == local.ToString() )
            {
#

It's... pretty terrible

lucid iron
#

oh i just noticed that CodeMatch keeps List<OpCode>

#

just doesnt expose it in any constructor MitsuYawn

uncut viper
#

ldloc and stloc are just annoying in general

rancid musk
#

casey that code is absolutely atrocious 😄

lucid iron
#

i suspect i can just append to it DokkanStare

next plaza
uncut viper
#

is the ldloc you're trying to match possible to catch if you just add some more specific instructions around it

lucid iron
#

im just being paranoid

uncut viper
#

understandable

lucid iron
#

atm it's usually ldloc.1 since its the first local var in this not very large function (MachineDataUtility.CanApplyOutput)

#

or actually, second

rancid musk
#

op.IsLdLoc() && op.LocalIndex() == 3

#

Harmony extension methods.

next plaza
#

Wait what

#

I don't have LocalIndex

rancid musk
#

Oh, might be newer harmony than we have.

next plaza
#

RIP

#

You got my hopes up

#

I mainly want it so I can use SpaceCore's GetLocalIndexForMethod function easier

#

(For reference, the function that code came from)

#
    public static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator generator, MethodBase original)
    {
        var local = ModSnS.sc.GetLocalIndexForMethod(original, "playerParryable")[0];

        List <CodeInstruction> ret = new();
        foreach (var insn in instructions)
        {
            ret.Add(insn);
            if (insn.opcode == OpCodes.Stloc && (int) insn.operand == local ||
                 insn.opcode.ToString().StartsWith("stloc.") && insn.opcode.ToString().Substring("stloc.".Length) == local.ToString() )
            {
                ret.Add(new(OpCodes.Ldloc, local));
                ret.Add(new(OpCodes.Ldarg_0));
                ret.Add(new(OpCodes.Call, AccessTools.Method(typeof(DualWieldingOffhandParryPatch), nameof(OffhandSpecialCheck))));
                ret.Add(new(OpCodes.Stloc, local));
            }

        }

        return ret;
    }
#

(ModSnS.sc being S&S's copy of the SpaceCore API)

teal bridge
#

So many strings

rancid musk
next plaza
#

OR.... hear me out... we pester Pathos to update Harmony

rancid musk
rancid musk
#

Is there a date for 1.6.9 yet btw? I have not been paying close enough attention to that.

brittle pasture
#

speaking of I wonder if I should bug pathos about eliminating the "one special order dropbox property per tile" limitation, but that would require reworking either map properties or special orders

#

Which is probably severely out of scope

next plaza
#

Yeah I don't think we're getting any significant changes at this point

#

(Hence why I put the 0 schedule thing in SpaceCore)

#

(Though that is more of an experimenetal change)

calm nebula
#

Clearly the best time to rewrite the whole scheduler

next plaza
#

Clearly

rancid musk
#

Can I rewrite the whole scheduler but do it wrong as a joke

calm nebula
#

Do it

#

Please

lucid iron
#

this worked as expected Bolb

CodeMatcher matcher = new(instructions, generator);

CodeMatch ldlocAny = new(OpCodes.Ldloc_0);
ldlocAny.opcodes.Add(OpCodes.Ldloc_1);
ldlocAny.opcodes.Add(OpCodes.Ldloc_2);
ldlocAny.opcodes.Add(OpCodes.Ldloc_3);

matcher.Start()
.MatchStartForward([
    new(OpCodes.Brfalse_S),
    ldlocAny,
    new(OpCodes.Callvirt, AccessTools.PropertyGetter(typeof(MachineOutputTriggerRule), nameof(MachineOutputTriggerRule.RequiredCount)))
]);
calm nebula
#

Be worse than quartic

#

Always take the worst route

rancid musk
#

Ban town instead of the backwoods from pathfinding

calm nebula
#

Make NPCs always take the wrong warp

lapis creek
#

!c#

#

I thought that might work nvm

#

I remember a lil getting started with c# prompt thing here, maybe someone can help me

calm nebula
#

!yellowbook

ocean sailBOT
lapis creek
#

I need to get the right tools etc going so I can start learning

calm nebula
#

!startmodding

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.

lapis creek
#

tyty

lone ice
#

Okay I came and asked this a bit ago but I think I asked it wrong: if I have a list and want to add a bracketed list to that list without overwriting the existing list, what do I do?

For example, in data/Locations, each list within "Fish" for the location tells you everything you can fish up:

  {
    "Chance": 0.1,
    "Season": "Spring",
    "FishAreaId": null,
    "BobberPosition": null,
    "PlayerPosition": null,
    "MinFishingLevel": 10,
    "MinDistanceFromShore": 4,
    "MaxDistanceFromShore": -1,
    "ApplyDailyLuck": false,
    "CuriosityLureBuff": 0.1,
    "SpecificBaitBuff": 0.0,
    "SpecificBaitMultiplier": 1.66,
    "CatchLimit": 1,
    "CanUseTrainingRod": null,
    "IsBossFish": true,
    "SetFlagOnCatch": null,
    "RequireMagicBait": false,
    "Precedence": -100,
    "IgnoreFishDataRequirements": true,
    "CanBeInherited": false,
    "ChanceModifiers": null,
    "ChanceModifierMode": "Stack",
    "ChanceBoostPerLuckLevel": 0.0,
    "UseFishCaughtSeededRandom": false,
    "Condition": "!PLAYER_SPECIAL_ORDER_RULE_ACTIVE Current LEGENDARY_FAMILY, WEATHER Here Rain Storm GreenRain",
    "Id": "(O)163",
    "ItemId": "(O)163",
    "RandomItemId": null,
    "MaxItems": null,
    "MinStack": -1,
    "MaxStack": -1,
    "Quality": -1,
    "ObjectInternalName": null,
    "ObjectDisplayName": null,
    "ToolUpgradeLevel": -1,
    "IsRecipe": false,
    "StackModifiers": null,
    "StackModifierMode": "Stack",
    "QualityModifiers": null,
    "QualityModifierMode": "Stack",
    "ModData": null,
    "PerItemCondition": null
  },```

I don't want to replace the existing 5-10 sets of the above terms, I just want to append a new one to the existing set. As far as I can tell, Fields would only let me replace information within that section (like StackModifiers) and Entries will replace the entire list with whichever I provide.
#

Is there a way to do this without copying the entire former set of lists to my new EditData --> Entries patch?

lucid iron
#

You can edit a list like a dict

#

Existing should be keyed by Id I think? But u r add new fish so just use {{Modid}}_fishId

lone ice
#

But if that's the case why is adding a new one replacing all former entries in Fish?

lucid iron
#

Because you have to use the TargetField way

lapis creek
#

you need to do it like this

#

there you editdata and target data/fish

#

and add entries

uncut viper
#

no, not like that for adding to location fish lists

#

thats for adding a new fish entirely

lapis creek
#

oh location

uncut viper
#

Twizz wants to add to a list inside Data/Locations entries

lapis creek
#

twizz needs code like this then, this is mine for adding new random items to the trash randomisation but it can be done with any list yeah

#

targetfield

uncut viper
#

(but ofc Twizz remember you're adding those sets of terms and not just a string but the concept is the same)

lapis creek
#

special note to the "#-1" trick I was taught that orders things nicely without replacing

uncut viper
#

which means i also believe you can just use regular ID based entries

#

since each fish spawn object has an ID field

#

though, actually, with CP 2.4, i think you can do that at all times now i think?

#

i dont think you need the negative number trick anymore

lucid iron
#

Wow I didn't know cp supported negative index LilyDerp

lone ice
#

The part I'm still not understanding is how I can use that to add an entire bracketed field of information

#

like this doesn't work:

   "Action": "EditData",
   "Target": "Data/Locations",
   "TargetField": [ "Mountain", "Fish" ],
   "Entries": {
     "ApplyDailyLuck": false,
     "BobberPosition": null,
     "CanBeInherited": true,
     "CanUseTrainingRod": null,
     "CatchLimit": -1,
     "Chance": 0.2,
     "ChanceBoostPerLuckLevel": 0.05,
     "ChanceModifierMode": "Stack",
     "ChanceModifiers": null,
     "Condition": null,
     "CuriosityLureBuff": -1.0,
     "FishAreaId": null,
     "Id": "{{ModId}}_Dragonfly",
     "IgnoreFishDataRequirements": true,
     "IsBossFish": false,
     "IsRecipe": false,
     "ItemId": "{{ModId}}_Dragonfly",
     "MaxDistanceFromShore": -1,
     "MaxItems": null,
     "MaxStack": -1,
     "MinDistanceFromShore": 0,
     "MinFishingLevel": 0,
     "MinStack": -1,
     "ModData": null,
     "ObjectDisplayName": null,
     "ObjectInternalName": null,
     "PerItemCondition": null,
     "PlayerPosition": null,
     "Precedence": 0,
     "Quality": -1,
     "QualityModifierMode": "Stack",
     "QualityModifiers": null,
     "RandomItemId": null,
     "RequireMagicBait": false,
     "Season": "Fall",
     "SetFlagOnCatch": null,
     "SpecificBaitBuff": 0.0,
     "SpecificBaitMultiplier": 1.66,
     "StackModifierMode": "Stack",
     "StackModifiers": null,
     "ToolUpgradeLevel": -1,
     "UseFishCaughtSeededRandom": true
   }
 },```
uncut viper
#

you'd do it like

"IdForBracketInfo": {
  ...
}
#

even though the bracket info sets dont normally have an id like that

lone ice
#

you just create a new one?

#

ok

uncut viper
#

yep, same way you'd add an object to Data/Objects

lone ice
#

Yeah it's just throwing me because they don't have one to begin with

#

I didn't know you could add that

uncut viper
#

the key you use should match the Id field inside it ofc

#

it does say on the CP documentation for it but there isnt really an example of it, just says you can do it, so i dont blame you for missin it

lucid iron
#

Think it's like

"Entries" : {
    "SomeId" : {
         // 🐟
    } 
}
uncut viper
#

yeah, combined with the TargetField set properly and it'll add a new one and it'll correctly become just a regular { } object like the game expects it to be once its loaded

lone ice
#

I've still got it wrong somehow, I'm just not sure what the problem is that I'm getting error messages

lapis creek
#

You're not adding an ID first I think?

#

like so?

teal bridge
#

Yeah it's just editing the actual Fish field which is not a single fish.

uncut viper
lapis creek
#

I want it fishable year 2+

uncut viper
#

When conditions go in the same level as the Action: EditData and Target fields

#

since theyre a content patcher thing

lapis creek
#

oh I see

#

ty

uncut viper
#

currently, that fish you posted is available all the time as long as its spring

#

but you dont need a when condition at all if you just add YEAR 2 to the condition

#

the one with LOCATION_SEASON i mean

lapis creek
#

like so?

uncut viper
uncut viper
lone ice
#

it's not super clear to me how many things I need to report when I'm "drilling down"

lone ice
#

I just have the location (mountain) and then the second-level heading (fish)

lapis creek
#

I need to clean up my other attempts at GSQs and conditions then lol

uncut viper
#

with the uploader preferably

teal bridge
#

You're trying to edit a single Fish Spawn but your edit is applying to the entire dictionary of fish spawns.

lapis creek
# lone ice like this doesn't work: ``` { "Action": "EditData", "Target": "Data/Locati...
   "Action": "EditData",
   "Target": "Data/Locations",
   "TargetField": [ "Mountain", "Fish" ],
   "Entries": {
   "{modID}_Dragonfly": {
     "ApplyDailyLuck": false,
     "BobberPosition": null,
     "CanBeInherited": true,
     "CanUseTrainingRod": null,
     "CatchLimit": -1,
     "Chance": 0.2,
     "ChanceBoostPerLuckLevel": 0.05,
     "ChanceModifierMode": "Stack",
     "ChanceModifiers": null,
     "Condition": null,
     "CuriosityLureBuff": -1.0,
     "FishAreaId": null,
     "Id": "{{ModId}}_Dragonfly",
     "IgnoreFishDataRequirements": true,
     "IsBossFish": false,
     "IsRecipe": false,
     "ItemId": "{{ModId}}_Dragonfly",
     "MaxDistanceFromShore": -1,
     "MaxItems": null,
     "MaxStack": -1,
     "MinDistanceFromShore": 0,
     "MinFishingLevel": 0,
     "MinStack": -1,
     "ModData": null,
     "ObjectDisplayName": null,
     "ObjectInternalName": null,
     "PerItemCondition": null,
     "PlayerPosition": null,
     "Precedence": 0,
     "Quality": -1,
     "QualityModifierMode": "Stack",
     "QualityModifiers": null,
     "RandomItemId": null,
     "RequireMagicBait": false,
     "Season": "Fall",
     "SetFlagOnCatch": null,
     "SpecificBaitBuff": 0.0,
     "SpecificBaitMultiplier": 1.66,
     "StackModifierMode": "Stack",
     "StackModifiers": null,
     "ToolUpgradeLevel": -1,
     "UseFishCaughtSeededRandom": true
   }
 },```
#

like so

lucid iron
#

What error do you get?

uncut viper
#

well, {modId} should be {{modId}} but i would also like to know what error you are getting

#

oh thats not twizz's code

#

whoops lmao

lapis creek
uncut viper
#

i just saw the code block appear and assumed twizz sent it bc the name/avatar was scrolled up too far, my bad SDVpuffersquee

lone ice
#
   "Action": "EditData",
   "Target": "Data/Locations",
   "TargetField": [ "Mountain", "Fish" ],
   "Entries": {
     "{{ModId}}_Dragonfly": {
       "ApplyDailyLuck": false,
       "BobberPosition": null,
       "CanBeInherited": true,
       "CanUseTrainingRod": null,
       "CatchLimit": -1,
       "Chance": 0.2,
       "ChanceBoostPerLuckLevel": 0.05,
       "ChanceModifierMode": "Stack",
       "ChanceModifiers": null,
       "Condition": null,
       "CuriosityLureBuff": -1.0,
       "FishAreaId": null,
       "Id": "{{ModId}}_Dragonfly",
       "IgnoreFishDataRequirements": true,
       "IsBossFish": false,
       "IsRecipe": false,
       "ItemId": "{{ModId}}_Dragonfly",
       "MaxDistanceFromShore": -1,
       "MaxItems": null,
       "MaxStack": -1,
       "MinDistanceFromShore": 0,
       "MinFishingLevel": 0,
       "MinStack": -1,
       "ModData": null,
       "ObjectDisplayName": null,
       "ObjectInternalName": null,
       "PerItemCondition": null,
       "PlayerPosition": null,
       "Precedence": 0,
       "Quality": -1,
       "QualityModifierMode": "Stack",
       "QualityModifiers": null,
       "RandomItemId": null,
       "RequireMagicBait": false,
       "Season": "Fall",
       "SetFlagOnCatch": null,
       "SpecificBaitBuff": 0.0,
       "SpecificBaitMultiplier": 1.66,
       "StackModifierMode": "Stack",
       "StackModifiers": null,
       "ToolUpgradeLevel": -1,
       "UseFishCaughtSeededRandom": true
     }
   }
 },```
lapis creek
#

yess

lone ice
#

that's what I have

uncut viper
#

as far as i can tell that should be fine, what error are you getting?

lone ice
#

never mind, it's working this time 🤣

uncut viper
#

(also, if it makes it easier for you in the future, you could probably leave out a good number of those fields. like, a lot of the ones you have set to "null" probably are null by default, so you can remove the line entirely, to make it easier to read)

lone ice
#

maybe I just forgot to save hahaha

teal bridge
#

I just looked at locations.json and fish spawns are a list, not a dictionary. Are you sure the ID style is supposed to be allowed?

uncut viper
#

yes

#

not only is it supposed to be allowed but its the only way its allowed

lone ice
#

I'm tired and brain is dumb, thank you all for finally resolving this for me 🤣

uncut viper
#

thats how you add to/edit lists in CP

#

CP handles the Id stuff its own way presumably to make it work

#

(well, only way its allowed without overwriting the entire list obviously)

icy viper
#

Hello, sorry for the newbie question but I wanna know, GetFish() also gets furniture, right? Is there a way to exclude them, like checking if the item is a furniture and then loop again if so?

teal bridge
#

I guess getFish can return any item but why is there furniture in the fish spawn list?

tiny zealot
#

iridium krobus?

teal bridge
#

Oh, yeah, and that thing in the pirate cave.

#

Those are pretty rare though... why need to exclude them?

uncut viper
#

(also getFish or GetFish and also from what class bc theres several different ones)

teal bridge
#

Indeed, and many/most locations override getFish for themselves, despite the spawn lists.

icy viper
#

It's getFish, sorry my keyboard keep auto correcting it.

teal bridge
#

Like, you can of course call getFish as many times as you want and filter out the items you don't want, but is it supposed to correspond to something? Are you trying to predict the catch?

icy viper
#

No, it's for machine output. You put the bait in machine, the machine uses the custom output method to determine which fish to get and then return an Object, which is used as output item.

teal bridge
#

I guess you would just generate "fish" until the resulting item has the category you want.

#

Or if you don't need it to precisely mimic the fish randomness, then you could just read the spawn data and use your own random.

lucid iron
#

can u just query for random fish item

uncut viper
#

a lot of the furniture would also just never show up by virtue of their Condition field not matching i assume

#

or BobberPosition requirements, like krobus statue

lapis creek
#

is there an accessible list of the buffs with their IDs somewhere? I cant seem to find it with internet searches

icy viper
#

Yeah, that's weird. I might have to think of a different approach.

teal bridge
#

Pretty sure there was a buffs page linked from the modding home page but the wiki is down...

rancid temple
#

It's being super slow for me, but not quite down

lapis creek
#

that must be why it kept throwing errors when I tried to searhc it

rancid temple
#

Aside from that, Data/Buffs

#

Their names are all obfuscated by translation, so you'd have to go dig through the string assets to figure out what each one is called

lapis creek
#

yeah trying to use a PLAYER_HAS_BUFF condition for a fish to require you to have a speed buff

#

could I do "PLAYER_HAS_BUFF Current speed" or no?

lucid iron
#

i dont think you can check for any speed buff

rancid temple
#

Only if you add a buff called speed

#

Otherwise you need to figure out which one of these numbers corresponds to the specific buff you're looking for

brave fable
#

"22" adds 2 speed for 3000ms

lapis creek
#

but I could do PLAYER_HAS_BUFF current X where X is all the speed buffs in the game ye?

rancid temple
#

Is that the only speed buff?

uncut viper
#

PLAYER_HAS_BUFF only allows for one buff to check

#

not sure if thats changing in 1.6.9

lapis creek
#

dang

#

okay I def need to learn C# for that one then lol

uncut viper
#

oh it is being changed in 1.6.9 yes

lapis creek
#

oooh

uncut viper
#

you wont be able to account for modded buffs though

rancid temple
#

Love to see more GSQ's get the plural adjustment

brave fable
uncut viper
#

BETAS does have a PLAYER_SPEED gsq too

lapis creek
#

...that could work. I'd be happy with just checking if the player has a minimum of default + 1 speed buff equiv or higher.

brave fable
#

actually most of them are. eel, coffee, and espresso all have non-unique speed buffs in data/objects

lapis creek
#

I guess I wait for 1.6.9 for that then?

uncut viper
#

(i should be clear that BETAS =/= 1.6.9 beta, BETAS is the acronym name of my mod)

rancid temple
#

Isn't there a book that increases speed?

lapis creek
#

ohh

uncut viper
#

there are 2 books that increase speed

brave fable
#

is it my imagination or is the KnockbackMultiplier buff effect really, really subtle

uncut viper
#

but they dont give you a buff i think they just Do That

teal bridge
#

Rather than checking for an explicit buff, you might want to check the temporarySpeedBuff (float).

brave fable
#

even with a multiplier of 10 it barely feels different

rancid temple
#

That's C# though isn't it?

teal bridge
#

Although, caveat, could be one of those things that looks like it should work but actually doesn't.

#

Yes it's C#

rancid temple
#

Yeah they aren't in C# lol

teal bridge
#

I realize that, but we were onto the "need to learn C# for this" part of the conversation.

lapis creek
#

I'll add it to my notes to ask about when I try C# to make this work then I guess

uncut viper
#

apparently the books of speed only add to Farmer.addedSpeed.... not Farmer.speed

#

i didnt realize that field existed

#

its also where speed buffs are added from too

teal bridge
#

If temporarySpeedBuff works the way the name suggests (or that + some combination of addedSpeed if you want book buffs) then it's probably easy to write the GSQ.

calm nebula
#

Lol

lapis creek
#

thank you

teal bridge
#

(and Button can add it to the thing)

calm nebula
#

"What's this field doing here?"

rancid temple
#

What does BETAS check currently?

calm nebula
#

I reiterate

#

C# is dirt eash

#

At least to start in

uncut viper
#

BETAS checks Farmer.getMovementSpeed()

#

which accounts for speed, addedSpeed, and temporarySpeedBuff

rancid temple
#

Oh, the whole kit and kaboodle

lapis creek
#

Ive got the tutorial stuff open in all my tabs I definitely intend to have a solid go at c# tonight after I test my current progress on my mod

calm nebula
uncut viper
#

addedSpeed gets the Farmer's speed buffs. temporarySpeedBuff is from... uh. Farmer.MovePosition(), TerrainFeatures.Flooring.doCollisionAction, Grass.doCollisionAction, and HoeDirt.doCollisionAction()...

#

getMovementSpeed does indeed account for horsie

lapis creek
#

my fish are here! yay!

#

(in silhouette)

calm nebula
#

D'awwwww

uncut viper
#

i forgot that flooring gives speed buffs

calm nebula
#

Go horsie go horsie

teal bridge
#

It does. And there's a mod that slightly buffs the flooring speed buffs. (One of the few balance-changing mods I use)

rancid temple
lapis creek
rancid temple
#

You need at least 1 horsepower to catch this fish

calm nebula
#

More importantly it stops grass from slowing you down

#

Fun fact

brave fable
#

why is life hard SDVpufferfush

rancid temple
#

So does that one book too

uncut viper
#

float movementSpeed = Math.Max(1f, (float)base.speed + (Game1.eventUp ? ((float)Math.Max(0, Game1.CurrentEvent.farmerAddedSpeed - 2)) : (this.addedSpeed + (this.isRidingHorse() ? 5f : this.temporarySpeedBuff))));

however you dont get the flooring buff if you're on a horse? i guess

calm nebula
#

One square yard of sunlight is approximately one horsepower

teal bridge
#

The slitherlegs book doesn't actually completely remove the grass/crop slowdown, just nerfs it.

rancid temple
#

Big sad

#

Time to make a new mod

brave fable
uncut viper
#

adding a new book to my mod called Lil Slitherlegs

calm nebula
#

That's fjxkong amazing

#

Go monoxide go

teal bridge
#

Well, there are two Way Of The Wind books, so it's consistent with the uh, "lore", anyway...

#

That name is gonna be confusing, though. Just do "Old Slitherlegs Part 2"

uncut viper
#

Older Slitherlegs

teal bridge
#

That works too

rancid musk
#

Are you on 1.6.9 or anything?

teal bridge
#

It just hit me... I was going to say "once you get all the late-game speed buffs from the horse + all the books, you can move around the map at a pretty decent rate and the tiny crop slowdown isn't so bad". And that made me think just how unbearably slow movement is in the early game, when you have to stack a dozen buffs just to make it barely passable.

brave fable
uncut viper
#

dont forget the coffee too

teal bridge
#

Of course, going even 10 in-game minutes without the spicy eel + triple shot is pure pain.

uncut viper
#

entire reason i added the book to my mod whose sole purpose is tripling the duration of coffee buff

teal bridge
#

Triple-decker triple-shot

uncut viper
#

too annoyed with having to keep drinking

#

hell yeah

teal bridge
#

A whole jug of espresso

calm nebula
#

Lol

#

Introducing - caffeine jitters

#

+2 speed but suddenly you can't fish straight

rancid musk
#

I'll try to look into that, but I've never seen it before. In the middle of something right now.

calm nebula
teal bridge
#

Some games have addiction mechanics. Drink the triple-double-triple-triple espresso too many days in a row and you can't get out of bed the next morning.

calm nebula
#

Publicizer

rancid musk
brave fable
#

steps to reproduce:

  • install console code and better crafting
  • attempt to use console code
rancid musk
#

I needed to be able to tell Pintail to ignore access

calm nebula
rancid musk
#

(I do not actually blame casey, I am just impatient)

calm nebula
#

And somehow this is causing issues

rancid musk
#

It's a thing you have to explicitly define to use.

rancid temple
calm nebula
#

It's like that weird duck typing thing

#

Oh. I see

next plaza
uncut viper
#

there was a good possibility of it, i was wanting to add more books for 1.6.9 since im gonna be updating the mod anyway when it comes out

rancid temple
#

Also this books internal name is fucking Book_Grass wtf

teal bridge
#

Publicizer is just an analyzer, IIRC. You have to make the attributes yourself.

next plaza
#

I ran into the problem from some other mod

uncut viper
#

but dont let me stop you from doing it yourself if you wanted to

rancid temple
#

If you're going to do it, I'll just make a temporary mod for myself, I don't have any other books I wanna make so I wasn't about to make a whole mod for one book currently lol

next plaza
brave fable
#

thank yooou

uncut viper
#

only reason i wouldnt just do it right now is bc idk what id make for the art lmao

teal bridge
#

Sometimes I wonder if I should just set player speed to 5000 and be done with it. But I suppose, you take away the pain, you also take away the fun.

rancid temple
#

Books are so short term, I don't even remember what the current art is lol

#

Will it go that high? lol

teal bridge
#

Well it's just a float. As for what it would do when it's that high, who knows.

uncut viper
rancid temple
#

Make the grass flat lmao

#

Ol' Stompyboots

uncut viper
#

i was just thinkin that.. either that or make it look dead

rancid temple
#

Grass can't stop you if it's dead

#

I struggle with controlling the character at 10 speed lol

teal bridge
#

Brown Patch: The Book

brave fable
#

i spent all this time troubleshooting why my buff's BuffEffects.KnockbackMultiplier value is always 0

teal bridge
#

Most people want to eliminate brown patch. We want to add more of it.

rancid musk
#

Hurrah a fix from Console Code's side

brave fable
#

BuffAttributesData doesn't even contain KnockbackMultiplier

rancid temple
#

If 5000 would work, I wonder if the collisions still would lol

brave fable
#

it's just given in BuffEffects as a joke

#

a cruel joke

teal bridge
#

Well I have noticed that speeding up NPCs as part of the fishing acceleration can make them stuck, but that might be an unrelated bug in my speed-undo mechanic.

lapis creek
uncut viper
#

book of grass is one of those ones thats 1 pixel shorter than most others. pain.

#

shorter and thinner..

calm nebula
teal bridge
#

Mail is overrated anyway.

#

My thinking is, "if you can't hit the magma sprites, they can't hit you either"

brave fable
#
  • sdv 1.6.9 request: allow edible objects to add any buff properties
  • to do: add missing fields from BuffEffects to BuffAttributesData (AttackMultiplier, KnockbackMultiplier, WeaponSpeedMultiplier, CriticalChanceMultiplier, CriticalPowerMultiplier, WeaponPrecisionMultiplier)
#

thank u for ur consideration

calm nebula
#

My irl books are all different sizes and shapes

uncut viper
#

i dislike the inconsistency

rancid temple
#

It's different therefor it must be punished

calm nebula
#

For that

#

Rokugin, I am sorting my books by color

uncut viper
#

(but mostly its bc its harder to fit things on a smaller canvas)

calm nebula
#

And shelving them all with the pages facing outwards

rancid temple
#

Okay well that's just evil

uncut viper
#

in this case it didnt end up mattering bc the grass was still c entered even on a bigger book b ut sometimes they cant be centered afterwards

rancid temple
#

I was gonna say I don't even sort my books, but damn

#

I keep forgetting AT is broken in the latest build of the 1.6.9 beta

#

At least, I think it was working with the SMAPI 4.1.0 beta 2

#

I am not very consistent about actually launching after updating

brave fable
#

oh my god i cant even set the buff.effects.knockbackmultiplier on item eaten. this was going to be a 5 minute update.
..
yessss

leeks.effects.KnockbackMultiplier.Value = 100;
who.buffs.Remove(leeks.id);
who.buffs.Apply(leeks);
lapis creek
#

is anyone familiar with how visible fish works? I loaded up my game with the current working build of my new fish mod and visible fish is exploading on me in the logs and even worse my new fish isnt visible in the water.

teal bridge
#

On the subject of "will very high speeds break collisions", I believe the answer is... yes, yes, absolutely yes.

        public void tryToMoveInDirection(int direction, bool isFarmer, int damagesFarmer, bool glider)
        {
            if (!this.currentLocation.isCollidingPosition(this.nextPosition(direction), Game1.viewport, isFarmer, damagesFarmer, glider, this))
            {
                switch (direction)
                {
                case 0:
                    this.position.Y -= (float)this.speed + this.addedSpeed;
                    break;
                // Snip other cases implemented essentially the same way
                }
                return nextPosition;
            }
        }

Where nextPosition just adds the speed to the X/Y position. It's the most naive collision checker you can think of.

lucid iron
#

build up speed for 12 hours

rose forge
#

Is it possible to add (not replace) music in 1.6? I used to use CM to just stack them and they played randomly, but using the new CP format to replace tracks does just that, replaces, if I make a separate pack replacing the same tracks, one just overrides the other and they never play.

rancid temple
#

You need to name them uniquely so that it creates a new entry instead of creating an override

#

You will then have to also patch wherever they're being used to use the new track rather than the old

rose forge
#

"MainTheme": {
"Id": "MainTheme",
"Category": "Music",
"FilePaths": ["{{AbsoluteFilePath: tracks/HarvestMoon.wav}}"],
"Looped": true,
"StreamedVorbis": true
},

You want me to rename the main file and not the ID?

#

oh I have no idea how to do that x.x

rancid temple
#

I would be surprised if that one isn't hardcoded

#

It sure is

rose forge
#

So because CM is outdated, we can't add say multiple mainthemes to the one maintheme, to have it play randomly like before?

#

cause CM used to do it

rancid temple
#

You could add the original main theme into that override as well as your other desired songs where it has a list of FilePaths

#

Just have to unpack the audio files and find the main theme

rose forge
#

how would I list multiple tracks over the one? Sorry I am still very new to content patcher

rancid temple
#

FilePaths is a list as denoted by [] which means it can take multiple entries, separated by a comma. So:

"FilePaths": [
  "{{AbsoluteFilePath: tracks/HarvestMoon.wav}}",
  "{{AbsoluteFilePath: tracks/ASecondAudioFile.wav}}",
  "{{AbsoluteFilePath: tracks/MainThemeOnceYouUnpackIt.wav}}"
]```
rose forge
#

OHHHH you are my savior thank you so much

#

now i can have my omori and harvest moon music

#

(sadly cant upload due to copyright)

rancid temple
#

It'll pick a random one from the list every time it needs to

rose forge
#

thank you!!

lapis creek
brave fable
#

at last, a unique buff for a recipe for each cooking level from 3 to 10 🥬

#

lv2 is off the hook since it already has food +tipsy, drink +def, food +speed, and food +so much

#

which is probably all busted and weird enough

teal bridge
#

Looks nice. What are the plates and silhouettes on the right all about?

pine elbow
#

Anyone know how to edit Challenging Community Center Bundles to edit the amount of an item you need? I want to change the amount of fish to only need 1 of each listed instead of the original

#

Is what it shows in the config

#

I can't figure out which one of the numbers I edit to change it

brave fable
#

probably not so far-fetched now the game has so many bizarre collectibles and systems

teal bridge
#

Oh, they looked interactive, I thought maybe you had to drag the ingredients onto them or something.

brave fable
#

clicking inventory items moves them to the slots SDVpufferthumbsup it's more clear when you're actually doing it rather than reading it

teal bridge
#

Why does it say there are 3 ingredients?

vernal crest
brave fable
#

that's the craftable count, it's shown in the base game and bettercrafting menus

pine elbow
#

Yea I figured it out after going in game to see how much fish was needed and changing all the 10s and 5s

#

But it's

teal bridge
#

Oh, you mean the number you're able to make.

pine elbow
#

"River Fish": "River Fish/BO 154 2/704 1 2 137 1 2 139 1 2 145 1 2 699 1 2 706 1 2 144 1 2 707 1 2/6/8/6"

#

I changed the 10 to 1 and it worked

#

So 154/2/704 "10" to "1"

#

Also thank you!

vernal crest
#

Glad you were able to figure it out :)

frail plank
#

This might be a silly question, but you can define a custom object entirely on the C# side without content patcher?

uncut viper
#

yes. Content Patcher is just a C# mod that does it for you

lapis creek
#

celebration pic. thanks everyone who showed up to my support channel the mod is not working perfect in its current state I just need to figure out the fiew last conditions I need C# for, and do the aquarium loot json.

plucky reef
#

I did. I used assetrequested to import a meleeweapon, included the sprite in the C# side, and defined some custom behavior for it.

frail plank
#

Is said mod open source? I wanna take a looksy if that's cool 😄

rancid temple
#

Content Patcher is yes

#

But fairly complicated

#

There is however this page on how to do it through SMAPI

#

I think there was another page, but I can't remember where I'm thinking of right now

plucky reef
frail plank
#

Thank you!

rancid temple
#

Adding stuff to the pipeline through C# definitely makes me appreciate CP more, it's kind of a pain in the ass

teal bridge
#

I haven't found it too bad on the declaration side. Though if I were patching the content of other mods, I imagine it might be less than pleasant to deal with Dictionary<string, Dictionary<string, Dictionary<string, object>>> or whatever gets thrown at you because you don't have access to the real model type.

fiery cobalt
#

Is there anyway to turn off pickles/juice for crops or is that just too hardwired into the game?

lucid iron
#

You need to add your own rule to keg/jar

#

And ban a particular context tag with it

#

Oh ig u can just modify the original rule's context tag too blobcatgooglyblep

#

Dunno if any big mod has claim on that

brittle pasture
#

RequiredTags is a list so it should be safe to add

#

just add a tag !id_o_youritemid to ban it

lucid iron
#

There is cornucopia artisan machine which adds a veggie wine rule above the juice rule

fiery cobalt
#

Thanks!

lucid iron
#

Just gotta modify that one too

fiery cobalt
#

Some of the juices are fine but some are just kinda weird

brittle pasture
#

I think that's par for the course, hence the Pam quest

lucid iron
#

Vodka mod where

fiery cobalt
#

There was vodka in Starbrew Valley i think

brittle pasture
#

Wildflour adds a distiller which among other things turns potatoes into vodka
And the Cornucopia successor to Starbrew (there will be one I think?) will probably have vodka as well

fiery cobalt
#

Okay, I tried to figure it out myself but am dumb and don't understand content patcher that well so have no idea where I'm supposed to add your own rule to keg/jar/ban context tag or what RequiredTags is

brittle pasture
#

Look at Data/Machines

#

find the entries for the jar/keg

#

If your goal is just to ban a bunch of items from the rules you don't need to do much, just need to add a few entries to an array

#

search for Default_Juice or Default_Pickled specifically

#

and see the RequiredTags field below it. Basically an item that has every tag in that array (or not have that tag if it begins with a !) will be considered for the rule

#

So for example, Default_Pickled accepts any item that has the category_vegetables. You want to add a new entry !id_o_youritemid so it will accept any item that is a vegetable AND not your item

#

(you can use Lookup Anything and turn on debug fields to get the context tag corresponding to your item)

#

once you've identified the changes you want to make, use TargetField to target the RequiredTags field to add your new string

#

(I'm going to bed immediately after this so I'm dumping everything. Apologies if that was rambly lol)

fiery cobalt
#

No no that's super detailed and a big help!

#

(It's 2:30 am so I should sleep too lol)

#

Thank you so much

#

❤️

#

Hmmm xnbcli is not unpacking Data/Machines for me

#

That's gonna be a tomorrow problem

brave fable
#

!unpack @fiery cobalt

ocean sailBOT
#

Follow this guide to unpack the game's content files in order to see and explore how the game data is structured.
It's helpful when making your own mods, or just to learn about how the game works!

brave fable
#

use stardewxnbhack instead of xnbcli! it supports all sdv1.6 files

#

but do it tomorrow lol

lucid mulch
#

@vernal crest @inner harbor wont be releasing it to nexus and will stay a floating file on discord, as 1.6.9 now does the logging for me when dialogue failed to be hit and fallback text is going to be used

vernal crest
#

What about if it can't find a fallback like with Lemur's ... problem?

lucid mulch
#

the game itself will be logging in places where ... would be used

velvet narwhal
#

patching the spouseroom when it's already built becomes a problem, right? i can't remember the nuance of how that works

vernal crest
rancid temple
#

You can patch the spouse room whenever, but if you try to patch it in the middle of a game it won't update

#

I think it would reflect any changes on a reload

drowsy pewter
#

@fiery cobalt here is how we ban oats from the vanilla juice rule (necessary in our case)

            "Action": "EditData",
            "Target": "Data/Machines",
            "TargetField": [
                "(BC)12",
                "OutputRules",
                "Default_Juice",
                "Triggers",
                "ItemPlacedInMachine_Vegetable",
                "RequiredTags"
            ],
            "Entries": {
                "#-1": "!id_o_cornucopia_oats"
            }
        }```

*personally* i would not bother with banning stuff from the vanilla rules if the only outcome is that they make weird stuff, people play with lots of other mods that mess with those rules/replace them without care, its not really worth it; imo if some artisan good is weird then people typically just will not make the artisan good
#

but if you want to do it, that is how you do it

woeful lintel
#

When does 1.6.9 releases (approximately) and how do I build my mod for it? Do I just have to update the version of Pathoschild.Stardew.ModBuildConfig in the csproj?

lucid mulch
#

just have 1.6.9 and hit compile

rancid temple
#

The beta is going now so you could check compat with it currently

#

I'm sure there's a chance that something could still be breakingly different between beta and release but most likely it probably won't

woeful lintel
rancid temple
#

(I think it was a couple of Platonymous's mods that are still built for the 1.6 beta lol)

rancid temple
velvet narwhal
#

i kind of just wanted a funny, "have this specific mailflag that i arbitrarily added at some point? get a spouseroom that has a basement"

rancid temple
#

If you do, make sure you make Farmhouse Fixes a dependency of your mod otherwise you will warp back to the front door when going back upstairs

woeful lintel
rancid temple
#

Yeah, check pins

velvet narwhal
#

euh too much work and i'm already feeling that, "you're putting too many frameworks on an expansion of an npc"

rancid temple
#

It's more like, invite only beta lol

#

Since anyone with the code and on Steam can get it

woeful lintel
velvet narwhal
#

also, side note, i have given up on the incrementstat trigger action for a day counter, unless i'm doing something inherently wrong, but i'm also not in the mood to have 4 trigger actions per event just because i want to space my events out SDVpufferpain

woeful lintel
#

Good thing I checked the changelogs, there are changes in light sources, I'll rework them later to avoid breaking stuff

#

Uh, I can't check the CP compatibility on the beta since there's no CP version for the beta.

#

I still have a bunch of stuff to do anyway

lone ice
#

is there data/Objects code for making items prismatic?

#

(or some other way)

#

I added bugs to my mod and thought really rare prismatic versions would be cool

rancid temple
woeful lintel
#

oh, didn't see it, thanks

woeful lintel
rancid temple
#

It's hidden by scrolling down to keep people from downloading it when they don't need it lol

lone ice
drowsy pewter
lone ice
#

I haven't even designed the mod that I originally planned for, I'm having too much fun with everything else 🤣

lone ice
vernal crest
rancid temple
#

Prismatic isn't supported on Objects I'm pretty sure, you would have to patch the draw code and also change how the sprites work

drowsy pewter
#

what glow function are you talking about because objects dont glow

#

prismatic shards dont glow

woeful lintel
#

I meant bugs, I ruined my joke....