[1.7.10]mobが埋まってしまうバグ?

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

[1.7.10]mobが埋まってしまうバグ?

投稿記事by shusei. Y. » 2015年8月29日(土) 10:36

こんにちは。1.7.10でmodの開発を始めたばかりの初心者です。
自分で考えた物ではありませんが、踏むと色が変わり徐々に戻るという物を作りました。
ちゃんと動作し、踏むと色が変わるのですが気がかりな点があります。
それはその作ったブロックにmobが埋まってしまうということです。
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z){
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y+ 0.9, z + 1);
}
この記述があたり判定を決めているので原因だと思い、y+1にしたところ、埋まらなくなりましたが、色が変わらなくなりました。
色が変わらなくなったのはブロックいっぱいではeventが起こらないというので分かりますが、mobについてはまるで分かりません。
どなたか埋まらないようにする方法を教えてください。よろしくお願いします。
FootprintsSand.java
package com.example.examplemod;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;

import java.util.Random;

/**
* Created by user on 2015/08/28.
*/
public class FootprintsSand extends Block {
private IIcon[] icons = new IIcon[5];

public FootprintsSand() {
super(Material.sand);
setBlockName(ExampleMod.MODID + "_" + "footprintssand");
setBlockTextureName(ExampleMod.MODID + ":" + "footprintssand");
setCreativeTab(CreativeTabs.tabBlock);
setHardness(1);
}

@Override
public void registerBlockIcons(IIconRegister register) {
for (int i = 0; i < 5; i++) {
icons[i] = register.registerIcon(this.textureName + "_" + i);
}
}

@Override
public IIcon getIcon(int side, int metadata) {
return icons[metadata];
}

@Override
public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) {
if (entity instanceof EntityPlayer && world.getBlockMetadata(x, y, z) != 4) {
world.setBlockMetadataWithNotify(x, y, z, 4, 2);
world.scheduleBlockUpdateWithPriority(x, y, z, this, 5, 100);
}
}

@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z){
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y+ 0.9, z + 1);
}


@Override
public void updateTick(World world, int x, int y, int z, Random random) {
int next = world.getBlockMetadata(x, y, z) -1;
world.setBlockMetadataWithNotify(x, y, z, next, 2);
if (next != 0) {
world.scheduleBlockUpdateWithPriority(x, y, z, this, 5, 100);
}
}
}
shusei. Y.
ID:ad808056
水から上がったとこ
 
記事: 7
登録日時: 2015年3月11日(水) 17:29

  • (PostNo.245151)

Re: [1.7.10]mobが埋まってしまうバグ?

投稿記事by defeatedcrow » 2015年8月29日(土) 17:29

誰が何をしたくて何を作ったのか正直文章からエスパーできませんが、
怪しいところにだけ突っ込みを入れておきますね

ブロックのサイズ指定部分ですが
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z){
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y+ 0.9, z + 1);
}
こういう数値を入れていますよね

(x, y, z, x + 1, y+ 0.9, z + 1) この部分に入れるべきなのはdoubleなので
小数を入れたければ 0.9D としてください。

でなければ丸められてint(整数)に直されてしまいますよ
(IDEを使っているならエラーが出て怒られそうですが…)

floatを入れるべきところなら0.9Fのように指定する。

また、キャストを使ってもいいですが、
いずれにしろこの辺の、Javaの基礎の基礎部分はModdingにも必要なところなので、調べてみると良いです。
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:bed7c33f
ラピスラズリ収集家
 
記事: 969
登録日時: 2014年1月08日(水) 13:48

  • (PostNo.245199)

Re: [1.7.10]mobが埋まってしまうバグ?

投稿記事by shusei. Y. » 2015年8月29日(土) 21:55

