package emasher.items; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import emasher.EngineersToolbox; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; 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.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; import net.minecraftforge.fluids.FluidContainerRegistry; import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.IFluidHandler; import java.util.List; public class ItemGasVialFilled extends Item { @SideOnly( Side.CLIENT ) public IIcon[] textures; public ItemGasVialFilled() { super(); setCreativeTab( EngineersToolbox.tabItems() ); setMaxStackSize( 1 ); setUnlocalizedName( "gasVialFilled" ); } @Override @SideOnly( Side.CLIENT ) public IIcon getIconFromDamage( int damage ) { if( damage == 0 ) return this.itemIcon; return textures[damage]; } @Override @SideOnly( Side.CLIENT ) public void registerIcons( IIconRegister ir ) { textures = new IIcon[8]; textures[0] = ir.registerIcon( "eng_toolbox:naturalGasVial" ); textures[1] = ir.registerIcon( "eng_toolbox:propellentVial" ); textures[2] = ir.registerIcon( "eng_toolbox:hydrogenVial" ); textures[3] = ir.registerIcon( "eng_toolbox:smokeVial" ); textures[4] = ir.registerIcon( "eng_toolbox:toxicGasVial" ); textures[5] = ir.registerIcon( "eng_toolbox:neurotoxinVial" ); textures[6] = ir.registerIcon( "eng_toolbox:corrosiveGasVial" ); textures[7] = ir.registerIcon( "eng_toolbox:plasmaVial" ); this.itemIcon = textures[0]; } public FluidStack getFluid( ItemStack stack ) { int meta = stack.getItemDamage(); int v = FluidContainerRegistry.BUCKET_VOLUME; switch(meta) { case 0: return new FluidStack( emasher.fluids.Fluids.fluidNaturalGas(), v ); case 1: return new FluidStack( emasher.fluids.Fluids.fluidPropellent(), v ); case 2: return new FluidStack( emasher.fluids.Fluids.fluidHydrogen(), v ); case 3: return new FluidStack( emasher.fluids.Fluids.fluidSmoke(), v ); case 4: return new FluidStack( emasher.fluids.Fluids.fluidToxicGas(), v ); case 5: return new FluidStack( emasher.fluids.Fluids.fluidNeurotoxin(), v ); case 6: return new FluidStack( emasher.fluids.Fluids.fluidCorrosiveGas(), v ); case 7: return new FluidStack( emasher.fluids.Fluids.fluidPlasma(), v ); default: return new FluidStack( emasher.fluids.Fluids.fluidNaturalGas(), v ); } } @Override public String getUnlocalizedName( ItemStack itemstack ) { String name = ""; switch(itemstack.getItemDamage()) { case 0: name = "naturalGas"; break; case 1: name = "propellent"; break; case 2: name = "hydrogen"; break; case 3: name = "smoke"; break; case 4: name = "toxicGas"; break; case 5: name = "neurotoxin"; break; case 6: name = "corrosiveGas"; break; case 7: name = "plasma"; break; } return getUnlocalizedName() + "." + name; } @Override @SideOnly( Side.CLIENT ) public void getSubItems( Item par1, CreativeTabs par2CreativeTabs, List par3List ) { for( int i = 0; i < 8; i++ ) par3List.add( new ItemStack( par1, 1, i ) ); } @Override public ItemStack onItemRightClick( ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer ) { float var4 = 1.0F; double var5 = par3EntityPlayer.prevPosX + ( par3EntityPlayer.posX - par3EntityPlayer.prevPosX ) * ( double ) var4; double var7 = par3EntityPlayer.prevPosY + ( par3EntityPlayer.posY - par3EntityPlayer.prevPosY ) * ( double ) var4 + 1.62D - ( double ) par3EntityPlayer.yOffset; double var9 = par3EntityPlayer.prevPosZ + ( par3EntityPlayer.posZ - par3EntityPlayer.prevPosZ ) * ( double ) var4; MovingObjectPosition var12 = this.getMovingObjectPositionFromPlayer( par2World, par3EntityPlayer, true ); if( var12 == null ) { return par1ItemStack; } else if( var12.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK ) { int var13 = var12.blockX; int var14 = var12.blockY; int var15 = var12.blockZ; Block block = par2World.getBlock( var13, var14, var15 ); if( var12.sideHit == 0 ) { --var14; } if( var12.sideHit == 1 ) { ++var14; } if( var12.sideHit == 2 ) { --var15; } if( var12.sideHit == 3 ) { ++var15; } if( var12.sideHit == 4 ) { --var13; } if( var12.sideHit == 5 ) { ++var13; } //int i = par2World.getBlockId(var13, var14, var15); Block b = par2World.getBlock( var13, var14, var15 ); if( b == Blocks.air && !( block instanceof IFluidHandler ) ) { par2World.playSoundEffect( ( double ) var13 + 0.5D, ( double ) var14 + 0.5D, ( double ) var15 + 0.5D, "fire.ignite", 1.0F, itemRand.nextFloat() * 0.4F + 0.8F ); par2World.setBlock( var13, var14, var15, getFluid( par1ItemStack ).getFluid().getBlock() ); if( !par3EntityPlayer.capabilities.isCreativeMode ) { par1ItemStack.stackSize--; return ( new ItemStack( emasher.items.Items.vial(), 1, 0 ) ); } else { return par1ItemStack; } } } return par1ItemStack; } }