#LethalLib

3484 messages · Page 4 of 4 (latest)

zinc flower
#

v.v

#

But yeah LT being broken isn't surprising

#

I just wonder if one of the enemy mods is doing something they shouldn't

rocky cloak
#

try Scophobia

zinc flower
#

Scopophobia needs to move to the new native spawning method Hamunii added for LL in the last update

#

I'll see if it's that

rocky cloak
#

I disabled a few of your mods and one of them started making monsters working and it seems to be that but I might just be blind

distant flame
#

yeah I've wanted to change how that works for a while but haven't had time to

zinc flower
#

Well

#

I have mines and turrets now

#

Good sign

rocky cloak
#

should just be able to check logs for it to be easier tbh

#

but yeah it seems to be Scopophobia

zinc flower
#

Yes it was

rocky cloak
#

own pack isn't spawning enemies after adding it

zinc flower
#

I have a Redwood!!!!

#

So yeah

#

it's Scopophobia

#

Lmfao rip Siren Head

#

I'm gonna guess it's due to the same stuff that breaks Xu's Giant, the LOS related code

vagrant nacelle
zinc flower
#

I'm gonna try LethalThings again and see if enemies spawn or not

rotund zephyr
#

Snail seems to work, also fun fact Old Birds don't care about the snail at all

zinc flower
#

c;

rotund zephyr
#

I mean Snail IS an invincible enemy so it'd be, odd, for it trying to kill an otherwise unkillable enemy

rotund zephyr
#

The one time I'm actually happy Embrion existing since it's an easy place to guarantee Old Birds for testing

zinc flower
#

Yeah confirmed

#

LT also breaks it

#

Probably cus of how it spawns Boomba

rotund zephyr
#

oof

vagrant nacelle
vagrant nacelle
#

yep

zinc flower
#

The Old Birds are kind of like an exception though since they attack everything

#

But it does make sense

rotund zephyr
#

I wouldn't be surprised if Zeekers hardcoded for it to target Masked/Baboon/Dog/Giant/Players

vagrant nacelle
#

Yeah, itll need a lot more code to make all enemies killable but only by old birds

vagrant nacelle
zinc flower
#

@tough path could a similar fix be done for LLL btw for the time being for custom interiors and moons to work on V50?

rotund zephyr
#

If he did code it to only try to kill any killable entities, then that'd be a cool futureproof way if he ever wanted to add even more killable outdoor enemies, and by proxy any modder that adds indoor enemies to the outdoors like Hoarding Bugs

zinc flower
#

Okay I wanted to ask

vagrant nacelle
#

hopefully, I am hoping zeekers is trying to accomodate for the modding community

rotund zephyr
#

Hard to say how Zeekers did it without looking at the code cause the only outdoor enemy that's unkillable now is worms and I don't recall Old Bird ever bothering to try and attack them when they do the nom leap

vagrant nacelle
#

Yeah

#

Someone should go and check the code for the old birds xD

#

Probably not, its like 100< lines long

#

maybe more I cant remember

rotund zephyr
#

And dormant worms are placed so far down underground that they probably avoid detection by them natively

marsh island
#

looks like it uses an interface

zinc flower
#

Hey @tough path is it possible to make it so v49 switches from int to float for the enemypowerlevels since a lot of mods are updating to float for v50?

#

That way that bridge can be gapped til V50 fully launches lol

tough path
#

is that not working

zinc flower
#

Well I was using the updated version of CoilHeadSettings by Zehs earlier on V49, and cus it switched from int to float I had a funny bug where after killing some enemies like Baboon Hawks they would come back from the dead

#

Lmfao

#

I mean with the new LethalLib update maybe that won't happen XD but it was funny af

#

It also threw a lot of errors so I wonder if a mod could be made that just switches it to float like in V50 but not sure

crimson mauve
#

It had like 15 consecutive logs, don't be a baby

#

Also, not my code so nothing I can do about it

marsh island
#

sifting through logs just kinda comes with the territory imo

frigid sorrel
vagrant nacelle
#

So probably not

frigid sorrel
zinc flower
lime zephyr
#

We had a game earlier where like 7-8 dogs spawned outside on Titan, power unchanged (so 2) and Titan with a max outside power of 7. Was wondering if this could be caused somehow by LethalLib and it's power calculations?

