TUSBBuildBattle完全勝利の巻

The Unusual SkyBlockv12.0.9を元にMinecraftのv1.12.2から18w22cへ移行する作業をずっと行っていましたが、
どうにもうまく行きませんでした
ですがSilverNBTLibraryとOrangeNBTにより勝利したので、その軌跡をここに記します。

症状

  • 1.12では読み込める
  • 1.13SSでは読み込めない(ログ生成せず、クライアントごとクラッシュ)

対策

ログも出ないので症状も全く分かりません、本当にお手上げでした。
しかし、以前からふと心当たりがあったことがあります。
それはThe Unusual SkyBlockが異常に重いことです。

-私のスペック-
Corei9
GTX1080Ti
RAM32GB

いくらコマンドがたくさん起動していて、モブが大量にスポーンしているからと言って、ここまで重くなるのはこのスペック的におかしいです。

ならば疑うべきことは、何かエラーが発生して、正常に処理できていないのではないか?ということ
そこで、私は抜本的にチャンクを再生成することにしたのです。

TUSBBuildBattle

全く同じThe Unusual SkyBlockのワールドデータ、AとBを用意します。

その次にMCEditを使い、Bのワールドの全てのチャンクを削除して、再度同じ座標にチャンクを再生成しました。
そして、自作ソフト(TUSBBuildBattle)でAのワールドからBのワールドにブロックだけを同じ座標に設置していきました。
しかしあれだけの規模のワールドなので、処理には3日ほど要し、やっとの思いで終了。
第一次TUSBBuildBattleが終わりました。

…そう、第一次、

もうお分かりかと思いますが、失敗しました…

敗北

理論的にはチャンクもきれいになり、TileEntityやEntityは除いた純粋なブロックデータのみが移植されたBのワールド。
これは絶対読みこめる!誰もがそう思っていましたが、結果は無念の敗北。
全く同じ状態でクラッシュしました。(ログも出ないので原因も不明)

栄光への架け橋

そんな敗戦濃厚の状況で、だれもがあきらめかけていたある日
私がふと愛用しているSilverNBTLibraryというマインクラフトの様々なデータを編集することのできるライブラリが、新しくOrangeNBTという名前で作り変えられていることを知りました(しかもなんとオープンソース)
SilverNBTLibraryとOrangeNBTはどちらも「のと」氏が制作なされた素敵なライブラリです。

OrangeNBTは基本的にSilverNBTLibraryのソースをきれいにした焼き直し版のような認識ですが、ソースをきれいにしたことである副産物が生まれました。

それは「OrangeNBTは厳密にチャンクを読み込むため、チャンクが破損していると読み込めない」ということでした。(SilverNBTLibraryは破損していても読める)
この副産物、使いようによっては、チャンクが破損しているかどうかがわかるのではないか?
私はそう考え、早速BのワールドをOrangeNBTにかけてみました。
すると、でるわでるわエラーチャンクの嵐!
実はMCEditで再生成したチャンクのいくつかが、破損していたのでした。
MCEditはとても便利なツールです。ですがチャンクの生成にはどうも向いていないようで、大規模なチャンク生成を行うと数回に1回破損することが確認できました。
そして、いままでチャンク生成をMCEditに頼っていたThe Unusual SkyBlock、Aのワールドも、破損しているチャンクがいくつかあることがわかりました!

TUSBBuildBattle 2回目

OrangeNBTのみでは、破損しているチャンクにおいてあるブロックを移植することはできません。
そこで、SilverNBTLibraryを使ってAのワールドを読込み、OrangeNBTへその値を渡してBのワールドをOrangeNBTが新規生成する方式を採用しました。
結果は良好(しかも処理も早い)
3時間ほどですべてのブロックがBへ移植されました。

敗北

全てのチャンクが正常化され、Bのワールドは完成しました。
そこで早速Minecraftで読み込んでみると、確かに読み込める!
と思ったのもつかの間、一定の場所でクラッシュ。
あーあ、また振り出しか・・・
そうあきらめた矢先、メンバーのMBRNさんがあることに気づきました。
MBRN「チャンクが正常化されて、ログがしっかり出るようになっている。今クラッシュしている原因はshulkerboxだ」
なんと、原因はshulkerboxでした。(チャンク破損ももちろん原因です)
そこで、自慢のOrangeNBTを使いshulkerboxをすべて削除。

結果は….

完全勝利

勝ちました!全く落ちません!
クラッシュしません!
最高です!
ありがとうのと氏!
ありがとうSilverNBTLibrary!
ありがとうOrangeNBT!
ありがとうMBRNさん!
ありがとうわかめさん!(TUSBBuildBattle手伝ってくれた)
ありがとうわこからさん!(TUSBBuildBattle手伝ってくれた)

度重なる偶然と、人々の支えがThe Unusual SkyBlock v13.0.0.0の制作を可能にしたのでした。

めでたしめでたし。

%d人のブロガーが「いいね」をつけました。