package net.minecraft.block;
import java.util.Random;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumParticleTypes;
import net.minecraft.world.World;
public class BlockRedstoneOre extends Block
{
private final boolean isOn;
private static final String __OBFID = "CL_00000294";
public BlockRedstoneOre(boolean p_i45420_1_)
{
super(Material.rock);
if (p_i45420_1_)
{
this.setTickRandomly(true);
}
this.isOn = p_i45420_1_;
}
/**
* How many world ticks before ticking
*/
public int tickRate(World worldIn)
{
return 30;
}
public void onBlockClicked(World worldIn, BlockPos pos, EntityPlayer playerIn)
{
this.setOn(worldIn, pos);
super.onBlockClicked(worldIn, pos, playerIn);
}
/**
* Triggered whenever an entity collides with this block (enters into the block)
*/
public void onEntityCollidedWithBlock(World worldIn, BlockPos pos, Entity entityIn)
{
this.setOn(worldIn, pos);
super.onEntityCollidedWithBlock(worldIn, pos, entityIn);
}
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumFacing side, float hitX, float hitY, float hitZ)
{
this.setOn(worldIn, pos);
return super.onBlockActivated(worldIn, pos, state, playerIn, side, hitX, hitY, hitZ);
}
private void setOn(World worldIn, BlockPos p_176352_2_)
{
this.spawnRedstoneParticles(worldIn, p_176352_2_);
if (this == Blocks.redstone_ore)
{
worldIn.setBlockState(p_176352_2_, Blocks.lit_redstone_ore.getDefaultState());
}
}
public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
{
if (this == Blocks.lit_redstone_ore)
{
worldIn.setBlockState(pos, Blocks.redstone_ore.getDefaultState());
}
}
/**
* Get the Item that this Block should drop when harvested.
*
* @param fortune the level of the Fortune enchantment on the player's tool
*/
public Item getItemDropped(IBlockState state, Random rand, int fortune)
{
return Items.redstone;
}
/**
* Get the quantity dropped based on the given fortune level
*/
public int quantityDroppedWithBonus(int fortune, Random random)
{
return this.quantityDropped(random) + random.nextInt(fortune + 1);
}
/**
* Returns the quantity of items to drop on block destruction.
*/
public int quantityDropped(Random random)
{
return 4 + random.nextInt(2);
}
/**
* Spawns this Block's drops into the World as EntityItems.
*
* @param chance The chance that each Item is actually spawned (1.0 = always, 0.0 = never)
* @param fortune The player's fortune level
*/
public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune)
{
super.dropBlockAsItemWithChance(worldIn, pos, state, chance, fortune);
if (this.getItemDropped(state, worldIn.rand, fortune) != Item.getItemFromBlock(this))
{
int var6 = 1 + worldIn.rand.nextInt(5);
this.dropXpOnBlockBreak(worldIn, pos, var6);
}
}
private void spawnRedstoneParticles(World worldIn, BlockPos p_180691_2_)
{
Random var3 = worldIn.rand;
double var4 = 0.0625D;
for (int var6 = 0; var6 < 6; ++var6)
{
double var7 = (double)((float)p_180691_2_.getX() + var3.nextFloat());
double var9 = (double)((float)p_180691_2_.getY() + var3.nextFloat());
double var11 = (double)((float)p_180691_2_.getZ() + var3.nextFloat());
if (var6 == 0 && !worldIn.getBlockState(p_180691_2_.offsetUp()).getBlock().isOpaqueCube())
{
var9 = (double)p_180691_2_.getY() + var4 + 1.0D;
}
if (var6 == 1 && !worldIn.getBlockState(p_180691_2_.offsetDown()).getBlock().isOpaqueCube())
{
var9 = (double)p_180691_2_.getY() - var4;
}
if (var6 == 2 && !worldIn.getBlockState(p_180691_2_.offsetSouth()).getBlock().isOpaqueCube())
{
var11 = (double)p_180691_2_.getZ() + var4 + 1.0D;
}
if (var6 == 3 && !worldIn.getBlockState(p_180691_2_.offsetNorth()).getBlock().isOpaqueCube())
{
var11 = (double)p_180691_2_.getZ() - var4;
}
if (var6 == 4 && !worldIn.getBlockState(p_180691_2_.offsetEast()).getBlock().isOpaqueCube())
{
var7 = (double)p_180691_2_.getX() + var4 + 1.0D;
}
if (var6 == 5 && !worldIn.getBlockState(p_180691_2_.offsetWest()).getBlock().isOpaqueCube())
{
var7 = (double)p_180691_2_.getX() - var4;
}
if (var7 < (double)p_180691_2_.getX() || var7 > (double)(p_180691_2_.getX() + 1) || var9 < 0.0D || var9 > (double)(p_180691_2_.getY() + 1) || var11 < (double)p_180691_2_.getZ() || var11 > (double)(p_180691_2_.getZ() + 1))
{
worldIn.spawnParticle(EnumParticleTypes.REDSTONE, var7, var9, var11, 0.0D, 0.0D, 0.0D, new int[0]);
}
}
}
protected ItemStack createStackedBlock(IBlockState state)
{
return new ItemStack(Blocks.redstone_ore);
}
}