#

(Using KeepEnemyPower so when one is killed its power remains counting towards the max, so dead dogs aren't the cause)

zinc flower
#

@tough path If you're wondering I was the one who thought this might be the case, since you mentioned LethalLib has some problematic power level code that needs to be fixed lol

#

Since no enemy mods we use should be touching anything to cause this

#

XD

indigo orchid
#

this is the strangest thing ive seen it seems to be with my asset bundle but nothing is null so its all loaded "[Error : Unity Log] NullReferenceException: Object reference not set to an instance of an object
Stack trace:
LethalLib.Modules.Enemies.FinalizeRegisterEnemy (LethalLib.Modules.Enemies+SpawnableEnemy spawnableEnemy) (at <c68aa40cbbae4bd69cd2fcd50c8f1ae1>:0)
LethalLib.Modules.Enemies.RegisterEnemy (EnemyType enemy, System.Int32 rarity, LethalLib.Modules.Levels+LevelTypes levelFlags, LethalLib.Modules.Enemies+SpawnType spawnType, System.String[] spawnLevelOverrides, TerminalNode infoNode, TerminalKeyword infoKeyword) (at <c68aa40cbbae4bd69cd2fcd50c8f1ae1>:0)
LethalLib.Modules.Enemies.RegisterEnemy (EnemyType enemy, System.Int32 rarity, LethalLib.Modules.Levels+LevelTypes levelFlags, LethalLib.Modules.Enemies+SpawnType spawnType, TerminalNode infoNode, TerminalKeyword infoKeyword) (at <c68aa40cbbae4bd69cd2fcd50c8f1ae1>:0)
DroneEnemy.Plugin.Awake () (at C:/Users/tabwe/source/repos/DroneEnemy/src/Plugin.cs:64)
UnityEngine.GameObject:AddComponent(Type)
BepInEx.Bootstrap.Chainloader:Start()
UnityEngine.Rendering.HighDefinition.HDRenderPipelineAsset:OnEnable()" i can't get it to register though if i use my old asset bundle it works fine

all i did was update my mod to v50

#

it works with the old one but not the new one

#
        private void Awake() {
            MainAssetBundle =       AssetBundle.LoadFromFile(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "droneenemyassets"));
            InitializeConfig();

            DroneEnemy = MainAssetBundle.LoadAsset<EnemyType>("DroneEnemy");
            var TerminalNode = MainAssetBundle.LoadAsset<TerminalNode>("DroneEnemyTN");
            var TerminalKeyword = MainAssetBundle.LoadAsset<TerminalKeyword>("DroneEnemyTK");

            NetworkPrefabs.RegisterNetworkPrefab(DroneEnemy.enemyPrefab);
            RegisterEnemy(DroneEnemy, spawnWeight.Value, LevelTypes.All, SpawnType.Default, TerminalNode, TerminalKeyword);
            
            Logger.LogInfo($"Plugin {PluginInformation.PLUGIN_GUID} is loaded!");

        }```
zinc flower
indigo orchid
#

Figured it out it was due to the HDRP settings not being correctly set

#

its supposed to be ```3 HDRP assets included in build:

  • HDRP High Fidelity
  • HDRP Balanced
  • HDRP Performant``` not
- HDRenderSettings```
brittle marsh
#

huh, interesting issue

haughty marten
#

Now that LLL has taken over functionality from LL.
Is there anything left in LL that LLL still cannot do?
Would LL be getting deprecated at some point / soon?

empty obsidian
#

I recall this only being updated for major bugs from now on but could be mistaken

haughty marten
#

yeah, that's what I've heard as well.
I'm rather asking if there are still reasons to use it over going to LLL directly?
Is it just a matter of supporting legacy mods, that won't receive an upgrade.
Or is there some LL exclusive functionality left, which would mean that a direct port to LLL is unfeasible for mods that use that functionality.

empty obsidian
#

Might want to ask batby

haughty marten
#

yeah, It's low priority, he'll come across this thread at some point

crimson mauve
haughty marten
crimson mauve
#

Well I'm sure it probably is

#

@tough path would know more

haughty marten
#

So Ship Decor mods should remain on LL for now, but they could eventually also migrate to LLL, by update or get forked.

