A data compatibility project for Minecraft's assets

Overview

Data Compat MC

Join on discord!

Data tool for the Falcon MC project.

Description

DataCompatMC is a cli tool designed to help deal with the many different versions of Minecraft. Its main purpose is measuring and fixing compatibility between protocol-defined values for the different assets in the game.

Features

We aim to support two main operations:

  • Provide compatibility support between different schematic versions
  • Autogenerate conversion code for the different protocol versions of FalconMC

Currently this tool only parses generated block data by the Minecraft data generators and compacts it down to a lossless, minimal format.

Usage

Clone the project and build it using cargo build --release. Use data-compat-mc --help for further information.

Contributing

Please feel free to help out in any way possible.

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as below, without any additional terms or conditions.

License

Licensed under either of

at your option.

You might also like...
Rust SDK for working with RIS-Live real-time BGP data stream.
Rust SDK for working with RIS-Live real-time BGP data stream.

ris-live-rs Provides parsing functions for RIS-Live real-time BGP message stream JSON data. The main parsing function, parse_ris_live_message converts

Bevy is a refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

🍖A WGPU graphics pipeline, along with simple types used to marshal data to the GPU
🍖A WGPU graphics pipeline, along with simple types used to marshal data to the GPU

renderling 🍖 This library is a collection of WGPU render pipelines. Shaders are written in GLSL. shaderc is used to compile shaders to SPIR-V. Defini

Provides a mechanism to lay out data into GPU buffers according to WGSL's memory layout rules

Provides a mechanism to lay out data into GPU buffers ensuring WGSL's memory layout requirements are met. Features supports all WGSL host-shareable ty

Generic and extensible egui widgets to create analog synthesizer-like UI with data-oriented API
Generic and extensible egui widgets to create analog synthesizer-like UI with data-oriented API

egui_cable A generic and extensible data-oriented widget for connecting ports by cables. I create this for the visual programming editor of Hihaheho/D

A library for spatial partitioning of 3D data.

