A project that seeks to recreate every old Minecraft version in Python using Pyglet and Cython.
Project description
Minecraft: Python Edition
Minecraft: Python Edition is a project that strives to recreate each and every old Minecraft version in Python 3 using the Pyglet multimedia library and Cython for performance.
The project is currently working on the Indev versions of Minecraft. The latest version is Indev 0.31 20100125 as released on January 25, 2010.
This version adds torch, fire, and lava blob particles to the game. Features from previous Indev versions include the Indev mossy cobblestone spawn house which contains chests with all of the items available in this version, NBT level file saving, tools including flint and steel and the bow and arrow, torches, advanced liquid spread, TNT explosives, and the MD3 Rana mobs.
To easily install this version of Minecraft: Python Edition, just run python -m pip install minecraft-python==0.31.20100125
.
You can learn more about this version on the Minecraft wiki.
Organization
This project's commits represent the Python versions of each Minecraft Java game version.
You can view source code changes between game versions by checking the commit history or comparing branches.
To play any version, specify it in the pip install
command as demonstrated below.
General Usage
Pyglet, Cython, Pillow, PyOgg, NumPy, and nbtlib are required dependencies which can easily be installed with pip. Use the versions specified in requirements.txt
.
wxPython is an optional dependency for the level file picker, but if you don't have it then Tkinter is used instead.
For audio to work you will either need PyOgg which is recommended, or FFmpeg which has to be installed on your system. GStreamer is also supported on Linux through the gst-python library. PyOgg requires that your system have one of the Opus, FLAC, or Vorbis codecs. OpenAL is required and comes bundled with the source on Windows.
For a manual Cython source build, run python setup.py build_ext --inplace
.
Run python -m mc.net.minecraft.client.Minecraft
to launch the game. Minecraft: Python Edition should be compatible with any modern platform that supports OpenGL and Cython.
Run with the argument -fullscreen
to open the window in fullscreen mode (or press F11 in-game).
The argument -creative
will force the game to be in creative mode.
Gameplay
All available tools and blocks are in the chests in the spawn house. All controls are as you would expect for the game and they can be configured in the options menu. Press I to open your inventory, F5 to toggle rain and F7 to take a cool isometric screenshot.
The Indev level generator is customizable and you can choose between the Inland, Island, Floating, and Flat level types. You can specify the world theme as Normal or Hell (lava and dirt instead of water and grass), world size, and world shape (Square, Long, Deep).
Levels can be saved to a single .mclevel NBT file in the pause menu. The level files are perfectly compatible with Java and vice versa.
The only mobs around are the Ranas, but they don't drop anything when killed. Apples will restore health.
An isometric screenshot of a Hell map generated by the game.
Additional Notes
The mc.resources
directory contains all of the textures and sounds that this version uses. However,
the textures are only there for convenience, as all of the texture buffers are already preloaded
in the mc.Resources
module.
This would have been much more challenging to work on without the great tools provided by RetroMCP-Java.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for minecraft_python-0.31.20100125.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c871b8ff9c3cabc66bacd2b07deb849e75617bf727d8f60643117591b077280d |
|
MD5 | c9f37c88095cdb22c81363246150b7c4 |
|
BLAKE2b-256 | dbe820ca5357ea3460ddb2285429a0436693ce880d698bfabda2edd632ea4334 |
Hashes for minecraft_python-0.31.20100125-pp39-pypy39_pp73-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ed78c574dd5fb01f44d8d3441c0bf485ef0d16ef12c42108f4e003de8e3f9f78 |
|
MD5 | d22caa504d37e7e796b0f43b80303dea |
|
BLAKE2b-256 | 416cf3f9ef128f620d9a921eeabd7c04e61857961724080e7ca4c307dc7dcf5d |
Hashes for minecraft_python-0.31.20100125-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1cca030fe3339ef7c7b9307dbdcc6445850bb47908b9d05d6012271119eaa48c |
|
MD5 | 3e5819f4393fa4af23074fb8589e409c |
|
BLAKE2b-256 | 04a0006e81df27aee22dcda8407d83f5cf2c517eba28f29194c506e3f99ff05f |
Hashes for minecraft_python-0.31.20100125-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a8a93280cf28713b367245c261442469c939e5f45fc9f08718e8821126336cf4 |
|
MD5 | dcb912af1b45b868817c5a382488e539 |
|
BLAKE2b-256 | e7138b853c30112b1889a9f1cd6066ad7191fc37fed5a895eb3f69c1293f8986 |
Hashes for minecraft_python-0.31.20100125-pp39-pypy39_pp73-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 17aacc3320aec1310b41764a54fbc43b5722786e6e91e63af1f81c84c04ddba8 |
|
MD5 | b844b098ce28fdffb9e7775b489c1a84 |
|
BLAKE2b-256 | 6a7ef9d8957579980cd726228b75ea510af74854d95b438d4c090c4580ed727a |
Hashes for minecraft_python-0.31.20100125-pp39-pypy39_pp73-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 66490988663d1ca2159aafd8c878d0eea8ef748ee7f5ce71442b1eab0d16684e |
|
MD5 | c8e78c30c54cf16290f1475d409cb7f8 |
|
BLAKE2b-256 | 9f8a0510d1fe6f459a7633f1eeeb6ffa33ab77502580da013294dcf4b1377bb8 |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 961627a4baec7ac185cdeb4941a8f7b5220034ee644b621663322bb1d3ed9d2f |
|
MD5 | 10e2484ab3a201655a45a48519eb964b |
|
BLAKE2b-256 | 50516be4eb4f7eaaff1e3d33bb9edb5a472059704eb604cac142edec1f16525a |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5b5febb037384b8b826fa4604df1a66ae389a860e2942e4a171961095ac32f6f |
|
MD5 | 0999648bf0b66c3bce653f58f8c2edc6 |
|
BLAKE2b-256 | 893047f80b169cbcfe873d6eb32b2d23ea99d230a9d69f1391319fdf812211cf |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1b8406b3f07a41c0b0e8ff57516c6dac07902b2aa174148ef249b3a887c425e |
|
MD5 | 7e41ec860a37e6bcb78130f4b950a2f2 |
|
BLAKE2b-256 | eec6f354c149499f3b2b2874c7d9f53cf20b63c9a07295bf777b977611636d1c |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42aef78f96e9dbca4d473314cbed6835dc2a2b0ca73be1de18fd7b98a187281b |
|
MD5 | 8af501c9898be5f72f5d118734537609 |
|
BLAKE2b-256 | 74022945d31d9995db2174226edae86a8a9d87c7bc0ff0fe2d9c099e7d5098a7 |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2b8a3fb67cafef4514cb0249c67533723dffe1fb0451530cb50895912116586a |
|
MD5 | d9874267cb3497343ef5d0682dd3d2fc |
|
BLAKE2b-256 | 805aefb0e350276fae9fa6e14e1e5a6445a69cea8013a7c46541f02af81790a8 |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ef17b0b1d77fa21bbe6a88669935d406ac8c21cbca346291470a112d92ab2b6d |
|
MD5 | d3b5e1c0696f514c004fff3541a69b39 |
|
BLAKE2b-256 | 33f1e38af3e2dfbe974ab0212aeb52f5a5589b185ee9675f4f871d30f793cda6 |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2de846b14541f4294b89d521efeb034a1787caa58ed30f17dd724d3732c08ef7 |
|
MD5 | b4211b21fb27fb3663f8995ea70e3861 |
|
BLAKE2b-256 | 1d1895a5b8c254adde95f8fda6d8c60933c83e62b4b24a58eea94843f58159ac |
Hashes for minecraft_python-0.31.20100125-cp312-cp312-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d2da3911830284703cf3e5d695d6f6ac62741a0070d55fcb94d67aec008e585 |
|
MD5 | 435ae8ad8941074fffc4d45998d6c960 |
|
BLAKE2b-256 | afb5f0db7eeeb734141fff0d3963fbabd38a68b9ea2454dbed617a5e1a2dfeb1 |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50ded6266715b37d51201586b54b158304b6c3a38f00d951f62b87a214924fba |
|
MD5 | 11a8ee7434cdc009b0473a8ce9ff238c |
|
BLAKE2b-256 | 9533f83cb473b2b96687e9bd5abe5f69b05973c11a26fe42ba8b4dc33c943a0b |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3e7fcacacf6be2e925af816140e6d7b99681648cd6aeed2b3169afcbcc311536 |
|
MD5 | 80c93f6112d1fc5488904a51d76f1f65 |
|
BLAKE2b-256 | 2e46a3d71546957fb42f8e852fdee4b08b9c547e39ac442535fb81c6301fff65 |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99610b07cfa2874ec8f0802f1139c7397807d2a5d4734820cdfc47f9a67012b6 |
|
MD5 | 3f42c3217ed788d74a97a527c0b93c30 |
|
BLAKE2b-256 | e78ff535edcf13307f9061a350870e1c2d104b9b62bfb02fd90bfccc394c4117 |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 209f700ba662b154de0f51024e968b9957c94472fcf7615d0c145a2e788fc148 |
|
MD5 | c9b36101a647f4ddcc6968632db8d215 |
|
BLAKE2b-256 | f1debbb3704cd35d56ce1555593dba7df4ac9446d503872fc7b3a796a2627dd9 |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2baaf0a2e0828d56e1206e7f1c878f4aa3ae76908f5201e54613889c8379dc05 |
|
MD5 | 1f91773323b650ea827de9810b9ab7c1 |
|
BLAKE2b-256 | 5a4b44485c32c7538df12d23ff9e7ad3563e4c761aa247a44462b38713c29759 |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a526c25e97f14aa177568db13a0afdc6c6866eca9095e9a8527176b555e94460 |
|
MD5 | fb8d4a68ceabb6eec5fcedf1964c06c8 |
|
BLAKE2b-256 | 568319f0ecd7549a947e75de4b8a67ebd6cc026528f1c46c960a1a83674dff46 |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 903a2e2a51618e45bfa7dff2dec2b058c98c649d296b3da6c7c6e8b8ea4af39b |
|
MD5 | 5f4ea272f038201bdfcc9e69890564d3 |
|
BLAKE2b-256 | a83468a9b245117429661bff683e2c4da106ac037b3a1bc5683854199f91789d |
Hashes for minecraft_python-0.31.20100125-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b854624721b765283c291a846fafd41a53c9bdf3c013a5baf1815c36c475f06c |
|
MD5 | 0116c372033107c4dfe0d8200f0834aa |
|
BLAKE2b-256 | e46472cc8265eafc46d35f7a6e26dc2f0e5c36f776c055326c2ee4f534032d55 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5603b6af6eb131e1d569c512cfdcd23ae438cf9836a9a7e9a9eb86c5735381b0 |
|
MD5 | a0a2fa42fdebb5aae2d7ac42ff120c96 |
|
BLAKE2b-256 | 176dc13c0b662c402bb34b7ec13d6ccfb293ee2b1fe587be0412918fdc45a0e6 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8511bac620c6e92d9b3a53bdba79eb547f7da9369fe017eda021abeedc53fca6 |
|
MD5 | e05694cf2b948e7b6b6df29c0a1a1761 |
|
BLAKE2b-256 | d3610a07aa766ff7191e6b76090a1ca9ba461ec5a233c483d305eb02442a04f8 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f65c3f8a17703e97b5fe89800ba5e7789b5f160f936edf6745c845a230c2b008 |
|
MD5 | c9e3b3653d464477950aeef3b22ca338 |
|
BLAKE2b-256 | 30fabe4369a5b42f1c357486757a616795068e7b9804f5fa7b3bc548de67bda6 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 786348fc712903b397b08b749f787ad73bcfcbdf3b20ff266655b959a190c0cd |
|
MD5 | 76398b6220cbd601ee6639f316a2fc2e |
|
BLAKE2b-256 | 686b8fcf5e561b9009beed3f8086dee94d1001cc33c226e374e2a768f5f7b84b |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a88a8049005db38e816122f4202e2aa1eba8476c429164306d351f09ab5feafb |
|
MD5 | 8f16bd7437863148caf8780da4756bd5 |
|
BLAKE2b-256 | 022de47a81d1748009026a5054b8a6105d45741cfb37b71a586601f367410c44 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a04c16f501c88b9b103029b53d2ca222a4610461ecb241c3e452a39ca56b9418 |
|
MD5 | b882c9b8c1626a6ca40b471c9eba539f |
|
BLAKE2b-256 | 752464ad4daa11118585ff7a68e92959c997f9086a42dfcc464b5d40a5f4bb03 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 517a28866487a39986a9d4c3470e07265e5e18a20165d8b9a64a34649e0466e7 |
|
MD5 | 0b5f304e70c659384c649036d7799aa1 |
|
BLAKE2b-256 | 8d8158b9183dae8765f6bdb357117c559d152b9fb8321633d4c06719709860c8 |
Hashes for minecraft_python-0.31.20100125-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf0629515f3c1f7c229f8476bdfc63a7cc4ae0cb94b6e49eb9843f3858e66e82 |
|
MD5 | 6cc19d51d4b2605cae47c286907c2ea8 |
|
BLAKE2b-256 | de8b44ba1e8777a3df565f29af2919d3b8688986d3ed840299a18106b947048f |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ee947fd7c78e2a81a98dcb8b15b2fdc59ec8268abd316b4ede7b100cbd49de5e |
|
MD5 | 2c26b919975290e86211a8b8e307dd52 |
|
BLAKE2b-256 | 5f6ebee57d1e8e4413a286cd7995571f5e1089b91824797fe9165bdd05e0120b |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6221a641ef687e1461b43c1dfdcf1cd9575407c1a95c729b8aeaf78030b92b58 |
|
MD5 | 3f4dd21fc56f5da9ee7fdfc3ab2e5d07 |
|
BLAKE2b-256 | 824aca3ee479a8c6256d201517370303867eaa1458ed0093b0f326869b0302ae |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-musllinux_1_1_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6342fabad3c8a2839fc63b959fbe39c7b2706abe1caaf0c93230e10e21db764e |
|
MD5 | 12786a77457d5a2ec8aacc6444948da4 |
|
BLAKE2b-256 | d1044a487ea700bf13ae2f72d67101f5551b6f36e0ab66579609e0ffb2b98903 |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-musllinux_1_1_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c9bcd3f3e6cba847e9efe0959a96a33bf5626397cb796d3414b560d7c3892e53 |
|
MD5 | b23e259e1ac563ef963f6bf71d7be9a7 |
|
BLAKE2b-256 | 1e93d5adbd5407323e65c4d4735618fb45c599366988e16412c0c96617754469 |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8943f8abc8cd7a034b50886cae39ca009a2aae312131fd00de04f89180fac5e |
|
MD5 | 2cf6a37ef0317ab95277a8695f471cf3 |
|
BLAKE2b-256 | 99841265f3b96945f7eb17efbbf048cc13af409842605f7f7a2d5464f3d04a6f |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2fe06695409a7eaf51c1e5166b8c7d4905337497035609f155122baa4df7948b |
|
MD5 | 30fac452b7565021958800d81470741b |
|
BLAKE2b-256 | 66e4fd8301aef1466e61e213c07d1a7b8d75df286c5079043806db504c1cf87c |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b84e0e7062b62ab2ef563d617a5a74ac209f2669ec5259c22856a320c4e6ad35 |
|
MD5 | 71780500985b67531bb41c2eedc51ae1 |
|
BLAKE2b-256 | 76c8b5e092194289f5f98c8ca224d9040a4ac4f2aa1948fcb7718ba138bf9d50 |
Hashes for minecraft_python-0.31.20100125-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ffc887341fab539e864e93009f6c08f35e9d35b108b4e07fa0469e19eb74d66 |
|
MD5 | a6c9d0b294e1ea867014a341506d886d |
|
BLAKE2b-256 | d0d800b4c6eb9fbc9cfd3f8591468c0067f921a9961c260b2ed8402b375bde3d |