#

Also the future delivery bot from LT was planned to classify as a ship decor. So if it was implemented that way, soon, that would make LT depend on both LLL and LL...

#

And I'm assuming that furniture is the last feature of LL to move over?

floral rock
#

already

crimson mauve
#

Only so LL doesn't explode

haughty marten
crimson mauve
#

Ehhh

floral rock
# crimson mauve Ehhh

Im guessing l lib is gonna be phased out and there may just be a patch for mods that use it laying around like what LE had

crimson mauve
#

The switch from LL to LLL is much smoother than LE, there isn't a real need for a porting tool like what we have for LE

floral rock
#

although weve been seeing several unoffical updates now

haughty marten
crimson mauve
haughty marten
#

So an old LL mod, could work with LLL even without any porting?, It would be unaware that the vanilla feature is being powered by a different backend?

crimson mauve
#

I guess? As long as vanilla doesn't change anything destructive LL will still work fine, minus any bugs that LL itself has

haughty marten
crimson mauve
#

:p he'll tell you exactly what I said, except prob with bias sprinkled in because ofc

haughty marten
#

Maybe, but he wouldn't be guessing

crimson mauve
#

😭

#

It's a figure of speech I'm not actually guessing, LL and LLL work really well because they use the vanilla system to register their shit

haughty marten
#

Alright, i thought you were actually guessing. Ty again and lol

merry meadow
#

is lethal lib gonna be getting the new moons as leveltypes any time soon?

crimson mauve
brittle marsh
#

I'll get to this soon(tm), I just don't know how changing an enum's values affects things, but it's probably not gonna cause issues

#

it's a super simple change, but yeah the though of accidentally breaking something is just very scary

tough path
#

furniture and hazard support isn't in LLL yet yeah

#

but super duper easy for me to add

#

just gotta get other new stuff stable first

#

will be easy to port over too ofc

soft kiln
#

My jetpack is gone after i turned on the item saving in config

brittle marsh
# soft kiln My jetpack is gone after i turned on the item saving in config

This one from LethalLib's config? Yeah I wouldn't trust it working based on the description, so probably better left disabled

[Items]

## Allow for LethalLib to store/reorder the item list, which should fix issues where items get reshuffled when loading an old save. This is experimental and may cause save corruptions occasionally.
# Setting type: Boolean
# Default value: false
EnableItemSaveFix = false
crimson mauve
#

I saw someone suggesting that this update broke enemy spawns somehow, but no, the fix isn't related to anything closely resembling enemy spawns.

wintry dew
#

say i wanted to make a mod suing this lib that simply adds some scrap and thats it, is there a wiki teaching how to use this lib or any tutorials on how to use this lib?

crimson mauve
#

lethal.wiki

#

a section and then some on scrap

wintry dew
#

keep in mind i HAVE made games in unity before but ive never modified someone else game so anything beyond the basics im totally lost

wintry dew
plain rune
#

With that mod in the API can you make a scrap mod?

floral rock
plain rune
misty flume
#

Would it be possible to fix the PluginInfo.GUID ?

misty flume
#

Isn't LethalLib registering PlainItems too late for the save system ? Like shouldn't items be added to AllItemsList in a postfix of StartOfRound.Start ?

#

It's actually using Terminal.Awake

#

I don't really know when save data is loaded

tough path
#

Terminal.Awake is before StartOfRound.Start

misty flume
#

Interesting

#

Is it also before GameNetworkManager.Start ?

tough path
#

neither are before that

#

They are very much after that

#

GameNetworkManager.Start is when you load the main menu

misty flume
#

I see

brittle marsh
crimson mauve
#

LethalLib [0.16.3]

Fixed

  • GetLLLNameOfLevel function now returns a lowercase level name so input is no longer case sensitive.
#

forgor to post this here

crimson mauve
#

LethalLib [1.0.0]

[!NOTE] Despite the major version jump from 0.16.4 to 1.0.0, no major or breaking changes were made.
This change was made to properly follow SemVer to show that LethalLib's public API is stable.

Added

  • Ability for items, levels, outside and inside mapobjects to register to levels through their LethalLevelLoader content tag.

Fixed

  • mapobjects maybe having the same issues that items and enemies had the previous two versions with case sensitivity and leveltype validation.
