Python API for MineTest
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Pascal Engélibert e22e63967d mtdb 3 years ago
.gitignore getblocks -> mtapi 3 years ago
LICENSE Initial commit 3 years ago mtdb 3 years ago Conversion tool 3 years ago getblocks -> mtapi 3 years ago mtdb 3 years ago

MineTest Python API

This code is dirty for the moment. Experimental purpose only.


Requires MineTest blocks table to be on PostgreSQL.

Requires python3-psycopg2 (which requires libpq-dev) and cbor:

sudo apt install libpq-dev
sudo pip3 install psycopg2 cbor


Change CONFIG_DB_CONNECT with your PostgreSQL config string, and CONFIG_LISTEN with your IP and port. (leave to listen on all addresses)




Beware of browsers which may replace > and < by &lt; and &rt; in url. Use commandline instead:

curl ">-5/x<5/y>20/y<=30"

Response is a JSON list of the blocks of which position verifies these conditions: a rectangle of 8×9×1 blocks.

    "blocks": [
        [x, y, z, data], // data is hexadecimal form of raw binary from MineTest blocks DB


  • fmt Response format: json (default), cbor
  • cpr Response compression: none (default), gzip, lzma


curl ">=0/x<100/y>=0/y<100/z>=0/z<100/fmt/cbor/cpr/gzip" > test_gzip.cbor

Prefer cbor+gzip for big imports. lzma is much slower than gzip but produces slightly smaller files. cbor is much smaller than json.

Library is a Python3 library for interacting with MineTest db.

import mtdb
db = mtdb.init_pgsql("host= port=5432 user=minetest password=PASSWORD dbname=minetest-world")
mtdb.get_chunk(db, (0,0,0)) # Chunk position, not node position (1 chunk = cube of 16*16*16 nodes)



CopyLeft 2020 Pascal Engélibert