MCPcopy Index your code
hub / github.com/clabe45/shulkr

github.com/clabe45/shulkr @v0.7.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.7.2 ↗ · + Follow
317 symbols 1,023 edges 76 files 27 documented · 9%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

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.

Core symbols most depended-on inside this repo

get_renamed_variables
called by 14
src/java/__init__.py
ast_nodes_equal
called by 13
src/java/__init__.py
get_repo
called by 12
src/shulkr/repo.py
of
called by 11
src/minecraft/version.py
pattern
called by 11
src/minecraft/version.py
create_version
called by 10
src/shulkr/version.py
init
called by 8
src/mint/repo.py
generate_sources
called by 8
src/minecraft/source.py

Shape

Function 173
Method 107
Class 37

Languages

Python100%

Modules by API surface

tests/java/functional/test__init__.py30 symbols
src/minecraft/version.py26 symbols
tests/minecraft/unit/test_version.py25 symbols
tests/shulkr/unit/conftest.py20 symbols
tests/minecraft/unit/test_source.py16 symbols
tests/command/unit/test_command.py15 symbols
tests/minecraft/unit/conftest.py14 symbols
src/command/__init__.py14 symbols
tests/shulkr/unit/test_app.py11 symbols
src/shulkr/config.py11 symbols
src/java/__init__.py11 symbols
tests/shulkr/unit/test_version.py10 symbols

For agents

$ claude mcp add shulkr \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page