Client provisioning - allow Minecraft servers to configure clients with mods and configs (i.e. transferring the needed files from server to client on demand).
I have spent some time trying to create this mod myself, but it seems impossible (or very difficult) to accomplish without modifying Forge / core classes. It would be fantastic if we could get support for this in Forge directly!
How it could work:
When a client is missing mods or otherwise is configured wrong for a server, Instead of only displaying an error message and then disconnecting, the following would be displayed:
Your Minecraft installation differs from the server you are connecting to:
< scrollable list detailing the differences >
Allow server <address> to configure your Minecraft client installation?
< buttons with "Proceed" and "Cancel" >
If the user accepts, the entire "mods" and "config" folders are (forcibly) synced with corresponding "client-mods" and "client-config" folders located on the server (it can't be the server's mods folder due to client-only mods).
After the sync, the player restarts Minecraft and connects to the server again. This would allow server admins to only update the server, and all connecting clients would automatically be correctly updated.
The client could initially send a combined SHA-1 of all mods and configs to the server, so any difference would be detected. Further communication could then be performed, if needed, to determine the required changes. Some configurable throttling could perhaps be used to prevent servers from too much strain by the downloads.
Obviously there are some security concerns, but for private server admins, especially those who doesn't run unmodified "off-the-shelf" mod packs, this functionality would be pure gold.
I have spent some time trying to create this mod myself, but it seems impossible (or very difficult) to accomplish without modifying Forge / core classes. It would be fantastic if we could get support for this in Forge directly!
How it could work:
When a client is missing mods or otherwise is configured wrong for a server, Instead of only displaying an error message and then disconnecting, the following would be displayed:
Your Minecraft installation differs from the server you are connecting to:
< scrollable list detailing the differences >
Allow server <address> to configure your Minecraft client installation?
< buttons with "Proceed" and "Cancel" >
If the user accepts, the entire "mods" and "config" folders are (forcibly) synced with corresponding "client-mods" and "client-config" folders located on the server (it can't be the server's mods folder due to client-only mods).
After the sync, the player restarts Minecraft and connects to the server again. This would allow server admins to only update the server, and all connecting clients would automatically be correctly updated.
The client could initially send a combined SHA-1 of all mods and configs to the server, so any difference would be detected. Further communication could then be performed, if needed, to determine the required changes. Some configurable throttling could perhaps be used to prevent servers from too much strain by the downloads.
Obviously there are some security concerns, but for private server admins, especially those who doesn't run unmodified "off-the-shelf" mod packs, this functionality would be pure gold.