From 82b5ff0586093f2a4b87a43f8c58b87a0d3b7c77 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 5 Feb 2018 22:20:39 +0100 Subject: [PATCH] Beretta 92FS, new textures, U238M2 --- assets/hbm/lang/de_DE.lang | 1 + assets/hbm/lang/en_US.lang | 1 + assets/hbm/sounds.json | 1 + assets/hbm/sounds/weapon/b92Reload.ogg | Bin 0 -> 10646 bytes assets/hbm/textures/items/gun_b92.png | Bin 0 -> 295 bytes .../items/ingot_celneutronophyrium_new.png | Bin 0 -> 346 bytes .../items/ingot_tetraneutronium_new.png | Bin 0 -> 339 bytes assets/hbm/textures/items/ingot_u238m2.png | Bin 0 -> 307 bytes assets/hbm/textures/items/nugget_u238m2.png | Bin 0 -> 206 bytes assets/hbm/textures/models/ModelB92Dark.png | Bin 0 -> 1684 bytes .../hbm/textures/models/shimmer_sledge_wf.png | Bin 76028 -> 0 bytes assets/hbm/textures/models/tank_CRYOGEL.png | Bin 0 -> 4102 bytes .../projectile/EntityExplosiveBeam.java | 514 ++++++++++++++++++ com/hbm/explosion/ExplosionNukeGeneric.java | 3 +- com/hbm/items/ModItems.java | 6 + com/hbm/items/special/ItemUnstable.java | 46 ++ com/hbm/items/weapon/GunB92.java | 309 +++++++++++ com/hbm/lib/RefStrings.java | 2 +- com/hbm/main/ClientProxy.java | 2 + com/hbm/main/MainRegistry.java | 2 + com/hbm/render/entity/RenderBeam5.java | 82 +++ com/hbm/render/item/ItemRenderGunAnim.java | 18 + com/hbm/render/model/ModelB92.java | 216 ++++++++ 23 files changed, 1201 insertions(+), 2 deletions(-) create mode 100644 assets/hbm/sounds/weapon/b92Reload.ogg create mode 100644 assets/hbm/textures/items/gun_b92.png create mode 100644 assets/hbm/textures/items/ingot_celneutronophyrium_new.png create mode 100644 assets/hbm/textures/items/ingot_tetraneutronium_new.png create mode 100644 assets/hbm/textures/items/ingot_u238m2.png create mode 100644 assets/hbm/textures/items/nugget_u238m2.png create mode 100644 assets/hbm/textures/models/ModelB92Dark.png delete mode 100644 assets/hbm/textures/models/shimmer_sledge_wf.png create mode 100644 assets/hbm/textures/models/tank_CRYOGEL.png create mode 100644 com/hbm/entity/projectile/EntityExplosiveBeam.java create mode 100644 com/hbm/items/special/ItemUnstable.java create mode 100644 com/hbm/items/weapon/GunB92.java create mode 100644 com/hbm/render/entity/RenderBeam5.java create mode 100644 com/hbm/render/model/ModelB92.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index a145ac93d..8010ce062 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -975,6 +975,7 @@ item.gun_lever_action.name=Mare's Leg (Original) item.gun_bolt_action.name=Dream-Repetiergewehr (Original) item.gun_lever_action_dark.name=Mare's Leg (Dunkel) item.gun_bolt_action_green.name=Dream-Repetiergewehr (Grün) +item.gun_b92.name=B92 Energiepistole item.gun_xvl1456.name=XVL1456 Tau-Kanone Prototyp item.gun_osipr.name=Standartausrüstung für Sicherheitskräfte item.gun_immolator.name=Der Immolator diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 87eec71cb..cc321e613 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -978,6 +978,7 @@ item.gun_lever_action.name=Mare's Leg (Original) item.gun_bolt_action.name=Dream Bolt-Action Rifle (Original) item.gun_lever_action_dark.name=Mare's Leg (Dark) item.gun_bolt_action_green.name=Dream Bolt-Action Rifle (Green) +item.gun_b92.name=B92 Energy Pistol item.gun_xvl1456.name=XVL1456 Tau Cannon Prototype item.gun_osipr.name=Overwatch Standard Issue Pulse Rifle item.gun_immolator.name=The Immolator diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 2f82fb37b..1f6996088 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -53,6 +53,7 @@ "weapon.sparkShoot": {"category": "player", "sounds": ["weapon/sparkShoot1", "weapon/sparkShoot2", "weapon/sparkShoot3"]}, "weapon.bang": {"category": "player", "sounds": [{"name": "weapon/bang", "stream": false}]}, "weapon.leverActionReload": {"category": "player", "sounds": [{"name": "weapon/leverActionReload", "stream": false}]}, + "weapon.b92Reload": {"category": "player", "sounds": [{"name": "weapon/b92Reload", "stream": false}]}, "weapon.reloadTurret": {"category": "player", "sounds": [{"name": "weapon/reloadTurret", "stream": false}]}, "weapon.switchmode1": {"category": "player", "sounds": [{"name": "weapon/switchmode1", "stream": false}]}, diff --git a/assets/hbm/sounds/weapon/b92Reload.ogg b/assets/hbm/sounds/weapon/b92Reload.ogg new file mode 100644 index 0000000000000000000000000000000000000000..bcc60a9dcac2e88739f29e3b18e0aa667cdd5cfc GIT binary patch literal 10646 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/gun_b92.png b/assets/hbm/textures/items/gun_b92.png new file mode 100644 index 0000000000000000000000000000000000000000..993ca5fdf2b19f91e2d9b2a2f56764f5f8f2293f GIT binary patch literal 295 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf%;pK1#Vi&if~*P$qWiudYUn4m)FMW55+7S`6uWt>iNc&k^i7fQd4MI z6YCQO#|L>fRrAwQ4qN-rT2_~%wu>iwt>LjAr*jS0W?A$xu6X?`(frFb%(Kr=KtPaTTKCORS*LgF64r)R&ik$6 z$?#*|{|}~tM<#cCeHPB^$56nbT=1Z|UB1J-Wo9P?H(xQwC30KbLh*2~7ax{&e~P literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ingot_celneutronophyrium_new.png b/assets/hbm/textures/items/ingot_celneutronophyrium_new.png new file mode 100644 index 0000000000000000000000000000000000000000..3a8ef7bc0f61e1425b220289a71d1958795340f8 GIT binary patch literal 346 zcmV-g0j2(lP)1w21{X_*Dx#YX5yYj4vx9?!ojO!daFhN6m;RDC zx`?-kkln>if`_977ex@;AtC{>;d2N*drfUt{g%7?-h1AA`40X~g@KkZ&@$dvWzcZH zytN9z%k3l0PTO(?gK?*q?$6o&!}YzBHi{xDKo0jZr2Zo=9C>u{9Ozkkg*jF1t94NQd@Y0GI0m4K zmm3U+boXRfd0mEDmb+e0XxK>@R%O1_11CY;$pQ<(O38JqIcz sXm;9a)T9g=Ek_6gElHA;LVv5i0coayfC1_3A}Zy)cRnHMa~pOC7mNRou@W@i{d7l5{HX_{sfQWV7q`ZdA#O?Ai| lG}NdOM1CiwoQ3|DJ^^HCblUxwjMM-C002ovPDHLkV1k|}j3od7 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/ingot_u238m2.png b/assets/hbm/textures/items/ingot_u238m2.png new file mode 100644 index 0000000000000000000000000000000000000000..49e391c84dd2a5c27bb7ae04555b2b793141c582 GIT binary patch literal 307 zcmV-30nGl1P)3~)k{C2 zL+55NWRJ;^)ux1Op&d$xOs|7tOKNMIjJb>Sp58eK2`(m*YLQgS?|#q))x~If>LF_K zs;ai?gsyMk_+Lr zWCS3j8sY@*#;|&Bh5iU?3Bc^O6Z$s-@>ogEjX2=Bk{>LFUU_6~%8CF0002ovPDHLk FV1h$4g;f9m literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/nugget_u238m2.png b/assets/hbm/textures/items/nugget_u238m2.png new file mode 100644 index 0000000000000000000000000000000000000000..95a04822b70e8c3ba0912c5b521897fc7f9ae5f8 GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D1_Vh&K~#8N?OVHQ zBu5nOuW(>&Y&KP*M2Qk50)apl2n0f)0qqLLg0*4oz`4J}sZ)azrw;vDZO-7+oH@F; zsvk944Xc5o9)0U|>c09`Pj_%|&@tWK-u6gOPfs1vdcE!+9v*t;_xJZ{9W+kwZP(Y= z{msqIFh1vLmFr%{mWR!wL#u^+u5re0TIsd`!0CK(9B^`S(lhNE0Obr7mrQiVh#p0h zW8(m^kFng)DF7~`7@TsCe6?DobgsC9FE1~*>iS&im5%K-mR<}%YnkQ3Ta8;gaRpy31KYj-mLISSXK3#LAW}<3 zfc;yE07a9zih1DrKm1CWhh(i@S!QT@W_>a|AfK1u}i6(XN2 zJx@vL8~~p~`$ThdtZ3{h9$%(BJ8XoDB)hiI+FY;$;B!QpUM&XK5?PKZ9$yN8KX4Q0 z>==m%+pushRLgL;BP(!ze!ek{EjCg!kD~!tVy<-40D|cafPLbCmLdR-Kzh|2pr*v- zTftD%leLdAsqQ{!fX|ibsr|ah462D!bC{V)cRbwwjv2#E;M9%GrB4A^q70YxC0KJe zG_~KeKqwuLC7W2%_p<{)$79JRmh{bh{;4NBmOk_Zv4|y`Skm{^0O0QM>FH^oB`UDY z?=SWBV91LD5V1=13Y)zrsKub&r#q}}F`q@zpRw$^3%X|kkzE8uY9cXZV_oZCG6>wyfqGpjDd=R zvV75SlmKvhUOUN>IAs8M6ln(-Q0|BvnkfM2SdruOVjQ3oX{;U#ESV(I z*6!m$cXxL;+y&OmTL)A?Y>5MA z=>Uz*x4X_&P^LcX-80*((!P6+F2wDO_AA$4KbVdybwfiW0osQ91 zy3yYTX2Da{{4|p-?(8xk)Qf|oqji*j|KY2R3+(L~-6klS1vK2N(^KS0zBB;p;Gpbv zdU#{$wg89%qUz=Oy{!(C(+gh9K~ar{B2MDD6CqE(2hwz09# zn*-porVHWA1oES!qyF&lu-6>rl2*ppk^4O7BPqXb_jif8*X+e_gq8vTFwf4;Mt`+g zvjDqz{szDKE&H`%V}Q%|mQnzvHs99Q;u!$kC^u2M=um+0 z35?fk3mW^J%DNUmsExM);Q07>a9y!E0^xu}064907$9hB^=`0N002~i;4wV{Hub)v znF!$YVb7716Obz>lth3Wz`hX&C;-ZB=u3Le4$?{S znl1x?qM`C0iGYHp8v?DfKkAX5QAPagr;k0-&mY%ALcIh4U33MZ834LCE<)R;0^l4# zpveI^b)Gy<9|?5_!0#OVo#j;k5Lt^F2k_(x1ah>^1wdVUatK3zs8>Z`2?r1W-87Y* zKT{fV19g+?DE8+G0~n6Qe#l7|0idF?^^&6#x_MOjjzoZcBS$F$fck+7QWYh~ckx1d z1OUgu#`qw zQx_TCLzF(iu6>l5x#?_=;taZmDhH@sO$9(tg5~HQ0!oRBN%K-WH@4RREcq_EDFBdT zriiV{1uZxrx`$XI0;eSaeNq eWMymsRApmmZe=e*IWjLzZ)9a`LOC+qm)qe3OAN07 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/shimmer_sledge_wf.png b/assets/hbm/textures/models/shimmer_sledge_wf.png deleted file mode 100644 index 585c368d70a54b604f902c2f6f46a7557b43ed82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76028 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 1.0E-7D) + { + float f2 = (float)(Math.atan2(d2, d0) * 180.0D / Math.PI) - 90.0F; + float f3 = (float)(-(Math.atan2(d1, d3) * 180.0D / Math.PI)); + double d4 = d0 / d3; + double d5 = d2 / d3; + this.setLocationAndAngles(p_i1755_2_.posX + d4, this.posY, p_i1755_2_.posZ + d5, f2, f3); + this.yOffset = 0.0F; + float f4 = (float)d3 * 0.2F; + this.setThrowableHeading(d0, d1 + f4, d2, p_i1755_4_, p_i1755_5_); + } + } + + public EntityExplosiveBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, int dmgMin, int dmgMax, EntityGrenadeZOMG grenade) { + super(p_i1756_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1756_2_; + + this.setSize(0.5F, 0.5F); + this.setLocationAndAngles(grenade.posX, grenade.posY + grenade.getEyeHeight(), grenade.posZ, + grenade.rotationYaw, grenade.rotationPitch); + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; + this.posY -= 0.10000000149011612D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) * 0.16F; + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float) Math.PI) + * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float) Math.PI) + * MathHelper.cos(this.rotationPitch / 180.0F * (float) Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float) Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); + } + + public EntityExplosiveBeam(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) + { + super(p_i1756_1_); + this.renderDistanceWeight = 10.0D; + this.shootingEntity = p_i1756_2_; + + this.setSize(0.5F, 0.5F); + this.setLocationAndAngles(p_i1756_2_.posX, p_i1756_2_.posY + p_i1756_2_.getEyeHeight(), p_i1756_2_.posZ, p_i1756_2_.rotationYaw, p_i1756_2_.rotationPitch); + this.posX -= MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; + this.posY -= 0.10000000149011612D; + this.posZ -= MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * 0.16F; + this.setPosition(this.posX, this.posY, this.posZ); + this.yOffset = 0.0F; + this.motionX = -MathHelper.sin(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); + this.motionZ = MathHelper.cos(this.rotationYaw / 180.0F * (float)Math.PI) * MathHelper.cos(this.rotationPitch / 180.0F * (float)Math.PI); + this.motionY = (-MathHelper.sin(this.rotationPitch / 180.0F * (float)Math.PI)); + this.setThrowableHeading(this.motionX, this.motionY, this.motionZ, p_i1756_3_ * 1.5F, 1.0F); + } + + public EntityExplosiveBeam(World world, int x, int y, int z, double mx, double my, double mz, double grav) { + super(world); + this.posX = x + 0.5F; + this.posY = y + 0.5F; + this.posZ = z + 0.5F; + + this.motionX = mx; + this.motionY = my; + this.motionZ = mz; + + this.gravity = grav; + } + + @Override + protected void entityInit() + { + this.dataWatcher.addObject(16, Byte.valueOf((byte)0)); + } + + /** + * Similar to setArrowHeading, it's point the throwable entity to a x, y, z direction. + */ + @Override + public void setThrowableHeading(double p_70186_1_, double p_70186_3_, double p_70186_5_, float p_70186_7_, float p_70186_8_) + { + float f2 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_3_ * p_70186_3_ + p_70186_5_ * p_70186_5_); + p_70186_1_ /= f2; + p_70186_3_ /= f2; + p_70186_5_ /= f2; + p_70186_1_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_3_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_5_ += this.rand.nextGaussian() * (this.rand.nextBoolean() ? -1 : 1) * 0.002499999832361937D * p_70186_8_; + p_70186_1_ *= p_70186_7_; + p_70186_3_ *= p_70186_7_; + p_70186_5_ *= p_70186_7_; + this.motionX = p_70186_1_; + this.motionY = p_70186_3_; + this.motionZ = p_70186_5_; + float f3 = MathHelper.sqrt_double(p_70186_1_ * p_70186_1_ + p_70186_5_ * p_70186_5_); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70186_1_, p_70186_5_) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70186_3_, f3) * 180.0D / Math.PI); + this.ticksInGround = 0; + } + + /** + * Sets the position and rotation. Only difference from the other one is no bounding on the rotation. Args: posX, + * posY, posZ, yaw, pitch + */ + @Override + @SideOnly(Side.CLIENT) + public void setPositionAndRotation2(double p_70056_1_, double p_70056_3_, double p_70056_5_, float p_70056_7_, float p_70056_8_, int p_70056_9_) + { + this.setPosition(p_70056_1_, p_70056_3_, p_70056_5_); + this.setRotation(p_70056_7_, p_70056_8_); + } + + /** + * Sets the velocity to the args. Args: x, y, z + */ + @Override + @SideOnly(Side.CLIENT) + public void setVelocity(double p_70016_1_, double p_70016_3_, double p_70016_5_) + { + this.motionX = p_70016_1_; + this.motionY = p_70016_3_; + this.motionZ = p_70016_5_; + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(p_70016_1_ * p_70016_1_ + p_70016_5_ * p_70016_5_); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(p_70016_1_, p_70016_5_) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(p_70016_3_, f) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch; + this.prevRotationYaw = this.rotationYaw; + this.setLocationAndAngles(this.posX, this.posY, this.posZ, this.rotationYaw, this.rotationPitch); + this.ticksInGround = 0; + } + } + + /** + * Called to update the entity's position/logic. + */ + //@Override + @Override + public void onUpdate() + { + super.onUpdate(); + + if(this.ticksExisted > 100) + this.setDead(); + + if (this.prevRotationPitch == 0.0F && this.prevRotationYaw == 0.0F) + { + float f = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.prevRotationYaw = this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + //this.prevRotationPitch = this.rotationPitch = (float)(Math.atan2(this.motionY, (double)f) * 180.0D / Math.PI); + } + + Block block = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); + + if (block.getMaterial() != Material.air) + { + block.setBlockBoundsBasedOnState(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); + AxisAlignedBB axisalignedbb = block.getCollisionBoundingBoxFromPool(this.worldObj, this.field_145791_d, this.field_145792_e, this.field_145789_f); + if(!worldObj.isRemote) { + ExplosionChaos.burn(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 2); + ExplosionChaos.flameDeath(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 5); + ExplosionThermo.scorchLight(this.worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, 3); + } + this.setDead(); + explode(); + } + + if (this.arrowShake > 0) + { + --this.arrowShake; + } + else + { + ++this.ticksInAir; + Vec3 vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + Vec3 vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + MovingObjectPosition movingobjectposition = this.worldObj.func_147447_a(vec31, vec3, false, true, false); + vec31 = Vec3.createVectorHelper(this.posX, this.posY, this.posZ); + vec3 = Vec3.createVectorHelper(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + + if (movingobjectposition != null) + { + vec3 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord); + } + + Entity entity = null; + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, this.boundingBox.addCoord(this.motionX, this.motionY, this.motionZ).expand(1.0D, 1.0D, 1.0D)); + double d0 = 0.0D; + int i; + float f1; + + for (i = 0; i < list.size(); ++i) + { + Entity entity1 = (Entity)list.get(i); + + if (entity1.canBeCollidedWith() && (entity1 != this.shootingEntity || this.ticksInAir >= 5)) + { + f1 = 0.3F; + AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f1, f1, f1); + MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec31, vec3); + + if (movingobjectposition1 != null) + { + double d1 = vec31.distanceTo(movingobjectposition1.hitVec); + + if (d1 < d0 || d0 == 0.0D) + { + entity = entity1; + d0 = d1; + } + } + } + } + + if (entity != null) + { + movingobjectposition = new MovingObjectPosition(entity); + } + + if (movingobjectposition != null && movingobjectposition.entityHit != null && movingobjectposition.entityHit instanceof EntityPlayer) + { + EntityPlayer entityplayer = (EntityPlayer)movingobjectposition.entityHit; + + if (entityplayer.capabilities.disableDamage || this.shootingEntity instanceof EntityPlayer && !((EntityPlayer)this.shootingEntity).canAttackPlayer(entityplayer)) + { + movingobjectposition = null; + } + } + + float f2; + float f4; + + if (movingobjectposition != null) + { + if (movingobjectposition.entityHit != null) + { + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionY * this.motionY + this.motionZ * this.motionZ); + int k = MathHelper.ceiling_double_int(f2 * this.damage); + + if (this.getIsCritical()) + { + k += this.rand.nextInt(k / 2 + 2); + } + + explode(); + } + else + { + this.field_145791_d = movingobjectposition.blockX; + this.field_145792_e = movingobjectposition.blockY; + this.field_145789_f = movingobjectposition.blockZ; + this.field_145790_g = this.worldObj.getBlock(this.field_145791_d, this.field_145792_e, this.field_145789_f); + this.inData = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); + } + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + f2 = MathHelper.sqrt_double(this.motionX * this.motionX + this.motionZ * this.motionZ); + this.rotationYaw = (float)(Math.atan2(this.motionX, this.motionZ) * 180.0D / Math.PI); + + float f3 = 0.99F; + f1 = 0.05F; + + if (this.isInWater()) + { + this.setDead(); + explode(); + } + + if (this.isWet()) + { + this.extinguish(); + } + + this.setPosition(this.posX, this.posY, this.posZ); + this.func_145775_I(); + } + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + */ + @Override + public void writeEntityToNBT(NBTTagCompound p_70014_1_) + { + p_70014_1_.setShort("xTile", (short)this.field_145791_d); + p_70014_1_.setShort("yTile", (short)this.field_145792_e); + p_70014_1_.setShort("zTile", (short)this.field_145789_f); + p_70014_1_.setShort("life", (short)this.ticksInGround); + p_70014_1_.setByte("inTile", (byte)Block.getIdFromBlock(this.field_145790_g)); + p_70014_1_.setByte("inData", (byte)this.inData); + p_70014_1_.setByte("shake", (byte)this.arrowShake); + p_70014_1_.setByte("inGround", (byte)(this.inGround ? 1 : 0)); + p_70014_1_.setByte("pickup", (byte)this.canBePickedUp); + p_70014_1_.setDouble("damage", this.damage); + } + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + */ + @Override + public void readEntityFromNBT(NBTTagCompound p_70037_1_) + { + this.field_145791_d = p_70037_1_.getShort("xTile"); + this.field_145792_e = p_70037_1_.getShort("yTile"); + this.field_145789_f = p_70037_1_.getShort("zTile"); + this.ticksInGround = p_70037_1_.getShort("life"); + this.field_145790_g = Block.getBlockById(p_70037_1_.getByte("inTile") & 255); + this.inData = p_70037_1_.getByte("inData") & 255; + this.arrowShake = p_70037_1_.getByte("shake") & 255; + this.inGround = p_70037_1_.getByte("inGround") == 1; + + if (p_70037_1_.hasKey("damage", 99)) + { + this.damage = p_70037_1_.getDouble("damage"); + } + + if (p_70037_1_.hasKey("pickup", 99)) + { + this.canBePickedUp = p_70037_1_.getByte("pickup"); + } + else if (p_70037_1_.hasKey("player", 99)) + { + this.canBePickedUp = p_70037_1_.getBoolean("player") ? 1 : 0; + } + } + + /** + * returns if this entity triggers Block.onEntityWalking on the blocks they walk on. used for spiders and wolves to + * prevent them from trampling crops + */ + @Override + protected boolean canTriggerWalking() + { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public float getShadowSize() + { + return 0.0F; + } + + public void setDamage(double p_70239_1_) + { + this.damage = p_70239_1_; + } + + public double getDamage() + { + return this.damage; + } + + /** + * Sets the amount of knockback the arrow applies when it hits a mob. + */ + public void setKnockbackStrength(int p_70240_1_) + { + this.knockbackStrength = p_70240_1_; + } + + /** + * If returns false, the item will not inflict any damage against entities. + */ + @Override + public boolean canAttackWithItem() + { + return false; + } + + /** + * Whether the arrow has a stream of critical hit particles flying behind it. + */ + public void setIsCritical(boolean p_70243_1_) + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + + if (p_70243_1_) + { + this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 | 1))); + } + else + { + this.dataWatcher.updateObject(16, Byte.valueOf((byte)(b0 & -2))); + } + } + + /** + * Whether the arrow has a stream of critical hit particles flying behind it. + */ + public boolean getIsCritical() + { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + return (b0 & 1) != 0; + } + + private void explode() { + if(!worldObj.isRemote) { + this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, + "random.explode", 100.0f, this.worldObj.rand.nextFloat() * 0.1F + 0.9F); + + EntityNukeExplosionMK3 entity = new EntityNukeExplosionMK3(this.worldObj); + entity.posX = this.posX; + entity.posY = this.posY; + entity.posZ = this.posZ; + entity.destructionRange = 10; + entity.speed = 25; + entity.coefficient = 1.0F; + entity.waste = false; + + this.worldObj.spawnEntityInWorld(entity); + + EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(this.worldObj, 10); + cloud.posX = this.posX; + cloud.posY = this.posY; + cloud.posZ = this.posZ; + this.worldObj.spawnEntityInWorld(cloud); + } + } +} diff --git a/com/hbm/explosion/ExplosionNukeGeneric.java b/com/hbm/explosion/ExplosionNukeGeneric.java index 3143b79cf..c2c42eb28 100644 --- a/com/hbm/explosion/ExplosionNukeGeneric.java +++ b/com/hbm/explosion/ExplosionNukeGeneric.java @@ -31,6 +31,7 @@ import com.hbm.entity.effect.EntityNukeCloudSmall; import com.hbm.entity.grenade.EntityGrenadeASchrab; import com.hbm.entity.grenade.EntityGrenadeNuclear; import com.hbm.entity.missile.EntityMIRV; +import com.hbm.entity.projectile.EntityExplosiveBeam; import com.hbm.entity.projectile.EntityMiniMIRV; import com.hbm.entity.projectile.EntityMiniNuke; import com.hbm.interfaces.IConsumer; @@ -147,7 +148,7 @@ public class ExplosionNukeGeneric { if (d9 < wat && !(entity instanceof EntityOcelot) && !(entity instanceof EntityNukeCloudSmall) && !(entity instanceof EntityMIRV) && !(entity instanceof EntityMiniNuke) && !(entity instanceof EntityMiniMIRV) && !(entity instanceof EntityGrenadeASchrab) - && !(entity instanceof EntityGrenadeNuclear) + && !(entity instanceof EntityGrenadeNuclear) && !(entity instanceof EntityExplosiveBeam) && !(entity instanceof EntityPlayer && Library.checkArmor((EntityPlayer) entity, ModItems.euphemium_helmet, ModItems.euphemium_plate, ModItems.euphemium_legs, ModItems.euphemium_boots))) { diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 89ad9d7d7..1f5a44c9f 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -42,6 +42,7 @@ public class ModItems { public static Item ingot_uranium; public static Item ingot_u235; public static Item ingot_u238; + public static Item ingot_u238m2; public static Item ingot_plutonium; public static Item ingot_pu238; public static Item ingot_pu239; @@ -688,6 +689,7 @@ public class ModItems { public static Item gun_bolt_action; public static Item gun_bolt_action_green; public static Item gun_bolt_action_ammo; + public static Item gun_b92; public static Item gun_xvl1456; public static Item gun_xvl1456_ammo; public static Item gun_osipr; @@ -1169,6 +1171,7 @@ public class ModItems { ingot_uranium = new ItemRadioactive().setUnlocalizedName("ingot_uranium").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_uranium"); ingot_u235 = new ItemRadioactive().setUnlocalizedName("ingot_u235").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_u235"); ingot_u238 = new ItemRadioactive().setUnlocalizedName("ingot_u238").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_u238"); + ingot_u238m2 = new ItemUnstable(350, 20).setUnlocalizedName("ingot_u238m2").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_u238m2"); ingot_plutonium = new ItemRadioactive().setUnlocalizedName("ingot_plutonium").setCreativeTab(MainRegistry.tabParts).setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_plutonium"); ingot_pu238 = new ItemRadioactive().setUnlocalizedName("ingot_pu238").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_pu238"); ingot_pu239 = new ItemRadioactive().setUnlocalizedName("ingot_pu239").setCreativeTab(MainRegistry.tabParts).setTextureName(RefStrings.MODID + ":ingot_pu239"); @@ -1768,6 +1771,7 @@ public class ModItems { gun_lever_action_dark = new GunLeverAction().setUnlocalizedName("gun_lever_action_dark").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_lever_action_dark"); gun_bolt_action_ammo = new Item().setUnlocalizedName("gun_bolt_action_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_bolt_action_ammo"); gun_bolt_action = new GunBoltAction().setUnlocalizedName("gun_bolt_action").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_bolt_action"); + gun_b92 = new GunB92().setUnlocalizedName("gun_b92").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_b92"); gun_bolt_action_green = new GunBoltAction().setUnlocalizedName("gun_bolt_action_green").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_bolt_action_green"); gun_xvl1456_ammo = new Item().setUnlocalizedName("gun_xvl1456_ammo").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_xvl1456_ammo"); gun_xvl1456 = new GunXVL1456().setUnlocalizedName("gun_xvl1456").setCreativeTab(MainRegistry.tabNuke).setTextureName(RefStrings.MODID + ":gun_xvl1456"); @@ -2282,6 +2286,7 @@ public class ModItems { GameRegistry.registerItem(ingot_uranium, ingot_uranium.getUnlocalizedName()); GameRegistry.registerItem(ingot_u235, ingot_u235.getUnlocalizedName()); GameRegistry.registerItem(ingot_u238, ingot_u238.getUnlocalizedName()); + GameRegistry.registerItem(ingot_u238m2, ingot_u238m2.getUnlocalizedName()); GameRegistry.registerItem(ingot_plutonium, ingot_plutonium.getUnlocalizedName()); GameRegistry.registerItem(ingot_pu238, ingot_pu238.getUnlocalizedName()); GameRegistry.registerItem(ingot_pu239, ingot_pu239.getUnlocalizedName()); @@ -2997,6 +3002,7 @@ public class ModItems { GameRegistry.registerItem(gun_lever_action_dark, gun_lever_action_dark.getUnlocalizedName()); GameRegistry.registerItem(gun_bolt_action, gun_bolt_action.getUnlocalizedName()); GameRegistry.registerItem(gun_bolt_action_green, gun_bolt_action_green.getUnlocalizedName()); + GameRegistry.registerItem(gun_b92, gun_b92.getUnlocalizedName()); GameRegistry.registerItem(gun_xvl1456, gun_xvl1456.getUnlocalizedName()); GameRegistry.registerItem(gun_osipr, gun_osipr.getUnlocalizedName()); GameRegistry.registerItem(gun_immolator, gun_immolator.getUnlocalizedName()); diff --git a/com/hbm/items/special/ItemUnstable.java b/com/hbm/items/special/ItemUnstable.java new file mode 100644 index 000000000..ffbec9bd1 --- /dev/null +++ b/com/hbm/items/special/ItemUnstable.java @@ -0,0 +1,46 @@ +package com.hbm.items.special; + +import com.hbm.entity.logic.EntityNukeExplosionMK4; +import com.hbm.lib.ModDamageSource; + +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; + +public class ItemUnstable extends Item { + + int radius; + int timer; + + public ItemUnstable(int radius, int timer) { + this.radius = radius; + this.timer = timer; + } + + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { + this.setTimer(stack, this.getTimer(stack) + 1); + + if(this.getTimer(stack) == timer && !world.isRemote) { + world.spawnEntityInWorld(EntityNukeExplosionMK4.statFac(world, radius, entity.posX, entity.posY, entity.posZ)); + world.playSoundAtEntity(entity, "hbm:weapon.immolatorIgnite", 1.0F, 1.0F); + entity.attackEntityFrom(ModDamageSource.nuclearBlast, 10000); + } + } + + private void setTimer(ItemStack stack, int time) { + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + + stack.stackTagCompound.setInteger("timer", time); + } + + private int getTimer(ItemStack stack) { + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + + return stack.stackTagCompound.getInteger("timer"); + } + +} diff --git a/com/hbm/items/weapon/GunB92.java b/com/hbm/items/weapon/GunB92.java new file mode 100644 index 000000000..ce9eba3a5 --- /dev/null +++ b/com/hbm/items/weapon/GunB92.java @@ -0,0 +1,309 @@ +package com.hbm.items.weapon; + +import java.util.List; +import java.util.Random; + +import com.google.common.collect.Multimap; +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.entity.logic.EntityNukeExplosionMK3; +import com.hbm.entity.projectile.EntityBullet; +import com.hbm.entity.projectile.EntityExplosiveBeam; +import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; + +import net.minecraft.enchantment.Enchantment; +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.Entity; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.EnumAction; +import net.minecraft.item.EnumRarity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.player.ArrowLooseEvent; +import net.minecraftforge.event.entity.player.ArrowNockEvent; + +public class GunB92 extends Item { + + Random rand = new Random(); + + public int dmgMin = 16; + public int dmgMax = 28; + + public GunB92() { + + this.maxStackSize = 1; + } + + @Override + public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { + if (!p_77615_3_.isSneaking()) { + int j = this.getMaxItemUseDuration(p_77615_1_) - p_77615_4_; + + ArrowLooseEvent event = new ArrowLooseEvent(p_77615_3_, p_77615_1_, j); + MinecraftForge.EVENT_BUS.post(event); + j = event.charge; + + boolean flag = true; + + if (flag) { + float f = j / 20.0F; + f = (f * f + f * 2.0F) / 3.0F; + + if (j < 10.0D) { + return; + } + + if (j > 10.0F) { + f = 10.0F; + } + + if (!p_77615_2_.isRemote) + for(int i = 0; i < getPower(p_77615_1_); i++) { + EntityExplosiveBeam entityarrow1; + entityarrow1 = new EntityExplosiveBeam(p_77615_2_, p_77615_3_, 3.0F); + + float divergence = i * 0.2F; + + if(divergence > 1F) + divergence = 1F; + + if(i > 0) { + entityarrow1.motionX += rand.nextGaussian() * divergence; + entityarrow1.motionY += rand.nextGaussian() * divergence; + entityarrow1.motionZ += rand.nextGaussian() * divergence; + } + + p_77615_1_.damageItem(1, p_77615_3_); + + p_77615_2_.spawnEntityInWorld(entityarrow1); + } + + p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.sparkShoot", 5.0F, 1.0F); + + setAnim(p_77615_1_, 1); + setPower(p_77615_1_, 0); + } + } else { + } + } + + @Override + public void onUpdate(ItemStack stack, World world, Entity entity, int i, boolean b) { + int j = getAnim(stack); + + if (j > 0) { + if (j < 30) + setAnim(stack, j + 1); + else + setAnim(stack, 0); + + if (j == 15) { + world.playSoundAtEntity(entity, "hbm:weapon.b92Reload", 2F, 0.9F); + setPower(stack, getPower(stack) + 1); + + if(getPower(stack) > 10) { + + setPower(stack, 0); + + if(!world.isRemote) { + world.playSoundEffect(entity.posX, entity.posY, entity.posZ, + "random.explode", 100.0f, world.rand.nextFloat() * 0.1F + 0.9F); + + EntityNukeExplosionMK3 exp = new EntityNukeExplosionMK3(world); + exp.posX = entity.posX; + exp.posY = entity.posY; + exp.posZ = entity.posZ; + exp.destructionRange = 50; + exp.speed = 25; + exp.coefficient = 1.0F; + exp.waste = false; + + world.spawnEntityInWorld(exp); + + EntityCloudFleijaRainbow cloud = new EntityCloudFleijaRainbow(world, 50); + cloud.posX = entity.posX; + cloud.posY = entity.posY; + cloud.posZ = entity.posZ; + world.spawnEntityInWorld(cloud); + } + } + } + } + + } + + @Override + public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { + return p_77654_1_; + } + + /** + * How long it takes to use or consume an item + */ + @Override + public int getMaxItemUseDuration(ItemStack p_77626_1_) { + return 72000; + } + + /** + * returns the action that specifies what animation to play when the items + * is being used + */ + @Override + public EnumAction getItemUseAction(ItemStack p_77661_1_) { + return EnumAction.bow; + } + + /** + * Called whenever this item is equipped and the right mouse button is + * pressed. Args: itemStack, world, entityPlayer + */ + @Override + public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { + if (!p_77659_3_.isSneaking() && getPower(p_77659_1_) > 0) { + ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); + MinecraftForge.EVENT_BUS.post(event); + + if (this.getAnim(p_77659_1_) == 0) + p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); + } else { + if (getAnim(p_77659_1_) == 0) { + setAnim(p_77659_1_, 1); + } + } + + return p_77659_1_; + } + + /** + * Return the enchantability factor of the item, most of the time is based + * on material. + */ + @Override + public int getItemEnchantability() { + return 1; + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + + if(MainRegistry.polaroidID == 11) { + list.add("A weapon that came from the stars."); + list.add("It screams for murder."); + } else if(MainRegistry.polaroidID == 18) { + list.add("One could turn the gun into a bomb"); + list.add("by overloading the capacitors..."); + } else { + list.add("Stay away from me compootur!"); + } + list.add(""); + list.add("Projectiles explode on impact."); + list.add("Sneak while holding the right mouse button"); + list.add("to charge additional energy."); + list.add("The more energy is stored, the less accurate"); + list.add("the beams become."); + list.add("Only up to ten charges may be stored."); + } + + @Override + public Multimap getItemAttributeModifiers() { + Multimap multimap = super.getItemAttributeModifiers(); + multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), + new AttributeModifier(field_111210_e, "Weapon modifier", 3.5, 0)); + return multimap; + } + + private static int getAnim(ItemStack stack) { + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + return 0; + } + + return stack.stackTagCompound.getInteger("animation"); + + } + + private static void setAnim(ItemStack stack, int i) { + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("animation", i); + + } + + private static int getPower(ItemStack stack) { + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + return 0; + } + + return stack.stackTagCompound.getInteger("energy"); + + } + + private static void setPower(ItemStack stack, int i) { + if (stack.stackTagCompound == null) { + stack.stackTagCompound = new NBTTagCompound(); + } + + stack.stackTagCompound.setInteger("energy", i); + + } + + public static float getRotationFromAnim(ItemStack stack) { + float rad = 0.0174533F; + rad *= 7.5F; + int i = getAnim(stack); + + if (i < 10) + return 0; + i -= 10; + + if (i < 6) + return rad * i; + if (i > 14) + return rad * (5 - (i - 15)); + return rad * 5; + } + + public static float getOffsetFromAnim(ItemStack stack) { + float i = getAnim(stack); + + if (i < 10) + return 0; + i -= 10; + + if (i < 10) + return i / 10; + else + return 2 - (i / 10); + } + + public static float getTransFromAnim(ItemStack stack) { + float i = getAnim(stack); + + if (i < 10) + return 0; + i -= 10; + + if (i > 4 && i < 10) + return (i - 5) * 0.05F; + + if (i > 9 && i < 15) + return (10 * 0.05F) - ((i - 5) * 0.05F); + + return 0; + } + + @Override + public EnumRarity getRarity(ItemStack p_77613_1_) { + + return EnumRarity.uncommon; + } +} diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 9c63f42c3..f9e59f788 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (6_24-VT-X04)"; + public static final String VERSION = "1.0.27 BETA (oof)"; //HBM's Beta Naming Convention: //V T (X-Y-Z) //V -> next release version diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 54ffad5b0..957d79d78 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -176,6 +176,7 @@ public class ClientProxy extends ServerProxy MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_lever_action_dark, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.gun_bolt_action_green, new ItemRenderGunAnim()); + MinecraftForgeClient.registerItemRenderer(ModItems.gun_b92, new ItemRenderGunAnim()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool()); MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool()); @@ -204,6 +205,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityLaserBeam.class, new RenderBeam2()); RenderingRegistry.registerEntityRenderingHandler(EntityMinerBeam.class, new RenderBeam3()); RenderingRegistry.registerEntityRenderingHandler(EntitySparkBeam.class, new RenderBeam4()); + RenderingRegistry.registerEntityRenderingHandler(EntityExplosiveBeam.class, new RenderBeam5()); RenderingRegistry.registerEntityRenderingHandler(EntityLN2.class, new RenderLN2(ModItems.energy_ball)); RenderingRegistry.registerEntityRenderingHandler(EntityLaser.class, new RenderLaser()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index ee380675e..925fea253 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -118,6 +118,7 @@ import com.hbm.entity.projectile.EntityBullet; import com.hbm.entity.projectile.EntityChopperMine; import com.hbm.entity.projectile.EntityCombineBall; import com.hbm.entity.projectile.EntityDischarge; +import com.hbm.entity.projectile.EntityExplosiveBeam; import com.hbm.entity.projectile.EntityFire; import com.hbm.entity.projectile.EntityLN2; import com.hbm.entity.projectile.EntityLaser; @@ -651,6 +652,7 @@ public class MainRegistry EntityRegistry.registerModEntity(EntityGrenadeGascan.class, "entity_grenade_gascan", 88, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosionMK4.class, "entity_nuke_mk4", 89, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityCloudFleijaRainbow.class, "entity_cloud_rainbow", 90, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityExplosiveBeam.class, "entity_beam_bomb", 91, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityHunterChopper.class, "entity_mob_hunter_chopper", EntityRegistry.findGlobalUniqueEntityId(), 0x000020, 0x2D2D72); diff --git a/com/hbm/render/entity/RenderBeam5.java b/com/hbm/render/entity/RenderBeam5.java new file mode 100644 index 000000000..b70bc6c19 --- /dev/null +++ b/com/hbm/render/entity/RenderBeam5.java @@ -0,0 +1,82 @@ +package com.hbm.render.entity; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderBeam5 extends Render { + + Random rand = new Random(); + + @Override + public void doRender(Entity rocket, double x, double y, double z, float p_76986_8_, float p_76986_9_) { + //float radius = 0.12F; + //float radius = 0.06F; + float radius = 0.175F; + int distance = 2; + Tessellator tessellator = Tessellator.instance; + + GL11.glPushMatrix(); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); + GL11.glTranslatef((float) x, (float) y, (float) z); + + GL11.glRotatef(rocket.rotationYaw, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-rocket.rotationPitch, 1.0F, 0.0F, 0.0F); + + boolean red = true; + boolean green = false; + boolean blue = false; + + for (float o = 0; o <= radius; o += radius / 8) { + float color = 1f - (o * 8.333f); + if (color < 0) + color = 0; + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 + o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 + o, 0); + tessellator.addVertex(0 + o, 0 + o, 0 + distance); + tessellator.addVertex(0 + o, 0 - o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 - o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 - o, 0); + tessellator.addVertex(0 + o, 0 - o, 0 + distance); + tessellator.addVertex(0 - o, 0 - o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 - o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 - o, 0); + tessellator.addVertex(0 - o, 0 - o, 0 + distance); + tessellator.addVertex(0 - o, 0 + o, 0 + distance); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setColorRGBA_F(red ? 1 : color, green ? 1 : color, blue ? 1 : color, 1f); + tessellator.addVertex(0 + o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 + o, 0); + tessellator.addVertex(0 - o, 0 + o, 0 + distance); + tessellator.addVertex(0 + o, 0 + o, 0 + distance); + tessellator.draw(); + } + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return new ResourceLocation(RefStrings.MODID + ":textures/models/PlasmaBeam.png"); + } +} diff --git a/com/hbm/render/item/ItemRenderGunAnim.java b/com/hbm/render/item/ItemRenderGunAnim.java index d52407e44..6ed3212de 100644 --- a/com/hbm/render/item/ItemRenderGunAnim.java +++ b/com/hbm/render/item/ItemRenderGunAnim.java @@ -3,9 +3,11 @@ package com.hbm.render.item; import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; +import com.hbm.items.weapon.GunB92; import com.hbm.items.weapon.GunBoltAction; import com.hbm.items.weapon.GunLeverAction; import com.hbm.lib.RefStrings; +import com.hbm.render.model.ModelB92; import com.hbm.render.model.ModelBoltAction; import com.hbm.render.model.ModelDash; import com.hbm.render.model.ModelDefabricator; @@ -31,10 +33,12 @@ public class ItemRenderGunAnim implements IItemRenderer { protected ModelLeverAction leveraction; protected ModelBoltAction boltaction; + protected ModelB92 b92; public ItemRenderGunAnim() { leveraction = new ModelLeverAction(); boltaction = new ModelBoltAction(); + b92 = new ModelB92(); } @Override @@ -69,6 +73,8 @@ public class ItemRenderGunAnim implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverActionDark.png")); if(item.getItem() == ModItems.gun_bolt_action_green) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionGreen.png")); + if(item.getItem() == ModItems.gun_b92) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB92Dark.png")); GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); GL11.glTranslatef(-0.5F, 0.0F, -0.2F); @@ -86,10 +92,18 @@ public class ItemRenderGunAnim implements IItemRenderer { GL11.glTranslatef(GunBoltAction.getOffsetFromAnim(item) * -1.75F, 0.0F, 0.0F); } + if(item.getItem() == ModItems.gun_b92 && GunB92.getRotationFromAnim(item) > 0) { + float off = GunB92.getRotationFromAnim(item) * 2; + GL11.glRotatef(GunB92.getRotationFromAnim(item) * -90, 0.0F, 0.0F, 1.0F); + GL11.glTranslatef(off * -0.5F, off * -0.5F, 0.0F); + } + if(item.getItem() == ModItems.gun_lever_action || item.getItem() == ModItems.gun_lever_action_dark) leveraction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverAction.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green) boltaction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunBoltAction.getLevRotationFromAnim(item), GunBoltAction.getTransFromAnim(item)); + if(item.getItem() == ModItems.gun_b92) + b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); GL11.glPopMatrix(); break; @@ -105,6 +119,8 @@ public class ItemRenderGunAnim implements IItemRenderer { Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelLeverActionDark.png")); if(item.getItem() == ModItems.gun_bolt_action_green) Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelBoltActionGreen.png")); + if(item.getItem() == ModItems.gun_b92) + Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelB92Dark.png")); GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); @@ -118,6 +134,8 @@ public class ItemRenderGunAnim implements IItemRenderer { leveraction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunLeverAction.getRotationFromAnim(item)); if(item.getItem() == ModItems.gun_bolt_action || item.getItem() == ModItems.gun_bolt_action_green) boltaction.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunBoltAction.getLevRotationFromAnim(item), GunBoltAction.getTransFromAnim(item)); + if(item.getItem() == ModItems.gun_b92) + b92.renderAnim((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F, GunB92.getTransFromAnim(item)); GL11.glPopMatrix(); default: break; } diff --git a/com/hbm/render/model/ModelB92.java b/com/hbm/render/model/ModelB92.java new file mode 100644 index 000000000..4fae59313 --- /dev/null +++ b/com/hbm/render/model/ModelB92.java @@ -0,0 +1,216 @@ +// Date: 05.02.2018 14:57:42 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelB92 extends ModelBase { + // fields + ModelRenderer Muzzle1; + ModelRenderer Barrel1; + ModelRenderer Barrel2; + ModelRenderer Grip; + ModelRenderer Front1; + ModelRenderer Front2; + ModelRenderer Body; + ModelRenderer Top; + ModelRenderer GripBottom; + ModelRenderer Handle; + ModelRenderer HandleBack; + ModelRenderer Frame1; + ModelRenderer Frame2; + ModelRenderer Frame3; + ModelRenderer Trigger; + ModelRenderer BackPlate1; + ModelRenderer Back; + ModelRenderer BackPlate2; + ModelRenderer Pump1; + ModelRenderer Pump2; + ModelRenderer BodyPlate; + + public ModelB92() { + textureWidth = 64; + textureHeight = 64; + + Muzzle1 = new ModelRenderer(this, 22, 36); + Muzzle1.addBox(0F, 0F, 0F, 2, 3, 2); + Muzzle1.setRotationPoint(-24F, 0.5F, -1F); + Muzzle1.setTextureSize(64, 64); + Muzzle1.mirror = true; + setRotation(Muzzle1, 0F, 0F, 0F); + Barrel1 = new ModelRenderer(this, 0, 0); + Barrel1.addBox(0F, 0F, 0F, 24, 2, 3); + Barrel1.setRotationPoint(-24F, 1F, -1.5F); + Barrel1.setTextureSize(64, 64); + Barrel1.mirror = true; + setRotation(Barrel1, 0F, 0F, 0F); + Barrel2 = new ModelRenderer(this, 0, 5); + Barrel2.addBox(0F, 0F, 0F, 22, 1, 2); + Barrel2.setRotationPoint(-22F, 0.5F, -1F); + Barrel2.setTextureSize(64, 64); + Barrel2.mirror = true; + setRotation(Barrel2, 0F, 0F, 0F); + Grip = new ModelRenderer(this, 0, 8); + Grip.addBox(0F, 0F, 0F, 20, 3, 4); + Grip.setRotationPoint(-20F, 3F, -2F); + Grip.setTextureSize(64, 64); + Grip.mirror = true; + setRotation(Grip, 0F, 0F, 0F); + Front1 = new ModelRenderer(this, 10, 36); + Front1.addBox(0F, 0F, 0F, 2, 4, 4); + Front1.setRotationPoint(-22F, 0.5F, -2F); + Front1.setTextureSize(64, 64); + Front1.mirror = true; + setRotation(Front1, 0F, 0F, 0F); + Front2 = new ModelRenderer(this, 0, 36); + Front2.addBox(0F, 0F, 0F, 2, 6, 3); + Front2.setRotationPoint(-22F, 0F, -1.5F); + Front2.setTextureSize(64, 64); + Front2.mirror = true; + setRotation(Front2, 0F, 0F, 0F); + Body = new ModelRenderer(this, 0, 15); + Body.addBox(0F, 0F, 0F, 15, 7, 4); + Body.setRotationPoint(0F, 0.5F, -2F); + Body.setTextureSize(64, 64); + Body.mirror = true; + setRotation(Body, 0F, 0F, 0F); + Top = new ModelRenderer(this, 28, 60); + Top.addBox(0F, 0F, 0F, 15, 1, 3); + Top.setRotationPoint(0F, 0F, -1.5F); + Top.setTextureSize(64, 64); + Top.mirror = true; + setRotation(Top, 0F, 0F, 0F); + GripBottom = new ModelRenderer(this, 24, 43); + GripBottom.addBox(0F, 0F, 0F, 18, 1, 2); + GripBottom.setRotationPoint(-18F, 5.5F, -1F); + GripBottom.setTextureSize(64, 64); + GripBottom.mirror = true; + setRotation(GripBottom, 0F, 0F, 0F); + Handle = new ModelRenderer(this, 0, 45); + Handle.addBox(0F, 0F, 0F, 6, 15, 4); + Handle.setRotationPoint(6F, 7F, -2F); + Handle.setTextureSize(64, 64); + Handle.mirror = true; + setRotation(Handle, 0F, 0F, -0.2268928F); + HandleBack = new ModelRenderer(this, 20, 46); + HandleBack.addBox(5.5F, 0F, 0F, 1, 15, 3); + HandleBack.setRotationPoint(6F, 7F, -1.5F); + HandleBack.setTextureSize(64, 64); + HandleBack.mirror = true; + setRotation(HandleBack, 0F, 0F, -0.2268928F); + Frame1 = new ModelRenderer(this, 28, 57); + Frame1.addBox(0F, 0F, 0F, 7, 1, 2); + Frame1.setRotationPoint(0.5F, 11F, -1F); + Frame1.setTextureSize(64, 64); + Frame1.mirror = true; + setRotation(Frame1, 0F, 0F, 0F); + Frame2 = new ModelRenderer(this, 28, 51); + Frame2.addBox(0F, 0F, 0F, 2, 4, 2); + Frame2.setRotationPoint(-2F, 6.5F, -1F); + Frame2.setTextureSize(64, 64); + Frame2.mirror = true; + setRotation(Frame2, 0F, 0F, 0F); + Frame3 = new ModelRenderer(this, 46, 57); + Frame3.addBox(0F, -1F, 0F, 3, 1, 2); + Frame3.setRotationPoint(-2F, 10.5F, -1F); + Frame3.setTextureSize(64, 64); + Frame3.mirror = true; + setRotation(Frame3, 0F, 0F, 0.5235988F); + Trigger = new ModelRenderer(this, 36, 53); + Trigger.addBox(0F, 0F, 0F, 2, 3, 1); + Trigger.setRotationPoint(4F, 7F, -0.5F); + Trigger.setTextureSize(64, 64); + Trigger.mirror = true; + setRotation(Trigger, 0F, 0F, 0.1919862F); + BackPlate1 = new ModelRenderer(this, 56, 53); + BackPlate1.addBox(-1F, 0F, 0F, 1, 4, 3); + BackPlate1.setRotationPoint(15F, 0F, -1.5F); + BackPlate1.setTextureSize(64, 64); + BackPlate1.mirror = true; + setRotation(BackPlate1, 0F, 0F, -0.5235988F); + Back = new ModelRenderer(this, 42, 49); + Back.addBox(0F, 0F, 0F, 2, 4, 4); + Back.setRotationPoint(15F, 3.5F, -2F); + Back.setTextureSize(64, 64); + Back.mirror = true; + setRotation(Back, 0F, 0F, 0F); + BackPlate2 = new ModelRenderer(this, 48, 5); + BackPlate2.addBox(-2F, 0F, 0F, 2, 4, 4); + BackPlate2.setRotationPoint(15F, 0.5F, -2F); + BackPlate2.setTextureSize(64, 64); + BackPlate2.mirror = true; + setRotation(BackPlate2, 0F, 0F, -0.4886922F); + Pump1 = new ModelRenderer(this, 46, 29); + Pump1.addBox(0F, 0F, 0F, 7, 2, 2); + Pump1.setRotationPoint(10F, 1F, -1F); + Pump1.setTextureSize(64, 64); + Pump1.mirror = true; + setRotation(Pump1, 0F, 0F, 0F); + Pump2 = new ModelRenderer(this, 44, 33); + Pump2.addBox(0F, 0F, 0F, 3, 3, 7); + Pump2.setRotationPoint(17F, 0.5F, -3.5F); + Pump2.setTextureSize(64, 64); + Pump2.mirror = true; + setRotation(Pump2, 0F, 0F, 0F); + BodyPlate = new ModelRenderer(this, 0, 26); + BodyPlate.addBox(0F, 0F, 0F, 14, 5, 5); + BodyPlate.setRotationPoint(1.5F, 2F, -2.5F); + BodyPlate.setTextureSize(64, 64); + BodyPlate.mirror = true; + setRotation(BodyPlate, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Muzzle1.render(f5); + Barrel1.render(f5); + Barrel2.render(f5); + Grip.render(f5); + Front1.render(f5); + Front2.render(f5); + Body.render(f5); + Top.render(f5); + GripBottom.render(f5); + Handle.render(f5); + HandleBack.render(f5); + Frame1.render(f5); + Frame2.render(f5); + Frame3.render(f5); + Trigger.render(f5); + BackPlate1.render(f5); + Back.render(f5); + BackPlate2.render(f5); + Pump1.render(f5); + Pump2.render(f5); + BodyPlate.render(f5); + } + + public void renderAnim(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, float tran) { + + Pump1.offsetX += tran; + Pump2.offsetX += tran; + + render(entity, f, f1, f2, f3, f4, f5); + + Pump1.offsetX -= tran; + Pump2.offsetX -= tran; + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +}