Skip to main content

Delta update implement for Minecraft bedrock chunk.

Project description

Bedrock Chunk Diff

A Minecraft chunk delta update implements based on Go




Catalogue

Summary

Aims

Bedrock Chunk Diff is build basd on Go language that provide a high speed implements for Python that can do delta update operation for Minecraft game saves very fast.

Details

The finest granularity of delta update is the Chunk. That means, the user is easily (and also very fast) to record the time point for the Minecraft game saves when the server is running.

So, for a chunk that not loaded, they will nerver to get update, then their is no newer time point to be created. Therefore, we just need to track the chunks that player loaded, so this package provided a very useful delta update implements.

Additionally, we finally used a single file as the database, so it's very easy for you to backup the timeline database, just copy one is ok...

See research document to learn our research study essay.
Note that this research is talk about the sub chunk delta update, but not the chunks.
The reason we use chunk but sub chunk is sub chunk will take too much time to do delta update, and it is not our expected.

Upstream

This package is based on bedrock-world-operator that nowadays only support Minecraft v1.20.51 that align with Minecraft Chinese Version. Therefore, this package can only be used on current Chinese version of Minecraft.

For higher version, you maybe need to modifiy bedrock-world-operator and fork this repository to make delta update could running correctly in your server.

Additionally, bedrock-world-operator only support the standard Minecraft blocks. For custom blocks, you also need to start a modification.

Supported OS and architecture

Due to Bedrock Chunk Diff is based on Go, so we pre-built some dynamic library.

However, maybe some of the systems or architectures are not supportted. Therefore, if needed, welcome to open new ISSUE or Pull Request,

  • Windows
    • x86_64/amd64
    • x86/i686
  • Darwin (MacOS)
    • x86_64/amd64
    • arm64/aarch64
  • Linux
    • x86_64/amd64
    • arm64
    • aarch64 (Termux on Android)

By reference this file to know how we load dynamic library in Python side.

Features

  • Delta update for blocks in chunk
  • Delta update for NBT data in chunk
  • Delta update for map pixel data (Not planned to support, but welcome to open Pull Request)
  • Delta update for lodestone data (Not planned to support, but welcome to open Pull Request)
  • Delta update for player data (Not planned to support, but welcome to open Pull Request)
  • Delta update for mob data in game saves (Not planned to support, but welcome to open Pull Request)

Recover

To use the database to back to a specific timeline for each chunk and generated a available Minecraft game save, use this tools to help you.

Also, you can reference these codes to write your own ones, and welcome to contribute more tool for this project.

Compatibility

0.0.x version is still on testing, and we can't ensure all the things are compatibility.

Get started quickly

from bedrockworldoperator import Range, Dimension, ChunkPos
from bedrockworldoperator import RANGE_OVERWORLD, RANGE_NETHER, RANGE_END
from bedrockworldoperator import DIMENSION_OVERWORLD, DIMENSION_NETHER, DIMENSION_END

from .timeline.timeline_database import new_timeline_database

We export those things above by default.
Therefore, by using new_timeline_database, you can create a new timeline database.

There are multiple functions in each class you get by new_timeline_database, and you can do more operation based on them. We ensure there are enough annotations, so we will not provide extra documents for this project.

Note

You can't used any thing that come from package internal, because they are our internal implement details.

If you want to start a contribution on this project, then you maybe need to do some research on this package. But we most suggest you study on c_api and timeline folder first, because they are our Go implements.

🐍 Pypi Package

This package bedrock-world-operator is been uploaded to Pypi ,and you can use pip install bedrock-chunk-diff to install.

See 📦 bedrock-chunk-diff on Pypi to learn more.

We used CD/CI Github Actions, so if you are the collaborator of this project, you can trigger the workflows by change version or use your hand. Then, the robot will compile this project and upload it to Pypi.

Others

This project is licensed under MIT LICENSE.

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

bedrock_chunk_diff-0.0.3.tar.gz (10.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bedrock_chunk_diff-0.0.3-py3-none-any.whl (10.8 MB view details)

Uploaded Python 3

File details

Details for the file bedrock_chunk_diff-0.0.3.tar.gz.

File metadata

  • Download URL: bedrock_chunk_diff-0.0.3.tar.gz
  • Upload date:
  • Size: 10.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for bedrock_chunk_diff-0.0.3.tar.gz
Algorithm Hash digest
SHA256 ba5547c08466a8b5374900cde5d92202f741c0ab8014f67001a2eb6cecfaf771
MD5 65de6cd0bdadeb35d0d8dbaac8884967
BLAKE2b-256 cc3dace4b9de8ffa7da1352389c4823a2f0ad81e04b2a6e8c6d5f5451196c3c6

See more details on using hashes here.

File details

Details for the file bedrock_chunk_diff-0.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for bedrock_chunk_diff-0.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2fdc0f0204c56effd5a3477ad1b9d6ba677e0fcdcdc161c1927f5d5d397af51a
MD5 c24795b1b5d905ae008b8ac663155a57
BLAKE2b-256 1afaf5fc4d69adaa430578cf7599b5f0eea47918152a42ebb10ad5898809f56d

See more details on using hashes here.

Supported by

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