Minecraft1.12.2でMod作製 PART4. Mod作製の進捗状況

こちらはPCゲーム「Minecraft」のMod作製日記です。

Minecraft.1.12.2でのMod作製の作業進捗を書いています。
Minecraft.1.12.2での完成を目標としていますが、Minecraft.1.13の仕様によってはそちらへ移行してからの完成を目指すかも知れません。









前回のMod作製の記事から随分と間が開いたけど、止めたわけではなくて、牛歩ながらもコツコツ?とMod作製を進めていたわけで・・・

[違ったゴーレムの作製]

既に作り終えた自然にスポーンするゴーレムと別にMod「Doggy Talents」という犬を追加するModのように、初期スタートの時に1プレイヤーに1体だけ配布?される専用のゴーレムを作り始めた。

元々の目的がこれで、以前に作った野生?のゴーレムはこれを作る為の練習も兼ねていたわけで、少しずつだけでも作り始めようと、他のゴーレムと違うゴーレムを作り始めた。

「Doggy Talents」の犬の場合は最初に1匹スポーンアイテムが手に入り、2匹目以降は、バニラのオオカミに専用のアイテムを使って犬に変化させるか、2匹の犬を交配させて子供を作るかという仕様。

こっちのゴーレムは1プレイヤーに1体で固定。
とりあえず、ベースを作ってモデルも作りテクスチャはとりあえず・・・レンガにしてみた。

そして、他のゴーレムと差別化を図るために、不要な要素を消して、新しい要素を書き足していく。
相変わらずJavaが読み切れないので、バニラや他のModのソースを見ても、理解できない部分も多いけど、それでも目標に向かって少しずつ進めていく。

[待機中に座るようにしてみた]


エンティティ自体の待機中の設定は前に作ったゴーレムがオオカミのコードをコピーして持ってきているので、手懐けてから右クリックでバニラのオオカミと同じように待機状態になる。
ただ、オオカミはモデルのクラス内に待機中のモデルが入ってる。

入っているといっても、別のモデルでは無く、各パーツの位置と角度を変化させて、モデルを座っている状態にしているので、ゴーレムも、「if文」を使って「if 待機中なら」って感じで作っていく。

あとは座っている時のモデルを作って「if文」の中に入れるだけ。

これで待機状態か追従状態かが判別しやすくなった♪

[クッションを実装]

なんとなく、地面にただ座っている姿も可愛いけど、より生きてる感?を出したくて、クッションを使用できるようにしてみた。
予定はクッションというアイテムを追加して、それを右クリックで渡すと待機中にクッションを使用するというもの。

内部的にはただクッションのモデルを追加して、その上に座っているように見せる為にモデルの位置をずらしだけだけどw

「クッション」というアイテムは、まだアイコンもレシピも出来てないから、しばらくは羊毛ブロックにしておく・・・
なので、羊毛ブロックを手に持って右クリックで、それ以降は待機中はクッションの上に座っているように描画される。

[武器も作ってみた]

ゴーレムに武器を持たせようと思い、武器の要素を追加していく。
とりあえず実験も兼ねて、棒状の武器のモデルを作り、ゴーレムのモデルに追加する。

いずれは武器の種類と素材も追加していきたいけど、とりあえずは武器の要素の追加が出来るようにしなければ始まらないw
武器として持たせる専用のアイテムも、まだ作ってないから、こちらもしばらくはバニラの剣で代用。

手始めに鉄の剣で作っていく。
ゴーレムを右クリックした時の処理の中に「if文」で、懐き状態の時に鉄の剣で右クリックを条件に設定。
後はその中に、武器を持った状態に切り替える処理と、武器の耐久値を代入する。

正しいかは分からないけど、武器の耐久の宣言は「private int」で宣言。
後は作った変数の中に設定したい耐久値の値を代入するだけ。

続けて、「武器を持った時の処理」を作って、ゴーレムの攻撃力を上書きして、攻撃する度に耐久値を減らして、0になったら装備状態を解除して、攻撃力を元に戻す。

そこまで出来たら、ゴーレムのモデル側でも「武器を持っているか」の状態を呼び出させて、trueかfalseかで武器のモデルの表示/非表示を切り替える。

とりあえず、武器が一個出来たから、素材違いで、木、石、黒曜石を追加してみる。
最初はバニラの剣でしばらくは代用するつもりだったので、黒曜石では無くダイヤにしてたけど、ダイヤのテクスチャで持たせたら、フレに「ライトセイバーみたい」と言われたので、紛らわしくないように黒曜石に変更w

