資源用ディメンションを追加するMODを公開

うちのサーバーで使っていた資源用ディメンションを追加するMODを一般公開しました。

カスタムディメンションを追加するMODは幾つかあったけれど、重かったり不具合が多かったりアップデートチェックがOFFにできず、応答が遅いサーバーのお陰で不安定になったり・・・
ポータルを作らず単純にディメンションを追加するMODってないんですよね。
なので、作ったって感じですw

機能としては、ディメンションを1~2追加しディメンションを行き来できるテレポーターアイテムを追加するだけ。
ディメンションの地形生成タイプをデフォルト、フラット、ラージバイオーム、アンプリファイド、ネザー、エンドと指定できてシードの個別設定も可能。
エンドはおまけ・・で追加した程度の物なので、運が悪いと奈落へドボンw

テレポーターは使用した時点のワールドと座標を記録し、資源ワールド以外なら資源ワールドへ、資源ワールドなら資源ワールド以外で使用された座標へテレポートできます。
なので、通常世界の倉庫でテレポーターを使用して資源ワールドへ移動、そのあと資源ワールドから再度テレポーターを使うと通常世界の倉庫へ戻ってこれるって感じです。
更にテレポーターを使用すると、前回資源ワールドでテレポーターを使った地点に移動できます。

全然移動していないけれど、ちょっとした動画。

一応、向いている方向も記録されるのでどっちの方向に進んでいたか・・もわかると思いますw
結構便利テレポーターなのです。

資源用ワールドなので、サーバーを止めてディメンションのフォルダを削除すればまた再生成可能です。

需要があれば使ってみてくださいー

Minecraft v1.7.10用MOD公開!

前回の更新から1年ぐらい開いちゃいましたけど・・Minecraft v1.7.10に対応しました。

今回対応したMODは
 Halogen Light、Animal Blocks、Marble Blocks、Fullcolor Blocks、More Fences、Fence Slab(新規MOD)

今後1.7.10への対応予定があるMODは
 Selectable Paintings、Country Filter

今回から更新を停止したMODは
 Column、Multislab、More Material Blocks
って感じになります。

もう知ってる方は多いと思いますが、全MODのバージョンを初期化しました。
これは移植の際にコードが変わってる部分が多かったので、位置から作り直しちゃえ!ってことでコードを書き直したからです。
もちろん全く移植無しではないんですけどねw

あとv1.6.4まではMOD毎にTileEntityを登録していたのですけど、今回はTileEntityを見直して前提MODで登録し全てのMODを同じTileEntityで管理するようにしました。
MODを抜いたときにログにでる「TileEntityをスキップした」ってうざいログはでません。
前提MODを抜けばでるかもだけど・・w

あと若干Javaの本を読み直したのでコーディングする時も常に最適に動くようにしてみました。
例えば前回のString+Stringの連結だったり、数字のif-elseが3回以上続くならswitchの方が軽量で高速であるとか、for(int i=0;i<array.length; ++i)よりfor(int i=0, max=array.length;i<max; ++i)の方が高速である等・・・
ちゃんと読めば色々書いてあるんですよねー

今後は気付いた範囲でコードを最適化して少しでも軽く軽快に動くように作ってみようと思います。

Minecraft v1.7.10 MODほぼ完成

Minecraft v1.8.xから作るつもりだったけれど1.7.10で作ってしまった。
全部ブロック関連のMODなのでv1.6.4から楽に移植できました。
今の所、Selectable Paintingsは全く手を付けていないのでどれぐらい変更が必要か不明って感じです。

移植したのはAnimal Blocks、Marble Blocks、Halogen Lightの3つ。
Minecraft v1.7.10 - Kerberos MODs 1

独自の前提MODが必要なのは以前と変更ありませんが、内部的には全然変わってきています。
以前の前提MODは単純にパケット関連と共通のキー管理だけでしたけれど、今回はブロックのベース部分もあります。
TileEntityを汎用性の高い物にしたので1つのTileEntityで複数のMODを管理できるのもよさげ。

Halogen Lightはレシピのコストを軽減し、Marble BlocksはモミジMODが導入されていればモミジMODの大理石から作成可能になるようにしました。
あと新しいMODでフェンス用半ブロックを追加するMOD、Fence Slabを用意しました。
Minecraft v1.7.10 - Kerberos MODs 2
これはdefeatedcrow氏のMODからコードを頂きました。

あと久々に読み直したJavaの本にStringの連結にはString+StringよりStringBuilderの方が低メモリ消費&高速である事が書かれていました。
少ない文字連結でも威力を発揮するそうです。

String a = "my name is ";
String b = "lambert";
String c = a + b;

より

StringBuilder s = new StringBuilder("my name is ");
s.append("lambert");
String c = s.toString();

のほうが良いと言うこと。
今まで普通に前者で連結してたよ・・・w

レンダリング時のfpsの分だけ呼ばれるItemクラスのaddInformationメソッドなんかは効果バツグンだろうなー
少しでも低負荷なMODを作ってみようと思います。(TileEntity乱用してる時点で矛盾してるわけだけど・・w)

と言うことで、色々最適化や細かな修正をして煮詰めていけば公開できそうです。