• カテゴリー別アーカイブ 日記
  • Minecraft1.12.2でMod作製 PART8. ModをCurseForgeに公開

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

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









    Modがある程度形になってきたので、CurseForgeに公開する事にした。
    コンフィグファイルも増やしたし、作りかけの部分は一部、コメントアウトしておいて、形になっている部分だけでの公開になるけど、先延ばしにし過ぎてもと思い、アルファ版で公開。

    [自然スポーンするゴーレム]

    最初に手に入るゴーレムとペット以外にSSのゴーレム達が自然にスポーンする。
    バニラのオオカミみたいに手懐ける事が出来る。
    と、いうか機能はほぼ同じで、ポピーで手懐けて、回復もポピー。

    ゴーレム専用の回復アイテムだと多めに回復する感じ。
    でもポピーでの回復量も、専用の回復アイテムでの回復量もコンフィグで変更可能にしておいた。
    ポピーに関しては回復機能を無しにもできる。

    実際に公開したのは3日前だから、事後報告って感じ。
    公開する準備に大いに手間取って、時間をかけ過ぎた結果、こっちを書く時間が取れずに3日も経ってしまったw

    公開して間もなく、コメントによるアドバイスや、提案をもらったので、これから作るにあたって参考にしていく♪
    あとはもっとJavaを理解して、欲しいものを形に出来るようになればいいかな。

    そして先ほど、今日の更新分をアップロードしたから、承認が終われば0.6.1が公開される。
    承認までは時間がかかるみたいだから、私が起きている間には終わらないかも知れない。

    ちなみにチェンジログに更新内容を書いたけど、新しく追加した敵対的なMobを1体追加した事を書き忘れてたw
    なので、プレイしてくれた人達へのシークレットってことにしておく・・・

    要望があったゴーレムを運ぶ手段については、技術的にまだ作れてないから、時間がかかるかも知れない。
    アイテム化する案も貰ったけど、アイテム紛失によるロストを避ける為に他の方法を考えようと思ってる。

    公開先のCurseForgeのMod説明の部分の使い方がまだ理解しきれてなくて、動画を張る方法が分からないw
    見てくれた人達に伝わりやすいように、動画を貼れればいんだけど、もう少し時間がかかるかも知れない。
    youtubeに何とかってコメントをもらったから、そっちに動画を上げて、そのURLを貼ればいいのかも知れない。
    なのでyoutubeの準備もしていかなきゃw

    公開先のサイトはこちら
    CurseForge Golemist










    前の記事

    ☆Minecraft1.12.2でMod作製 PRAT7. ゴーレムの死亡処理とコンフィグファイル

    Minecraft 記事一覧へ


  • Minecraft1.12.2でMod作製 PART7. ゴーレムの死亡処理とコンフィグファイル

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

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









    [ゴーレム装備の予備を持たせられるように]

    オオカミのゴーレムに追加する機能を考えながら遊んでいて、「予備の装備を持たせる」事を思い付いた。
    ゴーレムが強くなり過ぎないように、武器も含めて性能を控えめにしているんだけど、「鉄」と「黒曜石」の武器は、攻撃力もそこそこで耐久値もそれなり。
    「木」と「石」の武器は素材が集めやすいので、攻撃力も耐久値も低めにしてある。

    なので、「木」と「石」は壊れやすくて戦闘中に壊れる事もしばしば・・・
    でも戦闘中に持たせ直す余裕がない時も多い。

    そこでオオカミのゴーレムに予備の装備を持たせて、装備が無い状態のゴーレムに接触した時に装備の受け渡しを行えるようにしてみた。

    オオカミのゴーレムには「盾」を1つと、「武器」を2つまで持たせられるようにしてみた。
    左右に別々の武器を持たせることもできる上に、素材は帰ってこないけど、入れ替えも出来るように。
    ゴーレムへの受け渡しは、左側の武器が優先で、オオカミのゴーレムに持たせる時も、先に持たせるのは左側。

    普通に渡すと左側優先の処理で、オオカミのゴーレムを座らせた状態の場合は、右側を優先するようにしてある。

    他にも誤って連続で右クリックしてしまわないように、一度、右クリックをしたら0.5秒、右クリックを無視する処理を追加して、武器の持ち替えで素材が無駄にならないようになってる。

    最後にフォロー用のAIを少し追加して、装備を渡せる条件が揃っている時は、ゴーレムにより近づきやすいように調整してみた。
    装備の受け渡しの処理もAIの調整も、これからテストしていく予定。

    コンフィグファイルも作って、ゴーレムの設定をユーザーが調整できるようにしてみた。
    キル数によるダメージボーナスのon/offや、キル数カウントの上限、キル数に対するダメージボーナスの比率など。
    他にも盾や武器のスキルのon/offや発動率のやスキルボーナスなどの細かい部分も設定できるようになった。

    更に設定でバランス調整をし易そうな項目を少しずつ増やしていけば、ユーザーの好みやサーバーの難易度の調整もしやすくなるはず。
    だけど、マルチのテストが出来ていないから、まだまだって感じ。

    コンフィグが落ち着いて、動作も安定したらアルファでリリースして、それからマルチの調整をしていくのもありかも知れない・・・

    今はゴーレムが倒された時の処理を見直しているところで、ハートが0になったら、ハートを1に回復させて、パートナーのオオカミのゴーレムと一緒にホームポイントに戻って座っている状態にしてあったけど、他のディメンションで倒された時に、通常世界に戻ってスポーンさせる処理がわからず、ネザーで倒された場合、座標は通常世界のを読み込んで、ネザーのその座標にスポーンしてしまっていたので、設定を見直す必要が出てきた。

    結果、倒されたら、その場に倒れた状態になり条件を満たさないと復活出来ないように変更する事にした。
    プレイヤーみたいな謎の力でリスポーンするより、倒れて復活させてもらえるのを待っている方が自然な感じだし、これで決定。
    あとは倒れているモデルの作製と、倒れている状態を作り、適用させる処理を作るだけ。
    他には蘇生方法やコンフィグ設定を作ればokかな。

    リリースに向けて公開予定の海外のサイトのアカウントも作ったし、後は、英語での紹介文を考えるのと、英語の言語ファイルを作ったり紹介文と一緒に張り付けるSSを取らなきゃいけないけど、あと少しだから、ボチボチ頑張ろうw










    次の記事

    ☆Minecraft1.12.2でMod作製 PRAT8. ModをCurseForgeに公開

    前の記事

    ☆Minecraft1.12.2でMod作製 PRAT6. ゴーレム用ペットの追加

    Minecraft 記事一覧へ


  • Minecraft1.12.2でMod作製 PART6. ゴーレム用ペットの追加

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

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









    前回、追加したキル数をカウントしてダメージにボーナスの処理に足りない部分があったみたいで、ワールドに入る度にゴーレムがデスポーンするという問題が起きたけど、単純にdatamanagerへの書き込みと読み込み用の記述が抜けていただけだったw

    datamanager用の記述の為に、キル数のカウントの処理も知人に作り直して貰ったw

    [ゴーレムにパラシュートを装備]

    バニラのオオカミと同じようにゴーレムも遠くに離れるとテレポートをしてくる。
    これで起こる事故は、高所作業中にゴーレムが落下ダメージを受けて体力が減ってしまったり、死んでしまう事。
    今はポピーで回復できるようにしてるけど、いずれは専用の回復アイテムに切り替える予定だから、落下ダメージを防ぐ要素を入れたいところ。

    で、追加したのが「パラシュート」というわけw

    一定の距離を落下したらパラシュートが開いて落下速度を遅くして、着地時の落下ダメージを無効にしてからパラシュートを解除する仕様。
    今は3ブロック落下で開くようにしてるけど、現実のパラシュートみたいに、「ある程度の速度がないと、パラシュートが開けない」ようにしていく予定。

    1.一定の距離を落下したらパラシュートを開く
    2.パラシュートを開いてすぐの着地は落下ダメージをわずかに軽減
    3.パラシュートを開いてから徐々に落下速度が低下

    こんな感じにしたいw

    それと、盾を装備していると、落下ダメージを受ける時にガード音がしている時があるから、もしかしたら落下ダメージを盾で防いでいるかも知れないw

    [ゴーレム用のペットの作製]

    ゴーレムのパートナーとしてオオカミのゴーレムを作ってみた。
    サイズはバニラのオオカミの半分。

    最初は、そのまま縮小したんだけど、レンガ模様のドットが荒くなっちゃって、変な感じだったから、モデル作成時に身体の各パーツのキューブのサイズを2倍にして、拡大縮小の倍率を25%にして完成。

    2倍の4分の1だから、サイズは半分で解像度が2倍。
    これでレンガ模様もそれっぽく見える。

    ちなみに、この子は戦闘には参加しない仕様

    [アイテムを持てるように準備]

    モデルを作っている最中にふと思い立って、アイテムを持てるようにしてみた。
    ゾンビやスケルトンの要素にある、「手にアイテムを持つ」仕様と、「スノーゴーレムが頭にカボチャブロックを装備している」仕様の処理を応用して、オオカミのゴーレムがアイテムを咥えている様に持たせる処理を作ってみた。

    モデルにアイテム保持用のキューブを追加して、これの回転軸の位置を頭と同じにしておく、これで頭の向き(おねだりの首傾げ)や首だけを動かす動きにもアイテムが連動して動くようになる。

    あとは、首の動きの処理の回転角度の処理をそのままコピーして、そこに角度を少し加えるだけ。
    これで、首の動きについてきて、尚且つ口から斜めに傾いて描写されるようになる。

    頭の回転
    this.Head.rotateAngleX = headPitch * 0.017453292F;

    アイテムの回転
    this.Item.rotateAngleX = headPitch * 0.017453292F – 0.9F;

    アイテムの回転の最後の「-0.9F」がアイテムの角度を決めている。

    後はスノーゴーレムに使われているRenderLayerと同じ機能を使って、オオカミのゴーレムの「Item」というパーツにアイテムを描写するだけ。
    これで描写されたアイテムは「Item」というパーツの動きに合わせて動く。

    ちなみにレイヤーを追加する処理は「RenderSnowMan」の宣言の中にある

    今のところ骨を右クリックで持たせるだけになっているけど、ベースができたので、イロイロと追加できそう。
    例えば・・・
    1.落ちてるアイテムを拾う
    2.どこかから拾ってきたという感じでランダムにアイテムを入手

    他にも面白いことが出来そうな気がする。

    モデルも完成したから、次にゴーレムとの「ペア」の処理を作る。
    お互いのユニークIDを登録して、パートナーとして認識させる。

    この処理は「EntityTameable」の中のペットのオーナーのIDを取得したりする処理を参考に作った。

    これによって追加できた処理が・・・
    1.オオカミのゴーレムはパートナーであるゴーレムに追従
    2.ゴーレムが死亡してホームにリスポーンする時に、オオカミのゴーレムも一緒に移動
    3.オオカミのゴーレムが死亡する時に、パートナーのゴーレムのホームにリスポーン

    作製予定
    4.オオカミのゴーレムが攻撃を受けると、パートナーのゴーレムが攻撃してきたMobに攻撃をする
    5.パートナーのゴーレムに対して、オオカミのゴーレムからの何かしらのアシスト

    なんとなく思い付きで作ってみたけど、イロイロと面白そうな要素を追加できるかも知れない。
    作るのに結構な時間がかかったから、良い方向で生かせるように出来ればと思うw

    まぁ、おかげでレイヤーの処理とか、保持しているアイテムの処理と描画なども覚えたし、無駄ではなかったと思う。
    パートナーの登録処理なんかも作れたし、他でも使えそうだからokかな。

    順調に進んではいるんだけど、未だに「ワールドへの最初のログインの時に、ゴーレム召喚用のアイテムを入手」の処理が出来ていないw

    他のModのその手の処理を見たけど、まだ理解できず作れない。
    なので、テスト中はクリエイティブモードで入手してからサバイバルモードに戻すという手順で進めてるw

    この処理が出来たら、α版として公開出来るかもしれない。
    とりあえず、召喚用アイテムの自動入手と、プレイに支障をきたすバグをチェックしてからかな。

    先日、Mod「Ancient Warfare2」のMobを攻撃させたらクラッシュしたから、こっちのバグかと思ったけど、「Doggy Talents」のDogに攻撃させてもクラッシュしたから、試しに「Ancient Warfare2」のバージョンを1つ前に戻したらクラッシュしなくなった。

    ちょっとビックリw

    後はMobごとのキル数によるダメージ増加の上限を、「MobのHPの上限に応じて変わる」ようにしたい。
    他のModのHPが3桁を超えるMobや、2桁後半のMobなども、何度も倒しているうちに有利になるようにする。

    ゴーレムが強くなりすぎる可能性もあるけど、そもそもHPの高いMobをゴーレム単体で倒すのは難しいから、装備や能力の充実と、プレイヤーのサポートを合わせて何体も倒していく事になる。
    なのでHPの高いMobに対しては逆に労力に見合わないかも知れないw

    ゲームバランスの様子も見ながら数値をいじっていく予定。
    後はマルチでの挙動(そもそも起動できるか)も確認したいけど、自力でModサーバーを建てられないというw

    マルチでの挙動が安定しないうちに公開しちゃうと、遊んでくれる人達に迷惑がかかっちゃうから、マルチでの動作確認も早めに済ませないといけない。

    まだまだ公開の目途は立たないけど、とりあえずは進んでる感じ。
    しばらくは今の状態でプレイして新しい要素のヒントを探そう。
    ついでにバグがないかも確認w










    次の記事

    ☆Minecraft1.12.2でMod作製 PRAT7. ゴーレムの死亡処理とコンフィグファイル

    前の記事

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

    Minecraft 記事一覧へ


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

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

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









    Modの作製をちびちびと進めて、少しずつだけど形になってきた。
    ゴーレムに追加したら面白そうな機能を考えて、思い付いたらそれを1つずつ作っていく。

    今回は、IT系の企業で働く知人の力を借りて、「それぞれのMobのキル数をカウントして、キル数に応じて与えるダメージを増やす」という機能を作ってみた。
    というか、元を作ってもらったw

    相変わらずJavaの理解がたりず、理解できない部分が多いので、作ってもらったコードも解説してもらったりして、なんとか実装できた感じ。
    バニラのMobのキル数だけなら、コードが多くなるけど、自分でもなんとかなるんだけど、今回、作りたかったのは、他のmodで追加されるMobのキル数も処理できるようにしたかったので、プロの力を借りたw

    人によって導入するModが違うので、どんなMobが追加されるか分からない状態で、そのMobを判定するコードを用意しなければならなかったから、頭を抱えてたわけで、「作り方はあるはず・・・でも分からない」といった状況だったので、作れるかを聞いてみた結果、作って貰えたw

    貰ったコードでは私の知らなかったHashMapというものを使っていて、説明を聞いた時は何となくわかったけど、1日たったらちんぷんかんぷんなので、時間がある時に調べてみようと思ってる。

    他にも文字列と(エンティティ名)と変数の値(キル数)をセットで格納して、読み込むときに切り離して使う方法も教わった。
    これもしっかりとは理解できていないから、次に使う機会があったら、調べながら覚えていこうと思う。

    [他のModのMobとの戦闘テスト]

    何はともあれ、デバッグもリリース後の他modとのチェックも無事に完了して、他のModの追加Mobのキル数もカウントされて、ダメージにボーナス付くようになった。
    後は大量のMobのキル数をカウントさせても大丈夫かどうかを確認すればokかな。

    キル数によるダメージ増加が完成した後に、連休なのを良い事に夜更かしをして、「武器の使用回数でダメージにボーナスを追加する」機能と、「盾の発動回数で盾の発動率にボーナスが付く」機能も追加してみた。

    熟練度的なもので、キル数と合わせて、「ゴーレムが学習していく」ような感じにしてみた。
    キル数によるダメージボーナスの部分を応用すれば、キル数による盾の発動率にボーナスが付く機能も作れそうだけど、とりあえず保留。

    今のところ、キル数も熟練度もカウントの100分の1をそのまま加算するようにして、カウントが300以上の場合は300で計算するようにしてみた。
    これでしばらく遊びながら様子をみて、デフォルト設定の値を決めようと思ってる。

    いずれはコンフィグファイルも作って、Modを使用する人がカウントからの倍率と上限を変更できるようにしたい。

    盾の発動率を作った流れで、「ゴーレムが矢を防御した時に、確率で矢をドロップする」機能もつくってみた。
    確率は盾の発動率の半分に設定。

    キル数によるダメージ増加の部分を作ったので、以前作った武器の部分も作り直して武器のダメージもそこで計算するように変更。
    以前のコードだと「Boolean」で作っていたので、trueかfalseしかできず、「木の棒」、「石の棒」、「鉄の棒」、「黒曜石の棒」と別々にデータを管理してたけど、これではコードが多くなるので、「Integer」で作り直して、「武器の種類」、「武器の素材」、「武器の攻撃力」、「武器の耐久値」にしてみた。

    「武器の耐久値は」元々、作ってあったので、そのまま使用。
    武器の種類はまだ「棒」しかないけど、いずれ増やしていったときに、「0が武器無し」、「1が格闘」、「2が棒」といった感じにできる。
    「武器の素材も」数字で管理して「1が木」、「2が石」といった感じ。

    後は攻撃時の左手の振りを、「武器の種類が(2)以上なら」に変更。

    思い付きで「革の帽子」を右クリックで渡すと、ハットを被るようにしてみた。
    一応、アーマーポイントを1増やすw

    [2つのアイテムを組み合わせて渡す]

    武器を装備させるのを、今まではバニラの「木、石、鉄の剣」と黒曜石を右クリックで渡すようにしてたけど、それっぽくしようと思って、プレイヤーの両手に特定の組み合わせでアイテムを持ちながらShift+右クリックすると渡せるようにしてみた。

    木は「棒」を単品、石の棒は「丸石と火打石」といった感じにしてみた。

    ゴーレムのHPを回復する為のアイテムも、以前に作ってたけど、入手手段が1つしか無く、もう1つの入手方法を作る予定が上手く進んでいないので、間に合わせで、「ポピー」で回復出来るようにしておいた、回復量は控えめに2(ハート1個分)。

    それに加えて、「スライムを倒すとHPが回復する」機能と「HPが減っている時のみ、自発的にスライムを攻撃する」AIを追加した。
    これ自体は状況に左右されやすいので、気休めにしかならないかもしれないけど。

    [盾の追加]

    最後に盾を追加してみた。
    こっちの盾の場合は戦闘中以外は背中に背負うようにしてみた。

    とりあえず順調に進んでいる気がする。
    機能も充実してきたし、更なる機能を考えつつ他のModとのバランスを見てく感じ。
    作りたい機能はたくさんあるけど、技術が追い付いていないので、1つずつコツコツと作っていく。
    友人が遊びながらテストをしてくれるという事で、この後、渡す予定w










    次の記事

    ☆Minecraft1.12.2でMod作製 PRAT6. ゴーレム用ペットの追加

    前の記事

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

    Minecraft 記事一覧へ


  • 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 記事一覧へ


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

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

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









    新しくMobを追加するのにも慣れたから、ミニゴーレムのタイプを分けてみる事にした。

    バイオームごとにスポーンする「野生?」のミニゴーレムは鼻無しで、「ポピー」で手懐けられる事が出来る。

    それと別にバニラのアイアンゴーレムを小さくした村用(鼻有り)のミニゴーレムを作ってみる事にした。

    バニラのアイアンゴーレムをそのまま小さくするだけだから簡単だと思ってたけど、「extends EntityIronGolem」でサイズだけ書いたらokかと思ったら、スポーンさせてみたら、当たり判定は設定したサイズなんだけど、見た目のサイズはバニラのアイアンゴーレムと同じw

    なので、「extends EntityGolem」に変えて、サイズ以外の情報をアイアンゴーレムからコピー。

    エラーが出たら、足りない情報をインポートしたり、クラス名が違ってるのを直すだけ(EntityIronGolem ➔ EntitySmallGolemなど)。

    エラーが上手く解決できなかった、村人を見つめるAIと、村人を守ろうとするAIは一時的にコメントアウトして、花を差し出すモーションもコメントアウト。

    なので、プレイヤーから村人を保護しようとはしないはずw

    それでも敵対的なMobに対しては攻撃を仕掛けるので、役目は果たしてくれるはず。

    [2タイプのミニゴーレム]

    野生?のミニゴーレムは頭の位置を中央にした。

    鼻が無いので下を向いても鼻がめり込む心配は無いw

    並べてみて気付いたのは、花の有る無しと頭の位置で印象が変わる事。

    鼻がある方が、ボーっとしてるように見えるかもw

    村用のミニゴーレムのスポーンを村だけにしたかったけど、設定の仕方が見つからず悪戦苦闘。

    村はバイオームでは無いし、ロケーションか何かかも知れないけど、呼び出し方が分からない・・・

    村人を追加するModのソースを見てみたら、村人はMobとして追加してるわけじゃなかった。

    村人の職業として、職業の名前や取引リストを設定するだけで、スポーンするみたい。

    なので、村に専用のMobをスポーンさせてるModのソースを見てみたけど、そのModはスポーンの管理などを1体ずつではなく、グループのように設定している為、どこがスポーンの処理なのか見つけられなかった。

    で、考え付いたのが、「アイアンゴーレムがスポーンする時に、一緒にスポーンさせる」方法。

    普通のスポーン登録が見つけられなかったので、イベントに頼ってみる事にしたけど、こっちの方が難しいかも知れない。

    いくつかのソースを見ていて「Entityがワールドに出現した時のイベント」というのを発見。

    その使い方を調べていたら、スポーンがトリガーになる命令が3種類ある事を知った。

    それぞれが・・・

    1. 指定したエンティティがスポーンする時に、代わりに起こるイベント

    2. 指定したエンティティがスポーンする時に、一緒に起こるイベント(自然スポーンのみ)

    3. 指定したエンティティが読み込む時に、一緒に起こるイベント(スポーンの仕方を問わない)

    アイアンゴーレムがスポーンしたら、ミニゴーレムもスポーンするようにしたかったので実験として、「スライムがスポーンしたら、スライムをスポーンする」で作ってみた。

    その結果・・・

    1. スライムの代わりにスライムがスポーンするので変化なし

    2. スライムが自然スポーンした時に、追加で沸く

    3. スライムがスポーンした事によって、追加されるスライムのスポーンもトリガーとなり、無限ループ

    1と2は分かりやすい。

    3はトリガーとスポーンするエンティティを同じにした為に無限ループに陥り、「スーパーフラット」のワールドで試した結果、ロード中に発生したスライムのスポーンから無限ループの処理で、時間が経ってもワールドを読み込めなくなった。

    多分、見えない世界で、スライムの大量発生が起きていたんだと思うw

    今回の場合はトリガーとスポーンが被らなければいいので、アイアンゴーレムがスポーンしたら村用ミニゴーレムを一緒にスポーンさせるようにした。

    3を使ったので、カボチャから作っても、お供がスポーンするw

    3の場合、読み込んだ時の処理のようで、ワールドに入りなおしたり、遠くから戻ってきた時に読み込むたびに処理が行われ、ミニゴーレムが増殖していったw

    1つ疑問なのが、この処理が上手くいったら、1~2体スポーンするようにしたかったけど、なぜか元々2体スポーンする。

    結局、原因はわからなかったけど、処理は上手くいってるみたいだから、このままでいいかなw

    一番、苦労したのが、トリガーとなったエンティティの座標を得る方法。

    Javaに慣れてる人は簡単に出来るんだろうけど、初心者のこっちはそうはいかないw

    座標の設定が出来ない為に、スポーンが起きているかも確認できず、どこが間違っているのかも検討が付かなかった。

    試しにトリガーに対する結果を、プレイヤーの位置に音を鳴らす処理に変更してみたら、音が鳴らなかった。

    で、基本に戻ってみたら、作ったイベントのクラスをレジストリに登録していなかったw

    その後も、うまくいかず、「初期化」の設定が入っていなったりと、かなり無駄な時間を費やしてしまってたみたい。

    作っても登録や初期化をしてないとダメw

    で、そっちが完了した途端に、イベントが動き出した。

    この後に座標の検出に時間を取られたわけ。

    [お供のミニゴーレム]

    無事にお供の召喚に成功。

    上のSSはテスト用に野生のミニゴーレムを設定してたから、この後に村用のミニゴーレムに置き換えて完成。

    アイアンゴーレムがスポーンしたら無条件でお供が召喚。

    スポーンエッグでも村のスポーンでもカボチャのスポーンでも召喚を確認。

    これで村用のミニゴーレムに会えるようになった。

    もし作れたら、バイオームごとにお供が変わる設定も作ってみたいかも。

    でも、その座標のバイオームの情報を得る命令が見つけられなかったw

    なので、これはそのうちってことで。

    前回の目標をそっちのけで作ったので、次はゴーレムの装備を作りたいw











    次の記事

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

    前の記事

    ☆Minecraft1.12.2でMod作製 PRAT2. Mobの種類とスポーン

    Minecraft 記事一覧へ


  • Minecraft1.12.2でMod作製 PART2. Mobの種類とスポーン

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

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









    一体目のMobが完成したことで、意欲が増したのもあって、ゴーレムの種類を増やしてみる事にした。

    手始めに、海系のバイオームや浜辺でスポーンするプリズマリンのゴーレムを追加する。

    海辺という事で、水に由来しそうなブロックという流れで、「プリズマリンレンガ」のテクスチャをベースにしてゴーレムのテクスチャを作る。

    モデルは元のミニゴーレムの物をコピーするだけ。

    追加で作ったクラスは・・・

    ・ゴーレムのデータが入ったクラス

    ・ゴーレムのモデルとテクスチャを描画するクラス

    ・ゴーレムのモデルのクラス

    この3つ(中身は元のミニゴーレム内容の名称などの書き換え)を作った後は・・・

    ・Mobを参照する為のクラスにミニゴーレムとIDを登録

    ・Mobのデータとスポーン情報を登録するクラスにミニゴーレムを登録

    これで新しく作った他のミニゴーレムもスポーンするようになる。

    でも、これらのクラスの事がいまいち理解できていないまま作っているので、ちゃんとした説明ができないw

    理解できるようになったら、それぞれのクラスついても解説しながら、Mobの作り方を記事にしてみたいけど、まだまだ先の話かな。

    とりえずMod作製の進捗としては、プリズマリンレンガのミニゴーレムが完成。

    スポーンするバイオームも指定して、海に由来するバイオームにしてみた。

    ステータスは鉄のミニゴーレムと変えてないけど、そのうち変更する予定。

    とりあえず、手懐ける為のアイテムを「骨」から「ポピー」に変更したけど、これが意外と大変だった。

    「骨」はアイテムとして登録されているけど、「ポピー」はブロックとして登録されていて、オオカミからコピーしてきた手懐ける部分の「骨」を「ポピー」に置き換えただけだとダメだった。

    まず、右クリックした時の処理として作られていて、そこでまず、プレイヤーの手に持っているアイテムを読み込む。

    そして「手に持っているのが〇〇だったら」って流れだけど、「ポピー」の場合はブロックなので・・・

    「 if (itemstack.getItem() == Item.getItemFromBlock(Blocks.RED_FLOWER) 」で「RED_FLOWER」というブロックであるかを判定。

    その後に「RED_FLOWER」メタデータを参照する。

    調べていて知ったのが、「タンポポ」は独立して「YELLOW_FLOWER」なのに、他の花は「RED_FLOWER」のデータ値で分けられていた。

    なので、「RED_FLOWER」の情報の後に変数にメタデータを代入する。

    「 int enumflowercolor = itemstack.getItemDamage(); 」

    メタデータはダメージ値として登録されているみたいで、場所によってはメタデータと書かれたりしているので、少しややこしいかも知れない。

    「RED_FLOWER」のメタデータと変数に代入したら、今度は「ポピー」のメタデータと一致しているか、という条件分を作る。「ポピー」のメタデータは「0」なので・・・

    「 if (enumflowercolor == 0) 」

    これでポピーだった場合にその先に続く命令文のおかげで、ミニゴーレムが手懐けられる。

    元になっている「オオカミ」のデータは「EntityWolf」のクラスにあるので、「宣言を開く」で中身を見る事が出来る。

    この中身の必要な部分をコピーしてきて、書き換えたりしてアレンジする感じ。

    「EntityWolf」の中を見て、何が必要で、どれが何の処理かを理解するのが一番、大変だったけどw

    特に変更も無く、見た目が違うMobを作りたいなら、コピーでいいんだけどねw

    2体目が完成し、登録も完了したら、他のミニゴーレムも作りたくなって、砂岩と石と木のミニゴーレムも作ってみた。

    スポーンするバイオームはそれぞれ違うバイオームを設定。

    手懐ける為のアイテムは共通でポピー。

    木のミニゴーレム以外は、炎上しても炎などの炎上する原因から離れたら即、鎮火する設定を作ってみた。

    解らないなりきにイロイロ弄ってみて、なんとか出来てる感じ。

    [ミニゴーレムのモデルも更新]

    元のミニゴーレムとユニークゴーレムのモデルを作り直してみた。

    とりあえずで作った前のモデルから細かい部分を修正。

    各パーツのサイズと位置関係と、回転軸の位置を調整してから、他のミニゴーレムのモデルにコピー。

    まったく同じでテクスチャ違いならモデルは一個でいいんだけど、もし叶うならゴーレムの種類に応じて何かしらの差をつけてみたい。

    できるか分からないけど、アクセサリや、装備みたいなのを付けられるようにしてみたいw

    なので、ベースのモデルができたから、後はそれぞれに共通部分は更新の度にコピーして、個別の部分はそれぞれにって感じ。

    ただ、どういう風に差をつけるかが決まってない上に、それが実装できるかも怪しいw

    とりあえず例のユニークゴーレムに変化できるのは「プリズマリンレンガのミニゴーレム」だけにしてみた。

    完全に遊び心で、この処理を考える労力を他に回した方がいいのかも知れないけど、遊び心は大事♪

    ちなみに、この子だけ水中での移動速度が少し速いw

    次の目標はミニゴーレムに装備できるアイテムを作りたい。











    次の記事

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

    前の記事

    ☆Minecraft1.12.2でMod作製 PRAT1. Mobに挑戦

    Minecraft 記事一覧へ


  • Minecraft1.12.2でMod作製 PART1. Mobに挑戦

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

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









    最近、Minecraft1.12.2でMob追加系のModをあれこれ入れ替えて遊んでいたけど、なかなかバランス調整が難しくて、難易度が高すぎて遊べなかったり、逆に簡単になり過ぎたりしてた。

    出し入れしたModは・・・

    Animania
    以前にも導入していたModで、様々な動物を追加するMod。
    初期設置ではバニラの動物がスポーンしなくなるので、コンフィグで変更。
    フェレットやハムスターやハリネズミが特にかわいい。
    Animaniaの牛や豚などは数種類の品種があり、繁殖のさせ方や手懐け方が異なる。

    Epic Siege Mod
    敵対的なバニラのMobのAi強化や、特殊な能力を持ったバニラのMobをスポーンさせる・・・といった説明を見て、「入れてみて難易度が高過ぎたら外そう」と思い、導入してみたものの、他に導入しているModの数もあり、動作がカクカクになったので、遊ぶ前に外してしまった。

    Primitive Mobs
    バニラの雰囲気を変えない感じのMobを追加するMod。
    変わったクリーパーや、身体の中に透けて見えるアイテムをドロップするスライムや、旅する行商人(村人)などを追加する。
    特別、凶悪過ぎるMobもいない上に、個別にスポーンのOn/Offが出来るので、好みで設定できるのが良い。
    行商人の取引が便利すぎて、難易度を大きく下げる事もあるので、設定の調整が必要かも。

    Lycanites Mobs
    「Strange and Deadly Creatures!」と書かれていたけど、その通りw
    初めて遊んだのはMinecraft1.6.4の時で、あの頃はまだそれほど凶悪過ぎるMobもいなかったり、Mobのスポーン条件も違ったので、なんとかなったけど、更新が進んでMobの種類が増え、特殊なスポーンなども設定されたので、難易度は上がっていた。
    Mobの強さなども難易度の設定で大きく変わるから、Hardでプレイしてたら、石炭を掘って死に、雑草を刈っては死に、木を切っては死に、ネザーゲートを開いては死にと、何をしても危険な状況に陥ることがるから、気が抜けないw
    慣れてくれば対策も練れる事と、敵の強さからスポーン条件まで細かく設定できるので、難易度調整はかなりしやすい。
    ただコンフィグの設定方法は慣れないとわからないかも知れない。

    Deadly Monsters
    タイトルの通り、凶悪な敵Mobを追加するModでブロックを破壊しながら向かってくるMobや二回攻撃されたら即死するMob、一定距離にいるだけで盲目状態にしてくるMobなど、単体でも危険だったり、厄介なMobが多いので、他のMob追加系のModとの組み合わせ次第では大変な事になるかもしれない。
    複数のMob追加系のModを入れた結果、それぞれのMobのスポーンが分散してしまったので、外す事にw

    結果的に残ったのがAnimaniaとLycanites Mobsだけど、遊んでいるうちに「こういうMob欲しいな」とか考えるようになって。
    そのままMob作りに手を出してみた。

    先月から参加しているマルチサーバーで知り合った人からMod作りを教わっていた途中で、元々の目標がMobの作製だったので、思い立ったら吉日ということで作り始めていた。

    youtubeで英語のチュートリアルの動画を見ながらMob作りを勉強。
    数日かかって、Mobの登録が完了したけど、いざスポーンさせたら、透明で当たり判定も無し・・・
    でも溶岩や矢を当てるとダメージ音がして、死亡すればアイテムもドロップする。

    解決方法を探したけど、分からずに一旦投げ出して数日ぶりに再開したのが一昨日。
    夜中に眠れなかったので、なんとなくチュートリアル動画を視ながら問題点を探していたら、あっさり解決w
    間を開けたのが良かったのかも知れない。

    その日はそれで満足して寝て、昨日はMobのアニメーションの作製。
    これはなかなかスムーズに進んで歩行モーションと攻撃モーションも難なく完成。

    簡単だった理由は、初めて作ったMobがバニラのアイアンゴーレムの小さいのを作ったから。
    なので、モデルは縮小するだけで、アニメーションもバニラから持ってくるだけ。

    それでも行き詰ったのが、攻撃モーションが最初は出なくて、手が動くようになったと思ったら、すべてのミニゴーレムが一斉に両手を上げ下げするという奇妙な光景。

    それを乗り越えたら今度は、一体が攻撃をすると、他の関係ないミニゴーレムも攻撃モーションをするという謎のリンク現象(意図的にこっちを作る方が難しい気もする)。

    最終的には攻撃モーションも個々のゴーレムのみに落ち着き、手の異常な上げ下げも起きずに無事完成。

    ミニゴーレムの設定はバニラのオオカミの設定を参考に、アイテムで手懐けられる(ペット化)ようにしてみた。
    スポーンの設定も他のソースを公開しているModを見ながら設定して、とりあえず森と草原に自然スポーンも確認できた。

    最後に遊び心で、名札を使って特定の名前を付けると見た目が変化する設定を作ってみた。
    Mod初心者の私がここまで出来たのは、mod作製の初期設定と環境を整えてくれたフレンドのおかげ。
    途中から連絡が取れなくなってるから、教わったのはブロックとアイテムの追加とクラフトレシピと精錬レシピの追加まで。

    Mobの作製を一人で出来たのは、多くのModを遊んできたからだと思う。
    追加してみたい要素や、表現したい内容に近いものや参考になりそうなアイテムなどを考えて、そのソースとにらめっこする。
    おかげで1体目のMobが完成したわけ。

    [完成したミニゴーレム]


    小さいゴーレムは可愛い♪
    村のゴーレムと違うという設定のつもりで、鼻は無し。
    草原と森系のバイオームに4~8体の群れでスポーン。
    テストの為、スポーンの割合は高めw
    手懐ける為のアイテムはオオカミから設定を持ってきた為、骨のままw ※変更する予定
    追従と待機が切り替え可能だけど、オオカミと違って座らないので、どっちの状態かの判別は動くまでわからない。
    クリーパーから逃げるAIも入れてみた。
    野生?のミニゴーレムを攻撃すると他のミニゴーレムも一斉に反撃してくる。

    名札で特定の名前を名付けた場合のみ見た目が変わる(SS左側)。
    この子は普通のゴーレムほど上まで手を振り上げないようにしてみた(肩のパッド?部分にめり込まないようにする為)。

    実際にMobの完成までにかかった時間は3~4日くらい。
    途中、諦めモードで数日、間が開いてるけどw

    次はここから派生して違うMobを作ってみたり、要素を追加したりしてみたい♪

    でも、今日気付いたのが、二日前に「Thaumcraft6」が1.12.2に来ていたことw
    これでしばらく、遊ぶのに時間を割くのでMod作りが遅れる・・・











    次の記事

    ☆Minecraft1.12.2でMod作製 PRAT2. Mobの種類とスポーン

    Minecraft 記事一覧へ