こちらはPCゲーム「Minecraft」のMod作製日記です。
Minecraft.1.12.2でのMod作製の作業進捗を書いています。
Minecraft.1.12.2での完成を目標としていますが、Minecraft.1.13の仕様によってはそちらへ移行してからの完成を目指すかも知れません。
[要素も充実してきた]
Mod作製の進捗を、ずっと書かずに進めてて、久しぶりに書こうとしたら、バージョン(0.6.60)まで来てしまってたw
初めてのアップロードから一年近くも間が開いての日記・・・
これまでの追加内容や修正内容がかなりの数になるけど、この後リリースする予定の(0.6.60)で出来る事を書いていこう。
最初のアップロードからJavaの方の扱いも慣れてきて出来る事が多くなってきた。
例えばif文しか使えなかった頃に書いた無駄に長い記述をfor文やswitch文を使って簡略化したり、アイテムの登録をしやすくするために引数を加えてみたりとか。
最初に作った処理は解説をしてくれている外国の動画を視ながら作ったものだったから、それと同じ書き方でアイテムやブロック、エンティティを登録していたけど、Javaに慣れてくるにつれて、自分のやりやすい記述に書き換えたり、追記したりできるようになったから後で数値を変更するのも楽になった・・・はずw
今回のアップデートでユニークゴーレム以外のゴーレムの装備を少し追加して、それに合わせて元々、追加済みだったユニークゴーレム用の装備も記述を書き換えた。
最近覚えた「列挙型」(Enum)を使って、武器同士の能力の比較や修正をする時に見やすくしたのと、武器に「Material」と「Type」をEnumで記述。
これによってアイテムを登録する時に、「アイテム名、素材、タイプ」の3つを入力するだけで武器毎の能力を自動で計算して追加してくれるようになった。
Enumを使うのは元々、アーマーのクラスに書いてあったのを見つけて読み解いて、使い方を覚えたから、Javaが使える人は初めから使ってるんだろうねw
なんだかんだで、追加出来た要素は・・・
・Item(アイテム)
・Block(ブロック)
・TileEntity(タイルエンティティ)
・Entity(エンティティ)
・AI
・GUI
・EntityProjectile(矢、スプラッシュポーションなどがコレ)
・Fluid(液体)
・Tank(液体タンク)
・Enchantment(エンチャント)
・Structure(構造物)
・Config(コンフィグファイル)
書いてみると、結構たくさん作ってたw
少しずつ試行錯誤を繰り返しつつ作ってきた物たちが集まってるから多くても、おかしくはないけど、Javaが読めない状態から考えたら、よく出来たもんだと自分でも関心。
アイテムやブロックに関してはあまり多くないし、凝ったものも無いから簡単。
エンティティ関係の追加が本文だから、エンティティやそのAI、今回作ったGUIが大変だったかな。
以前はユニークゴーレムのモデルのクラスにに武器や盾のモデルも記述してあって、エンティティ側からの情報で、「装備しているか?」を読み取って装備のモデルの描写のon/offを切り替えてたけど、今はちゃんとメインハンドやオフハンドにアイテムを装備させる処理と、装備しているアイテムをゴーレムに描画する処理が出来たから、持たせるだけでok。
武器に設定した攻撃力も、盾に設定したダメージのカット量も持たせるだけで反映させられる(盾のダメージカットはオリジナルで処理を作った)。
更にユニークゴーレムしかできてないけど、インベントリとGUIを追加。インベントリは少し前のアップデートからあったけど、GUIは今回から。
GUIの追加に伴って、ゴーレムのインベントリを作り直して、「インベントリ、武器、盾、アーマー」とスロットを分けてみた。
これには少してこずったけど、おかげでGUIから装備の受け渡しが出来るようになって、わざわざスニーク状態で右クリックしなくても大丈夫なった。
ただ、ユニークゴーレムの武器は、バニラのアイテムを渡すと、それに対応した武器に変換されて装備させられるようにしてたから、変換後の武器はGUIから操作できるけど、バニラのアイテムは、手渡しでないといけないw
GUIに装備変換用のスロットを追加する予定。
他にも初期の頃は殴るしかできなかった他のゴーレム達も、少しだけど出来る事が多くなってる。
作物の収穫や種付け、ドロップアイテムの回収やブロックの破壊もできる。ただ一部の作業は、あえて使いにくくしてある。
ゴーレムは単純な作業しか出来ないっていうイメージを残したいから、作業を分担させたり、他の要素と組み合わせて使う様に遊んでもらいたいかな。
例えば、追加されているアイテムに「ルーン文字」があるけど、今のバージョンだと「Nied(ニード)」のルーンをゴーレムに張り付けると、ドロップアイテムを拾ってくれるけど、その後は何もしてくれないので、右クリックで受け取る必要がある。
これだけだと、ドロップアイテムの消滅を防ぐ以外に便利でもなんでもないから、一工夫が必要。
アイテムを拾ったゴーレムはホッパーの上を通過すると、持ってるアイテム落とす様になってるから、アイテムを拾った後にホッパーの上を通過させるような工夫をすると回収が自動化できる。
水流で回収するのといい勝負だけど、使い方によっては便利になるかもしれない。
ブロックの破壊もまだ制約が多い状態。これから修正や追加をしていく予定だけど、まだまだ時間がかかりそう。
ブロックの破壊は範囲を指定できないようにしてあるから、ゴーレムの周囲の破壊可能なブロックを手当たり次第に破壊していく。
土ブロックを撤去するのにはいいかなって程度にとどめてある。
ちなみにブロック破壊は「Hagall(ハガル)」ルーンだけど、用もなく「Rad(ラド)」のルーンと組み合わせてはいけない。
Radのルーンを付けると、フォローをしなくなって自由行動をしだすから破壊可能なブロックを破壊しながらどこかへ行ってしまうw
変更予定の部分や仕様の変更もあるから、ある程度出来てくるまで解説などが書けないのが痛いけど、アップデートする時には、変更内容を公開先のサイトに載せてるから大丈夫かな。
ユーザーからの要望にあった「儀式」も作りたくて考えてるけど、まだ未完成。
今回のアップデートで儀式や魔法的な要素に関わるエネルギー的な(マナみたいな?)のを運ぶためのエンティティを追加してみた。
肝心の要素が出来てないから、このエンティティは何もしてくれないけど、とりあえずサッカーボールみたいに転がす事が出来るw
これを発展させて運べるようにしていく予定(作れたらw)。