Jump to content

[1.11] Connected Living Spaces (Adopted) 2.0.0.6 (2020-12-29)


micha
 Share

Recommended Posts

2 hours ago, TheShadow1138 said:

@micha I've added a compatibility patch to ShadowWorks to add ModuleConnectedLivingSpace if CLS is installed.  It should work as expected now.  The new version of ShadowWorks is now 2.0.4.1.  Of course if users have any issues with CLS in ShadowWorks, let me know in the ShadowWorks thread.

Awesome, thank you!  I'll have a quick play with it "soon" and see if it all works as expected, but, unlike a lot of stuff here, CLS isn't exactly rocket science ;) It's more a case of what the mod authors consider apppropriate for their parts which is why I would prefer the mod authors to provide CLS patches. Otherwise it's my (or users') best guesses.

Link to comment
Share on other sites

55 minutes ago, micha said:

Awesome, thank you!  I'll have a quick play with it "soon" and see if it all works as expected, but, unlike a lot of stuff here, CLS isn't exactly rocket science ;) It's more a case of what the mod authors consider apppropriate for their parts which is why I would prefer the mod authors to provide CLS patches. Otherwise it's my (or users') best guesses.

No problem, it was really easy to get the patch set up after looking at the syntax for the module.  Let me know if you find anything that doesn't seem correct.

Link to comment
Share on other sites

  • 3 months later...
  • 3 months later...

Hi,

Just been having a hair pulling moment trying to get Kerbals to transfer between a MK2 Command Pod and another space. Finally went looking though the configs and found "impassablenodes = bottom" in GameData\ConnectedLivingSpace\Configs\CLSStock.cfg.

It looks like the ReStock has replaced the textures for the Mk2Pod with one that has a hatch on the bottom or, in the case of the MK1 Lander Can, on the top and bottom.
eYzjB7D.jpg

I'd be happy to go through the parts and find which have had these texture replacements. If it can be done and someone can help me out with how to add a new definition that overrides CLSStock.cfg for those parts only when ReStock is installed then I can submit a pull request as well.

Thanks!

[Update]
So I added the snippet below to CLSReStockPlus.cfg and it seems to work, but I suspect I may just have gotten lucky with the order that the config files are being read in?

@PART[Mk2Pod]:HAS[!MODULE[ModuleConnectedLivingSpace]]:NEEDS[ReStockPlus,SquadExpansion]
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = true
		impassablenodes = top
	}
}
@PART[landerCabinSmall]:HAS[!MODULE[ModuleConnectedLivingSpace]]:NEEDS[ReStockPlus]
{
	MODULE
	{
		name = ModuleConnectedLivingSpace
		passable = true
	}
}

 

Edited by Grokit
Update
Link to comment
Share on other sites

23 hours ago, Grokit said:

[Update]
So I added the snippet below to CLSReStockPlus.cfg and it seems to work, but I suspect I may just have gotten lucky with the order that the config files are being read in?

Hi @Grokit, thank you! I'll add your patch to the next release.

 

Link to comment
Share on other sites

On 8/31/2021 at 2:19 AM, micha said:

Hi @Grokit, thank you! I'll add your patch to the next release.

Hi @micha, maybe hold off on that a bit. The "NEEDS" should be for ReStock and not ReStockPlus. I'll also go through the rest of the crew parts to see if any other changes are needed and post the whole lot today or tomorrow.

Link to comment
Share on other sites

13 hours ago, Grokit said:

Hi @micha, I just put in a pull request with a proper patch instead of putting it here. Covers the 4 parts that have ReStock model replacements.

