# NBCraft: a decompilation of Minecraft Pocket Edition 0.1.3

> NBCraft is a C++ reimplementation of the first publicly released Minecraft Pocket Edition, reconstructed from a decompilation of version 0.1.3 with IDA, and it carries the features of Java Edition Beta 1.7.3 with togglable edition aesthetics. It builds from Windows 95 to the Nintendo Switch, requires you to supply your own game assets, and is not affiliated with Mojang or Microsoft.

**nbcraft-org/nbcraft** — The ultimate cross-platform mining experience.

- Repository: https://github.com/nbcraft-org/nbcraft
- Website: https://discord.gg/UKGhuKNmFu
- Stars: 597 · Forks: 108
- Language: C++
- License: NOASSERTION
- Published: 2026-10-22 · Updated: 2026-10-22 · Language: en
- Canonical page: https://hysenlabs.com/projects/nbcraft-org-nbcraft

## What the decompilation actually started from

The project's origins are stated plainly in the About section. The code is based on a decompilation of Minecraft Pocket Edition version 0.1.3 as of 2011, which itself was a port of Minecraft Java Edition Beta 1.3 to 1.7.3, and the decompilation was performed primarily using IDA in conjunction with Android builds of MCPE, since those builds contain information such as function and class names.

That last detail is the interesting engineering fact. A decompilation from a stripped binary gives you the logic and little else, but the Android builds carried debug symbols, so names survived. Reconstructing a buildable project from that combination is the hard part, and the README credits the previous version of the work, a separate decompilation repository, as the base this is a modified version of.

The name comes from the three original developers of Pocket Edition, Aron Nieminen, Johan Bernhardsson and Tommaso Checchi, with NBCraft combining their last names.

The disclaimer is prominent and worth repeating because it defines what the project is not. NBCraft is not affiliated or associated with Minecraft, Mojang AB or Microsoft, it is not an official Minecraft product, and it is not approved by or associated with Mojang or Microsoft. For a project built on a decompilation of a commercial game, that statement is the first thing to read, and it is why the asset instructions in the README matter so much.

## Beta 1.7.3 features, and an edition toggle for the aesthetic

The goals are listed as bullets, and the first is to add features from Minecraft Beta 1.7.3 and below, which is the version the project targets as its ceiling.

The second goal is to add togglable edition-specific aesthetic features, and the examples are specific: a Legacy Console Edition UI theme with gamma and mipmaps, a Pocket Edition UI theme and sky colors, a Java Edition UI theme, normal lighting, which the README notes Pocket Edition lacked, and an alpha title logo. The idea is that the same build can present itself as any of the editions it descends from, selected from the options menu.

That is the reason the project is worth a look even if you have played every modern version of the game. The earliest Pocket Edition build was a very different product from Java Edition, and a single binary that can switch between the visual identities of the Console, Pocket and Java editions is a piece of game history you cannot otherwise get.

Two more goals are on the roadmap rather than the current state. The project intends to provide a cross-platform modding API in the form of WebAssembly modules, giving more creative control to the community, and to add support for as many platforms as possible, with the PlayStation 3 and Wii named among the targets.

The third stated goal is a source layout similar to the original Minecraft PE, reconstructed from clues hidden within certain versions of the game such as the 0.1.0 touch prototype and debug build. That is a deliberate constraint. It means the tree reads as the original project rather than as a modernised one, which is exactly what you want in a preservation project and exactly what you would not want in a new codebase.

## The platform list, from Windows 95 to the Nintendo Switch

The supported platform list is unusually long, and each entry carries a credit:

* Windows (95 and above; thanks to iProgramInCpp)
* Android (thanks to Stommm for the help)
* Linux (basically anything with POSIX.1-2001, C++98, SDL, and OpenGL support should also work without too much trouble)
* WebGL
* macOS (10.4 and above; thanks to BrentDaMage)
* iOS (3.1 and above; thanks to BrentDaMage)
* Xbox 360 (thanks to BrentDaMage)
* HaikuOS (thanks to SanyaSho)
* Nintendo Switch (thanks to Bagietas)

The Linux line is the honest one, since it says what a successful port requires rather than claiming a binary exists. POSIX.1-2001, C++98, SDL and OpenGL is a modest floor, and the phrasing should also work without too much trouble says that most of the work is in the platform layer rather than in the game.

The repository layout explains how that is achieved. There is a compat directory, a source directory, a platforms directory, a projects directory, a cmake directory, a thirdparty directory and a tools directory, alongside a Makefile described in the source as meant to be extremely portable to weird unix-like systems, and a CMakeLists.txt for the platform specific builds.

The compatibility shims in compat and the platform abstraction in platforms are what let a codebase written against a 2011 mobile game's constraints run on a Switch or in a browser through WebGL. That is the engineering story of the project, more than any individual platform.

## You supply the assets, and the extraction step is manual

The assets are not in the repository, and the README is specific about how to get them.

You prepare a copy of minecraft.jar from Beta 1.7.3 and copy the assets, including sounds and textures, into the minecraft resource pack within the project. If you have Python installed, you run the script in tools/extract_jar.py, drag the minecraft.jar file onto the window and hit enter, and the script extracts the jar's assets into the resource pack. If you do not have Python, or do not wish to use the script, you can open minecraft.jar as if it were a ZIP file, either by renaming it to minecraft.jar.zip or by opening it with an unarchiver, locate the listed files and folders, and copy them into the game/assets/resource_packs/minecraft directory. The list given is armor, art, environment, font, gui, item, misc, mob, terrain, title, pack.png, particles.png and terrain.png.