pulsar thicket
#

is this basically a check to prevent the weight bug from occurring?

crimson mauve
#

i just force em to a weight of 1 if they're under 1 or higher than 4, though ig in hindsight i shoulda just clamped

pulsar thicket
#

peak

crimson mauve
#

and ill probably push another update that clamps, whoopsie @brittle marsh

brittle marsh
#

ye

brittle marsh
crimson mauve
#

i think a warning is enough just so that the gameplay effect of the weight stays but like it's clear that something would've gone wrong otherwise

#

but up to you

brittle marsh
#

I mean yeah the clamping is fine, people are blind though

#

and can't read

crimson mauve
#

i think that'll always sadly be a problem

brittle marsh
#

it will be a problem as long as LL doesn't spit out a massive error message and not register the item, but not sure if we should do that

crimson mauve
#

probably shouldnt because it's been a problem for a long time and some devs just arent here anymore

brittle marsh
#

fair

crimson mauve
brittle marsh
#

anything below 1 or above 4 gets reset to 1

crimson mauve
#

oops

#

updated it

low lichen
#

Hello! Not sure if it's related, but linked it to DemonMae's interior channel too.
In their map of scrap generation, I did get an error thrown. Don't know if it's related, but lethallib was indeed the only thing that's changed. Linking just in case

brittle marsh
# low lichen Hello! Not sure if it's related, but linked it to DemonMae's interior channel to...

ReXuvination and CodeRebirth seem to be be broken, and the only thing LethalLib should be changing is:

[03:26:16.4781103] [Warning: LethalLib] Item Data PC has an invalid weight of 0, resetting to weight of 1, please check the lethal.wiki for the weight calculation and give it a valid number, anything below 1 or above 4 gets forced to be 1 or 4.
[03:26:16.5043981] [Warning: LethalLib] Item Pentagram has an invalid weight of 333, resetting to weight of 1, please check the lethal.wiki for the weight calculation and give it a valid number, anything below 1 or above 4 gets forced to be 1 or 4.
low lichen
#

copy that! thank you for the information

brittle marsh
#

note that all of that might be incompatibilities with other mods

low lichen
#

It may have been an unlucky combination of scrap generation at that exact moment if not due to LL; errors abound but havent had it break in the past

brittle marsh
#

It seems that StartOfRound.Instance is null which is causing CodeRebirth and ReXuvination to break

#

which basically means something has gone catastrophically wrong

low lichen
#

fair! please don't troubleshoot tons!!!! blobcatgooglyheart

brittle marsh
#

Also other notable stuff

[03:26:16.6452621] [Error  :More Ship Upgrades] [Tools] DropAllHeldItems method went missing.
[03:26:31.7776921] [Debug  :BepInExFasterLoadAssetBundlesPatcher] Loading uncompressed bundle "pjonkgooseassets_-1789359388.assetbundle"
[03:26:31.8041086] [Debug  :BepInExFasterLoadAssetBundlesPatcher] Loading uncompressed bundle "pjonkturkeyassets_657334770.assetbundle"
[03:26:31.8060760] [Error  : Unity Log] The AssetBundle 'C:\Program Files (x86)\Steam\steamapps\common\Lethal Company\Cache\AssetBundles\pjonkturkeyassets_657334770.assetbundle' can't be loaded because another AssetBundle with the same files is already loaded.
[03:26:31.8060760] [Error  :PjonkGoose] Failed to load pjonk turkey assets.
[03:26:31.8060760] [Error  :PjonkGoose] Failed to load pjonk goose assets.
low lichen
#

I don't want to waste your time on it if not related, I promise!! and is not the right channel as well!
yeah that one Idk how I'm managing to doubleload that.

brittle marsh
#

@low lichen oh one thing, do you know which mod the Pentagram item might be from?

pulsar thicket
#

pentagram might be from an LGU contract

brittle marsh
brittle marsh
low lichen
#

Aligned with that; it's not in my centralconfig setup which means it was not supposed to occur that way

low lichen
#

so another mod decided to inject*

#

which, yeah, 99% sure is LGU

brittle marsh
#

ah yeah that's fine, I'm just interested in why the mod has a scrap with such an absurd weight

low lichen
#

^

brittle marsh
#

