MineTest Python API
This code is dirty for the moment. Experimental purpose only.
Install
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
Configure
Change CONFIG_DB_CONNECT
with your PostgreSQL config string, and CONFIG_LISTEN
with your IP and port. (leave 0.0.0.0
to listen on all addresses)
Run
python3 mtapi.py
Use
Beware of browsers which may replace >
and <
by <
and &rt;
in url. Use commandline instead:
curl "http://127.0.0.1:8060/z=0/x>-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
...
]
}
Options:
fmt
Response format:json
(default),cbor
cpr
Response compression:none
(default),gzip
,lzma
Example:
curl "http://127.0.0.1:8060/x>=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
mtdb.py
is a Python3 library for interacting with MineTest db.
import mtdb
db = mtdb.init_pgsql("host=127.0.0.1 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)
License
GNU AGPL 3.0
CopyLeft 2020 Pascal Engélibert