OrangeNBT使い方1

Schematic/Structureの実装に悩んでます。どうも。

SNLでNBTTagなんたらはOrangeNBT.NBTにあります。

・初期化など

var tag = new TagCompound()
{
new TagInt("DataVersion", 1),
new TagCompound("Level")
{
new TagInt("xPos", _coord.X),
new TagInt("zPos", _coord.Z),
new TagLong("LastUpdate", DateTime.Now.Ticks),
new TagByte("V", 1),
new TagByte("TerrainPopulated", (byte)(_isTerrainPopulated? 1 : 0)),
new TagByte("LightPopulated", (byte)(_isLightPopulated? 1 : 0)),
new TagIntArray("HeightMap", _heights),
new TagByteArray("Biomes", _biomes)
}
};

TagCompoundのクラスにはAdd(val)関数は実装されていません。
using OrangeNBT.Helper;
ってやるといろいろ追加されます。拡張メソッドで定義されています


using OrangeNBT.Helper;
c._heights = level.GetIntArray("HeightMap");
c._isTerrainPopulated = level.GetBool("TerrainPopulated");
c._isLightPopulated = level.GetBool("LightPopulated");

ところで、アルファ版というかDev版は破壊的変更し放題ですね。最高。ネームスペースが突然変わったり引数が増えたり減ったりします。

LongArrayもあるので使ってね!(いつから追加されたのだろう)(使い用途不明)(コマンド用?)

https://github.com/noto0648/OrangeNBT

Githubに上がってます。気になったところは教えてください。
ちなみにいつになってもgit苦手です。つらい。
またひと段落したらPushします

バイナリは前記事よりDLしてください。

bedrock版では、どうも1.4になってしまったようですね。よさそう。建築したいです。

OrangeNBT

OrangeNBTはなぜ生み出されたのか。
OrangeNBTの発表自体今からだいたい2年前くらいに発表しました。
しかし、1年ぐらい放置してました。

SNLの代わりになるものを目指してるわけではありません。
汎用のNBTライブラリを目指して作られています。

OrangeNBTの改善点!
SNLはそもそもぼくのNBTエディタの内部コードをもとに作られたライブラリです。したがって数年前の産物でありコードが汚い。読めない。それをつぎはぎして改善してきたためとてつもなくわけのわからないコードを生み出してしまった。
おまけに僕はソースコードにコメントを書かない主義なので読むのに時間がかかる。(コメントなくても読みやすいコードを目指していた)
しかし、保守するのには限界がきた。僕にもわけのわからないバグもたくさん生み出されてきた。
そこで読みやすい保守しやすいコードを生み出すためにOrangeNBTという1から書き直しを行うことにした。

OrangeNBTのよいところ

  • .net Standard 2.0で書かれてる
  • 読みやすい
  • オープンソース(予定)
  • Bedrock Editionのデータ対応予定
  • ネームスペースわけがきれい

まだダメなところ

  • デバッグが完全ではないため動かないコード多数
  • まだ未実装のコード多数
  • まだSNLより機能が少ない
  • ワールドライティング未対応
  • Schematic/.nbtファイル未対応
  • TagCompoundのヘルパー機能がほぼない

課題

  • 現状dllが分かれているため統合するか検討中
  • ブロックデータアイテムデータ等の導入。ゲームのアップデートに追いつくのが大変

    OrangeNBTは一応最低限のNBTライブラリを目標にしているためSNLで実装されていた多くの機能は削る可能性があります。

    一人ではデバッグするのめんどい大変なため一応バイナリを公開します。
    ゆっくりまったりと開発を行います。

    OrangeNBT

    バイナリはデバッグコンパイルです。