OrangeNBT 更新等 08/01

もう8月だぞ……、いいのか?

追加
BlockDataFixerを追加しました。

修正
DenseArrayワールドがバグる
Schematic、IdとMetadata逆だった。
なんかJsonのシリアライズバグってた

OrangeNBT20180801

ワールドSaveするときは現状ではちゃんとデータバージョン入れてください。
多分1.12のワールドでやるとバグるかもしれんので、1.12の時はちゃんと、1400番台の番号を入れとくように。
後で治します。というかセーブの引数廃止予定。

1.12から1.13の変換は対応しないことにしました。仕様です。せっかくなのでゲームを起動してあげてください。

注意!!!!!BlockDataFixerはだいたいの変換をサポートします。辞書に収録されているやつしか変換できません!!!
たまに変換バグるのも許してください。
正しい変換はMinecraftゲーム本体で変換することを推奨。

BlockDataFixer.GetNewBlock();だったかな。

辞書の量が大きいのでクラスを読み込むと一気にメモリ使用量増えるかもしれません。すまん。

OrangeNBT 更新等 07/26

厳しい戦いだった……

・なんかめっちゃ追加された。
・ワールド恐らく読み書きできます。SetBlock(); GetBlock();を使って下さい。
・1.13の辞書が追加されました。(BlockIdは)ないです。

これから直すとこ
・BlockSetの需要めっちゃ高いのにインスタンス生成しにくい。

まだまだ不安定な気がするのでバンバンフィードバックを頼むぜ!
OrangeNBT20180726

Commit情報

パレット方式闇すぎる……めっちゃ圧縮されたデータフォーマットになりました。(洗練されているとは言っていない。
プログラムからは正直扱いにくい希ガス。
long型(64bit)を最大限利用するために、パレットの大きさ(チャンクセクション内のブロックの種類)が16までだったら、4bitで保存されている。ゆえに1つのlong型に16ブロックの情報が書き込めるってわけ。まあ、まだ4bitならまだいいんですが、5bitになると、頭おかしい。longの配列に保存されるため、2つの変数をまたぐ。?????めんどくさすぎた。おかげでbit処理が結構うまくなったと思います(白目)。でもまだ不具合ありそう。

Heightmapはまだ知らん。解析終わるまで待とう。
フェンスや階段みたいなブロックは、水につかるフラグみたいなプロパティ値で管理されている。metadataが16までない状態だと明らかに無理だったもんね。仕方ないね。ワールドのロードが遅くなるのは仕方ないと思います。

ついでにバイオームの配列もbyte型からint型になったのでめっちゃ増やせる。ブロックも理論状めっちゃ追加できる。すげえな。やっぱり。

dllのサイズがめっちゃ大きくなったのは1.13の辞書のせいです。ごめんなさい

OrangeNBT 何もしてない 7/22

追加:
BlockSet、AnvilChunkImproved(1.13専用~

修正:
HelperにGetLongArray追加した。
GetBlockId、SetBlockId、GetBlockData、SetBlockData廃止してGetBlockとSetBlockのみに

次ぐらいでBlockSetのMetadataとBlockのIdをObsoluteにするかもしれん。

なんか言葉で説明するの面倒なので、push履歴みてくれ
https://github.com/noto0648/OrangeNBT/commit/71fc0d5ff68c45a6780603df34ae3c919cd9f87d

バイナリはありません。まだ動きません。何故かって?1.13のブロックの辞書が搭載されてないからだ。
1.12以前とどのようにしてうまく切り替える機能を追加するかを模索中。

OrangeNBT 修正等07/07

デレステのイベントやるのを忘れていました。悔しい。

・streamの途中からでも読み込めるようになった
・Bedrockのための拡張等

OrangeNBT20180707

github:
https://github.com/noto0648/OrangeNBT

いつの間にか七夕ですね……。完成しますように……。念力でプログラミングしたい

OrangeNBT更新等06/22

OrangeNBT更新等06/22

・Structureファイル動きます(おそらく)(未テスト)(デバッグで差をつけろ)
・Anvilのデータめっちゃ書いた。

https://github.com/noto0648/OrangeNBT

OrangeNBT20180622

使ってくれる人に感謝を。

以下おまけ

いただいたLevelDB-MCPEをdumpbinしてみたのですが、Cppでコンパイルしたんですかね。Cの関数名が化けてが見つからないんですよ。
Cppだと名前化けて呼び出せないんですね。DLLImportは、クラスのインスタンスメソッドは呼び出せないんですね。というか配布されてるやつは全部Cの関数名化けるんですかね?
(なんかすいません)

一応PCの奥底からdll引っ張りだしてきたりしてて一応動くもの作ってる感じなんですけど、うまく呼び出せないというか、まずwikiに書いてあるformatがなんか古いんですかね? SubChunkの長さが不変な感じでどう読んだらいいかさっぱりなわけなので、先に解析しようと思ったわけなんですけど、あれですねBE版って座標見れないんですね。デバッグクソ大変ですわ。

がんばるぞい。

OrangeNBT更新等06/10

更新しました。

fix
ListChunkCoordがマジメになった
IChunkManagerのContainsが追加されました。やりました!

add
Dataの方にIGameDataProviderとかいうわけわからないやつが追加された

次ぐらいで.nbt/structure対応できるかと思います。
以上

OrangeNBT20160610

OrangeNBT.Bedrockっていう名前でいこうと思ってるんだけど、ほかに良い案あったら教えてください。
OrangeNBT.PEやOrangeNBT.BEなんかもありかなと思ってますけど。

(メモ)VisualStudioでコンパイルできるmojangのleveldbの奴のリンク
https://github.com/jocopa3/leveldb-mcpe

OrangeNBT 修正等06/03

もはやデイリーアップデート状態。

-修正
AnvilChunkManagerの破棄がたまに失敗する問題
ディメンションの新規作成時にフォルダが完全に空だと失敗する問題
ChunkCoordのコンストラクタの引数がxyだった問題

-追加
ChunkCoordがToStringできる
IChunkManagerに ListAllCoordsという謎の関数を追加した。
AnvilWorldにAddDimensionというよくわからない関数を追加した。(仮)

OrangeNBT20180603

以上!