and it seems deliberate

#

so LL might be fucking it up currently

proven cypress
#

v70

#

@crimson mauve @brittle marsh

brittle marsh
#

I'm waiting on lordfire to publish new gamelibs packages

proven cypress
#

i see

brittle marsh
#

and he's probably asleep

#

and I'll go sleep soon too

#

if you want to fix this right now by doing reflection feel free to do so and you can ping batby and hope he's online to push an update

errant hinge
# proven cypress well

wait, was this fixed in the recent update that claims to update to V70? I still got it

errant hinge
#

Moonswept

#

or TestAccountCore maybe

#

and I believe it is what's breaking the monitor up front somehow, causing it to be blank

crimson mauve
brittle marsh
#

I dunno

errant hinge
#

Just made a profile of only Moonswept and dependencies and that's the issue.

#

I'm going to try just TestAccountCore and see if it's that

#

because that's a dependency so it could be in there

#

Yeah, ok. TestAccountCore is actually where the issue is I believe

#

Someone beat me to reporting it to them

woven venture
#

Does LL have a class for all content registered with it like the lists found in LLLs PatchedContent Class?

brittle marsh
#

it does have some internal lists somewhere maybe per thing but that's kinda it

#

LethalLib is not really designed... at all

woven venture
#

I was able to get a list of enemies with Enemies.spawnableEnemies

#

My only issue with this now is that the modName property is just LethalLib, not the mod that added them

brittle marsh
#

lethallib does store the calling assembly somewhere

pulsar thicket
#

didnt this mod add safeguards to prevent the weight bug from happening?

#

i still got it last night, i gotta see what precisely caused it

#

mightve been this actually

crimson mauve
#

the fix wont entirely work if you have more than 4 slots

#

but that's only for going above the normal lethal limit

#

negative weight should be completely fixed

#

(for LL items)

pulsar thicket
crimson mauve
#

yeah thats negative weight

#

basically the scrap has negative weight, when you pick it up it doesnt increase your weight, andf when u drop it it increases your weight

pulsar thicket
#

o

crimson mauve
#

cuz it ends up decreasing by a negative value

pulsar thicket
#

it started after putting a bunch of stuff in the beltbag

#

maybe one of the scraps had a negative weight and it messed up the weightedbeltbag code

crimson mauve
#

maybe? easiest way is to just make a mod that logs all item weights and seeing if there are any with weights below 1 (1 is 0 dont question it)

pulsar thicket
#

i'm looking more into it, i think it is just a weighted belt bag problem

#

all the stuff i picked up in that round had valid weights

#

at some point after picking up an item from a dead mask it just stopped reducing the weight when dropping things out of the bag

#

maybe they could add a patch to just reset the weight to the belt bag's default when drop all items is called

crimson mauve
#

@brittle marsh i need you to accept the PR and update LL

#

oh actually the PR build doesn't like what i did to the csproj

#

well, i dont know what to do about that, lol, there is no nuget package but seems like the github actions need it

#

you can figure that out

crimson mauve
#

fixed it actually

crimson mauve
#

i've been pushing updates to LL for a while, i should probably just get the maintainer perms at some point instead of pinging hamunii everytime lol

brittle marsh
# crimson mauve i've been pushing updates to LL for a while, i should probably just get the main...

Yeah I think you're trustworthy as a maintainer, though considering that eba is not really around anymore, maybe LCM should maintain a fork (where you are also a maintainer)?

Because rn we are relying on eba's NuGet and TS keys, both of which in theory are in danger of being leaked by whoever can make the GH actions run. The TS key is more dangerous to leak since it has no limits on what it can be used for afaik

crimson mauve
#

well, i do plan to eventually hollow out LL and just replace its called to DawnLib, a more maintained library

brittle marsh
#

Yeah I think it still makes sense to maintain a fork of it. Or idk actually

#

Because yeah it's in like life support rn, nothing new is really gonna be added to the API

#

But yeah just ask eba to make you a maintainer and that's one way to solve the issue

#

Anyways I'm gonna take about an hour or so before I can push an update

crimson mauve
#

sure

crimson mauve
#

@brittle marsh poke

brittle marsh
#

yep I am still alive, had some stuff before I could get to it

#

