package net.geforcemods.securitycraft.blocks.mines;
import java.util.Random;
import net.geforcemods.securitycraft.api.IIntersectable;
import net.geforcemods.securitycraft.imc.waila.ICustomWailaDisplay;
import net.geforcemods.securitycraft.main.mod_SecurityCraft;
import net.geforcemods.securitycraft.tileentity.TileEntityOwnable;
import net.minecraft.block.Block;
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
public class BlockFullMineBase extends BlockExplosive implements IIntersectable, ICustomWailaDisplay {
private final Block blockDisguisedAs;
public BlockFullMineBase(Material par1Material, Block disguisedBlock) {
super(par1Material);
blockDisguisedAs = disguisedBlock;
if(par1Material == Material.SAND)
setSoundType(SoundType.SAND);
else if(par1Material == Material.GROUND)
setSoundType(SoundType.GROUND);
else
setSoundType(SoundType.STONE);
}
@Override
public EnumBlockRenderType getRenderType(IBlockState state){
return EnumBlockRenderType.MODEL;
}
@Override
public AxisAlignedBB getCollisionBoundingBox(IBlockState blockState, World worldIn, BlockPos pos){
return null;
}
@Override
public void onEntityIntersected(World world, BlockPos pos, Entity entity){
if(entity instanceof EntityItem){
return;
}else{
this.explode(world, pos);
}
}
/**
* Called upon the block being destroyed by an explosion
*/
@Override
public void onBlockDestroyedByExplosion(World par1World, BlockPos pos, Explosion par5Explosion){
if (!par1World.isRemote)
{
Random random = new Random();
if(random.nextInt(3) == 1){
this.explode(par1World, pos);
}
}
}
@Override
public void onBlockDestroyedByPlayer(World par1World, BlockPos pos, IBlockState state){
if (!par1World.isRemote)
{
this.explode(par1World, pos);
}
}
@Override
public void activateMine(World world, BlockPos pos) {}
@Override
public void defuseMine(World world, BlockPos pos) {}
@Override
public void explode(World par1World, BlockPos pos) {
par1World.destroyBlock(pos, false);
if(mod_SecurityCraft.configHandler.smallerMineExplosion){
par1World.createExplosion((Entity)null, pos.getX(), pos.getY() + 0.5D, pos.getZ(), 2.5F, true);
}else{
par1World.createExplosion((Entity)null, pos.getX(), pos.getY() + 0.5D, pos.getZ(), 5.0F, true);
}
}
/**
* Return whether this block can drop from an explosion.
*/
@Override
public boolean canDropFromExplosion(Explosion par1Explosion){
return false;
}
@Override
public boolean isActive(World world, BlockPos pos) {
return true;
}
@Override
public boolean explodesWhenInteractedWith() {
return false;
}
@Override
public boolean isDefusable() {
return false;
}
@Override
public TileEntity createNewTileEntity(World worldIn, int meta) {
return new TileEntityOwnable().intersectsEntities();
}
@Override
public ItemStack getDisplayStack(World world, IBlockState state, BlockPos pos) {
return new ItemStack(blockDisguisedAs);
}
@Override
public boolean shouldShowSCInfo(World world, IBlockState state, BlockPos pos) {
return false;
}
}