ユーザーブロマガは2021年10月7日(予定)をもちましてサービスを終了します

自称中級者のMinecraft日記 Eclipseで艦これMOD(仮)に挑戦 ブロックの追加3 中をくり抜く当たり判定
閉じる
閉じる

新しい記事を投稿しました。シェアして読者に伝えましょう

×

自称中級者のMinecraft日記 Eclipseで艦これMOD(仮)に挑戦 ブロックの追加3 中をくり抜く当たり判定

2016-10-29 17:42
    <目 次>
    開発環境の構築編
    最初に書くメインクラスの基本形
    防具の追加1 登録用Armorクラス
    アイテムの追加1 アイテムの登録まで
    クリエイティブタブの追加

    ブロックの追加1 ブロックの登録まで
    ブロックの追加2 リソースの追加
    ブロックの追加3 中をくり抜く当たり判定
    ブロックの追加4 外を削る当たり判定
    ブロックの追加5 向きのあるFacingブロック
    LetterTrayDecoration の移植
    ブロックの追加6 当たり判定に向きをつける
    装飾ブロックを幾つか

    レシピの追加1 作業台を使うクラフト
    MODのリリーステストの準備
    鉱石ブロック1 アイテムをドロップするブロック
    鎮守府MOD の配布はじめました
    ――――――――――――――――――――――――――――――――――――――――
    さて、前回追加した BlockEmptyBox ですが、


    こんな状態です。

    空けたら空けたで、村人にとっては脱出困難なトラップになってしまうため、このままでも良い気はしないでもないです。が、空箱は空箱らしく空いていた方が良いですよね?

    と言っても、どうやれば立方体の中をくり貫けるのかは知りません。16×16×16 の立方体の外側を削って、15×12×4 の直方体にする方法は、MCreator でソースコードを見た時に何となく解ったのですけど・・・

    Minecraftのバニラのコードを参考にする

    そこで、パッケージ・エクスプローラーを辿って、
    「 参照ライブラリー → forgeSrc-1.9.4-12.17.0.1976 → net → minecraft → block 」の中から、BlockCauldron.class というバニラの大釜のクラスを開いてみました。


    立方体をくり貫くのに座標が必要なこと、当たり判定の処理には getBoundingBox を使うことから、これらのコードを使うようです。

    どうやら、大釜の底・四方の壁に当たり判定を設定しているようです。ブロックとしてのモデルと同じ仕組みなんですねぇ。

    ということで、さっそく BlockEmptyBoxクラス にコピーペーストして、座標の数値を編集しました。

    立方体ではなくなるため、描画に関わるコードも追加します。

     public boolean isFullCube(IBlockState state) {
    return false;
    }

     public boolean isOpaqueCube(IBlockState state) {
    return false;
    }

    import を含めて、コードはこんな感じになっています。



    実行テストをしよう

    見た目はあんまり変わってないようですが・・・


    箱の中に入れました。

    当たり判定は、狙い通りの処理が出来たようです。

    (つづく)
    広告
    コメントを書く
    コメントをするには、
    ログインして下さい。