gt:                     for (int l = 0; l < 8; ++l)
context: package com.konatatatata.components;
  
  import java.util.List;
  
  import com.konatatatata.xFluids;
  import com.konatatatata.xHelper;
  import com.konatatatata.xItems;
  import com.konatatatata.xRealisticExplosives;
  import com.konatatatata.xTabs;
  
  import cpw.mods.fml.common.eventhandler.Event;
  import net.minecraft.block.Block;
  import net.minecraft.block.material.Material;
  import net.minecraft.entity.player.EntityPlayer;
  import net.minecraft.init.Blocks;
  import net.minecraft.item.Item;
  import net.minecraft.item.ItemStack;
  import net.minecraft.util.MovingObjectPosition;
  import net.minecraft.world.World;
  import net.minecraftforge.common.MinecraftForge;
  import net.minecraftforge.event.entity.player.FillBucketEvent;
  
  public class genericComponent extends Item
  {
  	private boolean isDisposableFluid = false;
  	private String desc;
  	private String name;
  	
  	public genericComponent(String name, boolean isDisposableFluid, int maxStackSize, String desc)
  	{
  		this.name = name;
  		this.isDisposableFluid = isDisposableFluid;
  		this.desc = desc;
  		setMaxStackSize(maxStackSize);
  		setCreativeTab(xTabs.components);
  		setUnlocalizedName(name);
  		
  		setTextureName(xRealisticExplosives.MODID + ":components/" + this.getUnlocalizedName().substring(5));
  	}
  	
  	public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par2List, boolean par4)
  	{
  		par2List.add("\u00a7a" + this.desc);
  		if(xFluids.getFluidByName(this.name) != null) par2List.add("\u00a7a" + "(disposable fluid)");
  	}
  
  	/**
       * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
       */
      public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_)
      {
      	if(p_77659_1_.stackSize < 1)
      	{
      		if(p_77659_2_.isRemote) xHelper.sendMessage(p_77659_3_, "Can only fill/dispose single bottle stack!");
      		return p_77659_1_;
      	}
      	if(isDisposableFluid)
  		{
  			boolean disposed = false;
  			for(String fluidName : xFluids.fluidNames)
  			{
  				if(fluidName == null) break;
  				if(this.getUnlocalizedName().substring(5).equals(fluidName))
  				{
  					this.isFull = xFluids.getFluidByName(fluidName).getBlock();
  				}
  			}
  			/*
  			if(this.getUnlocalizedName().substring(5).equals("water"))
  			{
  				this.isFull = Blocks.water;
  			}
  			*/
  		}
      	else
      	{
      		if(!this.getUnlocalizedName().substring(5).equals("bottle")) return p_77659_1_;
      	}
      	//
          boolean flag = this.isFull == Blocks.air;
          if(this.getUnlocalizedName().substring(5).equals("bottle")) flag = true;
          
          MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(p_77659_2_, p_77659_3_, flag);
  
          if (movingobjectposition == null)
          {
              return p_77659_1_;
          }
          else
          {
          	Block b = p_77659_2_.getBlock(movingobjectposition.blockX, movingobjectposition.blockY, movingobjectposition.blockZ);
              if(b.getUnlocalizedName().substring(5).equals("blockOil"))
              {
              	p_77659_2_.setBlockToAir(movingobjectposition.blockX, movingobjectposition.blockY, movingobjectposition.blockZ);
              	xHelper.giveItem(p_77659_3_, xItems.getItemByName("oil"));
              	p_77659_1_.stackSize--;
              	return p_77659_1_;
              }
              
              FillBucketEvent event = new FillBucketEvent(p_77659_3_, p_77659_1_, p_77659_2_, movingobjectposition);
              if (MinecraftForge.EVENT_BUS.post(event))
              {
              	p_77659_1_.stackSize--;
                  return p_77659_1_;
              }
  
              if (event.getResult() == Event.Result.ALLOW)
              {
                  if (p_77659_3_.capabilities.isCreativeMode)
                  {
                      return p_77659_1_;
                  }
  
                  if (--p_77659_1_.stackSize <= 0)
                  {
                      return event.result;
                  }
  
                  xHelper.giveItem(p_77659_3_, event.result);
  
                  return p_77659_1_;
              }
              if (movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK)
              {
                  int i = movingobjectposition.blockX;
                  int j = movingobjectposition.blockY;
                  int k = movingobjectposition.blockZ;
  
                  if (!p_77659_2_.canMineBlock(p_77659_3_, i, j, k))
                  {
                      return p_77659_1_;
                  }
  
                  if (flag)
                  {
                      if (!p_77659_3_.canPlayerEdit(i, j, k, movingobjectposition.sideHit, p_77659_1_))
                      {
                          return p_77659_1_;
                      }
                      
                      Block toPickUp = p_77659_2_.getBlock(i, j, k);
                      if(toPickUp != null)
                      {
  	                    for(String fluidName : xFluids.fluidNames)
  	                    {
  	                    	if(fluidName == null) break;
  	                    	if(toPickUp.equals(xFluids.getFluidByName(fluidName).getBlock()))
  	                        {
  	                        	p_77659_2_.setBlockToAir(i, j, k);
  	                        	xHelper.giveItem(p_77659_3_, xItems.getItemByName(fluidName));
  	                        	p_77659_1_.stackSize--;
  	                        	return p_77659_1_;
  	                        }
  	                    }
  	                    return p_77659_1_;
                      }
                  }
                  else
                  {
                      
                      if (movingobjectposition.sideHit == 0)
                      {
                          --j;
                      }
  
                      if (movingobjectposition.sideHit == 1)
                      {
                          ++j;
                      }
  
                      if (movingobjectposition.sideHit == 2)
                      {
                          --k;
                      }
  
                      if (movingobjectposition.sideHit == 3)
                      {
                          ++k;
                      }
  
                      if (movingobjectposition.sideHit == 4)
                      {
                          --i;
                      }
  
                      if (movingobjectposition.sideHit == 5)
                      {
                          ++i;
                      }
  
                      if (!p_77659_3_.canPlayerEdit(i, j, k, movingobjectposition.sideHit, p_77659_1_))
                      {
                          return p_77659_1_;
                      }
  
                      if (this.tryPlaceContainedLiquid(p_77659_2_, i, j, k) && !p_77659_3_.capabilities.isCreativeMode)
                      {
                      	p_77659_1_.stackSize--;
                      	xHelper.giveItem(p_77659_3_, xItems.getItemByName("bottle"));
                          return p_77659_1_;
                      }
                      else
                      {
                      	return p_77659_1_;
                      }
                  }
              }
  
              return p_77659_1_;
          }
      }
  
      /*
      private boolean useFertilizer(EntityPlayer player, World world)
      {
      	MovingObjectPosition movingobjectposition = this.getMovingObjectPositionFromPlayer(world, player, false);
      	int x = movingobjectposition.blockX;
      	int y = movingobjectposition.blockY;
      	int z = movingobjectposition.blockZ;
      	
      	Block block = world.getBlock(x, y, z);
      	
      	if(block != Blocks.air || block != null)
      	{
      		if(block == Blocks.sapling)
      		{
      			BonemealEvent event = new BonemealEvent(player, world, block, x, y, y);
          		event.setResult(Result.ALLOW);
          		Random rnd = new Random();
          		((BlockSapling)block).func_149879_c(world, x, y, z, rnd);
          		return true;
      		}
      	}
      	return false;
  	}
  	*/
  
  	private ItemStack func_150910_a(ItemStack p_150910_1_, EntityPlayer p_150910_2_, Item p_150910_3_)
      {
          if (p_150910_2_.capabilities.isCreativeMode)
          {
              return p_150910_1_;
          }
          else if (--p_150910_1_.stackSize <= 0)
          {
              return new ItemStack(p_150910_3_);
          }
          else
          {
              if (!p_150910_2_.inventory.addItemStackToInventory(new ItemStack(p_150910_3_)))
              {
                  p_150910_2_.dropPlayerItemWithRandomChoice(new ItemStack(p_150910_3_, 1, 0), false);
              }
  
              return p_150910_1_;
          }
      }
  
      /**
       * Attempts to place the liquid contained inside the bucket.
       */
      private Block isFull;
      public boolean tryPlaceContainedLiquid(World p_77875_1_, int p_77875_2_, int p_77875_3_, int p_77875_4_)
      {
          if (this.isFull == Blocks.air)
          {
              return false;
          }
          else
          {
              Material material = p_77875_1_.getBlock(p_77875_2_, p_77875_3_, p_77875_4_).getMaterial();
              boolean flag = !material.isSolid();
  
              if (!p_77875_1_.isAirBlock(p_77875_2_, p_77875_3_, p_77875_4_) && !flag)
              {
                  return false;
              }
              else
              {
                  if (p_77875_1_.provider.isHellWorld && this.isFull == Blocks.flowing_water)
                  {
                      p_77875_1_.playSoundEffect((double)((float)p_77875_2_ + 0.5F), (double)((float)p_77875_3_ + 0.5F), (double)((float)p_77875_4_ + 0.5F), "random.fizz", 0.5F, 2.6F + (p_77875_1_.rand.nextFloat() - p_77875_1_.rand.nextFloat()) * 0.8F);
  
  