Awesome, thank you.  Afraid I'm a tad busy IRL, so this might still take a little while.. I haven't had much time for KSP lately :(

Link to comment
Share on other sites

  • 3 weeks later...

Hello guys! Thank you for keeping this mod alive! It's amazing!

Today btw i ran into an issue. It's my second attempt to crew transfer in space. And even if everything seems to be ok... it says "cls module is either full or internally unreachable...".
vfbwnK6.png

What do I do wrong? 

Edit:
Sorry I just saw: "Impassable Nodes: top"... and not bottom where the heat shild is...
I guess i can't dock the capsule... :(

36CgS1A.png

 

Edited by visssius
edit for solution
Link to comment
Share on other sites

  • 4 weeks later...

@micha

Hi, Micha. It has been not a problem until now, but with the recent "stuck on Loading part upgrades" that happens when there are duplicated dlls, I see that shipmanifest uses CLSInterfaces.dll as a plugin. May I suggest changing this dll to be its own mod to avoid this situation?

Just a suggestion, not even a request, as I haven't been able to detect any  problems with the current situation.

Link to comment
Share on other sites

  • 2 weeks later...
On 10/18/2021 at 10:05 AM, Tacombel said:

@micha

Hi, Micha. It has been not a problem until now, but with the recent "stuck on Loading part upgrades" that happens when there are duplicated dlls, I see that shipmanifest uses CLSInterfaces.dll as a plugin. May I suggest changing this dll to be its own mod to avoid this situation?

Just a suggestion, not even a request, as I haven't been able to detect any  problems with the current situation.

Hi @Tacombel, not entirely sure what you're asking? CLSInterfaces is just a really tiny wrapper which exposes the CLS functionality to other mods. Only the latest version of CLSInterfaces should load and be active even if multiple mods have it installed. If that's not the case then I'll need to take a look into that.

If you're asking about making CLSInterfaces a separate mod in CKAN that's a possibility although won't really remove the issue - for people not using CKAN, it will still be need to be bundled with mods.

Link to comment
Share on other sites

3 hours ago, micha said:

Only the latest version of CLSInterfaces should load and be active even if multiple mods have it installed.

The plugin loader in 1.12 is broken and will crash when multiple *.dll files with the same name exists in GameData.
Details here : https://github.com/gotmachine/StuckOnLoadingPartUpgradesFix

Edited by Gotmachine
Link to comment
Share on other sites

4 hours ago, micha said:

Hi @Tacombelou're asking about making a mod in CKAN that's a possibility although won't really remove the issue - for people not using CKAN, it will still be need to be bundled with mods.

Exactly that. But the library should be indicated as a dependency to be downloaded separately, which of course has its own problems with users. But as it is now people installing both mods will not be able to play unless they install one of the patches by Gotmachine or Lisias, or zerominiavc, that will tell them to delete one of the DLLs to avoid the conflict. But if they are not aware of any of this the first thing they will know is the game crashing with no idea of what is causing it.

Edited by Tacombel
Link to comment
Share on other sites

22 hours ago, micha said:

Hi @Tacombel, not entirely sure what you're asking? CLSInterfaces is just a really tiny wrapper which exposes the CLS functionality to other mods. Only the latest version of CLSInterfaces should load and be active even if multiple mods have it installed. If that's not the case then I'll need to take a look into that.

If you're asking about making CLSInterfaces a separate mod in CKAN that's a possibility although won't really remove the issue - for people not using CKAN, it will still be need to be bundled with mods.

Indeed, this problem popped up with Kerbal Health, which ships with the CLSInterfaces DLL: an error message during loading notifying of multiple DLL files with the same name (also from ShipManifest in my case). If you delete all the extra DLLs, it goes away. I could remove the DLL from the Kerbal Health install, but then CLS would become a hard dependency (because I'm referencing the DLL).

The only solution I can come up with is to replace the DLL with a wrapper class that we can include directly in the source code. It's the way things are done with Blizzy's Toolbar, for example.

Link to comment
Share on other sites

38 minutes ago, garwel said:

The only solution I can come up with is to replace the DLL with a wrapper class that we can include directly in the source code. It's the way things are done with Blizzy's Toolbar, for example.

This has drawbacks and would be a breaking change. Standardizing CLSInterface to be a separate mod is a better solution.
If CLSInterface is distributed by everyone as "GameData\CLSInterface\CLSInterface.dll", the likeliness of end users having duplicates becomes quite low.

Link to comment
Share on other sites

3 hours ago, garwel said:

 

The only solution I can come up with is to replace the DLL with a wrapper class that we can include directly in the source code. It's the way things are done with Blizzy's Toolbar, for example.

Would changing the name of the DLL work? As in clsvxxx.dll

Link to comment
Share on other sites

5 minutes ago, Tacombel said:

Would changing the name of the DLL work? As in clsvxxx.dll

I think that may work. At the runtime level, if I remember correctly, only the "first found" one will be loaded.
However, this will definitely have some side effects on the plugin loader. How problematic that will be, I don't know. Probably not much in that case.

Link to comment
Share on other sites

3 hours ago, Gotmachine said:

This has drawbacks and would be a breaking change. Standardizing CLSInterface to be a separate mod is a better solution.
If CLSInterface is distributed by everyone as "GameData\CLSInterface\CLSInterface.dll", the likeliness of end users having duplicates becomes quite low.

Having a separate CLSInterface mod is still a breaking change: all mods that use it will have to add that mod as a hard requirement. Unfortunately, I don't see any clean options here unless someone finds a way to fix KSP's new behavior.

Link to comment
Share on other sites

6 minutes ago, garwel said:

Unfortunately, I don't see any clean options here unless someone finds a way to fix KSP's new behavior.

I guess @Tacombelidea of just using an unique name for dll when redistributing it might work.

Unfortunately, there is no way to fix that KSP bug through a plugin, as the presence of duplicated dll will either :
-
Causes the plugin loader to crash with an ArgumentOutOfRangeException
- Silently delete random plugins from the list of plugins to be loaded.

At best, in the former case, the issue can be detected (but not avoided, since in any case, it's already too late).

My fix (the one I linked a few post above) rely on using an external Unity mod loader, so I'm able to run some code before the KSP plugin loader execution.

Link to comment
Share on other sites

On 10/28/2021 at 4:10 AM, micha said:

Hi @Tacombel, not entirely sure what you're asking? CLSInterfaces is just a really tiny wrapper which exposes the CLS functionality to other mods. Only the latest version of CLSInterfaces should load and be active even if multiple mods have it installed. If that's not the case then I'll need to take a look into that.

If you're asking about making CLSInterfaces a separate mod in CKAN that's a possibility although won't really remove the issue - for people not using CKAN, it will still be need to be bundled with mods.

The last version of KSP had some new code added which checks for multiple identically-named DLLs.  The idea was to only use the newest one, the problem is that the code breaks when there are multiple identical DLLs.  This is why I added that code to ZeroMiniaAVC, to at least give the player an idea as to what might be going on, and what to do about it

 

5 hours ago, garwel said:

Indeed, this problem popped up with Kerbal Health, which ships with the CLSInterfaces DLL: an error message during loading notifying of multiple DLL files with the same name (also from ShipManifest in my case). If you delete all the extra DLLs, it goes away. I could remove the DLL from the Kerbal Health install, but then CLS would become a hard dependency (because I'm referencing the DLL).

The only solution I can come up with is to replace the DLL with a wrapper class that we can include directly in the source code. It's the way things are done with Blizzy's Toolbar, for example.

 

The solution would be to distirbute it, but have it in the exact same location as the original mod.  That way there would only be one DLL found.  Of course, you then have the issue of is it the latest version.

I understand about your reluctance to have a hard dependency, but you already do, and by including the dll, you are now potentially breaking the game if any other mod also includes the dll

Link to comment
Share on other sites

2 hours ago, linuxgurugamer said:

The solution would be to distirbute it, but have it in the exact same location as the original mod.  That way there would only be one DLL found.  Of course, you then have the issue of is it the latest version.

I understand about your reluctance to have a hard dependency, but you already do, and by including the dll, you are now potentially breaking the game if any other mod also includes the dll

Well, for Kerbal Health, CLS is a soft dependency and I definitely don't want to make it mandatory. I will rather have to drop CLS compatibility altogether, even though I spent a lot of time coding it and personally I love CLS.

Having a standalone mod for API (that will then become a hard dependency but at least won't change gameplay for those users who don't want CLS features) can probably do the trick. Still, the perfectionist in me is scared to think of what will become of GameData folders and CKAN lists if all the modders implement their API as separate mods.

Edited by garwel
Link to comment
Share on other sites

4 hours ago, garwel said:

Well, for Kerbal Health, CLS is a soft dependency and I definitely don't want to make it mandatory. I will rather have to drop CLS compatibility altogether, even though I spent a lot of time coding it and personally I love CLS.

Having a standalone mod for API (that will then become a hard dependency but at least won't change gameplay for those users who don't want CLS features) can probably do the trick. Still, the perfectionist in me is scared to think of what will become of GameData folders and CKAN lists if all the modders implement their API as separate mods.

So what about just making the DLL be in the same folder that it is when the actual mod is distributed?  That would mostly solve the issues.  Would also make it easier to remove (or not install at all)

 

Link to comment
Share on other sites

1 hour ago, linuxgurugamer said:

So what about just making the DLL be in the same folder that it is when the actual mod is distributed?  That would mostly solve the issues.  Would also make it easier to remove (or not install at all)

You mean putting the interfaces DLL into GameData\ConnectedLivingSpace\Plugins and distribute it with my mod? Sounds interesting unless it causes issues with CKAN or MM.

Link to comment
Share on other sites

35 minutes ago, garwel said:

You mean putting the interfaces DLL into GameData\ConnectedLivingSpace\Plugins and distribute it with my mod? Sounds interesting unless it causes issues with CKAN or MM.

Shouldn't cause any issues, AFAIK, definitely not with CKANCKAN will install the actual mod, not the copy from your zip.  And I don't think there would be an issue with MM, MM would see that the dll is installed and act accordingly

Link to comment
Share on other sites

10 hours ago, linuxgurugamer said:

And I don't think there would be an issue with MM, MM would see that the dll is installed and act accordingly

It will cause any mod having a MM patch relying on a NEEDS[ConnectedLivingSpace] to have that patch wrongly applied when CLS isn't actually installed.

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...