micha Posted February 15, 2021 Author Share Posted February 15, 2021 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 More sharing options...
TheShadow1138 Posted February 16, 2021 Share Posted February 16, 2021 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 More sharing options...
lookolookthefox Posted May 25, 2021 Share Posted May 25, 2021 Does anyone know of a way to interface CLS with KerbalHealth? Link to comment Share on other sites More sharing options...
Grokit Posted August 30, 2021 Share Posted August 30, 2021 (edited) 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. 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 August 30, 2021 by Grokit Update Link to comment Share on other sites More sharing options...
micha Posted August 31, 2021 Author Share Posted August 31, 2021 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 More sharing options...
Grokit Posted September 1, 2021 Share Posted September 1, 2021 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 More sharing options...
Grokit Posted September 2, 2021 Share Posted September 2, 2021 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. Link to comment Share on other sites More sharing options...
micha Posted September 3, 2021 Author Share Posted September 3, 2021 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 More sharing options...
visssius Posted September 22, 2021 Share Posted September 22, 2021 (edited) 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...". 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... Edited September 22, 2021 by visssius edit for solution Link to comment Share on other sites More sharing options...
Tacombel Posted October 18, 2021 Share Posted October 18, 2021 @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 More sharing options...
micha Posted October 28, 2021 Author Share Posted October 28, 2021 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 More sharing options...
Gotmachine Posted October 28, 2021 Share Posted October 28, 2021 (edited) 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 October 28, 2021 by Gotmachine Link to comment Share on other sites More sharing options...
Tacombel Posted October 28, 2021 Share Posted October 28, 2021 (edited) 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 October 28, 2021 by Tacombel Link to comment Share on other sites More sharing options...
garwel Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
Gotmachine Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
Tacombel Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
Gotmachine Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
garwel Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
Gotmachine Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
linuxgurugamer Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
garwel Posted October 29, 2021 Share Posted October 29, 2021 (edited) 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 October 29, 2021 by garwel Link to comment Share on other sites More sharing options...
linuxgurugamer Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
garwel Posted October 29, 2021 Share Posted October 29, 2021 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 More sharing options...
linuxgurugamer Posted October 29, 2021 Share Posted October 29, 2021 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 CKAN. CKAN 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 More sharing options...
Gotmachine Posted October 30, 2021 Share Posted October 30, 2021 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 More sharing options...
Recommended Posts