MeldMC

MeldMC

8 devlogs
58h 16m
Created by Coosanta

Join modded Minecraft servers with ease. Downloads and loads mods from the server, no more manual updating and downloading of modpacks.

Timeline

Added a clickable view project on modrinth link for applicable mods so the user can check out the mod before they install it. Also made the file url and hash highlightable so the user can copy it if they want to virus scan or something. Made file URL and hash have no text wrapping because it is useless to see the whole thing.

Update attachment

Added game instance manager. This is a backend system to manage the multiple instances of the game, one for each server. Stored a cache of the server mods incase it is offline. Added a warning on server delete to confirm if the user wants to delete it and backup the instance files. Also added mod source icons so users can quickly figure out where their mod is from. There wasn't all that much change to the frontend as most of the time was spent making the instance logic work. It was especially important to make sure it worked as user's world files will be handled by it, and I don't want people's hours of hard work be deleted because of some bug in my system. (I can only upload small videos because of bug in website so excuse the quality)

Finished the server's required client mods display. Added selection of mods, and fixed mod version variable bug (you can see it in the devlog below). The Open Mods Folder button does not work yet because it relies on the mods being downloaded, which is a feature that hasn't been implemented yet.
I can't submit video for some reason, if you want to see it's here: https://hc-cdn.hel1.your-objectstorage.com/s/v3/d185bca8977200e94aa0d0b0538ae55f91fe0074_2025-07-25_19-14-02.mp4

Update attachment

Added client mods display. To get all the information I needed to add extra logic in the server-side mod to pull the mod.toml file (mod information and config file) from the mod jar and send it to the client via the HTTPS server. I also made a basic GUI for viewing the information - it needs lots of improvement!! Image shows the client receiving the server's mod data and displaying it in a forge-modlist like display, but the mods aren't even installed on the client yet!

Update attachment

Added server-client communication. I needed the Minecraft server to send mod information and mod files to the meld client for it to launch properly. Initially I tried to use the existing Minecraft protocol to send this data and files, this is so users didn't have to open another port aside from the minecraft server port (default 25565). Unfortunately after many failed attempts I realised it is not possible to send custom packets unless the user logs into and joins the server, which isn't possible without the mods. Minecraft packets also have a uncompressed limit of 32767 bytes, which is far from enough, and adding compression to the packets is very complex and only increases the size limit to 2MB (compressed). Ultimately, I had to resort to using a custom server on a different port. I chose HTTP(S) over raw socket connection as encryption is easier and https can be easily proxied for extra security. Image shows custom mod data successfully sent over HTTPS with self-signed certificate - viewed by browser.

Update attachment

Added a system on frontend to check if Meld is supported via the meld server side mod. I had to use Mixins to inject an additional json field to the Minecraft server status/ping/version check to indicate meld is supported. Little did I know how difficult it was to find documentation and tutorials on how to mixin on Forge, especially for a very un-touched area of the minecraft code (client-bound packets before login) however I did eventually succeed and was actually quite simple, understanding the documentation was a lot harder.

Update attachment

Added mod scanner in server side mod to get the modrinth url of the mods for client to download.

Update attachment

Made a GUI that imitates Minecraft server selection. Added an Edit Server feature that is fully functional.

Update attachment