こんばんは。回答ありがとうございます。
指摘していただいたy+のところを、FやDをいれて試しましたが、状況は変わりませんでした。
やはりmobだけがブロックに埋まるようです。
あと、添付したファイルのデバッグ画面を開いてる方はFやDをつける以前の物ですが、ちゃんとy座標は0.1沈んでいました。
なぜなのかまるで分かりません。
添付ファイル
2015-08-29_21.48.36.png
2015-08-29_21.31.29.png
shusei. Y.
ID:ad808056
水から上がったとこ
 
記事: 7
登録日時: 2015年3月11日(水) 17:29

  • (PostNo.245202)

Re: [1.7.10]mobが埋まってしまうバグ?

投稿記事by defeatedcrow » 2015年8月29日(土) 22:23

shusei. Y. さんが書きました:こんばんは。回答ありがとうございます。
指摘していただいたy+のところを、FやDをいれて試しましたが、状況は変わりませんでした。
やはりmobだけがブロックに埋まるようです。
あと、添付したファイルのデバッグ画面を開いてる方はFやDをつける以前の物ですが、ちゃんとy座標は0.1沈んでいました。
なぜなのかまるで分かりません。


この部分、
コード: 全て選択
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z){
return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y+ 0.9, z + 1);
}


下記のように変えてみても同じですかね?
コード: 全て選択
@Override
   public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4) {
      this.setBlockBoundsBasedOnState(par1World, par2, par3, par4);
      return super.getCollisionBoundingBoxFromPool(par1World, par2, par3, par4);
   }

@Override
   public void setBlockBoundsBasedOnState(IBlockAccess par1IBlockAccess, int par2, int par3, int par4) {
      this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.9F, 1.0F);
   }


上記のsetBlockBoundsというやつは、
Collition判定だけではなく、カーソルを合わせたときのボックス表示とか、
見た目上のブロックのサイズも一括で変えています。
カラスの敗残兵です。AppleMilkTea他、少々のMODを作成しています。
トピック: AppleMilkTea(~1.7.10) / HeatAndClimate(1.10.2)
作者Wiki / github / twitter
アバター
defeatedcrow
ID:bed7c33f
ラピスラズリ収集家
 
記事: 969
登録日時: 2014年1月08日(水) 13:48

  • (PostNo.245264)

Re: [1.7.10]mobが埋まってしまうバグ?

投稿記事by shusei. Y. » 2015年8月30日(日) 10:31

こんにちは。遅くなり申し訳ありません。
ご指摘があったコードを変えてみましたが、やはりmobだけ埋まります。
そして、並べておくとなんだか中心から暗くなっているように見えます。
松明を置いても暗いままでした。
添付ファイル
2015-08-30_10.26.11.png
shusei. Y.
ID:ad808056
水から上がったとこ
 
記事: 7
登録日時: 2015年3月11日(水) 17:29

  • (PostNo.245278)

Re: [1.7.10]mobが埋まってしまうバグ?

投稿記事by リヒト » 2015年8月30日(日) 12:10

私の環境で少し実験してみたのですが、

現在
コード: 全て選択
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool (World world, int x, int y, int z)
{
   return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.9, z + 1);
}

となっているところを

コード: 全て選択
@Override
public AxisAlignedBB getCollisionBoundingBoxFromPool (World world, int x, int y, int z)
{
   return AxisAlignedBB.getBoundingBox(x, y, z, x + 1, y + 0.875, z + 1);
}

と変更して試してみてください。
コード書いたり動画編集したり

MaterialArms 開発中

何かありましたら該当MODのトピックかtwitterまで
リヒト
ID:9774868a
大工さん
 
記事: 67
登録日時: 2015年3月13日(金) 16:15

  • (PostNo.245284)

Re: [1.7.10]mobが埋まってしまうバグ?

投稿記事by shusei. Y. » 2015年8月30日(日) 12:58

ありがとうございます。
画像のように、mobもちゃんとたてるようになりました!
これで解決です。お二人とも本当にありがとうございました。
添付ファイル
2015-08-30_12.55.33.png
shusei. Y.
ID:ad808056
水から上がったとこ
 
記事: 7
登録日時: 2015年3月11日(水) 17:29


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

x