@crimson mauve just to confirm, this version doesn't work with v73 right? I'll probably add a note about that to the readme

#

and v80 is still beta, right?

#

actually fuck it, I don't care enough since many mods probably don't specify what they support and don't

#

fucking Thunderstore

#

also btw LethalLib's repo has /lib/ directory already

#

but that can be fixed later if anyone cares

#

I'll just merge and push it, I trust that it works

#

it should be up anytime now

crimson mauve
#

nice

frank lotus
brittle marsh
frank lotus
#

It's possible sure, but they'd have to have push permission to a branch which triggers an on push workflow

brittle marsh
frank lotus
#

Yeah, I guess

#

Afaik Eba edits the GitHub actions secrets herself

brittle marsh
#

but yeah it's not something I'd expect to happen, but the possibility is still there

frank lotus
#

she does that for me on netcodepatcher each time I ask

brittle marsh
frank lotus
#

True

#

I forgot nuget.org has a concept of collaborators

brittle marsh
#

ye it's quite nice, if only thunderstore had anything like that

frank lotus
#

Teams sort of

brittle marsh
#

actually yeah, but it kinda still sucks

frank lotus
#

yeah it does lmao

brittle marsh
#

I do wonder though if there is any way for the community to ever move off of thunderstore if/when a good alternative comes to existence. Everything kinda sucks ngl, and I did earlier mention about possibly coming up with my thunderstore but the probability of that becoming anything is quite small

crimson mauve
#

If they paid I'm sure others would move

frank lotus
brittle marsh
#

would be interesting at least if a few people here attempted to make a thunderstore alternative to just make things better

frank lotus
#

the problem with making a package repository is that hosting is expensive

brittle marsh
brittle marsh
humble pasture
brittle marsh
lavish meteor
frank lotus
#

You still have significant hosting costs reqd to provide APIs that enable dependency resolution

#

and

#

can't release artifacts on GitHub releases be edited/removed after the fact?

brittle marsh
brittle marsh
frank lotus
#

ITS ALL IN ONE FILE?!

brittle marsh
#

uh, appears so

frank lotus
brittle marsh
frank lotus
#

Read the readme lol

#

people edit the file directly and submit prs

#

That's so cursed

brittle marsh
#

damn lol

frank lotus
#

On the one hand: idiots can't add mods to the list, yay

#

On the other hand, if lethal company used this system, that file would be unbelievably massive

#

On the order of a few gibibytes I think

brittle marsh
frank lotus
#

Yes

#

I pulled the whole thing into a local sqlite database at one point

#

it was chonky and took ages

humble pasture
frank lotus
brittle marsh
frank lotus
#

cause then you could build the database from scratch once and then keep it up to date by applying the operations from the logs since you last updated

frank lotus
brittle marsh
# frank lotus doesn't it give you one big file?

uh there are probably multiple APIs, but this one API gives you a list of zip files which all have a certain sized json file so it's separated into many, probably so you don't need one massive file

frank lotus
#

huh I'm not sure that existed when I last dealt with thunderstore api

brittle marsh
#

so something like LC has 24 of those files, R.E.P.O. has 3, and silksong has 1

frank lotus
#

the one I'm thinking of is /c/whatevs/api/v1/package/

brittle marsh
#

okay discord doesn't render that file for whatever reason, probably file extension, but it's just json

frank lotus
#

I like how it's not documented on their API docs lol

brittle marsh
#

oh yeah I looked at how gale uses it to do it properly lol

pulsar thicket
#

mayhaps?

#

from my cursory looks at the site they have stuff like version control and dependencies a lot better than TS

brittle marsh
#

modrinth's official modmanager kinda sucks ngl but otherwise I'm assuming it's good

pulsar thicket
#

first complaint ive heard abt them

#

why does it suck

brittle marsh
#

it has quite terrible UX, I wrote about it a bit, I'll try to find it

frank lotus
#

as a mod repository modrinth is very good though

#

and they have funding (somewhat)

#

making a mod manager to use their repository is fairly easy and does not require funding

#

the main problem they would run into is malware scanning

brittle marsh
# brittle marsh it has quite terrible UX, I wrote about it a bit, I'll try to find it

#1387178791444549633 message

