OrangeNBT 修正等06/02

Cuboid/BlockPosにてOverFlowする問題を解決。

null非許容型がほしい。ください。

SNLはまだ直してません。

OrangeNBTはオープンソースで自分でビルドもできるので、バグを見つけたらぜひ、解決策も示していただけるとめっちゃはかどる。(自分でやれ)

https://github.com/noto0648/OrangeNBT

OrangeNBT20180602

TODO:
BE対応
Chunk破損でリスト失敗→チャンクコードのみを吐く関数を提供
ChunkCoordのコンストラクタの引数がx,y
ChunkCoordのToString書く。

OrangeNBT 修正等 06/01

OrangeNBT

schematic追加しました。
World.Loadが使えないバグを修正しました。
Json関連も修正しました。

一部ネームスペースが変更となっています。Worldに含まれてたもので共通化したいものをDataの方へ移動させました。

ダウンロード:
OrangeNBT20180601

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

Readmeかかねば。

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

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