OrangeNBT 更新等 07/26

厳しい戦いだった……

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

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

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

https://github.com/noto0648/OrangeNBT/commit/46e833f0ad7cb7543b43f344365a6214e51ec3f4

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

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

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

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