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以前とどのようにしてうまく切り替える機能を追加するかを模索中。

1.13でワールドのフォーマット変わったんだよな~~w

標記通りです。
具体的に言うと、Section[:list]部はblocks[:bytearray]の配列が廃止され、パレット方式となりました。
Pallets[:list]にパレットデータが格納され、BlockStates[:compound]にステートIDが書かれています。ちなみにBlockStates[:longArray]はlong配列です。1long値につき16blockが格納されていると思われます。longは64bitなので、おそらく16bitでしょう。メタデータも書かれていませんすべてプロパティーに変更されています。
パレットの要素がName[:string]とPropertis[:compound]です。

HeightMapが増えたため、HeightMaps[:compound]に格納されています。ライトマップや水のしみこみ??みたいなマップが格納されています。これ、あれですねもし別のライブラリでやるとしたら計算がしんどいめんどい。

IsTerrainPopulated[:byte]が見つからない。なんかStatus[:string]に変わったかな???ていうか文字列で管理するのなんなの……(文字列管理嫌悪派

なんかよくわからんListがいっぱいありますね。真相は自分の目で……

たいへんそうです。

OrangeNBT 修正等07/07

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

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

OrangeNBT20180707

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

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