https://github.com/neoforged/snowblower
Creates a git repository with decompiled Minecraft sources
https://github.com/neoforged/snowblower
java-app minecraft
Last synced: 3 months ago
JSON representation
Creates a git repository with decompiled Minecraft sources
- Host: GitHub
- URL: https://github.com/neoforged/snowblower
- Owner: neoforged
- License: lgpl-2.1
- Created: 2023-11-11T11:26:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2025-10-29T22:05:34.000Z (7 months ago)
- Last Synced: 2025-10-30T00:09:16.483Z (7 months ago)
- Topics: java-app, minecraft
- Language: Java
- Homepage: https://projects.neoforged.net/neoforged/snowblower
- Size: 408 KB
- Stars: 19
- Watchers: 5
- Forks: 8
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE-header.txt
Awesome Lists containing this project
README
# ☃️ Snowblower
A utility to create a git repository of Minecraft decompiled code to make it easier to see what changed between minecraft versions.
## How to use
This section covers the basic command-line usage for generating a repository of decompiled Minecraft code. Most users can simply run the tool locally as described below.
You can download the latest and previous versions of Snowblower directly from its [project page](https://projects.neoforged.net/neoforged/snowblower).
### Basic usage
The most common use case is to generate a comprehensive repository of all supported versions. The following command processes every version starting from `1.14.4`, which is the first version where official Mojang mappings are available.
```sh
java -jar Snowblower.jar --output $OUTPUT --branch $BRANCH --start-over-if-required
```
- `--output $OUTPUT`: Specifies the output directory for the generated repository.
- This can be specified either as an absolute path or some path releative to the `jar` file.
- `output/$BRANCH` or `output/$VERSION` is recommended to keep your generated repositories organized. (`$VERSION` being a specific Minecraft version)
- `--branch $BRANCH`: Designates the target branch, which can be `release` or `dev`.
- Using `dev` will include snapshots in the generated output.
- `--start-over-if-required`: Ensures the process starts from scratch if necessary.
**Note**: Generating every version takes a considerable amount of time.
### Excluding unnecessary files
To prevent repository clutter and large diffs, especially with structures (`.nbt`) and images (`.png`), it is recommended to exclude them. These files frequently change due to internal version values, causing noise in the commit history.
```sh
java -jar Snowblower.jar --output $OUTPUT --branch $BRANCH --exclude "**.nbt" --exclude "**.png" --start-over-if-required
```
### Processing specific versions
If you need to generate a repository for a limited range of versions, you can use the `--start-ver` and `--target-ver` flags. This will process everything from the specified start version up to and including the target version.
```sh
java -jar Snowblower.jar --output $OUTPUT --branch $BRANCH --start-ver 1.20.1 --target-ver 1.21 --start-over-if-required
```
### Exploring more flags
Snowblower has many more flags and options for advanced users. You can see a complete list by running the jar file without any arguments.
```sh
java -jar Snowblower.jar
```