#LethalConfig

1 messages · Page 1 of 1 (latest)

clever drift
#

LethalConfig is a mod configuration menu that allows players to edit their configs from within the game. It also provides a simple API for developers to customize their mod and config entries.
https://thunderstore.io/c/lethal-company/p/AinaVT/LethalConfig/
https://github.com/AinaVT/LethalConfig

Instructions on how to use it are in the README.

Please, feel free to leave any suggestions or issues here or in the github repo!

GitHub

A mod configuration menu for Lethal Company. Contribute to AinaVT/LethalConfig development by creating an account on GitHub.

manic rock
#

Sick!

amber glade
#

Legit asked for a risk of options port to lethal a while ago

manic rock
#

I assume you still need to restart the game for most of the changes to apply?

clever drift
manic rock
clever drift
#

for mods that does implement the lib, they can hint it to not require a restart, so that if the player only changes settings that are "safe" the ui will not even bother warning

#

there are also disclaimers in auto-generated settings also mentioning that it may require a restart

worldly aurora
#

oooo nice

clever drift
frank ocean
#

chad mod

clever drift
#

i'll say tho.. the code isn't the best LOL
still trying to get used to unity

frank ocean
#

you shoulda seen ROO 1.0 KEKW

#

it was just a single list for everything

worldly aurora
#

RoO 1.0 was terrible

manic rock
#

Could you add a toggle to hide the example entry?

clever drift
#

