From bbe6d025685ed964f8ecd8aef049956c89a96491 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sat, 26 Sep 2026 04:22:11 +0200 Subject: [PATCH] Refresh the README and use a local logo - Reference logo.png from the repo instead of the dead raw.github URL (the logo lives in the common submodule, which Gitea can't serve from a relative path, so a copy sits next to screenshot.png) - Drop the section emojis and horizontal-rule separators - Add supported versions, the built-in mods, installation (Modrinth, releases), network use (Mojang session sign-in; the access token never reaches the Saturn server), building from source with submodules, and a pointer to the version guide for multi-version changes Co-Authored-By: Claude Opus 5.5 --- README.MD | 60 ++++++++++++++++++++++++++++++++++-------------------- logo.png | Bin 0 -> 21142 bytes 2 files changed, 38 insertions(+), 22 deletions(-) create mode 100644 logo.png diff --git a/README.MD b/README.MD index 3ca2d2d..3e5f9a8 100644 --- a/README.MD +++ b/README.MD @@ -1,5 +1,5 @@

- Saturn Client Logo + Saturn Client Logo

Saturn Client

@@ -13,27 +13,47 @@ Saturn Client Screenshot

---- - -## ✨ About +## About Saturn Client is a free, open-source Minecraft client designed to enhance the gameplay experience while staying lightweight and customizable. Our goal is to build a clean, optimized client that the community can contribute to and improve together. -Saturn is currently trying to support multiple versions of minecraft, so please report any issues you are experiencing. +Saturn runs on Fabric and supports **Minecraft 1.21.4 to 1.21.11**, with one build per version. If something doesn't work on your version, please open an issue. ---- +## Features -## 🚀 Features - -- Free cosmetics that don't require real money +- Free cosmetics that don't require real money: cloaks, including animated ones, and hats +- 18 built-in mods: Armor Display, Auto Sprint, Clock, Coordinates, Crosshair, Day Counter, FPS Display, Freelook, Fullbright, Health Display, Keystrokes, Nametags, No Fog, Ping Display, Speedometer, Status Effects, TPS Display and Zoom - Clean and modern UI with animations - Ongoing performance improvements - Open-source and community-driven ---- +## Installation -## 🤝 Contributing +1. Install [Fabric Loader](https://fabricmc.net/use/) and [Fabric API](https://modrinth.com/mod/fabric-api) for your Minecraft version. +2. Download the Saturn Client jar for the same version from [Modrinth](https://modrinth.com/mod/saturnclient) or the [releases page](https://git.selimaj.dev/saturnclientmc/saturnclient/releases). +3. Put it in your `mods` folder. + +### Network use + +For cosmetics, Saturn Client connects to the Saturn server (`saturn-server.selimaj.dev`). You're signed in the same way as on an online-mode Minecraft server: your client proves who you are to Mojang's session server, and the Saturn server asks Mojang to confirm it. **Your Minecraft access token is only ever sent to Mojang, never to the Saturn server.** + +## Building from source + +The version-independent code lives in the `common` submodule, so clone with submodules: + +```sh +git clone --recurse-submodules https://git.selimaj.dev/saturnclientmc/saturnclient.git +cd saturnclient + +./gradlew buildAll # every version → build/allJars/ +./gradlew :mc-1.21.11:build # a single version +./gradlew :mc-1.21.11:runClient # launch a development client +``` + +Building needs Java 21. + +## Contributing We welcome contributions of all kinds: @@ -43,27 +63,23 @@ We welcome contributions of all kinds: - Cosmetic designs - Suggestions and feedback -If you're an artist or designer interested in helping with cosmetics or visual assets, we’d love to collaborate. +If you're an artist or designer interested in helping with cosmetics or visual assets, we'd love to collaborate. ---- +Most features belong in `common`, which every Minecraft version shares. For code that differs between versions, see the [version guide](VERSION_GUIDE.md): it covers how the versions are laid out, porting a change to all of them with `scripts/port.sh`, and adding a new Minecraft version. Every pull request is compiled for all versions automatically. -## 🙌 Credits +## Credits - **Cloak Rendering:** `IIpho3nix` & Saturn - **Who Am I:** `FokshaWasTaken` -- **Panorama:** +- **Panorama:** https://www.planetminecraft.com/texture-pack/minecraft-cavesand-cliffs-part-ii-main-menu-panorama/ -If any code or assets belong to you and you would like them removed, please open an issue. +If any code or assets belong to you and you would like them removed, please open an issue. We aim to properly credit all contributors and respect original creators of their respective art. ---- +## License -## 📜 License - -Saturn Client is free and open-source using **Apache-2.0** - ---- +Saturn Client is free and open-source under the **Apache-2.0** license.

Made with ❤️ by the Saturn Client team diff --git a/logo.png b/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..cff808539766025a9c9f04202e7a27a06c40c1d0 GIT binary patch literal 21142 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 SjxC6hAN%=3wvUFtt literal 0 HcmV?d00001