English | Русский
A Minecraft launcher that installs a server's modpack from a single code.
The server owner installs sharepack-server.jar, puts the client mods into a folder and gets a code. Players enter a nickname and the code in sharepack.exe. The launcher downloads the game, Java, the mod loader and the mods directly from the owner's server. No central server is involved.
Downloads: latest release.
- Install
sharepack-server.jar:- Fabric, Quilt, Forge, NeoForge: put it into
mods/; - Paper, Spigot: put it into
plugins/; - any other server: run
java -jar sharepack-server.jarin the server folder.
- Fabric, Quilt, Forge, NeoForge: put it into
- Start the server. A
sharepack/folder is created next to it:sharepack/ pack.json pack name, game version, mod loader files/ files that players always get in their current version mods/ config/ defaults/ files that players get only once (e.g. options.txt) config.properties language, port, address, key CODE.txt the code for players - Put the client mods into
files/mods/and, if needed, configs intofiles/config/. - Open the pack port (TCP 25566 by default):
- home server: on most routers the server part does this itself through UPnP and says so in the console. If it can't, forward the port on your router by hand;
- game server hosting: add a second port in the hosting control panel and set it as
http-portinsharepack/config.properties.
- Give players the code from the server console or from
sharepack/CODE.txt.
Files can be changed while the server is running: the launcher compares them on every start.
files/is synced on every launch. If a file differs from the server copy, it is downloaded again.defaults/is copied only if the player doesn't have the file yet. After that the player's copy is never replaced. Use it for settings players are likely to change, such asoptions.txtor keybindings.
{
"name": "My server",
"version": "1.0",
"minecraft": "auto",
"loader": "auto",
"loader_version": "auto",
"memory": 4096,
"managed_dirs": ["mods"]
}minecraft,loader,loader_version:automeans the values of the running server. To set them by hand:minecraftis a version such as1.20.1,loaderis one ofvanilla,fabric,forge,neoforge,quilt, and an emptyloader_versionmeans the latest loader version.version: pack version shown in the launcher. Increase it when the pack changes.memory: RAM for the game in MB. Players can override it in the settings.managed_dirs: folders that are kept identical to the pack. Any file in these folders that is not in the pack is deleted on the player's side. For example, a mod removed fromfiles/mods/is also removed from players. Files outside these folders are never deleted.server(optional):"address:port"added to the in-game server list. By default the server address and the port fromserver.propertiesare used.
files/mods/ holds the mods for players: usually the server mods plus client-only mods (minimaps, shaders), without server-only ones. If the game reports "mismatched mod channel list" when joining, the listed mods are required on the server too. JEI is a common case because it bundles MezzConfig.
language: console language,auto,ruoren.http-port: pack port, 25566 by default.public-address: public IP or domain. If empty, the address is detected in this order: the hosting panel IP (SERVER_IPon Pterodactyl/Pelican),server-ipfromserver.properties, then api.ipify.org. The detected address is printed in the console. With a dynamic home IP, use a domain (for example from DuckDNS) so the code doesn't change.upnp:autoforwards the pack port on a home router through UPnP and removes the forward when the server stops;offdisables it. It isn't used on hostings and on machines with a public IP. On start it also checks the router's internet address and warns about a shared ISP address (CGNAT) or a VPN, when players can't connect even with the port forwarded.key: secret key, part of the code. Delete the line to generate a new key; the old code stops working. Codes made before v2026.b2 are replaced automatically on the first start.
You can play in your own single-player world opened to LAN, with no game server and no hosting:
- Put
sharepack-server.jarinto any folder and runjava -jar sharepack-server.jarthere. - Without a game server the version can't be detected, so set
minecraft,loaderand, if needed,loader_versioninsharepack/pack.jsoninstead ofauto. - Put LAN World Plug-n-Play into
files/mods/, and on Fabric or Quilt also Fabric API. Without it, a world opened to LAN asks every player for a Microsoft account and nickname-only players can't join. - The pack port (TCP 25566) is forwarded on your router automatically through UPnP; if the console says it didn't work, forward it by hand.
- Start the game from the launcher, open your world, press Esc → "Open to LAN", turn Online Mode off and open the world. The mod tries to forward the world port through UPnP and prints the addresses in the chat. If your router doesn't support UPnP, forward that port by hand; set a fixed port in the same screen so it doesn't change.
- Friends join with "Multiplayer" → "Direct Connection" and your address with the world port. To get the right server in their list, set
serverinpack.jsonto"address:port".
Friends can play only while your game and sharepack-server.jar are running. Tested with Fabric 1.21.1.
Run sharepack.exe, enter a nickname and the code, press "play". The exe can be kept anywhere; settings and game files are stored in %APPDATA%\sharepack.
- Saved nicknames open with the arrow in the nickname field.
- Packs that were played before are listed under "choose a pack", so the code is needed only once. Each pack has buttons to open its folder, redownload it (worlds, screenshots and
options.txtare kept) and delete it (two clicks). - The settings (gear icon) contain the profiles folder, RAM (
4096or4G), a customjava.exeand Java arguments. - Java: the one chosen in the settings; otherwise a Java of the version the game needs that is already on the computer (Minecraft Launcher, Prism, Adoptium and others); otherwise it is downloaded from Mojang once into
profiles\runtimeand shared by all packs. If Mojang's Java can't be downloaded even from the mirror, Eclipse Temurin of the same version is downloaded from GitHub or the TUNA mirror. - If Mojang, Forge, NeoForge or Fabric servers are blocked for the player (the download fails or stops), the launcher downloads from the BMCLAPI mirror instead, with no VPN needed. Files are checked against the hashes from the game's file lists. The mirror doesn't serve the Minecraft client jar itself (it sends to Mojang for it), and Quilt has no mirror.
- The language follows Windows and can be switched with the
RU/ENbutton in the settings. - The light or dark theme also follows Windows; the button next to
RU/ENswitches between same as Windows, light and dark. - Requires Microsoft Edge WebView2, which is included in Windows 10 and 11.
The launcher checks GitHub releases on startup. If a newer version exists, it offers to download it, replaces the exe and restarts. The server plugin checks on startup as well and prints a message in the console.
The launcher and the server part have separate version numbers (client/VERSION and server/VERSION). A release that changes only one of them offers an update only for that part: players aren't asked to update the launcher because of a server fix, and server owners aren't told about launcher changes.
- The code holds the server address, the pack port and a 96-bit secret. Codes of different servers can't match: the address and port are part of the code.
- The secret is never sent over the network. The launcher requests files with an access key derived from it, and the server signs the file list (HMAC-SHA256) with another derived key. Every downloaded file is checked against the SHA-256 in the signed list. A file list or a mod modified on the way (for example on public Wi-Fi) is rejected.
- Paths from the server are accepted only inside the pack folder.
managed_dirscan't point at worlds, screenshots,options.txtor the game files. - The pack server accepts at most 32 connections at once, limits request size and time, and blocks an IP for 10 minutes after 20 requests with a wrong key.
- Mods are programs. Install packs only from servers you trust.
- Players log in by nickname without a Microsoft account, so the server needs
online-mode=false. Install an authentication mod (for example EasyAuth), otherwise anyone can join under another player's nickname. - Hostings that provide only one port (such as Aternos) are not supported: the pack needs a second port.
- Many home routers can't connect a computer to their own internet address, so the owner and players on the same Wi-Fi can't reach the pack server by the address in the code. In that case the launcher looks for it on the same computer and asks the router (UPnP) which computer the pack port is forwarded to. A server found this way is used only if its file list is signed with the key from the code.
- When the game crashes, the launcher shows the log path:
%APPDATA%\sharepack\profiles\<key>\launcher_log.txt.
- Launcher:
build_exe.bat(Python 3, creates.venvon the first run) →dist\sharepack.exe. - Server:
server\build.bat(JDK 8+) →server\sharepack-server.jar.
client/launcher.py launcher logic (install, launch)
client/i18n.py launcher messages in Russian and English
client/ui/ launcher UI (HTML/CSS/JS)
server/ mod/plugin for the server
GPL-3.0, see LICENSE.
Fonts: Monocraft (SIL Open Font License 1.1) and Ubuntu Mono (Ubuntu Font Licence 1.0), license texts in client/ui/assets/LICENSES.
Not affiliated with Mojang or Microsoft. Minecraft is a trademark of Mojang AB.


