Class:
public class BlockNuke extends Block { @SideOnly(Side.CLIENT)
private IIcon top;
@SideOnly(Side.CLIENT)
private IIcon bottom;
@SideOnly(Side.CLIENT)
private IIcon front;
@SideOnly(Side.CLIENT)
private IIcon side;
private static final String __OBFID = "CL_00000324";
public BlockNuke() {
super(Material.grass);
this.setStepSound(soundTypeGrass);
}
/**
* Gets the block's texture. Args: side, meta
*/
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int metadata){
if (side == 1) return this.top;
else if (side == 0) return this.bottom;
else if (metadata == 2 && side == 2) return this.front;
else if (metadata == 3 && side == 5) return this.front;
else if (metadata == 0 && side == 3) return this.front;
else if (metadata == 1 && side == 4) return this.front;
else return this.blockIcon;
}
/**
* Called whenever the block is added into the world. Args: world, x, y, z
*/
public void onBlockAdded(World p_149726_1_, int p_149726_2_, int p_149726_3_, int p_149726_4_) {
super.onBlockAdded(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_);
if (p_149726_1_.isBlockIndirectlyGettingPowered(p_149726_2_, p_149726_3_, p_149726_4_)) {
this.onBlockDestroyedByPlayer(p_149726_1_, p_149726_2_, p_149726_3_, p_149726_4_, 1);
p_149726_1_.setBlockToAir(p_149726_2_, p_149726_3_, p_149726_4_);
}
}
@Override
public void onBlockPlacedBy(World par1World, int x, int y, int z, EntityLivingBase par5EntityLivingBase,
ItemStack par6ItemStack) {
int whichDirectionFacing = MathHelper
.floor_double((double) (par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
par1World.setBlockMetadataWithNotify(x, y, z, whichDirectionFacing, 2);
}
/**
* Lets the block know when one of its neighbor changes. Doesn't know which
* neighbor changed (coordinates passed are their own) Args: x, y, z,
* neighbor Block
*/
public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_,
Block p_149695_5_) {
if (p_149695_1_.isBlockIndirectlyGettingPowered(p_149695_2_, p_149695_3_, p_149695_4_)) {
this.onBlockDestroyedByPlayer(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, 1);
p_149695_1_.setBlockToAir(p_149695_2_, p_149695_3_, p_149695_4_);
}
}
/**
* Returns the quantity of items to drop on block destruction.
*/
public int quantityDropped(Random p_149745_1_) {
return 1;
}
/**
* Called upon the block being destroyed by an explosion
*/
public void onBlockDestroyedByExplosion(World p_149723_1_, int p_149723_2_, int p_149723_3_, int p_149723_4_,
Explosion p_149723_5_) {
if (!p_149723_1_.isRemote) {
EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(p_149723_1_, (double) ((float) p_149723_2_ + 0.5F),
(double) ((float) p_149723_3_ + 0.5F), (double) ((float) p_149723_4_ + 0.5F),
p_149723_5_.getExplosivePlacedBy());
entitytntprimed.fuse = p_149723_1_.rand.nextInt(entitytntprimed.fuse / 4) + entitytntprimed.fuse / 8;
p_149723_1_.spawnEntityInWorld(entitytntprimed);
}
}
/**
* Called right before the block is destroyed by a player. Args: world, x,
* y, z, metaData
*/
public void onBlockDestroyedByPlayer(World p_149664_1_, int p_149664_2_, int p_149664_3_, int p_149664_4_,
int p_149664_5_) {
this.func_150114_a(p_149664_1_, p_149664_2_, p_149664_3_, p_149664_4_, p_149664_5_, (EntityLivingBase) null);
}
public void func_150114_a(World p_150114_1_, int p_150114_2_, int p_150114_3_, int p_150114_4_, int p_150114_5_,
EntityLivingBase p_150114_6_) {
if (!p_150114_1_.isRemote) {
if ((p_150114_5_ & 1) == 1) {
EntityTNTPrimed entitytntprimed = new EntityTNTPrimed(p_150114_1_,
(double) ((float) p_150114_2_ + 0.5F), (double) ((float) p_150114_3_ + 0.5F),
(double) ((float) p_150114_4_ + 0.5F), p_150114_6_);
p_150114_1_.spawnEntityInWorld(entitytntprimed);
p_150114_1_.playSoundAtEntity(entitytntprimed, "game.tnt.primed", 1.0F, 1.0F);
}
}
}
/**
* Called upon block activation (right click on the block.)
*/
public boolean onBlockActivated(World p_149727_1_, int p_149727_2_, int p_149727_3_, int p_149727_4_,
EntityPlayer p_149727_5_, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) {
if (p_149727_5_.getCurrentEquippedItem() != null
&& p_149727_5_.getCurrentEquippedItem().getItem() == Items.flint_and_steel) {
this.func_150114_a(p_149727_1_, p_149727_2_, p_149727_3_, p_149727_4_, 1, p_149727_5_);
p_149727_1_.setBlockToAir(p_149727_2_, p_149727_3_, p_149727_4_);
p_149727_5_.getCurrentEquippedItem().damageItem(1, p_149727_5_);
return true;
} else {
return super.onBlockActivated(p_149727_1_, p_149727_2_, p_149727_3_, p_149727_4_, p_149727_5_, p_149727_6_,
p_149727_7_, p_149727_8_, p_149727_9_);
}
}
/**
* Triggered whenever an entity collides with this block (enters into the
* block). Args: world, x, y, z, entity
*/
public void onEntityCollidedWithBlock(World p_149670_1_, int p_149670_2_, int p_149670_3_, int p_149670_4_,
Entity p_149670_5_) {
if (p_149670_5_ instanceof EntityArrow && !p_149670_1_.isRemote) {
EntityArrow entityarrow = (EntityArrow) p_149670_5_;
if (entityarrow.isBurning()) {
this.func_150114_a(p_149670_1_, p_149670_2_, p_149670_3_, p_149670_4_, 1,
entityarrow.shootingEntity instanceof EntityLivingBase
? (EntityLivingBase) entityarrow.shootingEntity : null);
p_149670_1_.setBlockToAir(p_149670_2_, p_149670_3_, p_149670_4_);
}
}
}
/**
* Return whether this block can drop from an explosion.
*/
public boolean canDropFromExplosion(Explosion p_149659_1_) {
return false;
}
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister reg) {
this.blockIcon = reg.registerIcon("explosives:nuke_side");
top = reg.registerIcon("explosives:nuke_top");
bottom = reg.registerIcon("explosives:nuke_bottom");
front = reg.registerIcon("explosives:nuke_front");
}
Problem: The block randomly turns into TNT when I break it. I've tried commenting out onBlockPlacedBy and then it didn't randomly explode when I break it. I need the onBlockPlacedBy function. Why is onBlockPlacedBy causing this and how can I use it without this happening?