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

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

OrangeNBT更新等06/22

OrangeNBT更新等06/22

・Structureファイル動きます(おそらく)(未テスト)(デバッグで差をつけろ)
・Anvilのデータめっちゃ書いた。

https://github.com/noto0648/OrangeNBT

OrangeNBT20180622

使ってくれる人に感謝を。

以下おまけ

いただいたLevelDB-MCPEをdumpbinしてみたのですが、Cppでコンパイルしたんですかね。Cの関数名が化けてが見つからないんですよ。
Cppだと名前化けて呼び出せないんですね。DLLImportは、クラスのインスタンスメソッドは呼び出せないんですね。というか配布されてるやつは全部Cの関数名化けるんですかね?
(なんかすいません)

一応PCの奥底からdll引っ張りだしてきたりしてて一応動くもの作ってる感じなんですけど、うまく呼び出せないというか、まずwikiに書いてあるformatがなんか古いんですかね? SubChunkの長さが不変な感じでどう読んだらいいかさっぱりなわけなので、先に解析しようと思ったわけなんですけど、あれですねBE版って座標見れないんですね。デバッグクソ大変ですわ。

がんばるぞい。

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

.NETのLevelDBのライブラリについて考える

OrangeNBTの実装に向けての検証とテスト等

LevelDBはgoogleが開発したSQLiteみたいなデータベースです。MinecraftのBedrock版でワールドの保存に使われてます。C#で実装しなおすのは極めて車輪の再発明です。ライブラリがどれがいいのか考えるだけの記事です。

LevelDBはCでの実装が公式に公開されてます。https://github.com/google/leveldb
.NETでは動きません。DLLImport等使えば動くと思いますけど……。

理想のライブラリの条件を上げましょう
・追加のDLLいらない。NativeDLLもできればいらない。
・ソースコードのまま導入できる。いわばオープンソース
・.NET Standardで動いてほしい。動かなくても改造可なら改造する。
・ライセンスにソースコードの開示を求める条項がないこと。このライブラリの利用者もおそらく継承されるため
・別に高機能は求めてない。低レベルでもいい。うごけばそれでいい。

ざっとググってみた限り以下のライブラリを見つけたので検証していきます。
LevelDB.NET
https://github.com/neo-project/leveldb
ライセンス:BSD-3。(可)
githubを見る限りcppファイル等しかない。下記のReactiveExtensionのことでしょうか?

LevelDB sharp
https://github.com/meebey/leveldb-sharp
ライセンス:BSD-3。(可)
ネイティブDLLの使用:あり(unix等で動かないっぽい?)

ReactiveExtension LevelDB
https://github.com/Reactive-Extensions/LevelDB
ライセンス:Apache License, Version 2.0(可)
ネイティブDLLの使用:あり(厳しい)

IronLevelDB
https://github.com/tg123/IronLeveldb
ライセンス:MIT(可)
ネイティブDLLの使用:なし
しかし、githubのREADMEをよく読むと、「This project is still under hard working」このプロジェクトはまだ作業中みたいなこと書いてあるし、読み込み関数しかまだ書いてないぜ見たいこと書いてある……。むむむこれに期待したいけど……厳しい。

Nugetの上位のそれっぽいやつもリンク切れてたり。ライセンスがよくわからなかったり……

そもそもMOJANGのLevelDBは若干改造されたやつである。圧縮方法がどうも違うらしい。
https://github.com/Mojang/leveldb-mcpe

うううむ……どうしようか。
.NET Standardにするとやはり、ネイティブDLLはない方がいいわけで。(うざい・使いにくい・各自コンパイル面倒くさい64bit/32bitでも変わる)

やはり……車輪の再発明しちゃう?

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かかねば。

XamarinでVisualStudioがエラー出た

標記通り。

Xamarinでアプリ作ってるんですが、ソリューションエクスプローラーのところから、新規追加でコンテンツページの追加を押すと、ちょっと固まってから、System.Exceptionが発生しましたって出た。なんだこれ。

xamlとxaml.csファイルどっちもできているようですが、xamlのリンクができてないので、InitializeComponentが赤線になってた。あるあるですね。

現状、projitemsを編集して xamlとリンクさせてるんですがとても面倒くさいですね。

プロジェクトのリビルドすればまあ治ると思うのですが……。

ところで、最近ついにSSDに変えたんですが、音がしなさ過ぎてちょっと不安になります。すごく早いですけど。僕はまだHDDでいいや。データ消えるのもちょっと怖い