Skip to main content

A project that seeks to recreate every old Minecraft version in Python using Pyglet and Cython.

Project description

Minecraft: Python Edition

Minecraft

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.

This project is currently recreating the Multiplayer Classic versions of Minecraft. The latest version is Classic 0.0.22a_05 as released on June 29, 2009.

Learn more about this version here.

Or the server version here.

This project is organized so that every commit is strictly the finished Python version of the Java game of the same version number. This means that you can go back into this repository's commit history and see only the source code changes between versions of Minecraft, or you can compare branches and see the changes made between them. For any version this project covers, you can play it just by specifying the Minecraft version you want to play in the pip install command as demonstrated below.

General Usage

Pyglet, Cython, Pillow, and PyOgg are required dependencies and can easily be installed with pip. Use the versions specified in requirements.txt.

This version features block sounds and music, and for audio to work you need either PyOgg which is recommended, or FFmpeg which is installed on the 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.

To easily install this version of Minecraft: Python Edition, just run python -m pip install minecraft-python==0.0.22a_05.

Alternatively, for a manual Cython build, run python setup.py build_ext --inplace.

Run python -m mc.net.minecraft.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.

Gameplay

This version features multiplayer, chat, caves, beaches, hill terrain, infinite liquid tiles, level saving, and human mobs.

Press B to open the inventory menu. Press Enter to set your spawn position, R to teleport to your spawn position, Y to invert the mouse, G to spawn a mob, F to toggle render distance, and M to mute audio.

Minecraft: Python Edition should be compatible with any platform that supports OpenGL, modern Python 3, and Cython.

Multiplayer

To launch the multiplayer game, run python -m mc.net.minecraft.Minecraft -server <host:port> -user <username> -mppass [password].

Press Tab in-game to view connected players.

To host a server, follow the instructions in the README.TXT file in the server directory. Make sure verify-names is set to false in the server properties.

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.

The server directory contains the unmodified, original Minecraft server build for this version.

This would have been much more challenging to work on without the great tools provided by RetroMCP-Java.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

minecraft-python-0.0.22a5.tar.gz (9.0 MB view hashes)

Uploaded Source

Built Distributions

minecraft_python-0.0.22a5-pp310-pypy310_pp73-win_amd64.whl (9.3 MB view hashes)

Uploaded PyPy Windows x86-64