Any Pocket Edition assets will need to be manually extracted from Pocket Edition, and to retrieve the sounds you locate the resources directory in the .minecraft folder and copy the contents, music and sound among them, into the same resource pack directory. Finally, the minecraft resource pack should be automatically enabled by the game, assuming it can find it.

This is the legal shape of the project, and it is deliberate. The code is redistributed, the assets are not. You supply your own copy of the game, and the README notes that while the original Minecraft PE v0.1.3 may not work on newer devices, NBCraft works on any of the platforms listed above.

## Building: submodules, a portable Makefile and a MinGW cross build

Before building, the README asks you to fetch the dependencies, with two git commands or the equivalent actions in Git:

```
git submodule init
git submodule update
```

There are two ways to build on Windows, the universal build script or Visual Studio, and the cross build script is the one that produces a version of NBCraft that works on all versions of Windows since 95. Its dependencies are listed per host system: on Ubuntu or Debian, build-essential for the C and C++ toolchain, cmake, make, wget, zlib1g-dev, and libgmp-dev with libmpfr-dev and libmpc-dev for the GCC dependencies; on macOS, the Xcode command line tools, cmake, wget, and gmp, mpfr and mpc.

The build then selects the target architecture through an environment variable:

```sh
# to build for 64 bit machines
export ARCH=x86_64
# to build for pentium pro or newer
export ARCH=i686
```

The Makefile itself is the clearest statement of the portability goal. It sets CC to cc and CXX to c++, compiles with -O2 -DNDEBUG, and includes the source, thirdparty and platform directories explicitly, with a branch for Darwin linking -lmx, a branch for SunOS linking -lsocket and -lnsl, and everything else linking against X11R6 with pthreads. The defines include -DHANDLE_CHARS_SEPARATELY, -DRAPIDJSON_NO_THREAD_LOCAL and -DSTBI_NO_THREAD_LOCALS, and the third party tree it compiles includes zlib, stb_image, RapidJSON and RakNet.

The project also carries a GameMods.hpp at the root and a TODO.md, and the licensing section confirms that RakNet, zlib, coi-serviceworker and stb are bundled as submodules or vendored code under their own terms.

## The things the project refuses to do

A list of what a project will not do is unusual and, in this case, more informative than a feature list.

The project will not add features added in or after Java Edition Beta 1.8. It will not change the default aesthetic the game ships with, because the current target is Java Edition Beta 1.7.3, though players can use the options menu to change the aesthetic to match the version or edition of their liking. It will not add Herobrine. And it will not add support for Minecraft Java or Minecraft Bedrock servers, although LAN play with original MCPE clients will be supported for as long as possible.

Those four refusals define the project precisely. The version ceiling keeps the codebase small and the behaviour consistent, the aesthetic default keeps the reconstruction honest rather than becoming a modern game with a retro skin, and the server exclusion keeps it a single player experience with local multiplayer.

The licence position is BSD 1 clause for the project itself, with the third party components carrying compatible but different terms: RakNet under BSD 2 clause, zlib under its own licence, and coi-serviceworker and stb embedded as submodules. The platform metadata classifies the repository licence as a custom one that the hosting platform cannot categorise, so the LICENSE.txt file at the root is the text to read.

Contributions go through GitHub, with the README pointing at a list of issues that describes the things to do and asking for a pull request once the code is tested and ready. The last push to the repository was on 2026-10-16, and there are no tagged releases, so there is no version history to pin to and the build is whatever the branch currently holds.

## Conclusion

Adopt NBCraft if you want to study or play the earliest public build of Minecraft Pocket Edition on hardware it never officially supported, or if you are interested in what a preserved decompilation looks like as a C++ codebase. Do not adopt it if you need Minecraft Java or Bedrock server support, because the README rules that out explicitly, and do not treat the repository as a source of game assets, since the textures and sounds have to be supplied from your own copy of the game. Verify first which platform you are targeting and whether the build script covers it, that the asset extraction step works for the jar you have, and that the licence position of the decompiled code, which the project states as BSD 1 clause with bundled third party components under their own terms, is acceptable for your use.

## FAQ

### What is NBCraft?

NBCraft is a C++ reimplementation of Minecraft Pocket Edition version 0.1.3 from 2011, reconstructed from a decompilation performed primarily with IDA using Android builds of MCPE for function and class names. It adds features from Java Edition Beta 1.7.3 and below, with togglable edition aesthetics.

### Which platforms does NBCraft support?

The README lists Windows 95 and above, Android, Linux with POSIX.1-2001, C++98, SDL and OpenGL, WebGL, macOS 10.4 and above, iOS 3.1 and above, Xbox 360, HaikuOS and Nintendo Switch, with a credit next to most of the entries.

### Where do the game assets for NBCraft come from?

They are not shipped in the repository. You supply a copy of minecraft.jar from Beta 1.7.3 and run the script in tools/extract_jar.py, or extract the jar manually as if it were a ZIP file and copy the listed asset folders into game/assets/resource_packs/minecraft. Pocket Edition assets and sounds have to be extracted by hand from your own copy.

### Does NBCraft support Minecraft Java or Bedrock servers?

No. The README lists support for Minecraft Java or Minecraft Bedrock servers among the things the project will not do, although it says LAN play with original MCPE clients will be supported for as long as possible. It also rules out features added in or after Java Edition Beta 1.8.

## Sources

- [Issues](https://github.com/nbcraft-org/nbcraft/issues)
- [nbcraft-org/nbcraft on GitHub](https://github.com/nbcraft-org/nbcraft)
- [Project website](https://discord.gg/UKGhuKNmFu)
- [README](https://github.com/nbcraft-org/nbcraft/blob/master/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/nbcraft-org-nbcraft
