Minecraft Java版 26.1 以降のワールド/NBTファイルを 複数の言語で同一に読み書きするライブラリのドキュメントです。
まずどこを読むか:
| 目的 | 読むもの |
|---|---|
| 何ができるのか知りたい | 機能一覧 |
| とりあえず動かしたい | はじめに |
| 使い方を調べたい | ガイド |
| 他の言語版の対応するAPIを知りたい | API対応表 |
| 自分で実装・移植したい | 仕様 |
| なぜその設計なのか知りたい | 設計判断の記録 |
- 機能一覧 — 機能 × 全言語の対応マトリクス
- 01. NBT の読み書き
- 02. SNBT
- 03. リージョンファイル (.mca)
- 04. ワールドと level.dat
- 05. ブロックとバイオーム
- 06. エラーと安全上限
- 07. バージョンポリシー
- 00. 共通規約
- 10. NBT バイナリ形式
- 11. SNBT
- 20. Anvil リージョン形式
- 30. チャンク形式
- 31. パレット付きコンテナと BitStorage
- 40. ワールドのディレクトリ構成
- 90. 適合性
- 実ワールドで検証する —
spec/tools/scan_world.py - 新しい言語を追加する
- リリース手順
- 変更履歴
- 0001. モノレポにする
- 0002. 命名は各言語のイディオムに従う
- 0003. ワールド形式で対応を判定する
- 0004. Heightmap と光源の再計算は行わない
- 0005. 全言語で共通のエラーモデルを使う
- 0006. SNBT はバイナリへ写せる範囲だけを扱う
- 0007. TypeScript では i64 に bigint を使う
- 0008.
session.lockの確認は言語ごとにベストエフォートとする - 0009. 公開APIの抽出は静的解析で行い、API 対応表は生成する
実装より先に spec/ に仕様を書き、各言語はそれを実装しています。
どの言語版でも同じ入力から同じバイト列が出るかは適合性テストが確かめていて、
機能一覧が実装からずれていないかも CI で見ています。
Rust のツールで書いたワールドを Java のプラグインで読む、といった場面で、 ライブラリごとの違いに悩まされずに済むのが狙いです。