Also, Thunderstore is really great with how it handles modpacks, and on modrinth, it's just a terrible experience trying to use modpacks because you can't simply add a modpack to an existing profile. Also modrinth makes viewing what mods a modpack has so hard that you have to google it or something to figure it out. I just resorted to installing a modpack to see what it contained.

frank lotus
brittle marsh
frank lotus
#

It's a problem that most Minecraft mod managers has

#

Including prism, the best one

#

The problem with treating a modpack as a dependency is that you can't remove things from it very easily

#

Most people prefer having that flexibility

brittle marsh
#

I'd say that is also a client problem, as long as there is some way to detect if a package is a modpack (it's a tag in TS's case)

frank lotus
#

how would you even model it?

brittle marsh
brittle marsh
#

that is not a rhetorical question btw

frank lotus
#

a modpack consists of a bunch of files that get unpacked into the Minecraft directory plus a bunch of dependencies (mods, resource packs, etc.)

#

Treating modpacks as dependencies of a game instance raises some problems

brittle marsh
frank lotus
#

No

#

a mod is almost always a standalone .jar file

#

Because a .jar is a .zip archive

brittle marsh
#

oh so minecraft has it's own strict definition of what a mod is?

frank lotus
#

All the resources it needs are bundled inside

frank lotus
brittle marsh
#

okay wait I'm not quite understanding. Can't a modpack be modeled the same exact way as a mod?

frank lotus
#

No

#

just let me type for a minute

#

modpacks in MC are better thought of as templates for game instances

#

if you try to treat them as dependencies instead of templates you run into really hard to solve problems

#

like what happens if they both contribute the same file? how do you try to merge it?

#

and what if a user wants to install a modpack and then remove a mod which that modpack includes from their game instance? (this is a very common usecase)

brittle marsh
brittle marsh
brittle marsh
#

so from what little I understand, I'd assume that minecraft modpacks are modeled in an inherently problematic way

#

because we have none of those problems on thunderstore, right?

#

and if there is a conflict, that's up to the APIs (which parse the files) to decide how they are resolved

frank lotus
#

in thunderstore a modpack can only be a collection of mods

frank lotus
#

configuration files

brittle marsh
frank lotus
#

you can't install two modpacks that contribute different versions of the config files for a particular mod

frank lotus
#

All files associated with a thunderstore package are installed in a package-specific place

#

This is not the case with minecraft modpacks

brittle marsh
frank lotus
#

Minecraft modpacks commonly also edit the main menu UI / splash art

#

which is another thing you would certainly get conflicting behaviour/files with

brittle marsh
frank lotus
#

and if it's not that, it's a config file which contains the splash art image path

#

and that's the same problem as we just mentioned

brittle marsh
#

