Mods / flawless server mod manager

Tags: #Library #Utility
Author: xeth
Side: Both
Created: Jun 14th at 6:58 PM
Last modified: Jun 19th at 2:04 AM
Downloads: 228
Follow Unfollow 25

Recommended download (for Vintage Story 1.20.12):
flawless_mod_manager_v0.0.5.zip  1-click install


flawless server mod manager

this lets clients download mods directly from the vintagestory game server if the mod is not available on moddb (with client permission approval required).

the priority order for downloading mods:
1. first check moddb for mods (normal vs system)
2. for mods not available, server will send client list of non public mods on server
3. client must give approval to download (in the gui)
4. client will then download each mod directly from server
5. client must join server before any mods are loaded by game (gives opportunity to cancel joining and audit mods downloaded)

use cases:
1. testing mods: mod makers can use this to easily test mods with friends without needing to send .zip files around
2. server specific tweaks: let server managers have small server-specific tweak/config mods without polluting the global mod database
3. suddenly removed mods: if jannies or mod makers suddenly remove mod this gives server managers an alternative

looking for somepony else to take over: this is a proof-of-concept (its only 1 file!!!11, see source)
i dont rly have time irl to do modding anymore i made this quickly for my own server & frens x,x
so i hope somepony else can take over & keep this stable & safe !!!!!!
 
known issues:
- sometimes mod downloading may fail...: cancel, wait a few seconds, re-join and retry. (this may be related to some main/packet thread conflict, right now can just keep trying until the threading fixed haha lole)

src code:



