ブロック追加:接触判定の登録・記述方法について

Modding・サーバPlugin制作・ツール制作など、開発関連の質問があればこちらにお願い致します。
フォーラムルール
質問関連フォーラムで質問する時は、必ず次のトピックを一読/厳守お願い致します。
viewtopic.php?f=5&t=999
  • (PostNo.318477)

ブロック追加:接触判定の登録・記述方法について

投稿記事by ゲスト » 2018年7月30日(月) 00:33

ブロック追加を行うMODを作っています。

使用ツール: Eclipse
Minecraft: 1.12.2
Forge: forge-1.12.2-14.23.4.2705

追加するブロックの接触判定を無くしたい、つまり草むらと同様に配置はされていてもすり抜けることができるように設定したいのですが、記述すべきコードが判りません。
つまり、通常ブロックの見た目やクリック時の反応や判定範囲はそのままに、接触判定のみ変更したいということです。
どなたか御教授をお願いします。

試したこと・結果
 isCollidable()の設定 ・・・ ブロックへのカーソルが消えてしまいました。
 AxisAlignedBB getBoundingBox()の設定 ・・・ サイズを小さくすることはできましたが、ゼロにはできませんでした。
ゲスト
ID:12617b07
 

  • (PostNo.318479)

Re: ブロック追加:接触判定の登録・記述方法について

投稿記事by おんみつ » 2018年7月30日(月) 03:20

getCollisionBoundingBoxのメソッドに NULL_AABBと返せば可能かと。

getBoundingBoxはブロックを壊す時の当たり判定になるので、プレイヤーの判定を消したい時はこちらを使います。
建築ともっぢんぐやってます。ミンチにするのだ!
おんみつ
ID:fdcd968d
水から上がったとこ
 
記事: 9
登録日時: 2017年7月18日(火) 13:59
お住まい: 古の都

  • (PostNo.318508)

Re: ブロック追加:接触判定の登録・記述方法について

投稿記事by ゲスト » 2018年7月30日(月) 22:04

返信ありがとうございます。
下記のようにコードを追記してみましたが、添付画像のように、ぶつかると止まってしまいます。
記述に何か誤りがあるのでしょうか。


////////////////////////////////////////////////////////////////////////////////////////////
public class BlockName extends Block
{
public BlockName ()
{
super(Material.GRASS);
setUnlocalizedName("blockname ");
setRegistryName("blockname ");
setCreativeTab(CreativeTabs.MISC);
}

public AxisAlignedBB getCollisionBoundingBox(IBlockState state, World worldIn, BlockPos pos)
{
return NULL_AABB;
}
////////////////////////////////////////////////////////////////////////////////////////////
添付ファイル
now.png
ゲスト
ID:12617b07
 

  • (PostNo.318533)

Re: ブロック追加:接触判定の登録・記述方法について

投稿記事by おんみつ » 2018年7月31日(火) 13:44

ゲスト さんが書きました:返信ありがとうございます。
下記のようにコードを追記してみましたが、添付画像のように、ぶつかると止まってしまいます。
記述に何か誤りがあるのでしょうか。


////////////////////////////////////////////////////////////////////////////////////////////
public class BlockName extends Block
{
public BlockName ()
{
super(Material.GRASS);
setUnlocalizedName("blockname ");
setRegistryName("blockname ");
setCreativeTab(CreativeTabs.MISC);
}

public AxisAlignedBB getCollisionBoundingBox(IBlockState state, World worldIn, BlockPos pos)
{
return NULL_AABB;
}
////////////////////////////////////////////////////////////////////////////////////////////


どうやら isFullCube メソッドに false を返すのもしておかないとできなかったようです。
こちらの環境ではこの2つを記述することで動作しましたので試してみてください。

コード: 全て選択
@Override
   public boolean isFullCube(IBlockState state) {
      return false;
   }

   public AxisAlignedBB getCollisionBoundingBox(IBlockState state, IBlockAccess world, BlockPos pos) {
      return NULL_AABB;
   }
建築ともっぢんぐやってます。ミンチにするのだ!
おんみつ
ID:fdcd968d
水から上がったとこ
 
記事: 9
登録日時: 2017年7月18日(火) 13:59
お住まい: 古の都

  • (PostNo.318543)

Re: ブロック追加:接触判定の登録・記述方法について

投稿記事by ゲスト » 2018年7月31日(火) 20:26

実現できました。
御教授ありがとうございました。
ゲスト
ID:12617b07
 


Return to 質問:開発・制作関連

x