From fc5d675586f5aaa4e8c77842531317d83b17f548 Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 27 Jan 2022 09:56:43 +0100 Subject: [PATCH] merged pheo's stinger upgrade --- .../entity/projectile/EntityRocketHoming.java | 63 +++- .../hbm/handler/BulletConfigSyncingUtil.java | 12 + .../guncfg/GunRocketHomingFactory.java | 272 ++++++++++++++++++ src/main/java/com/hbm/items/ModItems.java | 20 +- .../java/com/hbm/items/weapon/GunStinger.java | 166 ----------- .../java/com/hbm/main/ResourceManager.java | 3 + .../render/item/weapon/ItemRenderStinger.java | 82 +++--- src/main/resources/assets/hbm/lang/de_DE.lang | 6 +- src/main/resources/assets/hbm/lang/en_US.lang | 7 +- .../hbm/textures/items/gun_skystinger.png | Bin 372 -> 324 bytes .../assets/hbm/textures/items/gun_stinger.png | Bin 370 -> 315 bytes .../textures/models/weapons/sky_stinger.png | Bin 0 -> 1550 bytes .../hbm/textures/models/weapons/stinger.png | Bin 0 -> 1356 bytes 13 files changed, 412 insertions(+), 219 deletions(-) create mode 100644 src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java delete mode 100644 src/main/java/com/hbm/items/weapon/GunStinger.java create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/sky_stinger.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/stinger.png diff --git a/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java b/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java index ad8e81171..b66d19177 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRocketHoming.java @@ -9,8 +9,11 @@ import java.util.Map; import com.hbm.entity.particle.EntityTSmokeFX; import com.hbm.explosion.ExplosionLarge; +import com.hbm.explosion.ExplosionNukeSmall; +import com.hbm.handler.radiation.ChunkRadiationManager; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.main.ModEventHandler; import net.minecraft.block.Block; import net.minecraft.block.material.Material; @@ -19,6 +22,7 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IProjectile; import net.minecraft.entity.monster.EntityEnderman; +import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; @@ -47,7 +51,17 @@ public class EntityRocketHoming extends Entity implements IProjectile private int ticksInAir; private double damage = 2.0D; private int knockbackStrength; + private float explosionStrength; private static final String __OBFID = "CL_00001715"; + + // specifies the type of stinger rocket that was fired + /* 0 = Normal + * 1 = HE + * 2 = Incendiary + * 4 = Nuclear + * 42 = bone-seeking + */ + public int type; public EntityRocketHoming(World p_i1753_1_) @@ -66,11 +80,12 @@ public class EntityRocketHoming extends Entity implements IProjectile this.yOffset = 0.0F; } - public EntityRocketHoming(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_) + public EntityRocketHoming(World p_i1755_1_, EntityLivingBase p_i1755_2_, EntityLivingBase p_i1755_3_, float p_i1755_4_, float p_i1755_5_, int rocketType) { super(p_i1755_1_); this.renderDistanceWeight = 10.0D; this.shootingEntity = p_i1755_2_; + this.type = rocketType; if (p_i1755_2_ instanceof EntityPlayer) { @@ -96,11 +111,12 @@ public class EntityRocketHoming extends Entity implements IProjectile } } - public EntityRocketHoming(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_) + public EntityRocketHoming(World p_i1756_1_, EntityLivingBase p_i1756_2_, float p_i1756_3_, float strength, int type) { super(p_i1756_1_); this.renderDistanceWeight = 10.0D; this.shootingEntity = p_i1756_2_; + this.type = type; if (p_i1756_2_ instanceof EntityPlayer) { @@ -118,6 +134,7 @@ public class EntityRocketHoming extends Entity implements IProjectile 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); + this.explosionStrength = strength; } public EntityRocketHoming(World world, int x, int y, int z, double mx, double my, double mz, double grav) { @@ -236,11 +253,9 @@ public class EntityRocketHoming extends Entity implements IProjectile if (this.inGround) { /*int j = this.worldObj.getBlockMetadata(this.field_145791_d, this.field_145792_e, this.field_145789_f); - if (block == this.field_145790_g && j == this.inData) { ++this.ticksInGround; - if (this.ticksInGround == 1200) { this.setDead(); @@ -260,7 +275,7 @@ public class EntityRocketHoming extends Entity implements IProjectile if (!this.worldObj.isRemote) { //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.5F, true); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + Explode(this.type, this.explosionStrength); /*EntityNukeExplosionAdvanced explosion = new EntityNukeExplosionAdvanced(this.worldObj); explosion.speed = 25; explosion.coefficient = 5.0F; @@ -288,7 +303,8 @@ public class EntityRocketHoming extends Entity implements IProjectile 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; + System.out.println(list); + double d0 = 0.0D; int i; float f1; @@ -314,6 +330,7 @@ public class EntityRocketHoming extends Entity implements IProjectile } } } + if (entity != null) { @@ -394,7 +411,7 @@ public class EntityRocketHoming extends Entity implements IProjectile if (!this.worldObj.isRemote) { //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.5F, true); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + Explode(this.type, this.explosionStrength); } this.setDead(); } @@ -404,7 +421,7 @@ public class EntityRocketHoming extends Entity implements IProjectile if (!this.worldObj.isRemote) { //this.worldObj.createExplosion(this, this.posX, this.posY, this.posZ, 2.5F, true); - ExplosionLarge.explode(worldObj, posX, posY, posZ, 5, true, false, true); + Explode(this.type, this.explosionStrength); } this.setDead(); } @@ -459,12 +476,10 @@ public class EntityRocketHoming extends Entity implements IProjectile { 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; @@ -508,7 +523,13 @@ public class EntityRocketHoming extends Entity implements IProjectile boolean hasBeeped = false; private boolean steer() { - List all = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - homingRadius, posY - homingRadius, posZ - homingRadius, posX + homingRadius, posY + homingRadius, posZ + homingRadius)); + List all = null; + if(this.type == 42) { + all = worldObj.getEntitiesWithinAABB(EntitySkeleton.class, AxisAlignedBB.getBoundingBox(posX - homingRadius, posY - homingRadius, posZ - homingRadius, posX + homingRadius, posY + homingRadius, posZ + homingRadius)); + } else { + all = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox(posX - homingRadius, posY - homingRadius, posZ - homingRadius, posX + homingRadius, posY + homingRadius, posZ + homingRadius)); + } + HashMap targetable = new HashMap(); Vec3 path = Vec3.createVectorHelper(motionX, motionY, motionZ); double startSpeed = path.lengthVector(); @@ -598,6 +619,8 @@ public class EntityRocketHoming extends Entity implements IProjectile 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); + p_70014_1_.setFloat("strength", (byte)this.explosionStrength); + p_70014_1_.setByte("type", (byte)this.type); } /** @@ -614,6 +637,8 @@ public class EntityRocketHoming extends Entity implements IProjectile this.inData = p_70037_1_.getByte("inData") & 255; this.arrowShake = p_70037_1_.getByte("shake") & 255; this.inGround = p_70037_1_.getByte("inGround") == 1; + this.explosionStrength = p_70037_1_.getFloat("strength"); + this.type = p_70037_1_.getByte("type"); if (p_70037_1_.hasKey("damage", 99)) { @@ -640,7 +665,7 @@ public class EntityRocketHoming extends Entity implements IProjectile { boolean flag = this.canBePickedUp == 1 || this.canBePickedUp == 2 && p_70100_1_.capabilities.isCreativeMode; - if (this.canBePickedUp == 1 && !p_70100_1_.inventory.addItemStackToInventory(new ItemStack(ModItems.gun_stinger_ammo, 1))) + if (this.canBePickedUp == 1 && !p_70100_1_.inventory.addItemStackToInventory(new ItemStack(ModItems.ammo_stinger_rocket, 1))) { flag = false; } @@ -722,4 +747,18 @@ public class EntityRocketHoming extends Entity implements IProjectile byte b0 = this.dataWatcher.getWatchableObjectByte(16); return (b0 & 1) != 0; } + + public void Explode(int type, float strength) { + switch(type) { + case 42: ChunkRadiationManager.proxy.incrementRad(worldObj, (int)posX, (int)posY, (int)posZ, 2000); + case 0: ExplosionLarge.explode(worldObj, posX, posY, posZ, strength, true, false, true); break; + case 1: ExplosionLarge.explode(worldObj, posX, posY, posZ, strength * 2, true, false, true); break; + case 2: ExplosionLarge.explodeFire(worldObj, posX, posY, posZ, strength, true, false, false); break; + case 4: + ExplosionLarge.explode(worldObj, posX, posY, posZ, strength * 3, false, false, true); + ExplosionNukeSmall.explode(worldObj, posX, posY, posZ, (int)strength * 5); + break; + default: break; + } + } } \ No newline at end of file diff --git a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java index 4eeb754f5..a4e6294a1 100644 --- a/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java +++ b/src/main/java/com/hbm/handler/BulletConfigSyncingUtil.java @@ -189,6 +189,12 @@ public class BulletConfigSyncingUtil { public static int ROCKET_CHAINSAW_LASER = i++; public static int ROCKET_TOXIC_LASER = i++; public static int ROCKET_PHOSPHORUS_LASER = i++; + + public static int ROCKET_STINGER = i++; + public static int ROCKET_STINGER_HE = i++; + public static int ROCKET_STINGER_INCENDIARY = i++; + public static int ROCKET_STINGER_NUCLEAR = i++; + public static int ROCKET_STINGER_BONES = i++; public static int SHELL_NORMAL = i++; public static int SHELL_EXPLOSIVE = i++; @@ -284,6 +290,12 @@ public class BulletConfigSyncingUtil { configSet.put(ROCKET_TOXIC, GunRocketFactory.getRocketChlorineConfig()); configSet.put(ROCKET_CANISTER, GunRocketFactory.getRocketCanisterConfig()); configSet.put(ROCKET_ERROR, GunRocketFactory.getRocketErrorConfig()); + + configSet.put(ROCKET_STINGER, GunRocketHomingFactory.getRocketStingerConfig()); + configSet.put(ROCKET_STINGER_HE, GunRocketHomingFactory.getRocketStingerHEConfig()); + configSet.put(ROCKET_STINGER_INCENDIARY, GunRocketHomingFactory.getRocketStingerIncendiaryConfig()); + configSet.put(ROCKET_STINGER_NUCLEAR, GunRocketHomingFactory.getRocketStingerNuclearConfig()); + configSet.put(ROCKET_STINGER_BONES, GunRocketHomingFactory.getRocketStingerBonesConfig()); configSet.put(GRENADE_NORMAL, GunGrenadeFactory.getGrenadeConfig()); configSet.put(GRENADE_HE, GunGrenadeFactory.getGrenadeHEConfig()); diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java new file mode 100644 index 000000000..4a4b1f43a --- /dev/null +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketHomingFactory.java @@ -0,0 +1,272 @@ +package com.hbm.handler.guncfg; + +import java.util.ArrayList; + +import com.hbm.entity.projectile.EntityBulletBase; +import com.hbm.entity.projectile.EntityRocket; +import com.hbm.entity.projectile.EntityRocketHoming; +import com.hbm.handler.BulletConfigSyncingUtil; +import com.hbm.handler.BulletConfiguration; +import com.hbm.handler.GunConfiguration; +import com.hbm.interfaces.IBulletUpdateBehavior; +import com.hbm.items.ModItems; +import com.hbm.render.util.RenderScreenOverlay.Crosshair; + +import net.minecraft.entity.player.EntityPlayer; + +public class GunRocketHomingFactory { + + public static GunConfiguration getStingerConfig() { + + GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 20; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 1; + config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_KRUCK; + config.firingSound = "hbm:weapon.rpgShoot"; + config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; + config.reloadSoundEnd = false; + + config.name = "FIM-92 Stinger man-portable air-defense system"; + config.manufacturer = "Raytheon Missile Systems"; + config.comment.add("Woosh, beep-beep-beep!"); + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_HE); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_INCENDIARY); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_NUCLEAR); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_BONES); + config.durability = 250; + + return config; + } + + public static GunConfiguration getSkyStingerConfig() { +GunConfiguration config = new GunConfiguration(); + + config.rateOfFire = 20; + config.roundsPerCycle = 1; + config.gunMode = GunConfiguration.MODE_NORMAL; + config.firingMode = GunConfiguration.FIRE_MANUAL; + config.reloadDuration = 20; + config.firingDuration = 0; + config.ammoCap = 1; + config.reloadType = GunConfiguration.RELOAD_SINGLE; + config.allowsInfinity = true; + config.crosshair = Crosshair.L_KRUCK; + config.firingSound = "hbm:weapon.rpgShoot"; + config.reloadSound = GunConfiguration.RSOUND_LAUNCHER; + config.reloadSoundEnd = false; + + config.name = "The One Sky Stinger"; + config.manufacturer = "Equestria Missile Systems"; + config.comment.add("Oh, I get it, because of the...nyeees!"); + config.comment.add("It all makes sense now!"); + config.comment.add(""); + config.comment.add("Rockets travel faster, are Three times stronger"); + config.comment.add("and fires a second rocket for free"); + config.comment.add(""); + config.comment.add("[LEGENDARY WEAPON]"); + + config.config = new ArrayList(); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_HE); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_INCENDIARY); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_NUCLEAR); + config.config.add(BulletConfigSyncingUtil.ROCKET_STINGER_BONES); + config.durability = 1000; + + return config; + } + + public static BulletConfiguration getRocketStingerConfig() { + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_stinger_rocket; + bullet.dmgMin = 20; + bullet.dmgMax = 25; + bullet.explosive = 4F; + bullet.trail = 0; + + bullet.bUpdate = new IBulletUpdateBehavior() { + + @Override + public void behaveUpdate(EntityBulletBase bullet) { + + if(!bullet.worldObj.isRemote) { + + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 0); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 0); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 0); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); + bullet.setDead(); + + } + } + }; + return bullet; + } + + public static BulletConfiguration getRocketStingerHEConfig() { + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_stinger_rocket_he; + bullet.dmgMin = 30; + bullet.dmgMax = 35; + bullet.explosive = 8F; + bullet.trail = 0; + bullet.wear = 15; + + bullet.bUpdate = new IBulletUpdateBehavior() { + + @Override + public void behaveUpdate(EntityBulletBase bullet) { + + if(!bullet.worldObj.isRemote) { + + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 1); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 1); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 1); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); + bullet.setDead(); + + } + } + }; + return bullet; + } + + public static BulletConfiguration getRocketStingerIncendiaryConfig() { + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_stinger_rocket_incendiary; + bullet.dmgMin = 15; + bullet.dmgMax = 20; + bullet.explosive = 4F; + bullet.trail = 0; + bullet.wear = 12; + + bullet.bUpdate = new IBulletUpdateBehavior() { + + @Override + public void behaveUpdate(EntityBulletBase bullet) { + + if(!bullet.worldObj.isRemote) { + + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 2); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 2); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 2); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); + bullet.setDead(); + + } + } + }; + return bullet; + } + + public static BulletConfiguration getRocketStingerNuclearConfig() { + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_stinger_rocket_nuclear; + bullet.dmgMin = 50; + bullet.dmgMax = 55; + bullet.explosive = 15F; + bullet.trail = 0; + bullet.wear = 30; + + bullet.bUpdate = new IBulletUpdateBehavior() { + + @Override + public void behaveUpdate(EntityBulletBase bullet) { + + if(!bullet.worldObj.isRemote) { + + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 4); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 4); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); + bullet.setDead(); + + } + } + }; + return bullet; + } + + public static BulletConfiguration getRocketStingerBonesConfig() { + BulletConfiguration bullet = BulletConfigFactory.standardRocketConfig(); + + bullet.ammo = ModItems.ammo_stinger_rocket_bones; + bullet.dmgMin = 20; + bullet.dmgMax = 25; + bullet.explosive = 8F; + bullet.trail = 0; + + bullet.bUpdate = new IBulletUpdateBehavior() { + + @Override + public void behaveUpdate(EntityBulletBase bullet) { + + if(!bullet.worldObj.isRemote) { + + EntityPlayer player = bullet.worldObj.getClosestPlayerToEntity(bullet, -1.0D); + EntityRocketHoming rocket = new EntityRocketHoming(bullet.worldObj, player, 1.0F, 5.0F, 42); + if(player.getHeldItem().getItem() == ModItems.gun_skystinger && !player.isSneaking()) { + EntityRocketHoming rocket2 = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); + rocket = new EntityRocketHoming(bullet.worldObj, player, 1.5F, 15.0F, 42); + rocket.setIsCritical(true); + rocket2.setIsCritical(true); + bullet.worldObj.spawnEntityInWorld(rocket2); + } + rocket.homingMod = 5; + rocket.homingRadius = 25; + bullet.worldObj.spawnEntityInWorld(rocket); + bullet.setDead(); + + } + } + }; + return bullet; + } +} \ No newline at end of file diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 236f3783f..0bb743c43 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1542,6 +1542,11 @@ public class ModItems { public static Item ammo_dart; public static Item ammo_dart_nuclear; public static Item ammo_dart_nerf; + public static Item ammo_stinger_rocket; + public static Item ammo_stinger_rocket_he; + public static Item ammo_stinger_rocket_incendiary; + public static Item ammo_stinger_rocket_nuclear; + public static Item ammo_stinger_rocket_bones; public static Item gun_rpg; public static Item gun_rpg_ammo; @@ -4153,6 +4158,11 @@ public class ModItems { ammo_dart = new ItemAmmo().setUnlocalizedName("ammo_dart"); ammo_dart_nuclear = new ItemAmmo().setUnlocalizedName("ammo_dart_nuclear"); ammo_dart_nerf = new ItemAmmo().setUnlocalizedName("ammo_dart_nerf"); + ammo_stinger_rocket = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket"); + ammo_stinger_rocket_he = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_he"); + ammo_stinger_rocket_incendiary = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_incendiary"); + ammo_stinger_rocket_nuclear = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_nuclear"); + ammo_stinger_rocket_bones = new ItemAmmo().setUnlocalizedName("ammo_stinger_rocket_bones"); gun_rpg = new ItemGunBase(GunRocketFactory.getGustavConfig()).setUnlocalizedName("gun_rpg").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_rpg"); gun_karl = new ItemGunBase(GunRocketFactory.getKarlConfig()).setUnlocalizedName("gun_karl").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_karl"); @@ -4160,9 +4170,8 @@ public class ModItems { gun_quadro = new ItemGunBase(GunRocketFactory.getQuadroConfig()).setUnlocalizedName("gun_quadro").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_quadro"); gun_rpg_ammo = new Item().setUnlocalizedName("gun_rpg_ammo").setCreativeTab(null).setTextureName(RefStrings.MODID + ":gun_rpg_ammo_alt"); gun_hk69 = new ItemGunBase(GunGrenadeFactory.getHK69Config()).setUnlocalizedName("gun_hk69").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_hk69"); - gun_stinger = new GunStinger().setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); - gun_skystinger = new GunStinger().setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); - gun_stinger_ammo = new Item().setUnlocalizedName("gun_stinger_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger_ammo"); + gun_stinger = new ItemGunBase(GunRocketHomingFactory.getStingerConfig()).setUnlocalizedName("gun_stinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger"); + gun_skystinger = new ItemGunBase(GunRocketHomingFactory.getSkyStingerConfig()).setUnlocalizedName("gun_skystinger").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_skystinger"); gun_stinger_ammo = new Item().setUnlocalizedName("gun_stinger_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_stinger_ammo"); gun_revolver_ammo = new Item().setUnlocalizedName("gun_revolver_ammo").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_ammo"); gun_revolver = new ItemGunBase(Gun357MagnumFactory.getRevolverConfig()).setUnlocalizedName("gun_revolver").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver"); gun_revolver_saturnite = new ItemGunBase(Gun357MagnumFactory.getRevolverSaturniteConfig()).setUnlocalizedName("gun_revolver_saturnite").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":gun_revolver_saturnite"); @@ -7082,6 +7091,11 @@ public class ModItems { GameRegistry.registerItem(ammo_rocket_nuclear, ammo_rocket_nuclear.getUnlocalizedName()); GameRegistry.registerItem(ammo_rocket_rpc, ammo_rocket_rpc.getUnlocalizedName()); GameRegistry.registerItem(ammo_rocket_digamma, ammo_rocket_digamma.getUnlocalizedName()); + GameRegistry.registerItem(ammo_stinger_rocket, ammo_stinger_rocket.getUnlocalizedName()); + GameRegistry.registerItem(ammo_stinger_rocket_he, ammo_stinger_rocket_he.getUnlocalizedName()); + GameRegistry.registerItem(ammo_stinger_rocket_incendiary, ammo_stinger_rocket_incendiary.getUnlocalizedName()); + GameRegistry.registerItem(ammo_stinger_rocket_nuclear, ammo_stinger_rocket_nuclear.getUnlocalizedName()); + GameRegistry.registerItem(ammo_stinger_rocket_bones, ammo_stinger_rocket_bones.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade, ammo_grenade.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_he, ammo_grenade_he.getUnlocalizedName()); GameRegistry.registerItem(ammo_grenade_incendiary, ammo_grenade_incendiary.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/weapon/GunStinger.java b/src/main/java/com/hbm/items/weapon/GunStinger.java deleted file mode 100644 index 781a1ddda..000000000 --- a/src/main/java/com/hbm/items/weapon/GunStinger.java +++ /dev/null @@ -1,166 +0,0 @@ -package com.hbm.items.weapon; - -import java.util.List; - -import com.google.common.collect.Multimap; -import com.hbm.entity.projectile.EntityRocketHoming; -import com.hbm.items.ModItems; - -import net.minecraft.enchantment.Enchantment; -import net.minecraft.enchantment.EnchantmentHelper; -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.Item; -import net.minecraft.item.ItemStack; -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 GunStinger extends Item { - - public GunStinger() - { - this.maxStackSize = 1; - if(this == ModItems.gun_stinger) - this.setMaxDamage(500); - if(this == ModItems.gun_skystinger) - this.setMaxDamage(1000); - } - - @Override - public void onPlayerStoppedUsing(ItemStack p_77615_1_, World p_77615_2_, EntityPlayer p_77615_3_, int p_77615_4_) { - 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); - if (event.isCanceled()) { - return; - } - j = event.charge; - - boolean flag = p_77615_3_.capabilities.isCreativeMode - || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, p_77615_1_) > 0; - - if (flag || p_77615_3_.inventory.hasItem(ModItems.gun_stinger_ammo)) { - float f = j / 20.0F; - f = (f * f + f * 2.0F) / 3.0F; - - if (j < 25.0D) { - return; - } - - if (j > 25.0F) { - f = 25.0F; - } - - p_77615_1_.damageItem(1, p_77615_3_); - - if(this == ModItems.gun_stinger) - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.rpgShoot", 1.0F, 1.0F); - if(this == ModItems.gun_skystinger) - p_77615_2_.playSoundAtEntity(p_77615_3_, "hbm:weapon.rpgShoot", 1.0F, 0.5F); - - p_77615_3_.inventory.consumeInventoryItem(ModItems.gun_stinger_ammo); - - if (!p_77615_2_.isRemote) { - if(this == ModItems.gun_stinger) { - EntityRocketHoming entityarrow = new EntityRocketHoming(p_77615_2_, p_77615_3_, 1.0F); - if(p_77615_3_.isSneaking()) - entityarrow.homingRadius = 0; - p_77615_2_.spawnEntityInWorld(entityarrow); - } - - if(this == ModItems.gun_skystinger) { - - if(p_77615_3_.isSneaking()) { - EntityRocketHoming entityarrow = new EntityRocketHoming(p_77615_2_, p_77615_3_, 1.5F); - EntityRocketHoming entityarrow1 = new EntityRocketHoming(p_77615_2_, p_77615_3_, 1.5F); - entityarrow.homingMod = 12; - entityarrow1.homingMod = 12; - entityarrow.motionX += p_77615_2_.rand.nextGaussian() * 0.2; - entityarrow.motionY += p_77615_2_.rand.nextGaussian() * 0.2; - entityarrow.motionZ += p_77615_2_.rand.nextGaussian() * 0.2; - entityarrow1.motionX += p_77615_2_.rand.nextGaussian() * 0.2; - entityarrow1.motionY += p_77615_2_.rand.nextGaussian() * 0.2; - entityarrow1.motionZ += p_77615_2_.rand.nextGaussian() * 0.2; - entityarrow.setIsCritical(true); - entityarrow1.setIsCritical(true); - p_77615_2_.spawnEntityInWorld(entityarrow); - p_77615_2_.spawnEntityInWorld(entityarrow1); - } else { - EntityRocketHoming entityarrow = new EntityRocketHoming(p_77615_2_, p_77615_3_, 2.0F); - entityarrow.homingMod = 8; - entityarrow.homingRadius *= 50; - entityarrow.setIsCritical(true); - p_77615_2_.spawnEntityInWorld(entityarrow); - } - } - } - } - } - - @Override - public ItemStack onEaten(ItemStack p_77654_1_, World p_77654_2_, EntityPlayer p_77654_3_) { - return p_77654_1_; - } - - @Override - public int getMaxItemUseDuration(ItemStack p_77626_1_) { - return 72000; - } - - @Override - public EnumAction getItemUseAction(ItemStack p_77661_1_) { - return EnumAction.bow; - } - - @Override - public ItemStack onItemRightClick(ItemStack p_77659_1_, World p_77659_2_, EntityPlayer p_77659_3_) { - ArrowNockEvent event = new ArrowNockEvent(p_77659_3_, p_77659_1_); - MinecraftForge.EVENT_BUS.post(event); - - p_77659_3_.setItemInUse(p_77659_1_, this.getMaxItemUseDuration(p_77659_1_)); - - return p_77659_1_; - } - - @Override - public int getItemEnchantability() { - return 1; - } - - @Override - public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { - - if(this == ModItems.gun_stinger) { - list.add("Woosh, beep-beep-beep!"); - list.add(""); - list.add("Ammo: Stinger Rockets"); - list.add("Projectiles target entities."); - list.add("Projectiles explode on impact."); - list.add("Alt-fire disables homing effect."); - } - if(this == ModItems.gun_skystinger) { - list.add("Oh, I get it, because of the...nyeees!"); - list.add("It all makes sense now!"); - list.add(""); - list.add("Ammo: Stinger Rockets"); - list.add("Projectiles target entities."); - list.add("Projectiles explode on impact."); - list.add("Alt-fire fires a second rocket for free."); - list.add(""); - list.add("[LEGENDARY WEAPON]"); - } - } - - @Override - public Multimap getItemAttributeModifiers() { - Multimap multimap = super.getItemAttributeModifiers(); - multimap.put(SharedMonsterAttributes.attackDamage.getAttributeUnlocalizedName(), - new AttributeModifier(field_111210_e, "Weapon modifier", 4, 0)); - return multimap; - } -} diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 7267f245c..61d2c1dcf 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -602,6 +602,7 @@ public class ResourceManager { public static final IModelCustom ff_nightmare = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/nightmare.obj")); public static final IModelCustom fireext = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/fireext.obj")); public static final IModelCustom ar15 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/ar15.obj")); + public static final IModelCustom stinger = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/stinger.obj")); public static final IModelCustom mg42 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/mg42.obj")); public static final IModelCustom rem700 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/rem700.obj")); public static final IModelCustom cursed_revolver = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/cursed.obj")); @@ -668,6 +669,8 @@ public class ResourceManager { public static final ResourceLocation fireext_foam_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fireext_foam.png"); public static final ResourceLocation fireext_sand_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fireext_sand.png"); public static final ResourceLocation ar15_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/carbine.png"); + public static final ResourceLocation stinger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/stinger.png"); + public static final ResourceLocation sky_stinger_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/sky_stinger.png"); public static final ResourceLocation mg42_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/mg42.png"); public static final ResourceLocation rem700_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/rem700.png"); diff --git a/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java b/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java index b458e447a..a2ac27531 100644 --- a/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java +++ b/src/main/java/com/hbm/render/item/weapon/ItemRenderStinger.java @@ -4,6 +4,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; import com.hbm.render.model.ModelStinger; import net.minecraft.client.Minecraft; @@ -13,12 +14,6 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer; public class ItemRenderStinger implements IItemRenderer { - - protected ModelStinger stinger; - - public ItemRenderStinger() { - stinger = new ModelStinger(); - } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { @@ -38,39 +33,56 @@ public class ItemRenderStinger implements IItemRenderer { @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + ResourceLocation stingerTex = item.getItem() == ModItems.gun_stinger ? ResourceManager.stinger_tex : ResourceManager.sky_stinger_tex; + Minecraft.getMinecraft().renderEngine.bindTexture(stingerTex); + GL11.glPushMatrix(); + switch(type) { + case EQUIPPED_FIRST_PERSON: - GL11.glPushMatrix(); - if(item.getItem() == ModItems.gun_stinger) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelStinger.png")); - if(item.getItem() == ModItems.gun_skystinger) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelSkyStinger.png")); - GL11.glRotatef(-135.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(-0.3F, 0.0F, -0.1F); - GL11.glScalef(2.0F, 2.0F, 2.0F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - stinger.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); + + double s0 = 0.25D; + GL11.glRotated(25, 0, 0, 1); + GL11.glTranslated(-0.5, -0.7, -0.5); + GL11.glRotated(-100, 0, 1, 0); + GL11.glScaled(s0, s0, s0); + break; + case EQUIPPED: + + double scale = 0.25D; + GL11.glScaled(scale, scale, scale); + GL11.glRotatef(20F, 0.0F, 0.0F, 1.0F); + GL11.glRotatef(-170, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(-15F, 1.0F, 0.0F, 0.0F); + GL11.glTranslatef(-2F, -3F, 4.0F); + + break; + case ENTITY: - GL11.glPushMatrix(); - if(item.getItem() == ModItems.gun_stinger) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelStinger.png")); - if(item.getItem() == ModItems.gun_skystinger) - Minecraft.getMinecraft().renderEngine.bindTexture(new ResourceLocation(RefStrings.MODID +":textures/models/ModelSkyStinger.png")); - GL11.glRotatef(-200.0F, 0.0F, 0.0F, 1.0F); - GL11.glRotatef(75.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(-30.0F, 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, -0.2F, -0.5F); - GL11.glRotatef(-5.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.2F, -0.2F, 0.1F); - GL11.glScalef(1.5F, 1.5F, 1.5F); - GL11.glScalef(0.5F, 0.5F, 0.5F); - stinger.render((Entity)data[1], 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0625F); - GL11.glPopMatrix(); - default: break; + + double s1 = 0.2D; + GL11.glScaled(s1, s1, s1); + GL11.glTranslatef(0F, -2.5F, 0F); + break; + + case INVENTORY: + + GL11.glEnable(GL11.GL_LIGHTING); + + double s = 1.75D; + GL11.glTranslated(4, 11, 0); + GL11.glRotated(90, 0, 1, 0); + GL11.glRotated(135, 1, 0, 0); + GL11.glScaled(s, s, -s); + + break; + + default: break; } + ResourceManager.stinger.renderAll(); + GL11.glPopMatrix(); } -} +} \ No newline at end of file diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 81feac309..ff1f78604 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1130,7 +1130,9 @@ item.coin_radiation.name=Strahlungs-Münze item.coin_siege.name=Belagerungsmünze item.coin_ufo.name=UFO-Münze item.coin_worm.name=Balls-O-Tron-Münze -item.coke.name=Koks +item.coke.coal.name=Kohlekoks +item.coke.lignite.name=Braunkohlekoks +item.coke.petroleum.name=Petroleumkoks item.coltan_tool.name=Koltass item.combine_scrap.name=CMB Schrott item.component_emitter.name=Emitterkomponente @@ -1982,6 +1984,8 @@ item.oil_detector.bullseye=Ölvorkommen direkt untertage! item.oil_detector.detected=Ölvorkommen in der Nähe! item.oil_detector.noOil=Kein Öl gefunden. item.oil_tar.name=Ölteer +item.oil_tar.crude.name=Erdölteer +item.oil_tar.crack.name=Crackölteer item.overfuse.name=Singularitätsschraubenzieher item.oxy_mask.name=Sauerstoffmaske item.paa_boots.name=PaA-"olle Latschen" diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index fda940ac2..24832e1d5 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1274,7 +1274,9 @@ item.coin_radiation.name=Radiation Coin item.coin_siege.name=Siege Coin item.coin_ufo.name=UFO Coin item.coin_worm.name=Balls-O-Tron Coin -item.coke.name=Coke +item.coke.coal.name=Coal Coke +item.coke.lignite.name=Lignite Coke +item.coke.petroleum.name=Petroleum Coke item.coltan_tool.name=Coltass item.combine_scrap.name=CMB Scrap Metal item.component_emitter.name=Emitter Component @@ -2134,7 +2136,8 @@ item.oil_detector.desc2=Detector will only find larger deposits. item.oil_detector.bullseye=Oil deposit directly below! item.oil_detector.detected=Oil detected nearby. item.oil_detector.noOil=No oil detected. -item.oil_tar.name=Oil Tar +item.oil_tar.crude.name=Oil Tar +item.oil_tar.crack.name=Crack Oil Tar item.overfuse.name=Singularity Screwdriver item.oxy_mask.name=Oxygen Mask item.paa_boots.name=PaA "good ol' shoes" diff --git a/src/main/resources/assets/hbm/textures/items/gun_skystinger.png b/src/main/resources/assets/hbm/textures/items/gun_skystinger.png index 9c07773ef323cd4ee27d331598b0097ea8535edd..ef3ff8c9d8702480670c92242ac87485e96c6fce 100644 GIT binary patch delta 297 zcmV+^0oMNX0>lE4B!2;OQb$4nuFf3k0002}NklA1NHv5JS@VyxXBjw*jT!EmB{IC7lF2BXGyOk^#^)Ni3ogmnGw3}z$Z&yA7p$IF z!-Ob9;HL8?bo~GQ=`F**Pw&767<{@+luN({fHcFL2{Hua5`U0)F8%#W&>JW&KsJPx zPndy?hac<>f?)tt0CLGX!#akb^GysOmw*i6$a%-`+N2AoAs7-MLq0F40E=_1iT}^K zMH8<}@H(%tvGITV#V=r&;PMVm13;SV>+2yd2`c@M%R59TU0mKF+5lviAbW=-1JJ#r vn00`GWCLKaqaxRJodJ~b$T9#q>jMDl5QDOz1@d740000!ry`96hZLw`zv_yyhk{AGmLVrO3QmGVA`=><10b#vj zSZ+hYdc{~IFadnuHvk@YkBEi?#z6-iPSil-IF2;gAsU648H?4eZ4x!mVWkwuykll8 zqEW~==q$?43Y1b*TP>7QeBN9by1{z&I{79_rIJja*>X)Rw;>PGO)mM(;oX&72KN%z zWZ{4`*>X)L{Zbz3T%M2flbMVe7n)|$?-7kczTRHvW|F7@z?yR=dcEmfo`dHm?RMKp rEYOmbjZOAmZt*C diff --git a/src/main/resources/assets/hbm/textures/items/gun_stinger.png b/src/main/resources/assets/hbm/textures/items/gun_stinger.png index efa3f726e5dd90fbcf6392db0b743e4b2df52227..4e89b8215beaa4cfe359c738cfd8ca386cd5ed2a 100644 GIT binary patch delta 288 zcmV+*0pI@e0=oi`B!2;OQb$4nuFf3k0002>NklA1NHv5JS@WGY>TOfzDj)ts~6W4 zBgzoC>9$2y|9^h@#qjmjSFi!x&v=P)3D^LTW|%WUhJaiG@_){|dxr^n1H}c%hOqOn zF|e|;g1td73}6ai-T-L^xdcS_>)&QDiGPjL5DW>BA&2{pfyLK#^8N3Bse{)gc%9eS z*!X|z)6HO);PMVm13;SV>+2!WoM!SLmv@Lxy12YUv;oL2LG}(w2B3Q-K11RH>Wf=f+)&~G6n}D*zP^h*50000yExy;tsl_VU+6#h4|2In&>}jxMFru|Bt(NWc(aci2l|>$XrkS~ zXE_`=@59UY9oQsc80!4J*>32nw@U;;pg|C*leq9-5)Z)leSZZo#!xyg@c#BeuQTwP z?S}R`18#~ai5#h4iMMSuZA3T#cly|oXFV3=WqSb2Y{8^8DJv~3s=ZT+P@|)}1vfht( zbXAkJ19H?OUr=Q#RBILDtDA*PZdGU=nF=`6zyGi75ANGL>q!m(gK5+Il`T7m=R1n)p^0BEiNKe7;T97GQYAqO&| z@v)^R*roKMUMwY=ajsJa4*(df1D=Ti*-=1tAGj$4zJgO-au*56>HwG^@m#3)cX5t) zcKMzeDZAB7kB9{nEnrpY#=JW03^Rji`{h!fAAq?d=mgW$(kYB%0HDz;Hw72Oep3KI zp#6QkL$afmFQ96~L@n}jPFf8KTrl}XD)VY}s5Kv_w4@VF4j*H$xDKpyE9Tnp%WT)2 zurIk4;&VzCTBGj$A5tcp9D5cM)>NE4yu_AQ?vb+0N(wAopTy);gj<=S9-5JaSye_y zSV^9h%@Dra9wI1ZYji&nD(R?(6}e&z%8H81OZe5V6_7q*CWwq%%7@BR8t~?uFMY4> zE+Pl@K?b7++FGhRU0Hwby1F|g)S^mk67q#)pSLZDwgE5oS4=80r|x2|pTutI?^o6eg^N)5GUm`dn38-xk(d=Q1$E`cfak2T%4CvJpWHmD0#b95FU+FK2Mh z7H0n1M_lq5QByeS$1NTJz%F0W&rt*w!P$=SSxOHPt0K@|vZ~qhrqC#1&5a&zKY$Hk znVaX$BxL;7o$SrNZc4PB z{a?7zgQR%vTAO`7TkUvKXNmIMrjUf4U9`7tcTDk}d|@KOoe7e}WgT58CYNEXBdXvUPk31L+?P4<+774vJ@9_zSraef^+bb+uu=y1yE=pedMb*a}xTd)CGgS{XV&dyL$*X$y4zt)~k(RxK1e;i- zIWU$8=0L1dJpD9pt`c)#>`1cr6+KM6FOvsj(cttj%$&uxt-*EE!m9FZwabML$Pz$E zl)ui&|DE*$4Yx}Duq$1|OH6W&Gk-oiS%aH6$YA7(`F%ny(}mNQDoR_fI;LGdn9J&90cF@9kK3T8`8qnhiyI6AQIs<0Iv8P rY!NxY_^|NIO_U!qLhZB{`}j86EZ5618g*?L{yzbKGR;Roie~={T>P^Z literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/weapons/stinger.png b/src/main/resources/assets/hbm/textures/models/weapons/stinger.png new file mode 100644 index 0000000000000000000000000000000000000000..178445cb45a277624523d2d1ed9b6af7898250c4 GIT binary patch literal 1356 zcmeAS@N?(olHy`uVBq!ia0vp^tw4N~gBeKr#vDunQjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`4FY^ZTzw-GTr#Z7n>s^kyo`Lb!&NS5@-PX1Uzh`mo(QK1F`%i1$KYOT5_r!md%>2TCUTa0V+TL<$23mXGik@;M z&ojPzmYY2HY(^_~yBtAAR>p1OPzi>QH%B4@&_8-5{lgC1l7|HhLuR1iM%gZ?>m8q z`(d$;)|agbu4_9YYec-lTXZbi9Zt*1?0uxcJ<0O!`xCYH?i#UzTN8?(pAYd0XVLvs zwld)7-=<5VhTPjG`=wbbKB(Wa!lPt^#`TVfHPd|#n@-xk+0-ardS+YpkzLbHFD!Gu z69>+Xv#AD5ZljMdJQ{rxS@yxXQ#C$LCh`wn51yzQ;6ES`%m zZ$0t0n0wn^oh^au{~S7`boE8j!@I@Y7O%G7x9$Fuee+P$hZXx-zUeM7dXqBI?(4U$ z6G~#b3w4cBr8e&n@7w;$$5Q5VQzMV{-H9)Q&+9BRNjZ4Z`49KK}A0 z$|%wxqe%C~uER>k>s)VVPh7TO%TmY8iQhIKm5bHkS`q3oMX!9xf*rgnUiI8Fdtdf5 z2|Z=ixpa2=HWLlqOLnTP`q_@j`^1;JHce_ud}woe&xx8{GtY!~MLW@*}^- zP1TfxCc+lC7a!5NaW3qxGEkiL8LM`p_^wwiIzPg0w63!{e8{qv|3L122=m47NB1v; zs;3m{mt2(;JGY^rt<_j(PU1rz?(_(Y!-ud6`JHGw9=02#>!9+U*cYpS8YZyz?<`-q z`W$ye!9ftMZPWX_OMK1$`beW)uVfM@+7-w>&z*QNRNYK}&EqeJJ?8!_od)FPB-Yxq zzTEP!w`ZMIAh+(7eW#y(3f8`wH1%TWa|LeAKc$fo6>i~k7qp7U)kQ9iSYr${EM0Mp z&WRVRK6{C+3|hV@T0}ColyAd{soV56&PXr0YI({jGD;&>CunKusbvu>HvCRXkgK6e6ZJp)s^Nk_v5 zzcWp1i}s18ZgO5zvbBI$R#>}McT*d0=hSmzp2~X#wD;=1iCeNvoH z%d;7P^y9+Ae+&97{EKug9_q>5Z@WBob#%eqQx^MpC%4w!%e3IFIq@;~z@w_ax)&^S zPxU;$Jwa!Uzh`x{MV>?UMXWGtz;gCl@8G k(#yy#RF}Embo;G-#k(a_qmdKI;Vst05R%numAu6 literal 0 HcmV?d00001