package mattparks.mods.space.europa.fluids.blocks;
import java.util.Random;
import mattparks.mods.space.europa.EuropaCore;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fluids.BlockFluidClassic;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class BlockFluidEuropaWater extends BlockFluidClassic {
public static IIcon europaWaterStillIcon;
public static IIcon europaWaterFlowingIcon;
public BlockFluidEuropaWater(String name, Fluid fluid, Material par2Material) {
super(fluid, par2Material);
this.setQuantaPerBlock(8);
this.setRenderPass(1);
this.needsRandomTick = true;
this.stack = new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME);
this.setBlockName(name);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(int par1, int par2) {
return par1 != 0 && par1 != 1 ? BlockFluidEuropaWater.europaWaterStillIcon : BlockFluidEuropaWater.europaWaterFlowingIcon;
}
@Override
public boolean canDisplace(IBlockAccess world, int x, int y, int z) {
if (world.getBlock(x, y, z).getMaterial().isLiquid()) {
return false;
}
return super.canDisplace(world, x, y, z);
}
@Override
public boolean displaceIfPossible(World world, int x, int y, int z) {
if (world.getBlock(x, y, z).getMaterial().isLiquid()) {
return false;
}
return super.displaceIfPossible(world, x, y, z);
}
@Override
@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister par1IconRegister) {
BlockFluidEuropaWater.europaWaterStillIcon = par1IconRegister.registerIcon(EuropaCore.TEXTURE_PREFIX + "europaWater_flowing");
BlockFluidEuropaWater.europaWaterFlowingIcon = par1IconRegister.registerIcon(EuropaCore.TEXTURE_PREFIX + "europaWater_still");
}
@Override
@SideOnly(Side.CLIENT)
public void randomDisplayTick(World world, int x, int y, int z, Random rand) {
super.randomDisplayTick(world, x, y, z, rand);
if (rand.nextInt(64) == 0) {
final int l = world.getBlockMetadata(x, y, z);
if (l > 0 && l < 8) {
world.playSound(x + 0.5F, y + 0.5F, z + 0.5F, "liquid.water", rand.nextFloat() * 0.25F + 0.75F, rand.nextFloat() * 1.0F + 0.5F, false);
}
}
if (rand.nextInt(10) == 0) {
final int l = world.getBlockMetadata(x, y, z);
if (l <= 0 || l >= 8) {
world.spawnParticle("suspended", x + rand.nextFloat(), y + rand.nextFloat(), z + rand.nextFloat(), 0.0D, 0.0D, 0.0D);
}
}
if (rand.nextInt(10) == 0 && World.doesBlockHaveSolidTopSurface(world, x, y - 1, z) && !world.getBlock(x, y - 2, z).getMaterial().blocksMovement()) {
final double d5 = x + rand.nextFloat();
final double d6 = y - 1.05D;
final double d7 = z + rand.nextFloat();
EuropaCore.proxy.spawnParticle("europaWaterDrip", d5, d6, d7);
}
}
}