Eightfold A library for spatial partitioning of 3D data. Built with nalgebra. Not yet fit for actual use; wait until 1.0.0. Feature Flags spatial :: [

A data compatibility project for Minecraft's assets

Data Compat MC Data tool for the Falcon MC project. Description DataCompatMC is a cli tool designed to help deal with the many different versions of M

Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

Web 3.0 Realized with Traceless Privacy and Seamless Compatibility

Automata Build On Ubuntu/Debian (or similar distributions on WSL), install the following packages: sudo apt-get update sudo apt-get install -y build-e

A new operating system kernel with Linux binary compatibility written in Rust.
A new operating system kernel with Linux binary compatibility written in Rust.

Kerla Kerla is a monolithic operating system kernel from scratch in Rust which aims to be compatible with the Linux ABI, that is, runs Linux binaries

Avro schema compatibility checker

DeGauss Your friendly neighborhood Avro schema compatibility checker. Install cargo install degauss Example Check the compatibility of your schemas d

Lists Steam applications that have specified a Steam Play compatibility tool

proton-usage Lists Steam applications that have specified a Steam Play compatibility tool. Useful for when you want to remove/uninstall unused compati

OpenSSL compatibility layer for the Rust SSL/TLS stack
OpenSSL compatibility layer for the Rust SSL/TLS stack

An OpenSSL compatibility layer for the Rust SSL/TLS stack. MesaLink is an OpenSSL compatibility layer for the Rust SSL/TLS stack, namely rustls, webpk

A compatibility layer to smooth the transition between different versions of embedded-hal

Embedded HAL Compatibility Layer A compatibility layer to smooth the transition between different versions of embedded-hal (specifically 0.2.x and 1.0

Fast KubeJS script manager. Includes version control and compatibility with KJSPKG packages.
Fast KubeJS script manager. Includes version control and compatibility with KJSPKG packages.

CarbonJS A KubeJS script manager Features 🔥 Super fast ⚙️ Version control 📁 Constantly new scripts being added ✅ Easy to use 🧱 Compatibility with K

CLI tool for checking ProtonDB compatibility of your Steam games.

protondb-check protondb-check is currently in active development stage, there might be bugs or other problems. Table Of Contents About Available comma

Easily embed and manage assets for your web application to build standalone-executables. Offers filename hashing, templating and more.

reinda: easily embed and manage assets This library helps you manage your assets (external files) and is mostly intended to be used in web application

A frontend to Assets purchased on Epic Games Store
A frontend to Assets purchased on Epic Games Store

Epic-Asset-Manager A frontend to Assets purchased on Epic Games Store Current Screenshot Install Arch Linux Use the AUR package Build flatpak meson _b

bevy_blender is a Bevy library that allows you to use assets created in Blender directly from the .blend file
bevy_blender is a Bevy library that allows you to use assets created in Blender directly from the .blend file

bevy_blender bevy_blender is a Bevy library that allows you to use assets created in Blender directly from the .blend file.

Comments
  • MetaData and

    MetaData and "info" command

    It would be beneficial if there existed an info command that could display some stats about data in the intermediary format.

    The protocol version, display name and optional note will be stored in a new struct called MetaData. This data will be stored under the field name metadata.

    Things I'm thinking about:

    • [x] protocol version
    • [x] display name (defaults to protocol version if none is set)
    • [x] optional note
    • [x] amount of blocks and properties (per type)
    • [x] healthcheck to make sure there are no gaps in blockstate ids
    opened by GrizzlT 0
  • Restructure cmd code to separate module

    Restructure cmd code to separate module

    Previously, the intermediary command was inside the blocks::intermediary module. This isn't very useful when thinking of the goal of not only supporting blockstates. Hence this pull request moved this command into a separate crate::cmd module.

    opened by GrizzlT 0
  • Cleanup of current prototype -> Docs and unit tests?

    Cleanup of current prototype -> Docs and unit tests?

    Currently, the deserialization of the raw data uses some very complex types (Option<LinkedHashMap<&str, Vec<&str>, RandomState>> for example). This pull request is meant to better abstract this away and provide a more readable implementation of this deserialization.

    These are the required steps:

    • [x] The subdirectory modern under raw isn't required yet until we have a good plan how to tackle 1.8-1.12.2 versions, I would remove this folder for the time being
    • [x] There is currently a Deserialize implementation for RawBlockList. This data is again a quite complex type and should be abstracted away. I would also like RawBlockList to be pretty much equivalent to ModernBlockList so the conversion is instant.
    • [x] Ideally we should implement some unit tests for all the deserialization and parsing.

    With the discovery of DeserializeSeed I see a lot of room for improvement of the current code:

    • [x] Instead of manually checking for property collisions after deserializing, this should happen during deserializing.
    • [x] Instead of applying property collision rules after deserializing, these rules should be applied during deserialization.

    The way a block list generated by Minecraft should be processed by the intermediary command is the following:

    1. Check if a rule file was given as an option
    2. Deserialize the data into a list of property collisions, (using the provided rules if present)
    3. If there are collisions present, display these and exit
    4. If no collisions are present, deserialize the data into the compact format, (using the provided rules data if present)
    5. Write the compact format to the output (console or file) and exit
    opened by GrizzlT 0
  • The compare subcommand

    The compare subcommand

    This subcommand should be able to compare two data versions (block data for now).

    A few requirements:

    • [x] one directional comparison (i.e. from a version to another version)
    • [ ] easy to read summary of the incompatibilities
    • [ ] interactive menu for specifying compatibility fixes (although I think it's better if that was done in a different pr, feels like a separate topic to me)

    First gonna figure out the ways block data can cause incompatibilities and list these here as well.

    opened by GrizzlT 1
Owner
GrizzlT
I love coding and helping people out! Don't hesitate to ask questions or ask about helping in any of my projects!
GrizzlT
A frontend to Assets purchased on Epic Games Store

Epic-Asset-Manager A frontend to Assets purchased on Epic Games Store Current Screenshot Install Arch Linux Use the AUR package Build flatpak meson _b

Acheta Games 202 Jan 3, 2023
Decryption tool for assets.pie from Teenage Mutant Ninja Turtles: The Cowabunga Collection. This tool was made in its entirety by SowwyItsAnAlt.

Cowabunga Decryption tool for assets.pie from Teenage Mutant Ninja Turtles: The Cowabunga Collection. This tool was made in its entirety by SowwyItsAn

Masquerade 8 Dec 22, 2022
Adds support for wasm/wat assets in Bevy, and enables easier scripting

bevy_wasm_scripting Adds support for wasm/wat assets in Bevy, and enables easy scripting. This is enabled through the wasmer crate. Prepare for public

null 9 Dec 20, 2022
A lightweight standard for non-fungible assets.

Nifty Asset A lightweight standard for non-fungible assets. Contents Features Overview Packages Building Testing Programs Clients CLI License Warning

null 14 Mar 6, 2024
My first Real-Time 3D Game Engine learning project written in Rust.

EyeEngine-Rust FOA, sry for my poor English. What is Eye Engine? Eye Engine is my first Real-Time 3D Game Engine learning project. There are two editi

F-seeeye 4 Jan 5, 2022
The OpenTimelineIO crate is maintained by the vfx-rs project

opentimelineio-bind Rust binding for OpenTimelineIO library The OpenTimelineIO crate is maintained by the vfx-rs project Supported Platforms OpenTimel

null 4 Nov 2, 2022
UnoLife is a project made solely in rust for the Timathon jam.

UnoLife, the way of unordinary life This is the perfect app for anyone looking to spice up their life! It has a bunch of apps and features to help you

Bunch-of-cells 9 Nov 23, 2022
Facilitate the process of creating a decompilation project for a given Wii/Gamecube game

dadosod Facilitate the process of creating a decompilation project for a given Wii/Gamecube game Features Disassembly DOL Guess/Calculate common secti

Wesley Moret 7 Dec 7, 2022
A hoptastic game. Joint project with Spicy Lobster.

Hoppy A Gamercade game. A WIP Game based on Jump 'n Bump and Super Mario War. The game rom .gcrom can be played using the Gamercade console The editor

null 4 Sep 21, 2022
A refreshingly simple data-driven game engine built in Rust

What is Bevy? Bevy is a refreshingly simple data-driven game engine built in Rust. It is free and open-source forever! WARNING Bevy is still in the ve

Bevy Engine 21.1k Jan 4, 2023