+package pcc.chemicraft.item;
+
+import java.util.Iterator;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.EntityLiving;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.AxisAlignedBB;
+import net.minecraft.util.DamageSource;
+import net.minecraft.world.World;
+import pcc.chemicraft.ChemiCraft;
+
+public class ItemRadiationGun extends Item {
+
+ private short delay;
+
+ public ItemRadiationGun(int par1) {
+ super(par1);
+ this.setCreativeTab(ChemiCraft.creativeTabChemiCraft);
+ this.maxStackSize = 1;
+ }
+
+ @Override
+ public String getTextureFile() {
+ return ChemiCraft.instance.ITEM_TEXTURE;
+ }
+
+ @Override
+ public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World,
+ EntityPlayer par3EntityPlayer) {
+
+ boolean isCreative = par3EntityPlayer.capabilities.isCreativeMode;
+
+ if (this.delay <= 0) {
+ if (isCreative) {
+ if (par3EntityPlayer.inventory.hasItem(ChemiCraft.instance.itemRadiationBallet.shiftedIndex)) {
+ this.field_00001(par1ItemStack, par2World, par3EntityPlayer);
+ par3EntityPlayer.inventory.consumeInventoryItem(ChemiCraft.instance.itemRadiationBallet.shiftedIndex);
+ par2World.playSound(par3EntityPlayer.posX,
+ par3EntityPlayer.posY,
+ par3EntityPlayer.posZ,
+ "mob.endermen.portal",
+ 1.0F,
+ 1.3F,
+ false);
+ if (!par2World.isRemote) {
+ this.delay = 100;
+ }
+ } else {
+ this.field_00001(par1ItemStack, par2World, par3EntityPlayer);
+ par2World.playSound(par3EntityPlayer.posX,
+ par3EntityPlayer.posY,
+ par3EntityPlayer.posZ,
+ "mob.endermen.portal",
+ 1.0F,
+ 1.3F,
+ false);
+ if (!par2World.isRemote) {
+ this.delay = 100;
+ }
+ }
+ }
+ }
+
+ return super.onItemRightClick(par1ItemStack, par2World, par3EntityPlayer);
+ }
+
+ private void field_00001(ItemStack par1ItemStack, World par2World,
+ EntityPlayer par3EntityPlayer) {
+ int distance = 0;
+ double minX = par3EntityPlayer.posX;
+ double minZ = par3EntityPlayer.posZ;
+ double maxX = par3EntityPlayer.posX - Math.sin(Math.toRadians(par3EntityPlayer.rotationYaw)) * 20;
+ double maxZ = par3EntityPlayer.posZ + Math.cos(Math.toRadians(par3EntityPlayer.rotationYaw)) * 20;
+ double posY = par3EntityPlayer.posY;
+ for(distance = 0;distance < Math.abs(((minX-maxX) + (minZ-maxZ))) / 2;distance++){
+ AxisAlignedBB aabb = AxisAlignedBB.getBoundingBox(
+ minX + -Math.sin(Math.toRadians(par3EntityPlayer.rotationYaw)) * distance,
+ posY + 1,
+ minZ + Math.cos(Math.toRadians(par3EntityPlayer.rotationYaw)) * distance,
+ minX + -Math.sin(Math.toRadians(par3EntityPlayer.rotationYaw)) * distance,
+ posY + 1,
+ minZ + Math.cos(Math.toRadians(par3EntityPlayer.rotationYaw)) * distance
+ ).expand(1.5, 3, 1.5);
+
+ Iterator itr = par2World.getEntitiesWithinAABB(EntityLiving.class, aabb).iterator();
+ while(itr.hasNext()){
+ EntityLiving entity = (EntityLiving) itr.next();
+ if(entity != par3EntityPlayer){
+ entity.attackEntityFrom(DamageSource.causePlayerDamage(par3EntityPlayer), 10);
+ entity.attackEntityFrom(DamageSource.causePlayerDamage(par3EntityPlayer), (int) (10 + Math.random() * 11));
+ entity.addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), 1, 20*20));
+ entity.addPotionEffect(new PotionEffect(Potion.weakness.getId(), 1, 20*20));
+ }
+ }
+ }
+ }
+
+ @Override
+ public void onUpdate(ItemStack par1ItemStack, World par2World,
+ Entity par3Entity, int par4, boolean par5) {
+ if (this.delay > 0 && !par2World.isRemote) {
+ this.delay--;
+ }
+ }
+
+
+}