minecraft_python-0.0.22a5-pp310-pypy310_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (9.5 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-pp310-pypy310_pp73-macosx_10_9_x86_64.whl (9.3 MB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

minecraft_python-0.0.22a5-pp39-pypy39_pp73-win_amd64.whl (9.3 MB view hashes)

Uploaded PyPy Windows x86-64

minecraft_python-0.0.22a5-pp39-pypy39_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (9.5 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-pp39-pypy39_pp73-macosx_10_9_x86_64.whl (9.3 MB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

minecraft_python-0.0.22a5-pp38-pypy38_pp73-win_amd64.whl (9.3 MB view hashes)

Uploaded PyPy Windows x86-64

minecraft_python-0.0.22a5-pp38-pypy38_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (9.5 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-pp38-pypy38_pp73-macosx_10_9_x86_64.whl (9.3 MB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

minecraft_python-0.0.22a5-pp37-pypy37_pp73-win_amd64.whl (9.3 MB view hashes)

Uploaded PyPy Windows x86-64

minecraft_python-0.0.22a5-pp37-pypy37_pp73-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (9.5 MB view hashes)

Uploaded PyPy manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-pp37-pypy37_pp73-macosx_10_9_x86_64.whl (9.3 MB view hashes)

Uploaded PyPy macOS 10.9+ x86-64

minecraft_python-0.0.22a5-cp311-cp311-win_amd64.whl (9.4 MB view hashes)

Uploaded CPython 3.11 Windows x86-64

minecraft_python-0.0.22a5-cp311-cp311-win32.whl (9.3 MB view hashes)

Uploaded CPython 3.11 Windows x86

minecraft_python-0.0.22a5-cp311-cp311-musllinux_1_1_x86_64.whl (12.6 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ x86-64

minecraft_python-0.0.22a5-cp311-cp311-musllinux_1_1_i686.whl (12.4 MB view hashes)

Uploaded CPython 3.11 musllinux: musl 1.1+ i686

minecraft_python-0.0.22a5-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

minecraft_python-0.0.22a5-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.4 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-cp311-cp311-macosx_10_9_x86_64.whl (9.5 MB view hashes)

Uploaded CPython 3.11 macOS 10.9+ x86-64

minecraft_python-0.0.22a5-cp310-cp310-win_amd64.whl (9.4 MB view hashes)

Uploaded CPython 3.10 Windows x86-64

minecraft_python-0.0.22a5-cp310-cp310-win32.whl (9.3 MB view hashes)

Uploaded CPython 3.10 Windows x86

minecraft_python-0.0.22a5-cp310-cp310-musllinux_1_1_x86_64.whl (12.4 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ x86-64

minecraft_python-0.0.22a5-cp310-cp310-musllinux_1_1_i686.whl (12.2 MB view hashes)

Uploaded CPython 3.10 musllinux: musl 1.1+ i686

minecraft_python-0.0.22a5-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.3 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

minecraft_python-0.0.22a5-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.1 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-cp310-cp310-macosx_10_9_x86_64.whl (9.5 MB view hashes)

Uploaded CPython 3.10 macOS 10.9+ x86-64

minecraft_python-0.0.22a5-cp39-cp39-win_amd64.whl (9.4 MB view hashes)

Uploaded CPython 3.9 Windows x86-64

minecraft_python-0.0.22a5-cp39-cp39-win32.whl (9.4 MB view hashes)

Uploaded CPython 3.9 Windows x86

minecraft_python-0.0.22a5-cp39-cp39-musllinux_1_1_x86_64.whl (12.4 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ x86-64

minecraft_python-0.0.22a5-cp39-cp39-musllinux_1_1_i686.whl (12.3 MB view hashes)

Uploaded CPython 3.9 musllinux: musl 1.1+ i686

minecraft_python-0.0.22a5-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

minecraft_python-0.0.22a5-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.2 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-cp39-cp39-macosx_10_9_x86_64.whl (9.5 MB view hashes)

Uploaded CPython 3.9 macOS 10.9+ x86-64

minecraft_python-0.0.22a5-cp38-cp38-win_amd64.whl (9.4 MB view hashes)

Uploaded CPython 3.8 Windows x86-64

minecraft_python-0.0.22a5-cp38-cp38-win32.whl (9.4 MB view hashes)

Uploaded CPython 3.8 Windows x86

minecraft_python-0.0.22a5-cp38-cp38-musllinux_1_1_x86_64.whl (12.6 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ x86-64

minecraft_python-0.0.22a5-cp38-cp38-musllinux_1_1_i686.whl (12.4 MB view hashes)

Uploaded CPython 3.8 musllinux: musl 1.1+ i686

minecraft_python-0.0.22a5-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.4 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

minecraft_python-0.0.22a5-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (12.2 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-cp38-cp38-macosx_10_9_x86_64.whl (9.5 MB view hashes)

Uploaded CPython 3.8 macOS 10.9+ x86-64

minecraft_python-0.0.22a5-cp37-cp37m-win_amd64.whl (9.4 MB view hashes)

Uploaded CPython 3.7m Windows x86-64

minecraft_python-0.0.22a5-cp37-cp37m-win32.whl (9.4 MB view hashes)

Uploaded CPython 3.7m Windows x86

minecraft_python-0.0.22a5-cp37-cp37m-musllinux_1_1_x86_64.whl (12.1 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ x86-64

minecraft_python-0.0.22a5-cp37-cp37m-musllinux_1_1_i686.whl (12.0 MB view hashes)

Uploaded CPython 3.7m musllinux: musl 1.1+ i686

minecraft_python-0.0.22a5-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (12.1 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

minecraft_python-0.0.22a5-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.9 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-cp37-cp37m-macosx_10_9_x86_64.whl (9.5 MB view hashes)

Uploaded CPython 3.7m macOS 10.9+ x86-64

minecraft_python-0.0.22a5-cp36-cp36m-win_amd64.whl (9.5 MB view hashes)

Uploaded CPython 3.6m Windows x86-64

minecraft_python-0.0.22a5-cp36-cp36m-win32.whl (9.4 MB view hashes)

Uploaded CPython 3.6m Windows x86

minecraft_python-0.0.22a5-cp36-cp36m-musllinux_1_1_x86_64.whl (11.9 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ x86-64

minecraft_python-0.0.22a5-cp36-cp36m-musllinux_1_1_i686.whl (11.7 MB view hashes)

Uploaded CPython 3.6m musllinux: musl 1.1+ i686

minecraft_python-0.0.22a5-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (11.9 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

minecraft_python-0.0.22a5-cp36-cp36m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (11.7 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

minecraft_python-0.0.22a5-cp36-cp36m-macosx_10_9_x86_64.whl (9.4 MB view hashes)

Uploaded CPython 3.6m macOS 10.9+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page