Baike.dev
All toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
L

langcraft

> 编程语言
Open source

Compiler from LLVM IR to Minecraft datapacks.

563 stars0 likes0 views
WebsiteGitHub

About

Compiler from LLVM IR to Minecraft datapacks.

Langcraft

The LLVM target for Minecraft you've never wanted

Langcraft is a code generator targeting Minecraft Data Packs. It can currently run a fairly substantial set of bitcode files without issue. The project has a built-in command interpreter for debugging that supports breakpoints (ish) and inspecting register/memory values. All generated datapacks can be run in a real Minecraft Java Edition 1.16+ world in under 5 minutes.

(See also Wasmcraft2 for the spiritual successor to this project, which is faster and more reliable)

Usage

cargo run -- --arg1 --arg2 ./path/to/llvm/bitcode.bc

Valid arguments are:

  • --help: Display usage and available options
  • --out=path/to/dir/: Specify the directory the datapack files should be placed in (default is ./out)
  • --run: Run the command interpreter on the generated code
  • --trace-bbs: Insert a print command at the beginning of each LLVM basic block

To use the generated datapack in Minecraft:

  1. Copy the entire output folder (./out by default) to the datapacks/ directory of a Minecraft world (using a superflat void world is recommended)
  2. Run /function setup:setup. This only has to be done the first time a Langcraft datapack is used in a world.
  3. Run /function rust:run
  4. If the datapack is modified while the world is open, run /reload and then go back to step 3.

Rust code must be built as follows:

  • Release mode
  • panic=abort
  • #![no_std]
  • #![no_main]
  • Have a main function with #[no_mangle]
  • Use i686-unknown-linux

rust_interp is a Rust project already configured to generate the proper bitcode. The interpreter binary target as shown in the demo can be built with:

sh compile_rust.sh

And the file to use will be:

rust_interp/target/i686-unknown-linux-gnu/release/deps/interpreter-SOMEHEXSTRING.bc

Any other language capable of generating LLVM bitcode can be used, as long as it can be built for a bare-metal 32-bit target. For a clang example see compile_c.sh.

Note that the latest nightly versions of rustc now use LLVM 11, which Langcraft cannot parse (yet). You can set an earlier version to use for a directory with:

rustup override set nightly-2020-08-23

Demo

A video of a Langcraft-compiled interpreter can be seen here.

License

Licensed under either of

  • MIT License
  • Apache License, Version 2.0

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Rustcompilerllvmminecraft

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言