noooo "security"""""!!!
this requires client approval & is no less secure than current auto download from moddb, run vs in an isolated sand box if u want actual security

mods are NOT automatically loaded when downloaded, if you need to audit the mods downloaded,
1. cancel after downloading the mods (do NOT join server)
2. open the server mods folder, typically `VintagestoryData\ModsByServer\[address]-[port]`
3. unpack and inspect all the server mod .zip downloaded (i.e. dnspy audit any .dll downloaded)

this is no different than vanilla since moddb doesnt audit any .dll files

 

Mod Version For Game version Downloads Release date Changelog Download 1-click mod install*
0.0.5 116 Jun 19th at 2:04 AM flawless_mod_manager_v0.0.5.zip 1-click install
  • fix server console spam
0.0.4 40 Jun 15th at 9:41 PM flawless_mod_manager_v0.0.4.zip 1-click install
  • fix client crash from not loading lang files properly for gui
0.0.3 11 Jun 15th at 9:03 PM flawless_mod_manager_v0.0.3.zip 1-click install

- bigly reduce filesize by remove protobuf unnecessarily included lole!

0.0.2 8 Jun 15th at 8:05 PM flawless_mod_manager_v0.0.2.zip 1-click install
  • fix client freezing when no non public mods present (fix client packet parsing issue)
  • make server side search the vintage game binaries Mods/ folder (not correct location for server mods but still works x,x)
  • general internal code cleanup (remove unnecessary stuff)
0.0.1 53 Jun 14th at 6:58 PM flawless_mod_manager_v0.0.1.zip 1-click install

initial release


7 Comments (oldest first | newest first)

💬 itbegoose, 1 day ago

The client is crashing after downloading one non-repo mod and trying to connect. Removing flawless from the server after the mod has downloaded and relaunching allows the client to connect. 

Crash Report

ProtoBuf.ProtoException: Invalid wire-type; this usually means you have over-written a file without truncating or setting the length; see https://stackoverflow.com/q/2152978/23354


at ProtoBuf.ProtoReader.ReadSingle() in C:\Code\pb-net_24\src\protobuf-net\ProtoReader.cs:line 864
at proto_162(Object, ProtoReader)
at ProtoBuf.Meta.TypeModel.Deserialize(Stream source, Object value, Type type, SerializationContext context) in C:\Code\pb-net_24\src\protobuf-net\Meta\TypeModel.cs:line 599
at ProtoBuf.Serializer.Deserialize[T](Stream source) in C:\Code\pb-net_24\src\protobuf-net\Serializer.cs:line 68
at Vintagestory.Client.NoObf.NetworkChannel.<>c__DisplayClass12_0`1.<SetMessageHandler>b__0(Packet_CustomPacket p) in VintagestoryLib\Client\API\NetworkChannel.cs:line 74
at Vintagestory.Client.NoObf.NetworkAPI.HandleCustomPacket(Packet_Server packet) in VintagestoryLib\Client\API\NetworkAPI.cs:line 137
at Vintagestory.Client.NoObf.ClientMain.ExecuteMainThreadTasks(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 786
at Vintagestory.Client.GuiScreenConnectingToServer.RenderToDefaultFramebuffer(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenConnectingToServer.cs:line 254
at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 695
at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 670
at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 88
at OpenTK.Windowing.Desktop.GameWindow.Run()
at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 334
at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 130
at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 93
💬 Rythillian, Jul 3rd at 7:23 PM

Seems to be hit or miss on wether it works for certain players, unsure as to why currently.

💬 Rythillian, Jun 22nd at 5:48 AM

Testing this out and it seems the mod never actually gets sent? Either that or this is being sent at an extremely slow speed.

💬 DearFox, Jun 16th at 8:12 AM

Actually, it's an interesting concept. But I have an alternative idea: why not replace "modDbUrl" temporarily, to check mods on alternative modDbs? Yes, as far as I know, we don't have alternative moddbs, haha. But it could relieve the game server, and all the server would need to pass is a list of modDbUrls on which the client will search for mods.

💬 xeth , Jun 15th at 8:06 PM

0.0.2 should fix those issue : 3

💬 pondobruin85, Jun 15th at 7:17 AM

this is throwing a bunch of errors on a linux dedicated machine:
```15.6.2025 01:07:21 [Warning] [flawless] Mod zip for butchering not found at /home/vintagestory/server/data/vs/Mods/butchering_1.9.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for elkjaunt not found at /home/vintagestory/server/data/vs/Mods/elkjaunt_1.0.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for meiolaniidae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Meiolaniidae-v0.1.6.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for medievalexpansionpatch not found at /home/vintagestory/server/data/vs/Mods/medievalexpansionpatch-1.2.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for ndlvillagers not found at /home/vintagestory/server/data/vs/Mods/ndlvillagers_1.5.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for carryon not found at /home/vintagestory/server/data/vs/Mods/CarryOn-1.20.4_v1.8.1.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for casuariidae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Casuariidae-v1.1.4.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for butcheringexpandedcompatibility not found at /home/vintagestory/server/data/vs/Mods/ButcheringExpandedCompatibility_1.0.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for chiseltools not found at /home/vintagestory/server/data/vs/Mods/chiseltools1.14.19.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for dinornithidae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Dinornithidae-v1.0.17.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for floralzonescentralaustralianregion not found at /home/vintagestory/server/data/vs/Mods/FloralZonesCentralAustralianRegion-v1.0.14.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for spheniscidae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Spheniscidae-v1.0.11.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for glidervar not found at /home/vintagestory/server/data/vs/Mods/GliderVariations-v1.1.3.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for maltiezcrossbows not found at /home/vintagestory/server/data/vs/Mods/maltiezcrossbows_1.2.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for autoconfiglib not found at /home/vintagestory/server/data/vs/Mods/autoconfiglib_2.0.6.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for elephantidae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Elephantidae-v1.0.13.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for rustandrot not found at /home/vintagestory/server/data/vs/Mods/Rustier.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for rivergen not found at /home/vintagestory/server/data/vs/Mods/RiverGen_v1.0.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for cervinae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Cervinae-v0.1.6.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for thylacinidae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Thylacinidae-v0.1.3.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for floralzonescaribbeanregion not found at /home/vintagestory/server/data/vs/Mods/FloralZonesCaribbeanRegion-v1.0.17.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for ashlarblockvariants not found at /home/vintagestory/server/data/vs/Mods/AshlarBlockVariants.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for equusbp not found at /home/vintagestory/server/data/vs/Mods/wilderhorses_1.0.2.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for viverridae not found at /home/vintagestory/server/data/vs/Mods/FotSA-Viverridae-v1.0.4.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for petai not found at /home/vintagestory/server/data/vs/Mods/petai_v3.4.3.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for wethology not found at /home/vintagestory/server/data/vs/Mods/Wilderlands Ethology_1.0.0.zip, skipping.
15.6.2025 01:07:21 [Warning] [flawless] Mod zip for configlib not found at /home/vintagestory/server/data/vs/Mods/configlib_1.5.3.zip, skipping.```

Its also locking up clients and forcing alt+F4

💬 Rythillian, Jun 15th at 4:35 AM

Nice, can see this being very useful with the various sites nowadays.

 (edit comment delete)