後は素材ごとに攻撃力の上昇量と、耐久値を設定するだけ。
困ったのが、武器のモデルを共通にして、素材によってテクスチャを変えたかったけど、知識不足で出来ずに、4つ棒状の武器のモデルを作り、それぞれテクスチャの割り当てを変えて、条件文で表示するモデル変える事にした。

方法が見つかれば同一モデルで割り当てるテクスチャをキリカで出来るかも知れないけど、しばらくはお預け。

[武器と合わせて盾も]


武器を持たせられるようになったので、エンティティ側とモデル側に書き足して、武器を持っている時には左手を振らないようにしてみた。

その後は、勢いに乗って武器がある時は、ゴーレム特有の振り上げモーションから、武器を上から振り下ろすモーションに切り替えが出来ないかと試行錯誤w

結果、振り上げから、片手での振り下ろしモーションの作製に成功して、更にオリジナル感が高まった♪
武器の流れで盾も追加して、盾は盾用の耐久値を作って割り当てる。
更に、オフハンド(左手)をスウィングするかどうかの設定も作り、武器か盾を持っている時は左手を振らないように書き直す。

盾の設定はとりあえず、実装初期なので様子見の為に、「25%の確率でダメージ無効で耐久値を消費」にしてみた。
追々は、「学習能力」のような要尾を追加して、徐々に盾の発動率が上がっていくようにしたいかな。

そんなこんなで、前回から今回までの間にオリジナルゴーレムの作製に奮闘してたけど、それなりに形になってきた気がする。
他のModと一緒にシングルに入れる分には問題なく動いているので、ジングルでのテストや他のModとのバランスを見る事は出来る。

今の一番の問題はサーバー側で起動できない事、フレに相談したら、ソースを見直してくれるということなので、とりあえず預けておいたw
忙しいフレなので、時間がある時にしかみれないだろうから、しばらく間は開くと思う。

素人の書いたソースは見辛いだろうからねw

[現在のゴーレム]

今のところゴーレムに追加できている要素は上の動画の通り。
新たに追加したのが、盾を装備中に戦闘状態になった場合は、状態を少し捩じって左手を掲げて、盾を構えているポーズを取らせた。
攻撃をする時は盾の構えを解いて、攻撃モーションを優先して、攻撃が終わった後にターゲットが生きていたら、再度構える。

盾によるダメージ無効の際にプレイヤーが盾で防御した時と同じ音が鳴るようにして、ターゲットしているエンティティ以外からの攻撃は防御できないようにした。

更に素手の時はバニラのゾンビより攻撃のリーチが短いけど、武器を持っている時は若干長くなるようにした。
これにより、最後のトドメの際に先制攻撃で反撃を受けなくなるので、少しHPに余裕が出る。

今後の予定としてはサーバーでの起動が出来るようにしたいのと、ソースの記述をもっと見やすくシンプルにできればと思う。
今は武器毎に設定を書いてるけど、武器の種類とか素材とかを追加して、武器の種類と素材だけで能力とかを変化させられるようにしたい。

タイプを簡単に分ける記述として、フレニ「enum」という記述があると教えてもらい、説明が書いてあるサイトを教えてもらったので、そこで勉強して理解できれば、ソースがもう少しスッキリするはず。

他の要素を作る時にも役に立つかも知れない。

後はバニラのエンティティに対して有利な武器を設定して、装備する武器で得意なMobが選べるようにしたい。
特定のMobへ与えるダメージを変更する処理は出来てるから、後は武器のタイプを増やして、素材ごとに追加。
後は武器毎に特徴をつけるだけ。

リーチの長いヤリと投げやりを追加しようか考えてたら、1.13でヤリが追加されるという話を聞いた。
なので、このまま1.12で作り続けるか、1.13で作るか悩むところ。

1.13になるとお仕様も変わるので、新しく書き直さなければならないので、1.13で作った方が楽だとフレに言われたけど、javaに慣れておく為に取り合えずMod作製は続けることにする。

完成してソースもキレイに出来たら、公開したいと思ってるけど、いつになることやら・・・w










次の記事

☆Minecraft1.12.2でMod作製 PRAT5. ゴーレムの機能を追加

前の記事

☆Minecraft1.12.2でMod作製 PRAT3. Mobのスポーンに反応するイベント

Minecraft 記事一覧へ