(i'll get to it once im done suffering at work)

worldly aurora
#

this means I'm not obligated to port RoO

frank ocean
#

it just works VeryNice

clever drift
#

there are a few types that are still not handled at all, like KeyboardShortcut or colors.. hell, technically even doubles and longs are not supported LOL

#

but we'll get there.. eventually

worldly aurora
#

I don't even know if KeyboardShortcuts are necessary tbh

worldly aurora
#

totally shilling another mod i made

clever drift
worldly aurora
#

InputUtils uses the Unity Input system

clever drift
#

fair

worldly aurora
#

which is more integrated with the game

#

and supports controllers

clever drift
#

honestly, yeah, makes sense

worldly aurora
#

what are the build instructions for this repo?

clever drift
#

uhhhh... about that...

manic rock
clever drift
#

The thing about this is that my project setup is a bit cursed right now. I'm actually using one unity project, that uses ThunderKit, and i'm using the same project to make multiple mods, doing everything inside of it. This repo is basically the "mod folder" inside that project. I'm eventually going to setup another repo for that project, and that repo will have LethalConfig as a submodule. If that makes any sense

amber glade
#

i think anymod that doesnt use it was simply because the mod existed prior

manic rock
#

Plus there are some useful edge cases where you want keybind to be enforced.

#

Like completely removing it for everyone for example.

amber glade
#

@clever drift would it be possible to add button options

clever drift
amber glade
#

exactly

clever drift
#

yes sir

amber glade
#

i wanna port my mod over to using this but thats one thing i used in Lethal settings that this doesnt have yet

worldly aurora
#

but do let me know when you set up that other project

clever drift
#

sure thing!

amber glade
#

wouldnt it be better to just auto load the png included with the mods?

worldly aurora
#

it depends

#

I think it should automatically load the icon and description from the manifest

#

but it should allow overriding

amber glade
#

agreed

worldly aurora
#

looking to implement it in a PR right now actually

amber glade
worldly aurora
#

hey!

#

it's not part of RoO

amber glade
#

Lethal of Options

clever drift
#

OH WAIT

#

i only now realized

frank ocean
worldly aurora
#

It's part of a stale PR

clever drift
#

it took me that long to realize you're the same rune that made RoO

#

gee

amber glade
#

hahah

worldly aurora
#

I don't really advertise myself

#

so nbd

clever drift
#

i'm ready to be judged

amber glade
#

are you sure?

#

the judging happen like 20 messages ago

clever drift
#

hey, as long as it helps improve things lol

#

i'm a bit of a dingus

amber glade
#

im onyl messing with you lol

clever drift
#

i know ainaWiggle

worldly aurora
#

looks like I need another project that has SharedUtils in order to build it with thunderkit

clever drift
#

Oh yeah, there were a couple of classes that i kept using on all mods, so i made it its own assembly.

#

you know what.. give me a bit, i'll see if i can do the project repo thing now, work is a bit calm right now

worldly aurora
#

take your time

#

i'm not in any rush

#

Also don't know if you did already, but this should also be posted to development-resources

clever drift
#

i didn't yet, i'll do it later today!

amber glade
#

also one other suggestion i have is allowing config name overrides

#

for example in my mod my config is named BuildInside but that wont make sense to people

frank ocean
#

I dunno, that's already base Bepinex feature which lets you set a "user facing" name

amber glade
#

what i mean

#
                new ConfigDescription("Allow placement/building inside the facility")
            );```
frank ocean
#

but why call it "BuildInside" there is what I mean

amber glade
#

when i original looked at config examples early on i was lead to believe they couldnt include spaces etc

#

and looking at many mods i would say lots of people thought the same

frank ocean
#

Yeah the part I highlighted is designed to be the user facing name

#

and can have spaces and such

amber glade
#

yea but if i then change this it will be a different config

frank ocean
#

and that is true

#

retroactively changing stuff like that can be problematic

amber glade
#

which is why having a name override helps in these cases

worldly aurora
clever drift
#

I'm starting to regret all my life choices about how i setup everything and using thunderkit

amber glade
#

hahah

clever drift
#

I think after this, i might honestly spend some time re-structuring everything. I wanted to centralize everything inside Unity, both plugin and asset stuff, but this might have been a dumb idea, and it feels like the unity project is being held together by bubblegum. It's probably better to just have a separate unity project just for making the assets and a vs solution for the plugin.

#

so uhh.. yeah, sorry about that whoops

#

(also, the idea of having one project for multiple mods now sounds stupid to me, so yeah whoops again)

worldly aurora
#

quick question

#

why is this used?

configMenu.transform.SetSiblingIndex(menuNotification.transform.GetSiblingIndex())
clever drift
#

so that the lethalconfig menu is behind the game's built-in menu notification window (since, for now, i'm using it for the restart warning)

worldly aurora
#

ah alright

#

currently making another PR to make the config menu accessible while in game

#

yeah I see the issue now

#

QuickMenuManager doesn't have methods for playing audio or displaying notfis

clever drift
#

yeah, i kinda started working on it yesterday but didn't have much time

worldly aurora
#

meaning you probably need to build your own system for it

clever drift
#

have to make our own notification ui

#

the MenuManager audio can be replaced by the ConfigMenuAudioManager

#

yeah

worldly aurora
#

i'll at least push what i've got to a draft pr

clever drift
#

btw, your thunderstore thing worked like a charm

#

i'm just working on some project structure things, gonna ditch the "one project for multiple mods" thing and just make it a single unity project, just experimenting with what's easy to get going and what's not (since it involves running thunderkit to import the game assemblies and then importing bepinex stuff)

#

that way whoever grabs it just needs to run thunderkit, import some DLLs, and should be able to use it properly (hopefully)

worldly aurora
#

I threw out the draft pr

#

didn't get very far

#

but it's there

amber glade
#

maybe you can see how willis did it with lethal settings

clever drift
#

@worldly aurora Sorry for the ping. I've made a branch to switch the repo into a unity project, still using thunderkit. Could you try testing it to see if you're able to "easily" setup the project and get it going? I've created a pr and tagged you there with the instructions

worldly aurora
#

sorry, was cooking dinner, I'll check it out in a bit

clever drift
#

don't worry, take your time c:

frank ocean
#

Where is my food? :(

worldly aurora
clever drift
#

oh, you have to import it yourself

#

i want to avoid putting assemblies that are not mine in the repo

worldly aurora
#

while fair

clever drift
#

unless that's somehow fine with bepinex especifically

worldly aurora
#

iirc you can use thunderkit to pull bepinex from the thunderstore

clever drift
#

when i tried that a while ago, the project kept crashing

#

can't tell why

#

but yes, there is a bepinex pack in the thunderkit package manager

worldly aurora
#

might need to use a fork of thunderkit though

#

iirc current thunderkit only pulls from RoR2's thunderstore

clever drift
#

ah

#

makes sense

worldly aurora
#

fork + branch that implements the community api instead

#

let me try it myself first though

#

using the fork and then importing bepinex from the lethal-company thunderstore seemed to work

#

publish worked too

#

I had unity crash during import

#

but re-opening unity fixed it?

#

idk unity moment

clever drift
#

well, better than what the repo currently is

#

at least people can try to work with it

#

lol

worldly aurora
#

biggest thing is

#

replace the thunderkit url in the manifest file

#

"com.passivepicasso.thunderkit": "https://github.com/bb010g/ThunderKit.git#thunderstore/communities",

#

and also add a thunderstore source

#

https://thunderstore.io/c/lethal-company

clever drift
#

ye, doing that right now

#

it crashed when i imported, then crashed again when i tried to publish. But then it didn't when i tried again

worldly aurora
#

weeeell

clever drift
#

ah, i think i figured it out

#

Conflict between versions of mono cecil because it was installed as a package using unity's package manager. Unity's was version 1.11.4, the one in bepinex was 1.10.4, then in the import assets phase it was messing everything up

#

removing the packages that had mono cecil as a dependency made it stop crashing (no, idk what i was doing, so the project packages is kind of a mess)

clever drift
#

Just an update on the situation: this whole thing ended up causing a lot of frustrations, there were crashes left and right, so i decided to just go ahead and straight up do things like normal people and make a whole separated solution for the plugin and code, while isolating the unity project just for assets. It's what i should have done since the start, and i apologize for such a mess :c

worldly aurora
#

unfortunately that's what our team ended up doing as well

#

we found thunderkit with lethal company was too unstable

#

I ended up writing a build system on top of Cake

clever drift
#

Honestly, to me it feels like it's more bepinex being too unstable with it. When i just import the bepinex dll and none of the others (harmony, cecil, etc), it works fine

#

but i think i'd rather stick with the "standard" of what people been doing so far

worldly aurora
#

ehhh

#

you could just stub bepinex

#

the dll itself

#

and package it with the repo

#

i think BepInEx has a utility called nstrip or something

#

woops

#

ignore that one

#

the previous one I linked is unmaintained

clever drift
#

mayhaps

#

either that or write a build system too

#

i'll try the stripping just in case

worldly aurora
#

worst case

#

bepinex is lgpl2

#

so it seems like you can redistribute it's dll

clever drift
#

ok, i updated the pr, and did some testing

#

seems to be fine

#

just need to do the standard thunderkit import and it should be usable

rich tulip
#

Intro Tweaks support please

manic rock
#

Wrong place to ask for that, and you already can configure IntroTweaks through LethalConfig.

#

Disable bAlignMenuButtons and bRemoveCreditsButton for the menu to look normal though.

clever drift
#

When it comes to configs, intro tweaks's configs should already show up automatically, yeah.
As for the menu stuff.. honestly, when i was making the mod i had trouble with lethalexpansion too because it also messes with the main menu.
I wish the main menu was made with a vertical layout group so it would automatically layout the buttons itself, that way it would be just a matter of adding/removing buttons and unity's ui would do the rest

#

but alas, no such thing puddle

#

maybe i should claim the top-left corner for myself if no other mod is using it LOL

#

This one, LethalConfig

#

i honestly humored of just slapping a vertical layout group on the main menu, but that could mess with other mods that uses it (lethalexpansion, for example)

#

although pretty much all lethalexpansions settings are available inside lethalconfig cofcof

scarlet saffron
#

this is a really cool utility

#

great work!

worldly aurora
#

Do you have a branch going for re-implementing the menu manager?

#

And also, post on development-resources

clever drift
clever drift
#

was going to get to that later today, after work

rich tulip
#

@clever drift can you remove lethalconfig as a dependancy from the yippee scrap mod?

frank ocean
rich tulip
frank ocean
#

lmao

worldly aurora
#

might be the weirdest take I've ever seen on mod dependencies

frank ocean
#

that definitely IS an answer alright

rich tulip
#

I mean its just weird to have an ingame config mod as a dependancy for a single item scrap mod

frank ocean
#

is it really?

#

seems like a good idea to me

#

letting you change stuff without having to restart

#

or open the annoying default config option stuff for bepinex

worldly aurora
#

I mean I can see where they're coming from

rich tulip
#

im already using the ConfigurationManager mod and it just seems like bloat

worldly aurora
#

nevermind

rich tulip
#

LMAO

worldly aurora
#

To provide insight as to why mods would want to depend on something like this

#

is that they can manually set up the configs for better flexibility

#

sure the mod auto-generates by default

#

but there are use cases where you need to do stuff manually for the best experience

worldly aurora
#

which would require depending on it

frank ocean
worldly aurora
#

that's it, I'm pulling RoO down

#

people can just use ConfigurationManager

manic rock
#

How is that even remotely comparable?

frank ocean
#

well they "technically" do the same thing

#

so obviously the newer one is bloat Clueless

worldly aurora
#

technically speaking RoO and LethalConfig don't need to exist

#

ConfigurationManager does technically do the same thing

#

but the reason for wanting something like this or RoO

#

is to have something that better integrates with the game

rich tulip
#

no like, I just think it should be optional to choose mods like that
This is definitley a good mod but does YippeeScrap really have to depend on it?

manic rock
#

Your game won't explode.

frank ocean
#

again, it doesn't "have" to, but I don't see the harm in it doing it

manic rock
#

From one extra depndency.

frank ocean
#

cause it's not like it has a performance impact

#

and it's just a button in the menus

rich tulip
#

oh yeah its just annoying for like modpacks and stuff when you are trying to keep stuff clean

frank ocean
#

but why

#

he doesn't even want it in the modpack

rich tulip
split fulcrum
#

Hiding the button to configure the mods that depend on it will just add confusion to end users who accidentially hide it

manic rock
#

How would they accidently hide it?

frank ocean
#

if someone hid it

#

then shared the r2modman code

manic rock
#

Make it only available in config editor.

frank ocean
#

that hiding presumably would travel with the profile since it's part of the config

split fulcrum
# manic rock How would they accidently hide it?

Because that just happens sometimes, or if they download a config that hides it for them and they don't even know the menu is there, and if a mod has an integration with lethal config then the end user suffers because of a bad hidden menu

worldly aurora
#

I mean

#

I don't feel like implementing that, I can't speak on Aina's behalf but

#

if you want that feature

#

it's opensource

#

make a PR

split fulcrum
#

I see hiding the options menu as an anti feature personally

#

"A mod depends on this menu so I want to turn the menu it depends on off"

#

I don't follow the logic

manic rock
#

Someone could just make a separate plugin that hides it I guess. It's a a very niche feature though either way.

worldly aurora
#

maybe they specifically don't like where the button is placed on the menu?

split fulcrum
#

Its up to an individual mod dev to make the dependency a soft dependency, not the options menu itself

frank ocean
worldly aurora
rich tulip
#

yes

clever drift
#

i'm finally awake and read everything

#

i think adding a config to remove the main menu button to a mod that its main thing is to add itself to the main menu is kinda silly lol

#

As for the yippee scrap, i can turn it into a soft dependency (which i only learned was a thing like yesterday, i'm very new to all of this modding stuff)

#

that way it doesn't force people to download it

amber glade
#

Ngl

#

I would add it as a dependency twice now

clever drift
#

Version 1.2.0

  • LethalConfig now reads both the mod's icons and descriptions directly from its thunderstore manifest if one can be found. (Rune580)
  • Added methods to make LethalConfig skip the autogeneration for your entire mod, a config section, or individual configs. (Rune580)
  • Added callbacks to the ConfigItem's options to tell whether a field is modifiable or not. (Rune580)
  • Added LethalConfig to the in-game quick menu.
  • Did a change to how the mod adds the menu button in the main menu, so it conflicts a bit less with other mods like LethalExpansion or IntroTweaks.
scarlet saffron
#

said it before and ill say it again, beautifully well done utility

ancient cipher
#

Have every option enabled now

bold heron
worldly aurora
#

can you send a log?

clever drift
#

rune is too fast

#

gee

bold heron
#

I believe this is what is happening

clever drift
#

could you also give a list of mods you're using?

#

just in case

bold heron
#

I tried it on a laptop as well (that doesn't have a D drive) and its still trying to reference a unityproject on D

#

sure

#

I tested updating 1 at a time. and it was only after updating LethalConfig that the issue happened. I'll try disabling some mods to see if that clears it up

clever drift
#

yeah, configMenu is end up being null, just have to figure out why

#

either it's not being injected when a specific mod is present or there's a mod that messes with it under the hierarchy of objects

#

@bold heron Can you check if there are any errors when you start a game (as soon as you appear in the ship) that may be related to lethalconfig?

bold heron
#

There is

#

Let me disable more Emotes and see if that helps

clever drift
# bold heron

this error is related to the mainmenu button, but it should still work in the main menu regardless of this error

#

the in-game one is what i'm not so sure what could be causing it

bold heron
#

yeah its weird because every other part of the in game menu works as well. I can quit, change settings and invite friends.

#

It's only resume that will not work

#

I'm currently disabling mods one by one to see which might be causing it.

clever drift
#

does the lethalconfig button still work even when that happens?

bold heron
#

yes it does.

clever drift
#

huh..

#

installed all the mods, i'll investigate and see what i can do

#

thanks for reporting it

bold heron
#

Is it possible a keybinding could be causing it?

#

I do have non default keybindings. So I could share a profile code if you want

clever drift
#

probably not

#

wait, does the lethalconfig option even show for you in the in-game "pause" menu?

bold heron
#

ah

#

in the pause menu

#

no, just in the main menu

clever drift
#

yeah, it should be here

#

oh

#

i think it's advanced company

#

yeah, it's advanced company, it does things in the same place i do

#

here's what i'll do then

#

i was going to upload a new version today, i'll put in a fix to prevent this error from occurring

#

won't actually put the button there, but it should not disrupt the pause menu

bold heron
#

Thank you for that, and the quick response.

clever drift
#

Version 1.3.0

  • Added new GenericButtonConfigItem, which allows you to create a button that provides you with a callback to run your own code when it's clicked.
  • Added item's Section, Name, and Description overrides, which allows you to change what LethalConfig will show without changing the section, keys, or descriptions in your ConfigEntry directly.
  • Fixed issue when trying to automatically read the mod's icon and description from mods installed manually with their dll at the root of the BepInEx's plugins folder. (Rune580)
  • Fixed exception caused in the quick menu when running LethalConfig with AdvancedCompany.
amber glade
#

Let's go

amber glade
#

@clever drift it seems the name change added in 1.3.0 breaks autogen

#

top 3 checkboxes are the same as the bottom 3

#

just name changed

#

it seems like autogen saw thoses exact named configs didnt get inserted (due to it being renamed) and inserted them after

clever drift
#

Bottom one is the original im assuming

amber glade
#

correct

#

another thing

clever drift
#

i see. I'll look into this as soon as i can. It's almost 5am where i live and i really need to rest at least a couple of hours

amber glade
#

i assumed the slider would check the configentrys acceptable range as min max by default

clever drift
#

They were suppoed to, yeah

#

supposed*

amber glade
clever drift
#

ah, i think i already know what happened

amber glade
#

im assuming its due to the FloatSliderOptions because im renaming it?

clever drift
#

Nah, it's just me being dumb about the default stuff

#

i'll get to both of these as soon as i can

#

thanks for reporting

amber glade
#

also good thankfully i can work around both issues

#

btw removed the name override and it worked

clever drift
#

removing the name fixed the range?

amber glade
#

yes because i was nolonger using FloatSliderOptions

clever drift
#

oh yeah, i probably am only reading the acceptabe value range on the overloads without options

#

hence me being dumb lol

#

should be fixed sometime tomorrow

#

"tomorrow"

amber glade
#

thanks

clever drift
#

Version 1.3.1

  • Fixed issue where duplicated fields were autogenerated when the section or name of the item was overriden
  • Fixed issue where providing an options objects to sliders without setting their min/max values would not fallback into the AcceptableValueRange of the entry if one was present.
#

@amber glade whenever you're able to, please confirm if these fixes solved your problems c:

clever drift
#

Version 1.3.2

  • Hotfix to revert type for slider and numeric input options from nullable.

Didn't realized that changed the contract entirely. Whoops. My bad

clever drift
#

LethalConfig seems to be fine on v47 ainaWiggle

#

hopefully i'm not speaking too soon

frigid temple
#

lethalprogression's XP count thingy overlaps

worldly aurora
#

huh

#

should be a simple enough fix?

clever drift
#

i'll take a look

#

hopefully it's just a case of "they happened to execute and add their stuff after me"

worldly aurora
#

easy solution would be to do

configMenu.transform.SetAsLastSibling();

do that on open

clever drift
#

yep, that's what i was thinking

#

hopefully they added in the same parent

worldly aurora
#

I'd do it, but my project is broken all of a sudden after the game update

clever drift
#

the emote api or something else?

worldly aurora
#

my LethalConfig fork

clever drift
#

ah

worldly aurora
#

think I just need to re-clone

clever drift
#

yep, it's on the same parent, just need to force it to be the last sibling when opening

clever drift
#

Version 1.3.3

  • Fixed uncommon issue where closing LethalConfig would make the main menu/quick menu unusable due to not being deactivated and blocking the UI raycasts.
  • Forcing LethalConfig to be set as the last sibling when it's opened. This ensures the menu will be shown above UI that may be added by other mods.
worldly aurora
#

aina

#

did you make sure the notifcation panel was also set to last

clever drift
#

yes

worldly aurora
#

ok

clever drift
#

i almost forgor, but i did LOL

obtuse rock
#

yo, suggestion

#

instead of "LethalConfig" button

#

replace with TL button

clever drift
obtuse rock
#

top left

clever drift
#

ah

#

lol

#

i think i mentioned this a few days ago

#

i humored doing it, but i have no idea if any other mod already "claimed" that spot

obtuse rock
#

draw it as last tf

clever drift
#

LOL

obtuse rock
#

at least then u dont gotta worry about alignment and stuff with other buttons

clever drift
#

but yeah, i was humoring doing it because now it feels like everyone and their mother is doing stuff to the main menu

obtuse rock
#

fr. doesnt help that MenuManager is a cesspool of null refs

clever drift
#

oh, i just gave up on menumanager entirely and made my own for my stuff

obtuse rock
#

scene loaded?

worldly aurora
#

It's not a great idea to rely on in-game components while the game is still early-access

clever drift
#

at first i was injecting my manager + config menu on sceneloaded

worldly aurora
#

you'll end up making more work for yourself

clever drift
#

now it's on a harmony patch

worldly aurora
#

that's porbably fine

clever drift
#

which is doing a very hacky thing of doing a coroutine to wait a single frame to try to add itself after everyone else

clever drift
#

so i might just claim the top left spot after all

obtuse rock
#

if you do it first, nobody can complain
also makes sense for options to be top left, like other games

clever drift
#

(all could be avoided if zeekers made it a vertical layout group ahem)

worldly aurora
#

I've low key considered making an API to modify the menu buttons to enforce a standard

#

but I can't take on any more projects right now

clever drift
#

same, but making people follow a standard seems to be hard in modding

obtuse rock
#

API that makes layout groups the standard

#

4sure

clever drift
#

yes please

#

idk how long it usually takes for a modding community to settle on certain standards

#

very new to all of this

obtuse rock
#

same tbh

worldly aurora
#

well if I relate to my RoO experience

obtuse rock
#

i guess its usually a downloads count type beat

worldly aurora
#

approximately a full year and a half?

clever drift
#

gee

worldly aurora
#

RoR2 is a smaller community though

#

so it might be less with lethal company

clever drift
#

that is fair

amber glade
#

@clever drift the update didnt fix the acceptable values issue

clever drift
amber glade
#

autogen was fixed tho

clever drift
#

aight, thanks for letting me know

#

gonna work on these when i can

amber glade
#

great work tho

clever drift
#

dude on another server reported some goofy aahh bug too

amber glade
#

this is by far the best settings/config mod

clever drift
#

TooManyEmotes added Rune's InputUtils as a soft dependency, but when i try to load the types to search for the plugin info, it tries to load inpututils when it's not there and hell happens

#

so i have to deal with these scenarios

amber glade
#

sounds fun

clever drift
#

I think i managed to fix it

#

funny enough, rune itself left a thing on his inpututils readme about NetcodePatcher, completely unrelated, that ended up what being what i needed

#

so god bless rune

#

helping even when he's not here

amber glade
#

not game breaking but weird

#

config is udner quit

#

under*

clever drift
#

introtweaks

amber glade
#

i am using IntroTweaks

clever drift
#

it was something they changed, idk what

amber glade
#

time to find a alternative 😄

clever drift
#

we were talking about this earlier, i might just give up on the main menu altogether and just stick a button to the top left corner

clever drift
#

Version 1.3.4

  • Fixed issue where some assemblies' depedencies could cause the UI to not load properly.
  • Fixed issue with sliders/numeric inputs not using the AcceptableValueRange, this time for real.
worldly aurora
#

Tbh I might just start asking around with mods with menu buttons

#

See if we can consolidate stuff to just a "mods" button

amber glade
#

getting this community to work together will be hard lol. Ive noticed most people have the "ill do it my way" mindset

worldly aurora
#

yeah

#

similar to RoR2's modding community tbh

clever drift
#

yeah.. minecraft had a lot of that too

worldly aurora
#

I think most modding communities seem to prefer a DIY aproach

worldly aurora
amber glade
#

i think whatever is best for the end user is best approach

clever drift
#

i say had because i left it alone lol idk how it's going nowadays

worldly aurora
amber glade
#

just look at all the mod loads for minecraft lol

amber glade
#

Fabric, Quilt, Forge, NeoForge

#

could be missing some

manic rock
worldly aurora
amber glade
#

yea

#

that one made sense to me

#

then look at all the mod hosting sites too

#

its a mess

worldly aurora
#

neoforge also has better fabric compat potential

clever drift
#

honestly, i think doing things on your own way is for the most part fine, as long as you don't intentionally disrupt other devs by doing so

#

which i have totally seen before

#

idk if it's happening over here tho

worldly aurora
#

otherwise you get buttons everywhere

amber glade
#

if you watch long enough you will see this modding scene going through phases of everyone attempting the same thing instead of collaborating

clever drift
#

~~i actually seen some resemblance of that kind of disruption, but i think it's better to not really talk about it 👀 ~~

amber glade
#

hahaha

clever drift
#

ngl tho

#

i think i started lethalconfig in like.. mid december? early december?

#

then i couple of days before i put out 1.0.0 into the wild, lethalsettings showed up, and i felt really bad about releasing it

#

didn't want it to seem like i'm trying to take over or whatever

worldly aurora
#

LethalSettings aimed to do something different

#

or at least that's what it seemed like when you initially released

#

they provided an api to construct setting UI's

#

which is neat

#

but I'm biased and prefer RoO's approach to settings

amber glade
#

to go alone with this. I spoke to like 5-6 people in dev chat asking why we dont have a risk of options type mod in Lethal (month ago or). so its easier for end users to config stuff and less likely to run into config problems. I got told "its the users problem why should we have to deal with it"

worldly aurora
#

especially when you consider the ability to have config stuff be actively hot-reloading

#

which is convenient even for devs

#

it's easy too

#

every time you call ConfigEntry<T>.Value

#

it gets the most up to date value

amber glade
#

if you care to see the reaction from some enjoy lol #dev-general message

worldly aurora
#

and setting it updates the config file

#

#dev-general message is a good point though

#

as you potentially introduce new bugs that devs have to deal with

#

as they might not have expected that their config values could change

#

but we already cover that with LethalConfig

amber glade
#

which was solved

#

^

worldly aurora
#

by letting you inform LethalConfig about the mutability of a value

amber glade
#

also @clever drift it works 😄

clever drift
#

GOD BLESS

#

my dumbass typed AcceptableValueRange<int> into a float field

#

ofc it wasn't working

#

whoops

amber glade
#

hahahah

worldly aurora
#

I'm just glad that we have a RoO style config mod for LethalCompany

#

has more features than current RoO too

clever drift
#

a lot of it was thanks to your help tho

#

hell, you helped even when you weren't here earlier LOL

worldly aurora
#

@clever drift could I "borrow" your "Reset to default" icon

clever drift
#

NO

#

jk

#

go ahead

worldly aurora
#

thanks

worldly aurora
clever drift
#

no problem c:

amber glade
#

have you guys thought about integrating some form of config syncing

obtuse rock
#

It would mean making ConfigEntry serializable somehow

worldly aurora
#

It already is

clever drift
#

so

worldly aurora
#

Bepinex has to serialize them to a string some how

clever drift
#

i have thought about it, but there is a few things i'm uncertain of (mainly because i'm new to LC modding, and just modding in general)

#

1: does everyone do syncing the same way? i know the lethal wiki has some stuff about config syncing, but idk if it's "a standard" if that makes sense

#

and 2: would this fuck up mods that are already trying to sync themselves?

worldly aurora
#
  1. What about mods that don't want syncing
clever drift
#

TRUE

#

there's also a thing, right

#

technically lethalconfig is not loading all configs, even tho it should

#

because turns out it can't load configs from manually-created config files

obtuse rock
clever drift
#

it only loads the main config file created by bepinex for each plugin (this.Config)

#

and bepinex doesn't really keep track of people that create their own configfiles using new ConfigFile

worldly aurora
#

They have a registry for them somewhere

#

You can register additional ones too for custom types

clever drift
#

one example being Advanced Company (just for example sake, i'm sure they don't want LethalConfig to be able to see them because they have their own UI)

#

they use separate files for everything

#

but i have no way to know that, the plugins don't keep track of those files

#

and i can't simply load the config files from the config folder because they don't have metadata to tell which plugin created them

#

and they keep "stale configs"

#

aka configs not being used anymore

#

so even if i could sync configs, it would leave out these configs in separate files

manic rock
clever drift
#

the only way i could think of to keep track of those files is to patch the bepinex classes, but i can't guarantee my mod loads before everyone

#

and idk if i can do that with a preloader on bepinex's dll

clever drift
#

the first that came to mind

amber glade
manic rock
clever drift
#

i'm a big dumbdumb

worldly aurora
manic rock
#

Big dumbdumb with one of the best if not the best config menus for LC.

clever drift
#

i mean, i did get a lot of inspiration from Rune's RiskOfOptions beause it's great

#

but yeah

#

thanks tho ainaShy

obtuse rock
worldly aurora
obtuse rock
#

haha

worldly aurora
#

I meant opt-in functionality is fine if we do try syncing

clever drift
#

i could look into making opt-in syncing, but i'm not sure how much out-of-scope this would be for a config menu

worldly aurora
#

I agree

#

But if it's optional, it's not the worst idea to include

clever drift
#

personally, i'm not a fan of mods that does more than one thing, or many things

obtuse rock
#

Im beginning to wonder if a dedicated sync lib is worth it

clever drift
#

(from experience with minecraft frustrations)

amber glade
#

could be a addon to lethalconfig tbh

clever drift
#

i know there were some people cooking up a modlist sync thing for lobbies in #1175883003474485369, idk if they were planning on syncing configs

#

but yeah, i can look into it, at least see how feasible it is to make a generic opt-in sync

#

but that would mean mods would have to implement lethalconfig in a way or another

#

i should probably add a section on my readme (or just make a whole ass wiki on github/thunderstore) about making it a soft/optional dependency

#

i see quite a lot of people complaining about it being a hard dependency on some mods

#

"a lot"

#

but yeah

obtuse rock
#

Is TypeConverter even implemented?

clever drift
#

uh

#

there's a TomlTypeConverter

#

and configentries does use that

obtuse rock
#

damn, i wanted json or bson

clever drift
#

it uses it here for GetSerializedValue and SetSerializedValue

obtuse rock
#

I see 👀

#

convoluted imo

worldly aurora
#

technically bepinex uses it's own custom toml flavor

clever drift
#

^

worldly aurora
#

it's not actually toml

#

toml doesn't allow spaces in key names

clever drift
#

it's toml at home

obtuse rock
#

NOml

worldly aurora
#

I think a config syncing system would be neat, if you guys ever make a thread to collaborate on one, ping me

obtuse rock
#

@worldly aurora

#1199756974368227439
Successfully got ConfigEntry to be serialized without using TOML, but the library is still sort of WIP.

#

Would be more than happy to integrate it into LethalConfig rather than a seperate lib

clever drift
#

ayo, that's cool

#

i think being separate is good because it doesn't put more than one responsibility to a mod

obtuse rock
#

sure thing

clever drift
#

but i can totally make lethalconfig use csync as a soft dependency to lock modification of wathever synced configs they have during gameplay

#

or vice versa

obtuse rock
#

would be neat

#

best part imo is that it can be used for any bepinex enabled game, not just lc

clever drift
#

yep

#

really good job on that

obtuse rock
#

ty <3

clever drift
#

guess i have some work to do this weekend

obtuse rock
#

haha dont sweat it. still early days for csync anyway

#

plan on simplifying the usage, putting it on nuget and optimizing it

ivory remnant
#

Is there a way to change say a bool checkmark on the UI if i programmatically change its value with the generic button? the use case is say i have 10 bool config items and i want to have a button toggle them all on or off. i have it working behind the UI but the visible checkbox doesn't change when the config item value gets set to a different value

clever drift
#

If that's the case, i'll look into automatically updating the UI when the configentry is manually modified

ivory remnant
#

yeah thats exactly what im doing

#

and thanks!

obtuse rock
#

Do the text input fields support new lines?

#

Hitting enter doesn't do anything and using \n just displays exactly that. cimpHmm

clever drift
sudden herald
#

@clever drift I don't know what's wrong, but having only the yippee scrap mod installed (or installed at all) breaks reloading saves. To replicate, create a new game, then exit to menu, try to reload the same game. You are stuck in stasis with log spam.

#

a work around has been closing out the game completely and reloading the save

clever drift
sudden herald
sudden herald
#

Both work fine by themselves which is weird

clever drift
#

i see

#

i'll look into it tomorrow, it's 4am here

#

thanks for letting me know

sudden herald
#

yeah no worries, I sent the AC team a message

clever drift
#

it's probably on my end, lethalthings uses the same api as i do and that doesn't happen

clever drift
#

@sudden herald Updated the yippee to 1.0.7, should be available on the mod managers after a bit. Problem shouldn't happen anymore

drifting shard
#

can configuration key not have spaces when using lethalconfig? my mod currently has configuration keys with spaces and loads fine without the mod, but when it is paired with LethalConfig it runs into this error upon loading which complains about the spaces

clever drift
#

spaces are fine

#

are you running with other mods?

drifting shard
#

that screenshot is from another player so im not sure, im about to test it for myself but i figured id ask first

#

nevermind, i just tried it myself and everything loaded fine, i guess it is an incompatibility with a different mod

#

my apologies for the false alarm

clever drift
#

it's all good

desert zenith
#

Is it possible to get a .cfg option to disable the in-game menus? I know it's counter-intuitive but some mods are now listing lethalconfig as a dependancy and it's causing desync issues when large groups are playing together and people are flipping switches they shouldn't be.

#

definitly an edge case, that could easily be solved by telling them not to change things, just wondering if it's something you'd consider adding

#

I find lethalconfig super helpful with setting up my modpack configs, but with this group I consider it more of an admin or host-only mod

split fulcrum
desert zenith
#

Perhaps then we could disable specific mod configs using a comma separated list.
Or have a custom message and confirmation dialog upon opening the lethalconfig menu

split fulcrum
# desert zenith If they don't know well enough not to fiddle with things they wont be reporting ...

Not an excellent way to handle things still, it can highly confuse people and will be more problematic than helpful. The ideal solution as I already mentioned is having mods look to the host of any given lobby to copy settings from. Your proposed setting can only cause confusion.

Here is a mod that can aid your issue

https://thunderstore.io/c/lethal-company/p/Owen3H/CSync/

split fulcrum
#

My main point is whenever there is a lockout of options it should be abundantly and explicitly clear as to why

#

And options unless its for spoiler or debugging reasons have very little reason to be hidden

desert zenith
#

Thanks I believe that I've already got Csync as a FacilityMeltdown dep, now to study it's docs...

#

Trouble is trying to set configs for a whole list of mods and keeping csync synced with mod updates

clever drift
#

This is a tricky situation tbh. Just hiding the menu would make less people change their settings, but there'll still be people that will just use r2modman to change stuff around if they mess around enough. And yeah, having a setting to hide it can be confusing to some.

#

we actually had a discussion about that a few weeks ago, the ideal solution would be to sync configs with the host, but not all configs SHOULD be synced because some are just client side stuff that is personal preferences. So there really isn't an ideal way to know which settings to sync. And it's not like lethalconfig's purpose is to sync them

#

the real ideal scenario would be for CSync to be mass adopted by mod developers, but that'll take time

desert zenith
clever drift
#

that also assumes many modders would even think about implementing syncing configs, which a lot won't (since there's a lot of beginner modders, which is not a bad thing per say)

desert zenith
#

Haven't had any issues with people messing with the r2modman settings since they are more obscured. Really it's only a few key settings that I'd like to protect. Honestly would prefer modpack consumers to have full access to every setting other than ones that'll cause desync issues

clever drift
#

i'll try to come up with something

#

maybe a way to "lock" certain settings (and give a warning if they try to change)

#

won't entirely prevent them from changing, but it's the least "confusing" way i can think of the of my head

desert zenith
#

ya, honestly even as simple as an optional dialog to confirm entering the submenus

clever drift
#

i was thinking of something like putting a lock symbol on top of a "grayed out" setting if they're locked, and if they try to click on it to unlock it gives them a warning about modpacks and unsync issues, and only unlocks if they're sure.

#

maybe even an option under lethalconfig itself to also toggle visibility of locked settings on top of it

desert zenith
#

That would be awesome, think the tricky part is the config side of things. One of the log mods, either lesslogs or logneuter generates config options for each mod loaded

clever drift
#

I'll see if i can work on something for it later this week, i'll ping you if anything

ivory remnant
#

to add onto this, i was going to suggest a feature where i as a mod dev can also just make a warning for a config, so like if i want a config to have extra validation before someone changes it, fits with whats being said here already but yeah i had that idea last week and forgot to put it here

obtuse rock
#

Idk how CSync got into this xd

#

But I just wanna reiterate

#

it wont do anything itself, its a library dependent on mod authors

teal comet
smoky sapphire
#

the only mod that appears is snatching bracken and the template of this mod

clever drift
#

what version is your lethalconfig at?

smoky sapphire
#

pretty sure its the latest

#

lemme see

#

yeah

#

v1.3.4

clever drift
#

can you send logs and the mod profile/modlist?

smoky sapphire
#

its a lot of mods but i can send screenshots

( i don't use a mod loader )

clever drift
#

Sure

smoky sapphire
#

obs: "modk" is just an old mod but i already removed it

clever drift
# smoky sapphire

There's a mod that is causing the auto generation to break, which is why nothing but the snatchin one loads (since the snatching mod directly implements LethalConfig). I'm at work right now, but later i'll try to track down which mod is causing this and why

#

thanks for reporting it

smoky sapphire
#

ok

#

thanks

smoky sapphire
clever drift
smoky sapphire
#

ok

#

yeah still doesnt appear

#

only snatchinbracken and lethalconfig

clever drift
#

that's weird..

#

apparently it's breaking when it tries to generate the configs for BetterTerminal, but when i installed it on my end, it didn't break

#

i guess there is another mod messing with betterterminal

smoky sapphire
#

hmm

clever drift
#

im installing all mods to see if i can narrow down on my end

#

so, i installed all mods through r2modman and it didn't have any issues, huh

#

regardless, i'll make a small change and send another test thing to see if it fixes it

smoky sapphire
#

okay

smoky sapphire
#

tysm

wet arrow
#

Hey

#

Shall I just make a feature request ?

#

Or is it considered as "final" or something like that ?

worldly aurora
#

I mean you can make a request

#

nothing's stopping you

wet arrow
#

On the github I guess ?

worldly aurora
#

I think that's the preferred place for them

#

easier to keep track of

wet arrow
#

Sure

wet arrow
clever drift
#

but feature requests and suggestions are always welcome for when i do work on it

wet arrow
#

Okay nice 😄

wet vigil
#

so im curious, im having interior sync issues, any shot its from changing configs here?

#

do configs changed here sync when thunderstore code is sent?

clever drift
#

changing configs inside lethalconfig is just like changing configs directly on r2modman, the code should get the configs yeah

wet vigil
#

Any idea why interior desync might happen I'm just going through the rabbit hole trying to track my problem

clever drift
#

what do you mean by interior desync

wet vigil
#

We walk through main and I'll see my assigned interior, while everyone else either falls through the interior floor, have different interiors, or rarely nothing goes wrong and we explore together

#

I'm exaggerating it works more than it doesn't but it happens often

#

@clever drift

manic rock
#

Are you sharing profile?

wet vigil
#

Yea share profile via thunderstore code

clever drift
#

i genuinely have no idea what could cause this

#

IF it is config related, the only thing i can think of is that some players are changing some configs, making them out of sync, but that's unlikely

#

but which configs, i have no idea

wet vigil
#

Naw nobody in my group bucks with dealing with mods or configuration except me

clever drift
#

yeah, no idea, sorry i can't help

wet vigil
#

Appreciate u trying

clever drift
#

i don't think it's related to lethalconfig, but if you figure it out and it does happen to be related to it, let me know

wet vigil
#

Will do

cedar valley
#

Guys, LethalConfig changes the config in thunderstore?

spice lynx
#

What? It purely adds an insane equivalent to the config options seen in the thunderstore, automatically generated. But the benefit is you don't need to restart the game only reload the lobby.

#

@clever drift are you the creator of lethal config? Stanky request for you - can you make it officially recommended that people do NOT make your mod a dependency? It's a legendary mod yes and the unique benefit I describe above but there are a small minority of modders that don't realize that it does what it does automatically without needing to be a dependency. The negative implication of people making a dependency is that it forces me to install lethal config in an immersive mod pack which I am sharing and don't want any interface to revealing modlist.
To my understanding lethalConfig should only be included in mod collections rather than ever any given single purpose mods?

wet arrow
#

Some mods require lethalconfig because some mod implement it the hard way

#

With all the nice features of it

#

It's not only auto-generating those

spice lynx
#

Dunno what you mean without examples but that's ok.

#

One feedback - I've seen a mod use a three component vector for colour.. pretty silly when they could do hex RGB like everyone else but it throws lethal config in the console.

clever drift
# spice lynx <@968208005948637288> are you the creator of lethal config? Stanky request for y...

while lethalconfig does attempt to auto-generate the UI for most configs, there are some caveats:

  • LethalConfig can't tell whether a config requires or not a restart to take effect, so it has to give disclaimers (on both the config description and as a pop-up) that a restart may be required.
  • Although it generates most UI for configs, it can only generate for the default Config instance for a given mod, which means that if a mod creates a custom config file (instantiate a ConfigFile manually), there's no way for LethalConfig to know, as there's nothing on BepInEx that keeps track of them.
  • While I could technically read all the CFG files inside the config folder, they have no metadata saying what mod they belong to, and they can (and most likely will) contain "deprecated" configs, as in configs that was created by a mod in an older version but not used anymore but are still in the file. These configs would pretty much do nothing.
  • Despite it generating most of the UI stuff automatically, some mod developers might want their items inside lethalconfig to be customized in a different way.

All of those would require the mod developer to implement LethalConfig. They could use it as a soft dependency (aka not needing to install it, but if it's there it'll support it).

#

with that said, i think i might just give in and add the setting i was avoiding this whole time to just.. not show lethalconfig, which is counter-intuitive as hell lol

clever drift
#

like an actual color picker of sorts

#

thank you for the feedback tho

#

i appreciate it

spice lynx
#

I wouldn't worry about that too much. Hex colour code is really fine.

#

But it's on the other mod dev to decide to use that format.

clever drift
#

oh, it's not my priority

#

if anything, my priority should be making the UI "less red"

#

i think it's the most common issue people have

spice lynx
#

Oh yes absolutely good god.

clever drift
#

IN MY DEFENSE LOL

spice lynx
#

The whole world looks greenish blue after I've been using it for 40 seconds.

clever drift
#

when i was making it, it didn't look as bright, but it turns out that some mods may change some camera settings, and turns out that the vanilla camera settings for the main menu darkens everything

#

so some mods may make it way brighter

#

and i didn't know that

spice lynx
#

Whahaha. You also don't know how bright some people's HDR 10bit monitors are.

clever drift
#

yeaah

#

i'll darken it whenever i can get to it soon

#

(sorry for everyone's retinas that i've burned)

#

but yeah, i think i'll just add an option (that is only modifiable on r2modman/thunderstore) to just hide lethalconfig, there have been a few modpack creators that expressed not wanting to show it for a reason or another

#

it was mainly for not messing with syncing, but i never thought about the idea of an immersive pack before

spice lynx
#

It's totally chill that you can't know if a restart is necessary. I've observed config changes taking effect immediately in game, only when reloading the lobby, and only when restarting the game.
Some configs are weirdly hidden it's true and or use JSON it seems maybe with and extension of the standard controls menu.
It can be a bit annoying that devs name their files all kinds of silly things but what can ya do, use AI to guess the title? Nah.
Yes some devs make a funky mess of their config or get creative with space or tab seperated examples or the lists they include are too long or don't show in lethalconfig and you gotta go in out of game.

clever drift
#

it's not even the names, it's just the nature of the config file not having metadata telling which mod it came from, and bepinex not keeping track of those files, so i have no way of getting them unless there's a way to pre-patch bepinex itself before everything so i can keep track of when ConfigFile is instantiated, but i don't think that's possible

#

it's an issue i've been trying to figure out for a while

#

there was also another mod in particular that just.. didn't use the bepinex config system at all.. so that was cool i guess 🫠

spice lynx
#

Like I say I just don't want spoilers showing up in the menu and a couple of rogues devs made lethalconfig a dependency needlessly which they can fix easily.
It's gonna be a grateful tragedy if I finalise my immersive overhaul profile and don't include your mod though it was invaluable when configuring and testing. For my personal public lobby use QOL packs, and my private slightly more cheaty one it's staying (possibly necessarily? can't remember if anything requires it in the way I aforemention dissaproving of)

#

But this leads me into a heinous idea... networking?
So here I'll be with my friends with 150 mods all of which I've reviewed the configs of but I'll need many aspects of theirs to match and many mods don't even mention whether they have networking or not. How... truly unhinged would it be... for LethalConfig to do unified networking of configs (puts a copy of host's config in their memory, or even updates their on disk settings possibly as an optional feature)

worldly aurora
spice lynx
#

I never take anything badly even criticism.
Hang on gotta look into what neoforge is before I respond

clever drift
#

minecraft modloader

#

it'll quite literallly show all the mods while loading

#

and there is a mod list in the settings iirc

manic rock
#

People who want to spoil themselves will do that anyway.

#

They'll check every mod in modpack/profile.

clever drift
spice lynx
#

Ok well I can't go learning about minecraft modding but I'm not sure what your perceived issue is. All I'm saying is I will be obscuring the modlist from my friends for the fun of the surprise and I'll be working around the need for lethalconfig and the only hinderance to that is when modders make lethalconfig a dependency.
I will not be going so far as to edit the console so it doesn't show the modloading. I obviously cannot somehow hide what's listed in the modmanager.
You guys are thinking of this in terms of intentionally investigating but I'm talking about incidental reveals that there's actually a super rare skibidi toilet and you notice it when scrolling to find something completely innocuous like a keybinding.

clever drift
# spice lynx But this leads me into a heinous idea... networking? So here I'll be with my fri...

This is also something that was talked about here. It's a bit complicated because
1: not all configs should be synced, as there are many configs that are client-side and related to personal preferences, and we have no way of telling which is which unless we have a way for the people to prompt what to sync and what not to sync
2: because this would be done automatically, that would involve writing into the ConfigEntry instances directly, which can and most likely will lead to the config files being written to when synced, which can lead to all sorts of other issues (for example, say you join a game, the configs gets synced, which writes to the file, and then the game crashes. Now you lost your old configs, if you cared about it)

manic rock
#

How will you obscure it? Are you not going to use a mod manager? Even then they can just check plugins folder.

clever drift
#

it's why usually syncing uses a "facade" object that holds the current value, that wraps AROUND a configentry

#

but that's something that each mod would have to do

manic rock
#

No offense, but you sound like a control freak. People are already forced to play your modpack. What's so wrong about them having some freedom?

spice lynx
#

My brother in christ. My friends will not look at the modlist by choice. There are over 150 mods. They will not intentionally spoil it for themselves. I'm avoid spoilers happening by accident.

manic rock
#

Then why worry about LethalConfig?

clever drift
#

there was a library to help with config syncing, CSync, but it was still for developers to use, not magic, and the dev is not here anymore, so idk how much support it'll have

clever drift
#

oh?

#

nice

manic rock
#

And CSync was updated a couple of days ago to a new major version.

spice lynx
#

Because it's there. Hey man look there's no argument to be had here. I'm gonna do the way I described it.

But I think it's objectively a bad choice of other developers to include lethalconfig as a depancy when really it's just an extremely useful passive enhancement.

clever drift
#

glad he's back and supporting it, csync is an amazing idea when people adopt it more

spice lynx
#

Yes I'm looking at csync too but I'm not sure yet.

clever drift
#

csync won't work automatically

spice lynx
#

I know

clever drift
#

csync is a library for other devs to use, but hopefully it'll be adopted by many soon

manic rock
#

I wouldn't mind LethalConfig being soft dependency myself, but I don't know how feasible that is.

spice lynx
#

I tried reading the documentation but I'm not a unity dev

#

Not sure if I know what soft dependacy means but for example only 2 of 150 mods I have require it and in those examples it's clearly not necessary.

clever drift
spice lynx
#

Anyway I've talked this point to death I won't ramble it any more. You guys got this.

manic rock
spice lynx
#

It's true. I can just ask those devs directly and infact I will.

clever drift
#

yeah, but at the same time, i might as well just add a toggle, that is only visible on the r2modman config editor, to just not show lethalconfig at this point

#

seems to be a common wish from modpack creators

spice lynx
#

Also good but then people will all include it as a free way to make their mod look better

manic rock
#

Honestly, I would like that myself.

#

Even though I could live without it.

clever drift
#

ofc it'd show by default, but this is not the first time this debate happened here lol

spice lynx
#

which from my unique perspective will make the situation with requirements worse, but functionally better objectively

manic rock
#

My only worry about LethalConfig is people thinking they can mess there which could end up causing sync issues.

worldly aurora
manic rock
#

Yeah, I thought that might be the case.

#

Ideal solution would be an ability to pick and choose which mods show up in there, but that's a pain to make I bet.

manic rock
spice lynx
# worldly aurora There's nothing stopping devs from making it a soft dependency, but speaking fro...

Okay so you're a really useful person for me to ask and probably someone I'm gonna beseech later. Don't you agree that it's perfectly ok for lethalconfig to NOT be a dependacy in your mod and you're just trying to make things nicer for people by including it and for you personally it's be really useful. But in a perfect world of never including things that aren't necessary and everyone have the knowledge they ned and reading reccomendation in the documentation then hard-depending it is excessive.

#

Sorry I know that paragraph reads manic.

spice lynx
worldly aurora
#

Removing LethalConfig would just have us get those questions again

spice lynx
#

A utilitarian and benevolent choice I can fully understand.

worldly aurora
#

We still get people asking how to re-bind their controls, which in their defense we don't make very clear...

clever drift
#

and using bind is the recommended nowadays. Pretty sure all other methods are deprecated

spice lynx
#

But... some mods manage to avoid this disk writing?

#

Else all networked mods would be annoying as hell to use as client.

#

Or is the issue that if you try changing your settings mid game you'll overwrite all your others.

clever drift
#

and then use that synced instance wrapper whenever they need the value instead of configentry directly

#

but that's a responsibility for each mod developer, there's no way for lethalconfig to do something like that automatically, sadly

#

i actually really wanted to do that

spice lynx
#

I read about the in memory aspect of networking

annywayy you don't need to explain it all to me. If you do something wild I'll be back in here to test it out.

wet arrow
#

Config.OnChanged

tawdry grove
#

Having a slight issue where I cant see most mods, only like 2 specific mods in the config menu

clever drift
tawdry grove
#

r2mm

clever drift
#

can you send the profile code?

tawdry grove
#

Its in the process of being cleaned / reconfigured but here ya go

#

018e0bab-9da4-ef11-d968-10a5d6ffe9e6

clever drift
#

i think i already did the fix the other day, which will come on a next release, but i want to debug anyways

tawdry grove
#

oh thats neat

clever drift
#

last two people that had that were doing manual installations, which made it awful to figure out stuff

#

so hopefully i can use this to at least understand WHY this happens

bold heron
#

it only happens for custom dungeons, and only about 20% of the time.

wet vigil
#

delete your old lll configs and let fixed generate new ones

#

setting configs is a bit janky at the moment so your best bet is to adjust any spawning in monster mods individually, i suggest lethal configs for that

slow prism
#

Any chances to have an option, like a string we could add somewhere, that indicates that a certain config doesn't need a restart to apply changes? Because if I subscribe on the value change event I don't have to depend on the mod, the changes are applied properly but I want to prevent having the "You must restart to apply changes" popup

clever drift
#

you can set a boolean in the constructor or the options object to flag it as non-restart required

slow prism
#

I know about that, but that's not my whole message

worldly aurora
#

I see, I misread the message

slow prism
#

Soft dependencies can be unstable sometimes because of reflection, and I don't want to force people into having a settings menu. Having like, a char or a string in the description or the usage of the config and externally automatically setting the config as no restart required would be awesome

worldly aurora
#

LethalConfig doesn't currently have a way of detecting this from the metadata that BepInEx Configs provide

slow prism
#

Like, a way of letting the mod know, that we are subscribed to the event

#

I see

clever drift
#

i can't recall if that was a thing in c#, but i think you can tell how many subscribers an event has

#

but i'm not sure, need to double check that

worldly aurora
#

I don't think it's a great idea for LethalConfig to try and determine that based off of only the event

#

maybe having it try and detect a token or identifier of some kind from the description of the config entry?

#

but that doesn't really feel intuitive :/

#

at least not to me

#

not willing to die on this hill though

worldly aurora
slow prism
#

Detecting a token or string from the description would be very nice to determine that a restart is not required.
This would benefits mods like my mod: https://discord.com/channels/1168655651455639582/1194051995678543952 where the spawnrate doesn't require a restart after being applied, but the LethalConfig menu still misleads the player into doing so

slow prism
worldly aurora
#

netcode patcher right?

slow prism
#

Not just netcode patcher, that's not the only thing one would use Refl on

#

The workaround is a try catch, and then get the list from the Exception, but this has the potential to exclude things

slow prism
#

What?

worldly aurora
#

The workaround uses this exception to grab the list of loaded types right?

#

from my understanding, this only skips missing types

#

but it will still get the rest of the types

slow prism
#

I guess, the only thing I've added soft compatibility with is the LethalEmotesAPI. But I don't really want to have a feature to build, manage and maintain whole fields for every auto generated config that I create on the mod, plus I'd have to do these things and fit it to other mods I'd work on. So I thought the auto generated fields were an awesome thing because it helps developers have GUI configurations without having to depend on it

worldly aurora
#

that's fair

slow prism
#

I just suggested something I thought would be helpful, I am not trying to add/learn how to soft depend on it

worldly aurora
#

sorry I didn't mean to be rude

slow prism
# worldly aurora sorry I didn't mean to be rude

Oh you weren't rude sorry, sorry if it seemed like that. I appreciate your help and efforts and I wanted to clear things to not waste your time. I preferred that than make you lookup things that I would discard and that would make me feel bad, you're okay

#

I apologize if my English seems way too formal, it's what happens when you learn English in videogames haha

worldly aurora
#

back on topic though, I see the use-case for identifiers for these kinds of settings, but not sure what the best solution would be for it

slow prism
#

Yeah, having a clean implementation is troublesome because there's not many fields that we can use appart from the Header, Name, Description and Acceptable Values

worldly aurora
#

having the identifiers just be strings in the description field feels unintuitive

#

as devs would have to make sure they've formatted it correctly

#

and then it shows up in r2modman and thunderstore clients

clever drift
#

that way you wouldn't need to micromanage each item

#

or is soft dependency something you want to avoid 100%?

slow prism
worldly aurora
#

I wonder, what do you guys generally do for setting up your ConfigEntry's?

slow prism
#

Config.Bind

worldly aurora
#

should've clarified

slow prism
#

oops

worldly aurora
#

like how do you generally store the config entry that gets made

slow prism
#

Most of us store in a static property inside the Plugin class

#

or if you have 1000 hours of no sleep like me

worldly aurora
#

maybe have an attribute for Fields and Properties (in addition to a method for doing so without an attribute) for modifying these LethalConfig specific values?

slow prism
#

I would use an attribute personally, it's what I mostly do with refl

#

A method would be fine too

clever drift
#

question, because i'm a bit inexperienced with these things

#

if i expose an attribute for that (which i'm assuming is what you guys are saying), will using that attribute still be considered a "soft dependency"?

#

because when i started the mod, i thought of making a whole thing with attributes to describe how each configentry would be generated, but i didn't know if using that would force it to be a hard dependency for anyone using these attributes

worldly aurora
#

attributes would require a hard dependency

slow prism
#

True

#

I forgot about that part

slow prism
#

Weather update, I decided to stop being lazy and made my own implementation for soft dependency compatibility

worldly aurora
slow prism
#

Ye, I made an internal compatibility attribute for the mod, so it will be easier to add more soft dependencies and transfer this to other projects

slow prism
#

Yo

#

It would be awesome if we had a dropdown for supported values like we do for the Enum field

worldly aurora
slow prism
#

Ye

worldly aurora
#

isn't that just an Enum?

#

or do you mean like supported values + custom

slow prism
#

These Supported values are generated from an asset that handles language

worldly aurora
#

ah so it's done at runtime?

slow prism
#

If someone else contributes a new language, it automatically gets added here, I could find a way of generating an enum without generating or modifying the assembly lol

slow prism
tight shoal
#

weird

tawdry grove
#

All my configs show up perfectly fine, I don’t remember what I did

tight shoal
slow prism
tawdry grove
#

I don’t see why

#

I have all your mods and my lethalconfig works fine

slow prism
#

I see

tawdry grove
#

It’s just probably a thing where either it can’t detect your configs so many regenerate them (pain in ass, hope you got it written down or burned settings into you memory)

#

Or

#

Uninstall lethalconfig and reinstall

wet vigil
#

im having same problem havent added any mods worked fine the other day

tight shoal
wet vigil
#

yea

tight shoal
#

Okay yea same it's one of the mods we have are doing it then lol

wet vigil
#

how do we figure out which one

tight shoal
wet vigil
#

[Info : BepInEx] Loading [LethalConfig 1.3.4]
[Info :ainavt.lc.lethalconfig] Finished loading assets.
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Int Slider"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Float Slider"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Float Step Slider"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Bool Checkbox"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Enum Dropdown"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Text Input"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig.ConfigItems.GenericButtonConfigItem"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Int Input"
[Info :ainavt.lc.lethalconfig] Registered config "LethalConfig/Example/Float Input"
[Info :ainavt.lc.lethalconfig] LethalConfig loaded!

#

nothing

tight shoal
#
Stack trace:
LethalConfig.AutoConfig.AutoConfigGenerator.AutoGenerateConfigs () (at D:/UnityProjects/LethalConfig/Assets/Scripts/AutoConfig/AutoConfigGenerator.cs:31)
LethalConfig.LethalConfigManager.AutoGenerateMissingConfigsIfNeeded () (at D:/UnityProjects/LethalConfig/Assets/Scripts/LethalConfigManager.cs:26)
LethalConfig.MonoBehaviours.ConfigMenu.Awake () (at D:/UnityProjects/LethalConfig/Assets/Scripts/MonoBehaviours/ConfigMenu.cs:16)
UnityEngine.Object:Instantiate(GameObject)
LethalConfig.Settings.MenusUtils:InjectMenu(Transform, Transform, GameObject) (at D:/UnityProjects/LethalConfig/Assets/Scripts/Utils/MenusUtils.cs:21)
LethalConfig.Patches.MenuManagerPatches:InjectToMainMenu() (at D:/UnityProjects/LethalConfig/Assets/Scripts/Patches/MenuManagerPatches.cs:40)
LethalConfig.Patches.<DelayedMainMenuInjection>d__1:MoveNext() (at D:/UnityProjects/LethalConfig/Assets/Scripts/Patches/MenuManagerPatches.cs:27)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)```
#