technically a conflict resolver for config files could be made (in thunderstore's case) which would at least allow a user to select for example which modpack's splash art they want

frank lotus
#

the bottom line is that there is no benefit to treating modpacks as fully qualified dependencies

#

It is not a feature that anyone would use

frank lotus
brittle marsh
frank lotus
#

Someone who creates modpacks would do the merge resolution manually and submit a new modpack

frank lotus
#

basically every mod in christendom uses the default bepinex config

brittle marsh
frank lotus
#

you can make a new modpack which includes elements/dependencies from both

#

but that is something that someone experienced must do manually and carefully, especially merging of the config files

brittle marsh
brittle marsh
frank lotus
#

In Minecraft at least, it is quite unlikely

#

At the filesystem level it is (basically) impossible

#

At the registry level, yes, there can be conflicts, but the mod loader tells you about these before the game loads

frank lotus
#

before the game is launched, two mods will only conflict in the filesystem if their .jar has the exact same filename

#

so anyway: I don't think fully-fledged modpacks should be treated as fully-qualified dependencies

#

I do think they shouldn't be treated as templates

#

but something kind of in between the two

#

Ugh, it's just such a nightmare

brittle marsh
#

The modifying of config files is actually a very good point, and as of right now, I'm unsure what to think about it

brittle marsh
frank lotus
#

I think there should be a distinction between a collection of mods and a modpack

brittle marsh
#

so in that sense, there isn't much difference between a mod and a modpack on TS

frank lotus
#

a conflict resolver, i mean

#

but yeah it is necessary to have one

brittle marsh
frank lotus
#

sure, yeah

#

the relationship between 'game instance' and 'mods installed' is one-to-many

brittle marsh
#

though, then you have modified a mod... but Thunderstore mod mangers allow this per package version

frank lotus
#

i think the relationship between 'game instance' and 'modpack used as template' should be one-to-one

#

(it is presently also one-to-many, on thunderstore)

#

on Modrinth/Prism it is one-to-one but the launcher forgets what template you used

#

so updating your customised instance when the modpack gets updated is often not trivial

brittle marsh
frank lotus
#

i mean

#

there are vanishingly few cases where someone would have more than 1 modpack which provides config files installed

#

a modpack is meant to be a curated/highly customised experience which consists of a bunch of mods and configuration which ties them all together

#

it doesn't make sense to install more than one of those

brittle marsh
frank lotus
#

I don't think there's an 'update modpack' button

brittle marsh
#

mm I see

frank lotus
#

The most reliable thing to do is make a new game instance, do your modifications again, copy across files which contain local settings

brittle marsh
frank lotus
#

Not true

#

Thunderstore is notoriously bad for updating modpacks

brittle marsh
#

oh?

frank lotus
#

No lockfiles!

#

So the best way to update a game instance is exactly the same as I described for Minecraft

frank lotus
brittle marsh
#

wait so what would the lockfiles do in this case?

brittle marsh
frank lotus
#

Without a lockfile:
install foo which depends on bar, baz
now your dependencies look like: foo, bar, baz
foo updates and only depends on bar
now your dependencies still look like foo, bar, baz because there is no distinction between top-level dependencies and transitive, resolved dependencies

#

With a lockfile:
install foo which depends on bar, baz
now your dependencies look like: foo
and your lockfile looks like: foo, bar, baz

brittle marsh
frank lotus
brittle marsh
#

I guess my lockfile is basically integrated into the mod profile data

#

so I could separate it

frank lotus
#

they should be kept seperate

brittle marsh
frank lotus
#

The idea is that into your package.json or analogous file goes your top-level dependency spec

#

i.e. version ranges are allowed

brittle marsh
#

oh right yeah that actually makes complete sense, and is something I need to implement

frank lotus
#

then you run a command like blabla resolve to resolve specific package versions which satisfy the dependency spec (or fail if unresolvable)

#

the resolved package set and their versions go into the lockfile

#

then finally blabla sync to install based on the existing lockfile

brittle marsh
#

yep!

frank lotus
#

so if you want to 'bump' dependencies you can just rerun blabla resolve + blabla sync again to update your dependencies while adhering to the version ranges you already defined in your main dependency spec

brittle marsh
#

in my cli the adding of mods actually only updates the profile data and I a update command to update and actually install the packages. It's mostly temporary for now as I just implemented it, but yeah

frank lotus
#

actually uv uses lock instead of resolve, but either works well

#
Commands:
  auth     Manage authentication
  run      Run a command or script
  init     Create a new project
  add      Add dependencies to the project
  remove   Remove dependencies from the project
  version  Read or update the project's version
  sync     Update the project's environment
  lock     Update the project's lockfile
  export   Export the project's lockfile to an alternate format
  tree     Display the project's dependency tree
  format   Format Python code in the project
  tool     Run and install commands provided by Python packages
  python   Manage Python versions and installations
  pip      Manage Python packages with a pip-compatible interface
  venv     Create a virtual environment
  build    Build Python packages into source distributions and wheels
  publish  Upload distributions to an index
  cache    Manage uv's cache
  self     Manage the uv executable
  help     Display documentation for a command
#

Note add does automatically run lock and sync, at least somewhat

brittle marsh
#

thanks a lot for the info btw!

frank lotus
#

that's ok :)

lusty parcel
#

Is the new lethalLib version (1.2.0) compatible with v73 too or only V80? The changelog doesn't say anything about that

crimson mauve
#

Only v80

lusty parcel
#

Alright, thank you

sweet mesa
#

How do I go about registering a map hazard in the v80 version? I'm attempting to port the Missile Turrets mod but it registers them via "SpawnableMapObject", and in practice none of them are spawning on any moon, so I presume that's outdated.

tough path
sweet mesa
pulsar thicket
#

i dont see anything in LLL's github that mentions map objects