synccursecraft-1.21.1 v0.1.2 curseforge
Curse Maven Snippet
What's new
0.1.2 — first release on CurseForge
Keeps a player's /mods/ folder in step with the list the server publishes. No extra web server and no extra ports: everything travels over the normal Minecraft port, which is why it works on hosts that only give you 25565.
About this edition
This build downloads only from the CurseForge CDN. The restriction is compiled into the file and cannot be turned off in the config.
Server admins: set preferCurseForge = true in config/synccursecraft/server.toml, and set a CurseForge API key. Every mod in your pack has to be published on CurseForge — the console tells you at generation time if one is not, before your players ever see a problem. The file explains where to get the key, and /scc status tells you whether it is set.
You need both files
| File | What it is |
|---|---|
synccursecraft-1.21.1-0.1.2.jar |
the mod |
synccursecraft-bootstrap-0.1.2.jar |
the early boot service |
They ship separately because NeoForge will not let one jar be an early boot service and a mod at the same time. The bootstrap comes along automatically as a dependency.
What is in this build
Everything below was found and fixed while testing against a real server and a real pack.
Fixed a crash. Pressing "Check server" while the server was off closed the game. The connection failure came out of Netty as a checked exception that the click handler did not catch, so it reached the render thread. It now shows a message instead.
The check no longer freezes the game. Resolving the address and opening the connection both block, and they were running on the render thread — against an address that does not answer, the window locked up until the operating system gave up. That work moved to its own thread. The 10 second timeout now also covers the connection itself, so a server that never answers reports back instead of leaving the screen waiting forever.
Clearer errors. "Cannot find a server called X" and "Could not reach X" instead of a raw Netty stack trace, and a timeout while connecting no longer claims the server has no mod list when it was never reached.
The mod refuses to distribute itself. Copying your whole /mods/ folder into a pack folder used to put SyncCurseCraft's own jars in the manifest. Clients could not replace the boot service while running from it, ended up with two copies, and stopped starting. Those jars are now skipped with a warning. Detection is by mod id and by what the service file declares, so mods that legitimately use a boot service — Sodium, for one — are unaffected.
API key guidance. When the key is missing, the server prints where to get it and warns that the token from the account's "My API Tokens" page is not the right one, which the API rejects with HTTP 403. A rejected key now says it was rejected instead of reporting the mod as not found.
server.toml saved with a UTF-8 BOM is read correctly. It used to be ignored entirely and the server ran on defaults, silently acting as if the API key were not there. If the file still cannot be parsed, the log now says outright that the key is being ignored.
Known limits
Some mods need another mod without declaring it anywhere, not even in their own metadata. Iris and Sodium are the known case: if your pack uses Iris, add Sodium to your pack folders by hand. No automatic check can catch that one.
SyncCurseCraft does not update itself. When a new version comes out, replace both jars.
What it never touches
Only .jar files inside /mods/, and only the ones it installed itself. Not config/, not options.txt, not shaders, not resource packs, not saves, not mods you installed yourself.
The one exception is shown on screen before it happens: a different version of a mod the server requires is removed, because the game will not start with two versions loaded.
Every download is checked against its SHA-1 and byte size before being installed, and lands on the next restart rather than mid-session.
This mod has no additional files

