package com.hbm.items.tool;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.init.Blocks;
import net.minecraft.item.ItemBucket;
import net.minecraft.world.World;

public class ItemModBucket extends ItemBucket {
	
	protected int overrideFluidMeta = 0;
	protected Block containedFluid;

	public ItemModBucket(Block fluid) {
		super(fluid);
		this.containedFluid = fluid;
	}

	public ItemModBucket(Block fluid, int meta) {
		this(fluid);
		this.overrideFluidMeta = meta;
	}

	@Override
	public boolean tryPlaceContainedLiquid(World world, int x, int y, int z) {
		
		if(this.containedFluid == Blocks.air) {
			return false;
		} else {
			Material material = world.getBlock(x, y, z).getMaterial();
			boolean flag = !material.isSolid();

			if(!world.isAirBlock(x, y, z) && !flag) {
				return false;
			} else {
				if(world.provider.isHellWorld && this.containedFluid == Blocks.flowing_water) {
					world.playSoundEffect((double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F), "random.fizz", 0.5F,
							2.6F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.8F);

					for(int l = 0; l < 8; ++l) {
						world.spawnParticle("largesmoke", (double) x + Math.random(), (double) y + Math.random(), (double) z + Math.random(), 0.0D, 0.0D, 0.0D);
					}
				} else {
					if(!world.isRemote && flag && !material.isLiquid()) {
						world.func_147480_a(x, y, z, true);
					}

					world.setBlock(x, y, z, this.containedFluid, overrideFluidMeta, 3);
				}

				return true;
			}
		}
	}

}
