diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 6d4e3d39f..3b329b4cc 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -1080,6 +1080,20 @@ item.grenade_mirv.name=MIRV-Granate item.grenade_breach.name=Durchbruchgranate item.grenade_burst.name=Gräbergranate +item.grenade_if_generic.name=IF - Nullgranate +item.grenade_if_he.name=IF - HE-Granate +item.grenade_if_bouncy.name=IF - Elastissche Granate +item.grenade_if_sticky.name=IF - Klebrige Granate +item.grenade_if_impact.name=IF - Aufschlaggranate +item.grenade_if_incendiary.name=IF - Brandgranate +item.grenade_if_toxic.name=IF - Toxische Granate +item.grenade_if_concussion.name=IF - Erschütterungsgranate +item.grenade_if_brimstone.name=IF - Werfbare Brimstone-Mine +item.grenade_if_mystery.name=IF - M.-Granate +item.grenade_if_spark.name=IF - S.-Granate +item.grenade_if_hopwire.name=IF - Schwarzes Loch Hopwire +item.grenade_if_null.name=IF - Null-Granate + item.rod_uranium_fuel.name=Urankernbrennstoffzelle item.rod_dual_uranium_fuel.name=Doppelte Urankernbrennstoffzelle item.rod_quad_uranium_fuel.name=Vierfache Urankernbrennstoffzelle diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 2da44d5c3..b72252dd2 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -1080,6 +1080,20 @@ item.grenade_mirv.name=MIRV Grenade item.grenade_breach.name=Breaching Grenade item.grenade_burst.name=Digger Grenade +item.grenade_if_generic.name=IF - Grenade +item.grenade_if_he.name=IF - HE Grenade +item.grenade_if_bouncy.name=IF - Bouncy Grenade +item.grenade_if_sticky.name=IF - Sticky Grenade +item.grenade_if_impact.name=IF - Impact Grenade +item.grenade_if_incendiary.name=IF - Incendiary Grenade +item.grenade_if_toxic.name=IF - Toxic Grenade +item.grenade_if_concussion.name=IF - Concussion Grenade +item.grenade_if_brimstone.name=IF - Tossable Brimsstone Mine +item.grenade_if_mystery.name=IF - M.-Grenade +item.grenade_if_spark.name=IF - S.-Grenade +item.grenade_if_hopwire.name=IF - Black Hole Hopwire +item.grenade_if_null.name=IF - Null Grenade + item.rod_uranium_fuel.name=Uranium Fuel Rod item.rod_dual_uranium_fuel.name=Uranium Dual Fuel Rod item.rod_quad_uranium_fuel.name=Uranium Quad Fuel Rod diff --git a/assets/hbm/sounds/alarm/foKlaxonA.ogg b/assets/hbm/sounds/alarm/foKlaxonA.ogg index e2471c001..8c5fdc7a8 100644 Binary files a/assets/hbm/sounds/alarm/foKlaxonA.ogg and b/assets/hbm/sounds/alarm/foKlaxonA.ogg differ diff --git a/assets/hbm/sounds/alarm/foKlaxonB.ogg b/assets/hbm/sounds/alarm/foKlaxonB.ogg index 6a2b5fb7d..3dc8f5b65 100644 Binary files a/assets/hbm/sounds/alarm/foKlaxonB.ogg and b/assets/hbm/sounds/alarm/foKlaxonB.ogg differ diff --git a/assets/hbm/textures/items/grenade_if_bouncy.png b/assets/hbm/textures/items/grenade_if_bouncy.png new file mode 100644 index 000000000..29a4052f4 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_bouncy.png differ diff --git a/assets/hbm/textures/items/grenade_if_brimstone.png b/assets/hbm/textures/items/grenade_if_brimstone.png new file mode 100644 index 000000000..a6b46f95e Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_brimstone.png differ diff --git a/assets/hbm/textures/items/grenade_if_concussion.png b/assets/hbm/textures/items/grenade_if_concussion.png new file mode 100644 index 000000000..05bada378 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_concussion.png differ diff --git a/assets/hbm/textures/items/grenade_if_generic.png b/assets/hbm/textures/items/grenade_if_generic.png new file mode 100644 index 000000000..6776313fb Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_generic.png differ diff --git a/assets/hbm/textures/items/grenade_if_he.png b/assets/hbm/textures/items/grenade_if_he.png new file mode 100644 index 000000000..f4ecf3ec4 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_he.png differ diff --git a/assets/hbm/textures/items/grenade_if_hopwire.png b/assets/hbm/textures/items/grenade_if_hopwire.png new file mode 100644 index 000000000..0ab315967 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_hopwire.png differ diff --git a/assets/hbm/textures/items/grenade_if_impact.png b/assets/hbm/textures/items/grenade_if_impact.png new file mode 100644 index 000000000..3bd6cef77 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_impact.png differ diff --git a/assets/hbm/textures/items/grenade_if_incendiary.png b/assets/hbm/textures/items/grenade_if_incendiary.png new file mode 100644 index 000000000..b80f5ec0c Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_incendiary.png differ diff --git a/assets/hbm/textures/items/grenade_if_mystery.png b/assets/hbm/textures/items/grenade_if_mystery.png new file mode 100644 index 000000000..f3e20ba1a Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_mystery.png differ diff --git a/assets/hbm/textures/items/grenade_if_null.png b/assets/hbm/textures/items/grenade_if_null.png new file mode 100644 index 000000000..752087fa1 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_null.png differ diff --git a/assets/hbm/textures/items/grenade_if_spark.png b/assets/hbm/textures/items/grenade_if_spark.png new file mode 100644 index 000000000..07c89be6b Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_spark.png differ diff --git a/assets/hbm/textures/items/grenade_if_sticky.png b/assets/hbm/textures/items/grenade_if_sticky.png new file mode 100644 index 000000000..6d8888391 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_sticky.png differ diff --git a/assets/hbm/textures/items/grenade_if_toxic.png b/assets/hbm/textures/items/grenade_if_toxic.png new file mode 100644 index 000000000..4804ccad8 Binary files /dev/null and b/assets/hbm/textures/items/grenade_if_toxic.png differ diff --git a/com/hbm/blocks/test/TestEventTester.java b/com/hbm/blocks/test/TestEventTester.java index 6da550dc0..130c336af 100644 --- a/com/hbm/blocks/test/TestEventTester.java +++ b/com/hbm/blocks/test/TestEventTester.java @@ -13,6 +13,7 @@ import com.hbm.entity.effect.EntityCloudFleija; import com.hbm.entity.effect.EntityCloudFleijaRainbow; import com.hbm.entity.projectile.EntityBurningFOEQ; import com.hbm.entity.projectile.EntityMeteor; +import com.hbm.explosion.ExplosionLarge; import com.hbm.explosion.ExplosionNukeRay; import com.hbm.explosion.ExplosionNukeRay.FloatTriplet; import com.hbm.lib.HbmChestContents; @@ -31,6 +32,7 @@ import net.minecraft.block.material.Material; import net.minecraft.enchantment.EnchantmentProtection; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -293,7 +295,7 @@ public class TestEventTester extends Block { WeightedRandomChestContent.generateChestContents(worldObj.rand, HbmChestContents.getLoot(3), (TileEntityCrateSteel)worldObj.getTileEntity(par2, par3, par4), 32); }*/ - EntityBurningFOEQ foeq = new EntityBurningFOEQ(worldObj); + /*EntityBurningFOEQ foeq = new EntityBurningFOEQ(worldObj); foeq.posX = par2; foeq.posY = 400; foeq.posZ = par4; @@ -302,7 +304,19 @@ public class TestEventTester extends Block { foeq.motionY = -4D; if(!worldObj.isRemote) - worldObj.spawnEntityInWorld(foeq); + worldObj.spawnEntityInWorld(foeq);*/ + + if(!worldObj.isRemote) { + worldObj.setBlockToAir(par2, par3, par4); + ExplosionLarge.jolt(worldObj, par2 - 0.5, par3 - 0.5, par4 - 0.5, 5, 200, 0.25); + ExplosionLarge.explode(worldObj, par2 + 0.5, par3 + 0.5, par4 + 0.5, 5, false, false, false); + } + + /*if(!worldObj.isRemote) { + + EntityFallingBlock entityfallingblock = new EntityFallingBlock(worldObj, (double)((float)par2 + 0.5F), (double)((float)par3 + 0.5F), (double)((float)par4 + 0.5F), this, worldObj.getBlockMetadata(par2, par3, par4)); + worldObj.spawnEntityInWorld(entityfallingblock); + }*/ return true; } diff --git a/com/hbm/entity/grenade/EntityGrenadeBlackHole.java b/com/hbm/entity/grenade/EntityGrenadeBlackHole.java index c0780dce6..cb662e7f1 100644 --- a/com/hbm/entity/grenade/EntityGrenadeBlackHole.java +++ b/com/hbm/entity/grenade/EntityGrenadeBlackHole.java @@ -5,8 +5,10 @@ import net.minecraft.world.World; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityRagingVortex; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; -public class EntityGrenadeBlackHole extends EntityGrenadeBase +public class EntityGrenadeBlackHole extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -40,4 +42,14 @@ public class EntityGrenadeBlackHole extends EntityGrenadeBase this.worldObj.spawnEntityInWorld(bl); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_black_hole); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeBouncyBase.java b/com/hbm/entity/grenade/EntityGrenadeBouncyBase.java new file mode 100644 index 000000000..b1830bba1 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeBouncyBase.java @@ -0,0 +1,246 @@ +package com.hbm.entity.grenade; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.IProjectile; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.MathHelper; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public abstract class EntityGrenadeBouncyBase extends Entity implements IProjectile { + + protected EntityLivingBase thrower; + protected String throwerName; + protected int timer = 0; + + public EntityGrenadeBouncyBase(World world) { + super(world); + this.setSize(0.25F, 0.25F); + } + + public EntityGrenadeBouncyBase(World world, EntityLivingBase living) + { + super(world); + this.thrower = living; + this.setSize(0.25F, 0.25F); + this.setLocationAndAngles(living.posX, living.posY + (double)living.getEyeHeight(), living.posZ, living.rotationYaw, living.rotationPitch); + this.posX -= (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.posY -= 0.10000000149011612D; + this.posZ -= (double)(MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F); + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + float f = 0.4F; + this.motionX = (double)(-MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f); + this.motionZ = (double)(MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI) * f); + this.motionY = (double)(-MathHelper.sin((this.rotationPitch + this.func_70183_g()) / 180.0F * (float)Math.PI) * f); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, this.func_70182_d(), 1.0F); + } + + public EntityGrenadeBouncyBase(World world, double posX, double posY, double posZ) + { + super(world); + this.setSize(0.25F, 0.25F); + this.setPosition(posX, posY, posZ); + this.yOffset = 0.0F; + } + + @Override + protected void entityInit() { } + + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double p_70112_1_) + { + double d1 = this.boundingBox.getAverageEdgeLength() * 4.0D; + d1 *= 64.0D; + return p_70112_1_ < d1 * d1; + } + + protected float func_70182_d() + { + return 1.5F; + } + + protected float func_70183_g() + { + return 0.0F; + } + + protected float getGravityVelocity() + { + return 0.03F; + } + + public void setThrowableHeading(double motionX, double motionY, double motionZ, float f0, float f1) + { + float f2 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ); + motionX /= (double)f2; + motionY /= (double)f2; + motionZ /= (double)f2; + motionX += this.rand.nextGaussian() * 0.007499999832361937D * (double)f1; + motionY += this.rand.nextGaussian() * 0.007499999832361937D * (double)f1; + motionZ += this.rand.nextGaussian() * 0.007499999832361937D * (double)f1; + motionX *= (double)f0; + motionY *= (double)f0; + motionZ *= (double)f0; + this.motionX = motionX; + this.motionY = motionY; + this.motionZ = motionZ; + float f3 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(motionX, motionZ) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(motionY, (double)f3) * 180.0D / Math.PI); + } + + @SideOnly(Side.CLIENT) + public void setVelocity(double motionX, double motionY, double motionZ) + { + this.motionX = motionX; + this.motionY = motionY; + this.motionZ = motionZ; + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(motionX, motionZ) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(motionY, (double)f) * 180.0D / Math.PI); + } + } + + public void onUpdate() + { + this.lastTickPosX = this.posX; + this.lastTickPosY = this.posY; + this.lastTickPosZ = this.posZ; + super.onUpdate(); + + //Bounce here + + boolean bounce = false; + Vec3 vec3 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + Vec3 vec31 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition movingobjectposition = this.worldObj.rayTraceBlocks(vec3, vec31); + + if (movingobjectposition != null) + { + vec31 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); + + this.posX += (movingobjectposition.hitVec.xCoord - this.posX) * 0.6; + this.posY += (movingobjectposition.hitVec.yCoord - this.posY) * 0.6; + this.posZ += (movingobjectposition.hitVec.zCoord - this.posZ) * 0.6; + + switch(movingobjectposition.sideHit) { + case 0: + case 1: + motionY *= -1; break; + case 2: + case 3: + motionZ *= -1; break; + case 4: + case 5: + motionX *= -1; break; + + } + + bounce = true; + + motionX *= getBounceMod(); + motionY *= getBounceMod(); + motionZ *= getBounceMod(); + } + + //Bounce here [END] + + if(!bounce) { + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + } + + float f1 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + for (this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f1) * 180.0D / Math.PI); this.rotationPitch - this.prevRotationPitch < -180.0F; this.prevRotationPitch -= 360.0F) + { + ; + } + + while (this.rotationPitch - this.prevRotationPitch >= 180.0F) + { + this.prevRotationPitch += 360.0F; + } + + while (this.rotationYaw - this.prevRotationYaw < -180.0F) + { + this.prevRotationYaw -= 360.0F; + } + + while (this.rotationYaw - this.prevRotationYaw >= 180.0F) + { + this.prevRotationYaw += 360.0F; + } + + this.rotationPitch = this.prevRotationPitch + (this.rotationPitch - this.prevRotationPitch) * 0.2F; + this.rotationYaw = this.prevRotationYaw + (this.rotationYaw - this.prevRotationYaw) * 0.2F; + float f2 = 0.99F; + float f3 = this.getGravityVelocity(); + + if (this.isInWater()) + { + for (int i = 0; i < 4; ++i) + { + float f4 = 0.25F; + this.worldObj.spawnParticle("bubble", this.posX - this.motionX * (double)f4, this.posY - this.motionY * (double)f4, this.posZ - this.motionZ * (double)f4, this.motionX, this.motionY, this.motionZ); + } + + f2 = 0.8F; + } + + this.motionX *= (double)f2; + this.motionY *= (double)f2; + this.motionZ *= (double)f2; + this.motionY -= (double)f3; + this.setPosition(this.posX, this.posY, this.posZ); + + timer++; + + if(timer >= getMaxTimer()) { + explode(); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound nbt) { + timer = nbt.getInteger("timer"); + } + + @Override + protected void writeEntityToNBT(NBTTagCompound nbt) { + nbt.setInteger("timer", timer); + } + + @SideOnly(Side.CLIENT) + public float getShadowSize() + { + return 0.0F; + } + + public EntityLivingBase getThrower() + { + if (this.thrower == null && this.throwerName != null && this.throwerName.length() > 0) + { + this.thrower = this.worldObj.getPlayerEntityByName(this.throwerName); + } + + return this.thrower; + } + + public abstract void explode(); + + protected abstract int getMaxTimer(); + + protected abstract double getBounceMod(); + +} diff --git a/com/hbm/entity/grenade/EntityGrenadeBurst.java b/com/hbm/entity/grenade/EntityGrenadeBurst.java index 1911f8b15..61e305678 100644 --- a/com/hbm/entity/grenade/EntityGrenadeBurst.java +++ b/com/hbm/entity/grenade/EntityGrenadeBurst.java @@ -1,6 +1,7 @@ package com.hbm.entity.grenade; import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -9,7 +10,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityGrenadeBurst extends EntityGrenadeBase { +public class EntityGrenadeBurst extends EntityGrenadeBouncyBase { public EntityGrenadeBurst(World p_i1773_1_) { @@ -25,13 +26,13 @@ public class EntityGrenadeBurst extends EntityGrenadeBase { { super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); } - + @Override - public void onUpdate() { - super.onUpdate(); + public void explode() { - if(this.ticksExisted > 20 && !worldObj.isRemote) { - this.setDead(); + if (!this.worldObj.isRemote) + { + this.setDead(); for(int i = 0; i < 8; i++) { @@ -45,16 +46,16 @@ public class EntityGrenadeBurst extends EntityGrenadeBase { worldObj.spawnEntityInWorld(grenade); } - } - } - - @Override - public void explode() { - - if (!this.worldObj.isRemote) - { - this.setDead(); - worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, new ItemStack(ModItems.grenade_burst))); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_burst); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeCluster.java b/com/hbm/entity/grenade/EntityGrenadeCluster.java index f1424bf8c..c1f11293d 100644 --- a/com/hbm/entity/grenade/EntityGrenadeCluster.java +++ b/com/hbm/entity/grenade/EntityGrenadeCluster.java @@ -4,8 +4,10 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; -public class EntityGrenadeCluster extends EntityGrenadeBase +public class EntityGrenadeCluster extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -34,4 +36,14 @@ public class EntityGrenadeCluster extends EntityGrenadeBase this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 1.5F, true); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_cluster); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeElectric.java b/com/hbm/entity/grenade/EntityGrenadeElectric.java index 1dcd279cb..201983773 100644 --- a/com/hbm/entity/grenade/EntityGrenadeElectric.java +++ b/com/hbm/entity/grenade/EntityGrenadeElectric.java @@ -1,10 +1,13 @@ package com.hbm.entity.grenade; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.effect.EntityLightningBolt; import net.minecraft.world.World; -public class EntityGrenadeElectric extends EntityGrenadeBase +public class EntityGrenadeElectric extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -34,4 +37,14 @@ public class EntityGrenadeElectric extends EntityGrenadeBase this.worldObj.spawnEntityInWorld(new EntityLightningBolt(this.worldObj, this.posX, this.posY, this.posZ)); } + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_electric); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } + } diff --git a/com/hbm/entity/grenade/EntityGrenadeFire.java b/com/hbm/entity/grenade/EntityGrenadeFire.java index 12a6ad6b0..cbd525028 100644 --- a/com/hbm/entity/grenade/EntityGrenadeFire.java +++ b/com/hbm/entity/grenade/EntityGrenadeFire.java @@ -5,8 +5,10 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; -public class EntityGrenadeFire extends EntityGrenadeBase +public class EntityGrenadeFire extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; public Entity shooter; @@ -38,4 +40,14 @@ public class EntityGrenadeFire extends EntityGrenadeBase this.worldObj.playSoundEffect((int)this.posX, (int)this.posY, (int)this.posZ, "random.explode", 4.0F, (1.0F + (this.worldObj.rand.nextFloat() - this.worldObj.rand.nextFloat()) * 0.2F) * 0.7F); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_fire); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeFrag.java b/com/hbm/entity/grenade/EntityGrenadeFrag.java index e3720f4f0..afcfb8d80 100644 --- a/com/hbm/entity/grenade/EntityGrenadeFrag.java +++ b/com/hbm/entity/grenade/EntityGrenadeFrag.java @@ -5,8 +5,10 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; -public class EntityGrenadeFrag extends EntityGrenadeBase +public class EntityGrenadeFrag extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; public Entity shooter; @@ -45,4 +47,14 @@ public class EntityGrenadeFrag extends EntityGrenadeBase } } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_frag); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeGas.java b/com/hbm/entity/grenade/EntityGrenadeGas.java index b5877de03..ab24f5459 100644 --- a/com/hbm/entity/grenade/EntityGrenadeGas.java +++ b/com/hbm/entity/grenade/EntityGrenadeGas.java @@ -7,8 +7,10 @@ import java.util.Random; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; -public class EntityGrenadeGas extends EntityGrenadeBase { +public class EntityGrenadeGas extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; Random rand = new Random(); @@ -48,4 +50,14 @@ public class EntityGrenadeGas extends EntityGrenadeBase { } } + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_gas); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } + } diff --git a/com/hbm/entity/grenade/EntityGrenadeGeneric.java b/com/hbm/entity/grenade/EntityGrenadeGeneric.java index 0f20ee556..290fc4a96 100644 --- a/com/hbm/entity/grenade/EntityGrenadeGeneric.java +++ b/com/hbm/entity/grenade/EntityGrenadeGeneric.java @@ -3,7 +3,7 @@ package com.hbm.entity.grenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeGeneric extends EntityGrenadeBase +public class EntityGrenadeGeneric extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -32,4 +32,14 @@ public class EntityGrenadeGeneric extends EntityGrenadeBase } } + @Override + protected int getMaxTimer() { + return 100; + } + + @Override + protected double getBounceMod() { + return 0.25D; + } + } diff --git a/com/hbm/entity/grenade/EntityGrenadeIFBouncy.java b/com/hbm/entity/grenade/EntityGrenadeIFBouncy.java new file mode 100644 index 000000000..94a5f74a9 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFBouncy.java @@ -0,0 +1,48 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFBouncy extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFBouncy(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFBouncy(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFBouncy(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 5, 200, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, true, true); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_bouncy); + } + + @Override + protected double getBounceMod() { + return 0.75D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFBrimstone.java b/com/hbm/entity/grenade/EntityGrenadeIFBrimstone.java new file mode 100644 index 000000000..370ef98e3 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFBrimstone.java @@ -0,0 +1,96 @@ +package com.hbm.entity.grenade; + +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.world.World; + +public class EntityGrenadeIFBrimstone extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFBrimstone(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFBrimstone(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFBrimstone(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void onUpdate() { + super.onUpdate(); + + if(this.timer > (this.getMaxTimer() * 0.65)) { + + if(!worldObj.isRemote) { + EntityBullet fragment; + + fragment = new EntityBullet(worldObj, (EntityPlayer) this.thrower, 3.0F, 35, 45, false, "tauDay"); + fragment.setDamage(rand.nextInt(301) + 100); + + fragment.motionX = rand.nextGaussian(); + fragment.motionY = rand.nextGaussian(); + fragment.motionZ = rand.nextGaussian(); + fragment.shootingEntity = this.thrower; + + fragment.posX = posX; + fragment.posY = posY; + fragment.posZ = posZ; + + fragment.setIsCritical(true); + + worldObj.spawnEntityInWorld(fragment); + } + } + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + worldObj.newExplosion(this, posX, posY, posZ, 5, false, false); + + for(int i = 0; i < 100; i++) { + EntityBullet fragment; + + fragment = new EntityBullet(worldObj, (EntityPlayer) this.thrower, 3.0F, 35, 45, false, "tauDay"); + fragment.setDamage(rand.nextInt(301) + 100); + + fragment.motionX = rand.nextGaussian() * 0.25; + fragment.motionY = rand.nextGaussian() * 0.25; + fragment.motionZ = rand.nextGaussian() * 0.25; + fragment.shootingEntity = this.thrower; + + fragment.posX = posX; + fragment.posY = posY; + fragment.posZ = posZ; + + fragment.setIsCritical(true); + + worldObj.spawnEntityInWorld(fragment); + } + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_brimstone); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFConcussion.java b/com/hbm/entity/grenade/EntityGrenadeIFConcussion.java new file mode 100644 index 000000000..22d83ce26 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFConcussion.java @@ -0,0 +1,47 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFConcussion extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFConcussion(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFConcussion(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFConcussion(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + worldObj.newExplosion(this, posX, posY, posZ, 15, false, false); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_concussion); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFGeneric.java b/com/hbm/entity/grenade/EntityGrenadeIFGeneric.java new file mode 100644 index 000000000..393abd81c --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFGeneric.java @@ -0,0 +1,48 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFGeneric extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFGeneric(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFGeneric(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFGeneric(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 5, 200, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, true, true); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_generic); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFHE.java b/com/hbm/entity/grenade/EntityGrenadeIFHE.java new file mode 100644 index 000000000..7565a93ad --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFHE.java @@ -0,0 +1,48 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFHE extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFHE(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFHE(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFHE(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 7.5, 300, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 7, true, true, true); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_he); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFHopwire.java b/com/hbm/entity/grenade/EntityGrenadeIFHopwire.java new file mode 100644 index 000000000..23aabee92 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFHopwire.java @@ -0,0 +1,51 @@ +package com.hbm.entity.grenade; + +import com.hbm.entity.effect.EntityVortex; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFHopwire extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFHopwire(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFHopwire(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFHopwire(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + EntityVortex vortex = new EntityVortex(worldObj, 0.75F); + vortex.posX = posX; + vortex.posY = posY; + vortex.posZ = posZ; + worldObj.spawnEntityInWorld(vortex); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_hopwire); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFImpact.java b/com/hbm/entity/grenade/EntityGrenadeIFImpact.java new file mode 100644 index 000000000..5a3428a55 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFImpact.java @@ -0,0 +1,38 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFImpact extends EntityGrenadeBase { + + public EntityGrenadeIFImpact(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFImpact(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFImpact(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 5, 200, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, true, true); + } + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFIncendiary.java b/com/hbm/entity/grenade/EntityGrenadeIFIncendiary.java new file mode 100644 index 000000000..1d94c4a7b --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFIncendiary.java @@ -0,0 +1,53 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionThermo; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFIncendiary extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFIncendiary(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFIncendiary(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFIncendiary(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 5, 200, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, true, true); + ExplosionThermo.setEntitiesOnFire(worldObj, (int)posX, (int)posY, (int)posZ, 8); + ExplosionChaos.flameDeath(worldObj, (int)posX, (int)posY, (int)posZ, 15); + ExplosionChaos.burn(worldObj, (int)posX, (int)posY, (int)posZ, 10); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_incendiary); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFMystery.java b/com/hbm/entity/grenade/EntityGrenadeIFMystery.java new file mode 100644 index 000000000..18370d4af --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFMystery.java @@ -0,0 +1,46 @@ +package com.hbm.entity.grenade; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFMystery extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFMystery(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFMystery(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFMystery(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + worldObj.newExplosion(this, posX, posY, posZ, 10, false, false); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_mystery); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFNull.java b/com/hbm/entity/grenade/EntityGrenadeIFNull.java new file mode 100644 index 000000000..3bbcd2e2e --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFNull.java @@ -0,0 +1,69 @@ +package com.hbm.entity.grenade; + +import java.util.List; + +import com.hbm.entity.effect.EntityVortex; +import com.hbm.entity.particle.EntityDSmokeFX; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.World; + +public class EntityGrenadeIFNull extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFNull(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFNull(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFNull(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + for(int a = -3; a <= 3; a++) + for(int b = -3; b <= 3; b++) + for(int c = -3; c <= 3; c++) + worldObj.setBlockToAir((int)posX + a, (int)posY + b, (int)posZ + c); + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox((int)posX + 0.5 - 3, (int)posY + 0.5 - 3, (int)posZ + 0.5 - 3, (int)posX + 0.5 + 3, (int)posY + 0.5 + 3, (int)posZ + 0.5 + 3)); + + for(Object o : list) { + if(o instanceof EntityLivingBase) { + EntityLivingBase e = (EntityLivingBase)o; + + e.setHealth(0); + } else if(o instanceof Entity) { + Entity e = (Entity)o; + + e.setDead(); + } + } + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_null); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFSpark.java b/com/hbm/entity/grenade/EntityGrenadeIFSpark.java new file mode 100644 index 000000000..db249cf88 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFSpark.java @@ -0,0 +1,51 @@ +package com.hbm.entity.grenade; + +import com.hbm.entity.effect.EntityRagingVortex; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFSpark extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFSpark(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFSpark(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFSpark(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + EntityRagingVortex vortex = new EntityRagingVortex(worldObj, 1.5F); + vortex.posX = posX; + vortex.posY = posY; + vortex.posZ = posZ; + worldObj.spawnEntityInWorld(vortex); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_spark); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFSticky.java b/com/hbm/entity/grenade/EntityGrenadeIFSticky.java new file mode 100644 index 000000000..c08658505 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFSticky.java @@ -0,0 +1,48 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFSticky extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFSticky(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFSticky(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFSticky(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 5, 200, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, true, true); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_sticky); + } + + @Override + protected double getBounceMod() { + return 0.05D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeIFToxic.java b/com/hbm/entity/grenade/EntityGrenadeIFToxic.java new file mode 100644 index 000000000..d17910734 --- /dev/null +++ b/com/hbm/entity/grenade/EntityGrenadeIFToxic.java @@ -0,0 +1,53 @@ +package com.hbm.entity.grenade; + +import com.hbm.explosion.ExplosionChaos; +import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.world.World; + +public class EntityGrenadeIFToxic extends EntityGrenadeBouncyBase { + + public EntityGrenadeIFToxic(World p_i1773_1_) + { + super(p_i1773_1_); + } + + public EntityGrenadeIFToxic(World p_i1774_1_, EntityLivingBase p_i1774_2_) + { + super(p_i1774_1_, p_i1774_2_); + } + + public EntityGrenadeIFToxic(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) + { + super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); + } + + @Override + public void explode() { + + if (!this.worldObj.isRemote) + { + this.setDead(); + + ExplosionLarge.jolt(worldObj, posX, posY, posZ, 3, 200, 0.25); + ExplosionLarge.explode(worldObj, posX, posY, posZ, 2, true, true, true); + ExplosionChaos.poison(worldObj, (int)posX, (int)posY, (int)posZ, 12); + ExplosionNukeGeneric.waste(worldObj, (int)posX, (int)posY, (int)posZ, 12); + ExplosionChaos.spawnChlorine(worldObj, posX, posY, posZ, 50, 1.5, 0); + } + } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_if_toxic); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } +} diff --git a/com/hbm/entity/grenade/EntityGrenadeLemon.java b/com/hbm/entity/grenade/EntityGrenadeLemon.java index 2e72dc136..0440d5b64 100644 --- a/com/hbm/entity/grenade/EntityGrenadeLemon.java +++ b/com/hbm/entity/grenade/EntityGrenadeLemon.java @@ -1,10 +1,13 @@ package com.hbm.entity.grenade; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeLemon extends EntityGrenadeBase +public class EntityGrenadeLemon extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -32,4 +35,14 @@ public class EntityGrenadeLemon extends EntityGrenadeBase this.worldObj.newExplosion((Entity)null, (float)this.posX, (float)this.posY, (float)this.posZ, 5.0F, true, true); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_lemon); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeMIRV.java b/com/hbm/entity/grenade/EntityGrenadeMIRV.java index fd7a79ea1..b867f4ec8 100644 --- a/com/hbm/entity/grenade/EntityGrenadeMIRV.java +++ b/com/hbm/entity/grenade/EntityGrenadeMIRV.java @@ -2,6 +2,7 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionLarge; import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -10,7 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityGrenadeMIRV extends EntityGrenadeBase { +public class EntityGrenadeMIRV extends EntityGrenadeBouncyBase { public EntityGrenadeMIRV(World p_i1773_1_) { @@ -26,13 +27,13 @@ public class EntityGrenadeMIRV extends EntityGrenadeBase { { super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); } - + @Override - public void onUpdate() { - super.onUpdate(); + public void explode() { - if(this.ticksExisted > 20 && !worldObj.isRemote) { - this.setDead(); + if (!this.worldObj.isRemote) + { + this.setDead(); for(int i = 0; i < 8; i++) { @@ -47,16 +48,16 @@ public class EntityGrenadeMIRV extends EntityGrenadeBase { worldObj.spawnEntityInWorld(grenade); } - } - } - - @Override - public void explode() { - - if (!this.worldObj.isRemote) - { - this.setDead(); - worldObj.spawnEntityInWorld(new EntityItem(worldObj, posX, posY, posZ, new ItemStack(ModItems.grenade_mirv))); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_mirv); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeMk2.java b/com/hbm/entity/grenade/EntityGrenadeMk2.java index 3575d2b25..df7692cd0 100644 --- a/com/hbm/entity/grenade/EntityGrenadeMk2.java +++ b/com/hbm/entity/grenade/EntityGrenadeMk2.java @@ -1,11 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeMk2 extends EntityGrenadeBase { +public class EntityGrenadeMk2 extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -31,4 +33,14 @@ public class EntityGrenadeMk2 extends EntityGrenadeBase { ExplosionLarge.explode(worldObj, posX, posY, posZ, 7.5F, true, false, false); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_mk2); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeNuclear.java b/com/hbm/entity/grenade/EntityGrenadeNuclear.java index 731ebac3f..23b1f59db 100644 --- a/com/hbm/entity/grenade/EntityGrenadeNuclear.java +++ b/com/hbm/entity/grenade/EntityGrenadeNuclear.java @@ -5,12 +5,14 @@ import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.explosion.ExplosionParticle; import com.hbm.explosion.ExplosionParticleB; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import com.hbm.main.MainRegistry; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeNuclear extends EntityGrenadeBase +public class EntityGrenadeNuclear extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -52,4 +54,14 @@ public class EntityGrenadeNuclear extends EntityGrenadeBase } } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_nuclear); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadePlasma.java b/com/hbm/entity/grenade/EntityGrenadePlasma.java index 932d4628d..ecf073b85 100644 --- a/com/hbm/entity/grenade/EntityGrenadePlasma.java +++ b/com/hbm/entity/grenade/EntityGrenadePlasma.java @@ -1,10 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; + import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadePlasma extends EntityGrenadeBase +public class EntityGrenadePlasma extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -33,4 +36,14 @@ public class EntityGrenadePlasma extends EntityGrenadeBase ExplosionChaos.plasma(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 7 ); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_plasma); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadePoison.java b/com/hbm/entity/grenade/EntityGrenadePoison.java index 88a1cdfbd..90591edd6 100644 --- a/com/hbm/entity/grenade/EntityGrenadePoison.java +++ b/com/hbm/entity/grenade/EntityGrenadePoison.java @@ -1,11 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadePoison extends EntityGrenadeBase +public class EntityGrenadePoison extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -36,4 +38,14 @@ public class EntityGrenadePoison extends EntityGrenadeBase } } + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_poison); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } + } diff --git a/com/hbm/entity/grenade/EntityGrenadePulse.java b/com/hbm/entity/grenade/EntityGrenadePulse.java index 0b4beef7c..24819a718 100644 --- a/com/hbm/entity/grenade/EntityGrenadePulse.java +++ b/com/hbm/entity/grenade/EntityGrenadePulse.java @@ -2,11 +2,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadePulse extends EntityGrenadeBase { +public class EntityGrenadePulse extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -35,4 +37,14 @@ public class EntityGrenadePulse extends EntityGrenadeBase { ExplosionLarge.spawnShock(worldObj, posX, posY, posZ, 24, 2); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_pulse); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeSchrabidium.java b/com/hbm/entity/grenade/EntityGrenadeSchrabidium.java index 24e8b75fe..d25cd173e 100644 --- a/com/hbm/entity/grenade/EntityGrenadeSchrabidium.java +++ b/com/hbm/entity/grenade/EntityGrenadeSchrabidium.java @@ -1,11 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeSchrabidium extends EntityGrenadeBase +public class EntityGrenadeSchrabidium extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -35,4 +37,14 @@ public class EntityGrenadeSchrabidium extends EntityGrenadeBase } } + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_schrabidium); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } + } diff --git a/com/hbm/entity/grenade/EntityGrenadeShrapnel.java b/com/hbm/entity/grenade/EntityGrenadeShrapnel.java index 2c5d73dcc..5155be9f2 100644 --- a/com/hbm/entity/grenade/EntityGrenadeShrapnel.java +++ b/com/hbm/entity/grenade/EntityGrenadeShrapnel.java @@ -5,8 +5,10 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; -public class EntityGrenadeShrapnel extends EntityGrenadeBase +public class EntityGrenadeShrapnel extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; public Entity shooter; @@ -38,4 +40,14 @@ public class EntityGrenadeShrapnel extends EntityGrenadeBase } } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_shrapnel); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeStrong.java b/com/hbm/entity/grenade/EntityGrenadeStrong.java index efe420842..e57cd946f 100644 --- a/com/hbm/entity/grenade/EntityGrenadeStrong.java +++ b/com/hbm/entity/grenade/EntityGrenadeStrong.java @@ -1,11 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionLarge; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeStrong extends EntityGrenadeBase +public class EntityGrenadeStrong extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -33,4 +35,14 @@ public class EntityGrenadeStrong extends EntityGrenadeBase ExplosionLarge.explode(worldObj, posX, posY, posZ, 5.0F, true, false, false); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_strong); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeTau.java b/com/hbm/entity/grenade/EntityGrenadeTau.java index 9de3eaeb7..147ce4282 100644 --- a/com/hbm/entity/grenade/EntityGrenadeTau.java +++ b/com/hbm/entity/grenade/EntityGrenadeTau.java @@ -1,11 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeTau extends EntityGrenadeBase +public class EntityGrenadeTau extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -34,4 +36,14 @@ public class EntityGrenadeTau extends EntityGrenadeBase ExplosionChaos.tauMeSinPi(this.worldObj, this.posX, this.posY, this.posZ, 100, this.getThrower(), this); } } + + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_tau); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } } diff --git a/com/hbm/entity/grenade/EntityGrenadeZOMG.java b/com/hbm/entity/grenade/EntityGrenadeZOMG.java index 517b50fb7..ed163b629 100644 --- a/com/hbm/entity/grenade/EntityGrenadeZOMG.java +++ b/com/hbm/entity/grenade/EntityGrenadeZOMG.java @@ -1,11 +1,13 @@ package com.hbm.entity.grenade; import com.hbm.explosion.ExplosionChaos; +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -public class EntityGrenadeZOMG extends EntityGrenadeBase +public class EntityGrenadeZOMG extends EntityGrenadeBouncyBase { private static final String __OBFID = "CL_00001722"; @@ -34,4 +36,14 @@ public class EntityGrenadeZOMG extends EntityGrenadeBase } } + @Override + protected int getMaxTimer() { + return ItemGrenade.getFuseTicks(ModItems.grenade_tau); + } + + @Override + protected double getBounceMod() { + return 0.25D; + } + } diff --git a/com/hbm/entity/projectile/EntityBullet.java b/com/hbm/entity/projectile/EntityBullet.java index a233686ad..bce6c7b02 100644 --- a/com/hbm/entity/projectile/EntityBullet.java +++ b/com/hbm/entity/projectile/EntityBullet.java @@ -198,6 +198,7 @@ public class EntityBullet extends Entity implements IProjectile { this.setIsCritical(isTau != "chopper"); } + //why the living shit did i make isTau a string? who knows, who cares. public EntityBullet(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, int dmgMin, int dmgMax, boolean instakill, String isTau, EntityGrenadeTau grenade) { super(p_i1756_1_); diff --git a/com/hbm/explosion/ExplosionLarge.java b/com/hbm/explosion/ExplosionLarge.java index 139221626..0ffb95cde 100644 --- a/com/hbm/explosion/ExplosionLarge.java +++ b/com/hbm/explosion/ExplosionLarge.java @@ -10,6 +10,7 @@ import com.hbm.entity.projectile.EntityRubble; import com.hbm.entity.projectile.EntityShrapnel; import net.minecraft.entity.Entity; +import net.minecraft.entity.item.EntityFallingBlock; import net.minecraft.entity.item.EntityItem; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -202,6 +203,57 @@ public class ExplosionLarge { spawnShrapnels(world, x, y, z, shrapnelFunction((int)strength)); } + public static void jolt(World world, double posX, double posY, double posZ, double strength, int count, double vel) { + + for(int j = 0; j < count; j++) { + + double phi = rand.nextDouble() * (Math.PI * 2); + double costheta = rand.nextDouble() * 2 - 1; + double theta = Math.acos(costheta); + double x = Math.sin( theta) * Math.cos( phi ); + double y = Math.sin( theta) * Math.sin( phi ); + double z = Math.cos( theta ); + + Vec3 vec = Vec3.createVectorHelper(x, y, z); + + for(int i = 0; i < strength; i ++) { + double x0 = posX + (vec.xCoord * i); + double y0 = posY + (vec.yCoord * i); + double z0 = posZ + (vec.zCoord * i); + + if(!world.isRemote) { + if(world.getBlock((int)x0, (int)y0, (int)z0).getMaterial().isLiquid()) { + world.setBlock((int)x0, (int)y0, (int)z0, Blocks.air); + } + + if(world.getBlock((int)x0, (int)y0, (int)z0) != Blocks.air) { + + if(world.getBlock((int)x0, (int)y0, (int)z0).getExplosionResistance(null) > 70) + continue; + + EntityRubble rubble = new EntityRubble(world); + rubble.posX = x0 + 0.5F; + rubble.posY = y0 + 0.5F; + rubble.posZ = z0 + 0.5F; + rubble.setMetaBasedOnMat(world.getBlock((int)x0, (int)y0, (int)z0).getMaterial()); + + Vec3 vec4 = Vec3.createVectorHelper(posX - rubble.posX, posY - rubble.posY, posZ - rubble.posZ); + vec4.normalize(); + + rubble.motionX = vec4.xCoord * vel; + rubble.motionY = vec4.yCoord * vel; + rubble.motionZ = vec4.zCoord * vel; + + world.spawnEntityInWorld(rubble); + + world.setBlock((int)x0, (int)y0, (int)z0, Blocks.air); + break; + } + } + } + } + } + public static int cloudFunction(int i) { //return (int)(345 * (1 - Math.pow(Math.E, -i/15)) + 15); return (int)(545 * (1 - Math.pow(Math.E, -i/15)) + 15); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 671c03222..a64e91fbd 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -830,6 +830,20 @@ public class ModItems { public static Item grenade_pink_cloud; public static Item ullapool_caber; + public static Item grenade_if_generic; + public static Item grenade_if_he; + public static Item grenade_if_bouncy; + public static Item grenade_if_sticky; + public static Item grenade_if_impact; + public static Item grenade_if_incendiary; + public static Item grenade_if_toxic; + public static Item grenade_if_concussion; + public static Item grenade_if_brimstone; + public static Item grenade_if_mystery; + public static Item grenade_if_spark; + public static Item grenade_if_hopwire; + public static Item grenade_if_null; + public static Item grenade_smart; public static Item grenade_mirv; public static Item grenade_breach; @@ -2076,36 +2090,50 @@ public class ModItems { gun_moist_nugget = new ItemNugget(3, false).setUnlocalizedName("gun_moist_nugget").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_moist_nugget"); gun_dampfmaschine = new GunDampfmaschine().setUnlocalizedName("gun_dampfmaschine").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_dampfmaschine"); - grenade_generic = new ItemGrenade().setUnlocalizedName("grenade_generic").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_generic"); - grenade_strong = new ItemGrenade().setUnlocalizedName("grenade_strong").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_strong"); - grenade_frag = new ItemGrenade().setUnlocalizedName("grenade_frag").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_frag_alt"); - grenade_fire = new ItemGrenade().setUnlocalizedName("grenade_fire").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_fire_alt"); - grenade_shrapnel = new ItemGrenade().setUnlocalizedName("grenade_shrapnel").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_shrapnel"); - grenade_cluster = new ItemGrenade().setUnlocalizedName("grenade_cluster").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_cluster_alt"); - grenade_flare = new ItemGrenade().setUnlocalizedName("grenade_flare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_flare_alt"); - grenade_electric = new ItemGrenade().setUnlocalizedName("grenade_electric").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_electric_alt"); - grenade_poison = new ItemGrenade().setUnlocalizedName("grenade_poison").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_poison_alt"); - grenade_gas = new ItemGrenade().setUnlocalizedName("grenade_gas").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_gas_alt"); - grenade_pulse = new ItemGrenade().setUnlocalizedName("grenade_pulse").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_pulse"); - grenade_plasma = new ItemGrenade().setUnlocalizedName("grenade_plasma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_plasma_alt"); - grenade_tau = new ItemGrenade().setUnlocalizedName("grenade_tau").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_tau_alt"); - grenade_schrabidium = new ItemGrenade().setUnlocalizedName("grenade_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_schrabidium_alt"); - grenade_lemon = new ItemGrenade().setUnlocalizedName("grenade_lemon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_lemon"); - grenade_gascan = new ItemGrenade().setUnlocalizedName("grenade_gascan").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_gascan"); - grenade_mk2 = new ItemGrenade().setUnlocalizedName("grenade_mk2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_mk2_alt"); - grenade_aschrab = new ItemGrenade().setUnlocalizedName("grenade_aschrab").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_aschrab"); - grenade_nuke = new ItemGrenade().setUnlocalizedName("grenade_nuke").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_nuke_alt"); - grenade_nuclear = new ItemGrenade().setUnlocalizedName("grenade_nuclear").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_nuclear"); - grenade_zomg = new ItemGrenade().setUnlocalizedName("grenade_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_zomg"); - grenade_black_hole = new ItemGrenade().setUnlocalizedName("grenade_black_hole").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_black_hole"); - grenade_cloud = new ItemGrenade().setUnlocalizedName("grenade_cloud").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_cloud"); - grenade_pink_cloud = new ItemGrenade().setUnlocalizedName("grenade_pink_cloud").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_pink_cloud"); + grenade_generic = new ItemGrenade(4).setUnlocalizedName("grenade_generic").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_generic"); + grenade_strong = new ItemGrenade(5).setUnlocalizedName("grenade_strong").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_strong"); + grenade_frag = new ItemGrenade(4).setUnlocalizedName("grenade_frag").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_frag_alt"); + grenade_fire = new ItemGrenade(4).setUnlocalizedName("grenade_fire").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_fire_alt"); + grenade_shrapnel = new ItemGrenade(4).setUnlocalizedName("grenade_shrapnel").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_shrapnel"); + grenade_cluster = new ItemGrenade(5).setUnlocalizedName("grenade_cluster").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_cluster_alt"); + grenade_flare = new ItemGrenade(0).setUnlocalizedName("grenade_flare").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_flare_alt"); + grenade_electric = new ItemGrenade(5).setUnlocalizedName("grenade_electric").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_electric_alt"); + grenade_poison = new ItemGrenade(4).setUnlocalizedName("grenade_poison").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_poison_alt"); + grenade_gas = new ItemGrenade(4).setUnlocalizedName("grenade_gas").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_gas_alt"); + grenade_pulse = new ItemGrenade(4).setUnlocalizedName("grenade_pulse").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_pulse"); + grenade_plasma = new ItemGrenade(5).setUnlocalizedName("grenade_plasma").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_plasma_alt"); + grenade_tau = new ItemGrenade(5).setUnlocalizedName("grenade_tau").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_tau_alt"); + grenade_schrabidium = new ItemGrenade(7).setUnlocalizedName("grenade_schrabidium").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_schrabidium_alt"); + grenade_lemon = new ItemGrenade(4).setUnlocalizedName("grenade_lemon").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_lemon"); + grenade_gascan = new ItemGrenade(-1).setUnlocalizedName("grenade_gascan").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_gascan"); + grenade_mk2 = new ItemGrenade(5).setUnlocalizedName("grenade_mk2").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_mk2_alt"); + grenade_aschrab = new ItemGrenade(-1).setUnlocalizedName("grenade_aschrab").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_aschrab"); + grenade_nuke = new ItemGrenade(-1).setUnlocalizedName("grenade_nuke").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_nuke_alt"); + grenade_nuclear = new ItemGrenade(7).setUnlocalizedName("grenade_nuclear").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_nuclear"); + grenade_zomg = new ItemGrenade(7).setUnlocalizedName("grenade_zomg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_zomg"); + grenade_black_hole = new ItemGrenade(7).setUnlocalizedName("grenade_black_hole").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_black_hole"); + grenade_cloud = new ItemGrenade(-1).setUnlocalizedName("grenade_cloud").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_cloud"); + grenade_pink_cloud = new ItemGrenade(-1).setUnlocalizedName("grenade_pink_cloud").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_pink_cloud"); ullapool_caber = new WeaponSpecial(MainRegistry.enumToolMaterialSteel).setUnlocalizedName("ullapool_caber").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ullapool_caber"); - grenade_smart = new ItemGrenade().setUnlocalizedName("grenade_smart").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_smart"); - grenade_mirv = new ItemGrenade().setUnlocalizedName("grenade_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_mirv"); - grenade_breach = new ItemGrenade().setUnlocalizedName("grenade_breach").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_breach"); - grenade_burst = new ItemGrenade().setUnlocalizedName("grenade_burst").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_burst"); + grenade_if_generic = new ItemGrenade(4).setUnlocalizedName("grenade_if_generic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_generic"); + grenade_if_he = new ItemGrenade(5).setUnlocalizedName("grenade_if_he").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_he"); + grenade_if_bouncy = new ItemGrenade(4).setUnlocalizedName("grenade_if_bouncy").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_bouncy"); + grenade_if_sticky = new ItemGrenade(4).setUnlocalizedName("grenade_if_sticky").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_sticky"); + grenade_if_impact = new ItemGrenade(-1).setUnlocalizedName("grenade_if_impact").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_impact"); + grenade_if_incendiary = new ItemGrenade(4).setUnlocalizedName("grenade_if_incendiary").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_incendiary"); + grenade_if_toxic = new ItemGrenade(4).setUnlocalizedName("grenade_if_toxic").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_toxic"); + grenade_if_concussion = new ItemGrenade(4).setUnlocalizedName("grenade_if_concussion").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_concussion"); + grenade_if_brimstone = new ItemGrenade(5).setUnlocalizedName("grenade_if_brimstone").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_brimstone"); + grenade_if_mystery = new ItemGrenade(5).setUnlocalizedName("grenade_if_mystery").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_mystery"); + grenade_if_spark = new ItemGrenade(5).setUnlocalizedName("grenade_if_spark").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_spark"); + grenade_if_hopwire = new ItemGrenade(7).setUnlocalizedName("grenade_if_hopwire").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_hopwire"); + grenade_if_null = new ItemGrenade(7).setUnlocalizedName("grenade_if_null").setCreativeTab(null).setTextureName(RefStrings.MODID + ":grenade_if_null"); + + grenade_smart = new ItemGrenade(-1).setUnlocalizedName("grenade_smart").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_smart"); + grenade_mirv = new ItemGrenade(1).setUnlocalizedName("grenade_mirv").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_mirv"); + grenade_breach = new ItemGrenade(-1).setUnlocalizedName("grenade_breach").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_breach"); + grenade_burst = new ItemGrenade(1).setUnlocalizedName("grenade_burst").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":grenade_burst"); weaponized_starblaster_cell = new WeaponizedCell().setUnlocalizedName("weaponized_starblaster_cell").setMaxStackSize(1).setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_b92_ammo_weaponized"); @@ -3598,6 +3626,21 @@ public class ModItems { GameRegistry.registerItem(grenade_nuclear, grenade_nuclear.getUnlocalizedName()); GameRegistry.registerItem(grenade_zomg, grenade_zomg.getUnlocalizedName()); GameRegistry.registerItem(grenade_black_hole, grenade_black_hole.getUnlocalizedName()); + + GameRegistry.registerItem(grenade_if_generic, grenade_if_generic.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_he, grenade_if_he.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_bouncy, grenade_if_bouncy.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_sticky, grenade_if_sticky.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_impact, grenade_if_impact.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_incendiary, grenade_if_incendiary.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_toxic, grenade_if_toxic.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_concussion, grenade_if_concussion.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_brimstone, grenade_if_brimstone.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_mystery, grenade_if_mystery.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_spark, grenade_if_spark.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_hopwire, grenade_if_hopwire.getUnlocalizedName()); + GameRegistry.registerItem(grenade_if_null, grenade_if_null.getUnlocalizedName()); + GameRegistry.registerItem(ullapool_caber, ullapool_caber.getUnlocalizedName()); GameRegistry.registerItem(weaponized_starblaster_cell, weaponized_starblaster_cell.getUnlocalizedName()); diff --git a/com/hbm/items/weapon/ItemGrenade.java b/com/hbm/items/weapon/ItemGrenade.java index 2eb380fdc..e22313d57 100644 --- a/com/hbm/items/weapon/ItemGrenade.java +++ b/com/hbm/items/weapon/ItemGrenade.java @@ -1,5 +1,7 @@ package com.hbm.items.weapon; +import java.util.List; + import com.hbm.entity.grenade.EntityGrenadeASchrab; import com.hbm.entity.grenade.EntityGrenadeBlackHole; import com.hbm.entity.grenade.EntityGrenadeBreach; @@ -13,6 +15,19 @@ import com.hbm.entity.grenade.EntityGrenadeFrag; import com.hbm.entity.grenade.EntityGrenadeGas; import com.hbm.entity.grenade.EntityGrenadeGascan; import com.hbm.entity.grenade.EntityGrenadeGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFBouncy; +import com.hbm.entity.grenade.EntityGrenadeIFBrimstone; +import com.hbm.entity.grenade.EntityGrenadeIFConcussion; +import com.hbm.entity.grenade.EntityGrenadeIFGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFHE; +import com.hbm.entity.grenade.EntityGrenadeIFHopwire; +import com.hbm.entity.grenade.EntityGrenadeIFImpact; +import com.hbm.entity.grenade.EntityGrenadeIFIncendiary; +import com.hbm.entity.grenade.EntityGrenadeIFMystery; +import com.hbm.entity.grenade.EntityGrenadeIFNull; +import com.hbm.entity.grenade.EntityGrenadeIFSpark; +import com.hbm.entity.grenade.EntityGrenadeIFSticky; +import com.hbm.entity.grenade.EntityGrenadeIFToxic; import com.hbm.entity.grenade.EntityGrenadeLemon; import com.hbm.entity.grenade.EntityGrenadeMIRV; import com.hbm.entity.grenade.EntityGrenadeMk2; @@ -37,9 +52,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class ItemGrenade extends Item { + + public int fuse = 4; - public ItemGrenade() { + public ItemGrenade(int fuse) { this.maxStackSize = 16; + this.fuse = fuse; } @Override @@ -139,6 +157,46 @@ public class ItemGrenade extends Item { if (this == ModItems.grenade_burst) { p_77659_2_.spawnEntityInWorld(new EntityGrenadeBurst(p_77659_2_, p_77659_3_)); } + + if (this == ModItems.grenade_if_generic) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFGeneric(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_he) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFHE(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_bouncy) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFBouncy(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_sticky) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFSticky(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_impact) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFImpact(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_incendiary) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFIncendiary(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_toxic) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFToxic(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_concussion) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFConcussion(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_brimstone) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFBrimstone(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_mystery) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFMystery(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_spark) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFSpark(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_hopwire) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFHopwire(p_77659_2_, p_77659_3_)); + } + if (this == ModItems.grenade_if_null) { + p_77659_2_.spawnEntityInWorld(new EntityGrenadeIFNull(p_77659_2_, p_77659_3_)); + } } return p_77659_1_; @@ -161,5 +219,25 @@ public class ItemGrenade extends Item { return EnumRarity.common; } + + private String translateFuse() { + if(fuse == -1) + return "Impact"; + + if(fuse == 0) + return "Instant"; + + return fuse + "s"; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + list.add("Fuse: " + translateFuse()); + } + + public static int getFuseTicks(Item grenade) { + return ((ItemGrenade)grenade).fuse * 20; + } } diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index ffbd8c47a..fb9ae0523 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -147,6 +147,19 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeMIRV.class, new RenderSnowball(ModItems.grenade_mirv)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBreach.class, new RenderSnowball(ModItems.grenade_breach)); RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeBurst.class, new RenderSnowball(ModItems.grenade_burst)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFGeneric.class, new RenderSnowball(ModItems.grenade_if_generic)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHE.class, new RenderSnowball(ModItems.grenade_if_he)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFBouncy.class, new RenderSnowball(ModItems.grenade_if_bouncy)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSticky.class, new RenderSnowball(ModItems.grenade_if_sticky)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFImpact.class, new RenderSnowball(ModItems.grenade_if_impact)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFIncendiary.class, new RenderSnowball(ModItems.grenade_if_incendiary)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFToxic.class, new RenderSnowball(ModItems.grenade_if_toxic)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFConcussion.class, new RenderSnowball(ModItems.grenade_if_concussion)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFBrimstone.class, new RenderSnowball(ModItems.grenade_if_brimstone)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFMystery.class, new RenderSnowball(ModItems.grenade_if_mystery)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFSpark.class, new RenderSnowball(ModItems.grenade_if_spark)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFHopwire.class, new RenderSnowball(ModItems.grenade_if_hopwire)); + RenderingRegistry.registerEntityRenderingHandler(EntityGrenadeIFNull.class, new RenderSnowball(ModItems.grenade_if_null)); RenderingRegistry.registerEntityRenderingHandler(EntitySchrab.class, new RenderFlare()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index c6a39da73..bea2912c7 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -77,6 +77,19 @@ import com.hbm.entity.grenade.EntityGrenadeFrag; import com.hbm.entity.grenade.EntityGrenadeGas; import com.hbm.entity.grenade.EntityGrenadeGascan; import com.hbm.entity.grenade.EntityGrenadeGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFBouncy; +import com.hbm.entity.grenade.EntityGrenadeIFBrimstone; +import com.hbm.entity.grenade.EntityGrenadeIFConcussion; +import com.hbm.entity.grenade.EntityGrenadeIFGeneric; +import com.hbm.entity.grenade.EntityGrenadeIFHE; +import com.hbm.entity.grenade.EntityGrenadeIFHopwire; +import com.hbm.entity.grenade.EntityGrenadeIFImpact; +import com.hbm.entity.grenade.EntityGrenadeIFIncendiary; +import com.hbm.entity.grenade.EntityGrenadeIFMystery; +import com.hbm.entity.grenade.EntityGrenadeIFNull; +import com.hbm.entity.grenade.EntityGrenadeIFSpark; +import com.hbm.entity.grenade.EntityGrenadeIFSticky; +import com.hbm.entity.grenade.EntityGrenadeIFToxic; import com.hbm.entity.grenade.EntityGrenadeLemon; import com.hbm.entity.grenade.EntityGrenadeMIRV; import com.hbm.entity.grenade.EntityGrenadeMk2; @@ -536,7 +549,8 @@ public class MainRegistry @EventHandler public void PreLoad(FMLPreInitializationEvent PreEvent) { - logger = PreEvent.getModLog(); + if(logger == null) + logger = PreEvent.getModLog(); //Reroll Polaroid @@ -822,6 +836,19 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityGrenadeBreach.class, "entity_grenade_breach", 114, this, 250, 1, true); EntityRegistry.registerModEntity(EntityGrenadeBurst.class, "entity_grenade_burst", 115, this, 250, 1, true); EntityRegistry.registerModEntity(EntityBurningFOEQ.class, "entity_burning_foeq", 116, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFGeneric.class, "entity_grenade_ironshod", 117, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFHE.class, "entity_grenade_ironshod", 118, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFBouncy.class, "entity_grenade_ironshod", 119, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFSticky.class, "entity_grenade_ironshod", 120, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFImpact.class, "entity_grenade_ironshod", 121, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFIncendiary.class, "entity_grenade_ironshod", 122, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFToxic.class, "entity_grenade_ironshod", 123, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFConcussion.class, "entity_grenade_ironshod", 124, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFBrimstone.class, "entity_grenade_ironshod", 125, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFMystery.class, "entity_grenade_ironshod", 126, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFSpark.class, "entity_grenade_ironshod", 127, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFHopwire.class, "entity_grenade_ironshod", 128, this, 250, 1, true); + EntityRegistry.registerModEntity(EntityGrenadeIFNull.class, "entity_grenade_ironshod", 129, this, 250, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); @@ -1036,6 +1063,97 @@ public class MainRegistry { return new EntityGrenadeBurst(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_generic, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFGeneric(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_he, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFHE(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_bouncy, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFBouncy(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_sticky, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFSticky(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_impact, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFImpact(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_incendiary, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFIncendiary(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_toxic, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFToxic(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_concussion, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFConcussion(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_brimstone, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFBrimstone(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_mystery, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFMystery(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_spark, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFSpark(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_hopwire, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFHopwire(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } + }); + BlockDispenser.dispenseBehaviorRegistry.putObject(ModItems.grenade_if_null, new BehaviorProjectileDispense() { + + protected IProjectile getProjectileEntity(World p_82499_1_, IPosition p_82499_2_) + { + return new EntityGrenadeIFNull(p_82499_1_, p_82499_2_.getX(), p_82499_2_.getY(), p_82499_2_.getZ()); + } }); } @@ -1408,6 +1526,9 @@ public class MainRegistry @EventHandler public void preInit(FMLPreInitializationEvent event) { + if(logger == null) + logger = event.getModLog(); + FMLCommonHandler.instance().bus().register(new ModEventHandler()); MinecraftForge.EVENT_BUS.register(new ModEventHandler()); MinecraftForge.TERRAIN_GEN_BUS.register(new ModEventHandler()); diff --git a/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java b/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java index c0d8fc408..ab20f2b63 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java +++ b/com/hbm/tileentity/machine/TileEntityMachineCyclotron.java @@ -6,7 +6,7 @@ import java.util.Random; import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityCloudFleija; -import com.hbm.entity.logic.EntityNukeExplosionAdvanced; +import com.hbm.entity.logic.EntityNukeExplosionMK3; import com.hbm.entity.logic.EntityNukeExplosionMK4; import com.hbm.explosion.ExplosionChaos; import com.hbm.explosion.ExplosionLarge; @@ -281,7 +281,7 @@ public class TileEntityMachineCyclotron extends TileEntity implements ISidedInve } if(i == 2) { - EntityNukeExplosionAdvanced entity = new EntityNukeExplosionAdvanced(worldObj); + EntityNukeExplosionMK3 entity = new EntityNukeExplosionMK3(worldObj); entity.posX = this.xCoord; entity.posY = this.yCoord; entity.posZ = this.zCoord;