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/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

以上!

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

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