getting this error

#

and ur text file has the same error so

wet vigil
#

missed that

tight shoal
#

it errors right when the game loads into the menu

wet vigil
#

@slow prism anything u can do on your side?

slow prism
#

So I can't do anything about it. Can you share the modpack code?

#

That will help the original developer more

clever drift
#

This is caused by some mods' instances being null for some reason. Fix is already figured out, will push eventually

#

sorry about that

slow prism
#

BepInEx config supported values was supposed to be handled like a dropdown from the start, but the thunderstore config editor didn't implement it that way

wet vigil
slow prism
clever drift
#

or whatever the name of the type was

#

i'll work on this whenever i have a bit more time

slow prism
clever drift
#

yeah, any contributions are welcome

#

encouraged, even

slow prism
#

Aighty, I will take a look at the code base when I'm free

wet vigil
#

thank u

tight shoal
#

thank you!

clever drift
slow prism
#

There's no cringe in Ba Sing Se

#

Althought, making mods directly in the unity editor is a new one for me

clever drift
#

Yeah.. kinda regret it tbh
I thought having it all in the unity environment was gonna be easier, but it's a bit of a mess.

slow prism
#

I have like 8 compile errors, is that normal?

#

Nevermind I didn't click import on thunderkit under game location

clever drift
#

yeah, you have to use the thunderkit import. All "errors" after that are related to the bepinex dll, which is normal

slow prism
#

Are those always gonna be there?

clever drift
#

One day i'll change everything to be a project like any other normal plugin sadball

#

yeah, they'll keep popping up. but it should still compile fine

clever drift
#

it is, but if it means people would have an easier time contributing, i think it'd be worth

slow prism
#

Well for unity assets it is easier to include the editor I guess, because we have to handle prefabs and canvas too

slow prism
#

@clever drift sorry for the ping, is there any easy way for testing in the editor?

#

Like spawning all the types and such

wet vigil
#

sorry to be a bother but is the configs not showing up being fixed?

slow prism
#

@clever drift

worldly aurora
slow prism