Skip to main content

Shulkr

Discord Check New Commits PyPI version

Shulkr is a tool that decompiles multiple versions of Minecraft and commits each version to Git

Warning: You CANNOT publish any code generated by this tool. For more info, see the usage guidelines.

Requirements

  • Git
  • Python 3
  • JDK (>= 17 for Minecraft 1.18 and above)

Installation

pip install shulkr

Usage

shulkr 1.16 1.17 1.18

This will generate a commit with the decompiled source code for Minecraft 1.16, 1.17 and 1.18 in the current working directory:

204b37c (HEAD -> main, tag: 1.18) version 1.18
86dc440 (tag: 1.17) version 1.17
5d13494 (tag: 1.16) version 1.16

Note: It's okay to skip versions. Shulkr generates the complete source code for each version before committing to git, so you can include as many or as little intermediate versions as you would like.

Version Patterns

Ranges of versions can be specified with .. and ...:

  • A..B expands to all versions between A and B (inclusive), not including snapshots
  • A...B expands to all versions between A and B (inclusive), including snapshots

A and/or B can be omitted, defaulting to the version after the most recent commit and the latest supported version, respectively.

A negative pattern removes all matching versions that came before it. To negate a pattern, add -. The following pattern expands to all versions after A, up to and including B (the order is important):

  • A...B -A

Note that you need to include -- before the versions when using negative versions, so the argument parser knows that the negative version is not an option:

shulkr -- ...1.19 -1.19

Options

--repo / -p

By default the source code is generated in the current working directory. To specify a different location:

shulkr --repo minecraft-sources 1.17..

If the directory does not exist, a new git repo will be created there.

--mappings

By default, Minecraft's bytecode is deobfuscated using yarn's mappings. You can also use --mappings mojang to use Mojang's official mappings.

If left unspecified, the mappings used to generate the previous commit are detected.

--message / -m

This option lets you customize the commit message format:

shulkr -m "Minecraft {}" 1.18-rc4

--no-tags / -T

By default, each commit is tagged with the name of its Minecraft version. This can be disabled with --no-tags.

Experimental Options

--undo-renamed-vars / -u

When this option is enabled, local variables that were renamed in new versions will be reverted to their original names.

Changelog

See the changelog.

Contributing

See the contributing guide.

License

Licensed under the Apache License, Version 2.0.

Metadata

Release files for shulkr 0.7.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for shulkr 0.7.2
File Size Uploaded
shulkr-0.7.2.tar.gz 21.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for shulkr 0.7.2
File Interpreter ABI Platform
shulkr-0.7.2-py3-none-any.whl Python 3 none any Details

Total release size: 46.2 kB

Release files / shulkr-0.7.2.tar.gz

Download URL shulkr-0.7.2.tar.gz
Size 21.5 kB
Tags Source
SHA-256 checksum
How to use checksums
48935028378c45eee3ca829d3d70e4605c185ff43a69f5a91a37c234b0b3a7b8
BLAKE2b-256 checksum
How to use checksums
9651f9a6353ba5adb84c6e01f55c99dcc353b0b5ef4bdd25cf44eb2e2473341e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release files / shulkr-0.7.2-py3-none-any.whl

Download URL shulkr-0.7.2-py3-none-any.whl
Size 24.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89fc6db09eae39617cb900805c8bff191f635c30ee1650cb904b926d63436346
BLAKE2b-256 checksum
How to use checksums
833fddfee848cc825f214b037ca3bd53612d3d54f4132c73aa57fe1b7218bd05
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.9.19

Release history Release notifications | RSS feed

This release

0.7.2 This release

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page