Package mekanism.common.block

Source Code of mekanism.common.block.BlockObsidianTNT

package mekanism.common.block;

import mekanism.common.Mekanism;
import mekanism.common.entity.EntityObsidianTNT;
import mekanism.common.tile.TileEntityObsidianTNT;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.IIcon;
import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockObsidianTNT extends Block
{
  public IIcon[] icons = new IIcon[256];

  public BlockObsidianTNT()
  {
    super(Material.tnt);
    setCreativeTab(Mekanism.tabMekanism);
  }

  @Override
  @SideOnly(Side.CLIENT)
  public void registerBlockIcons(IIconRegister register) {}

  @Override
  public void onBlockAdded(World world, int x, int y, int z)
  {
    super.onBlockAdded(world, x, y, z);

    if(world.isBlockIndirectlyGettingPowered(x, y, z))
    {
      explode(world, x, y, z);
      world.setBlockToAir(x, y, z);
    }
  }

  @Override
  public void onNeighborBlockChange(World world, int x, int y, int z, Block block)
  {
    if(world.isBlockIndirectlyGettingPowered(x, y, z))
    {
      explode(world, x, y, z);
      world.setBlockToAir(x, y, z);
    }
  }

  @Override
  public void onBlockDestroyedByExplosion(World world, int x, int y, int z, Explosion explosion)
  {
    if(!world.isRemote)
    {
      EntityObsidianTNT entity = new EntityObsidianTNT(world, x + 0.5F, y + 0.5F, z + 0.5F);
      entity.fuse = world.rand.nextInt(entity.fuse / 4) + entity.fuse / 8;
      world.spawnEntityInWorld(entity);
    }
  }

  public void explode(World world, int x, int y, int z)
  {
    if(!world.isRemote)
    {
      EntityObsidianTNT entity = new EntityObsidianTNT(world, x + 0.5F, y + 0.5F, z + 0.5F);
      world.spawnEntityInWorld(entity);
      world.playSoundAtEntity(entity, "random.fuse", 1.0F, 1.0F);
    }
  }

  @Override
  public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityplayer, int i1, float f1, float f2, float f3)
  {
    if(entityplayer.getCurrentEquippedItem() != null && entityplayer.getCurrentEquippedItem().getItem() == Items.flint_and_steel)
    {
      explode(world, x, y, z);
      world.setBlockToAir(x, y, z);
      return true;
    }
    else {
      return super.onBlockActivated(world, x, y, z, entityplayer, i1, f1, f2, f3);
    }
  }

  @Override
  public boolean canDropFromExplosion(Explosion explosion)
  {
    return false;
  }

  @Override
  public boolean hasTileEntity(int metadata)
  {
    return true;
  }

  @Override
  public TileEntity createTileEntity(World world, int metadata)
  {
    return new TileEntityObsidianTNT();
  }

  @Override
  public boolean renderAsNormalBlock()
  {
    return false;
  }

  @Override
  public boolean isOpaqueCube()
  {
    return false;
  }

  @Override
  public int getRenderType()
  {
    return -1;
  }

  @Override
  public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity)
  {
    if(entity instanceof EntityArrow && !world.isRemote)
    {
      EntityArrow entityarrow = (EntityArrow)entity;

      if(entityarrow.isBurning())
      {
        explode(world, x, y, z);
        world.setBlockToAir(x, y, z);
      }
    }
  }
}
TOP

Related Classes of mekanism.common.block.BlockObsidianTNT

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.