From 4684058634f54dc353eaf77befa04ce2568068f1 Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 29 Oct 2024 16:49:26 +0100 Subject: [PATCH] crocket --- .../hbm/items/weapon/sedna/BulletConfig.java | 21 +++++- .../hbm/items/weapon/sedna/ItemGunBaseNT.java | 23 +----- .../weapon/sedna/factory/GunFactory.java | 5 +- .../sedna/factory/GunFactoryClient.java | 70 +++++++++++------- .../weapon/sedna/factory/XFactory40mm.java | 6 +- .../weapon/sedna/factory/XFactoryRocket.java | 39 ++++++---- .../assets/hbm/textures/items/ammo.png | Bin 13890 -> 14326 bytes .../textures/items/ammo_standard.g40_demo.png | Bin 0 -> 302 bytes ...ndard.g40.png => ammo_standard.g40_he.png} | Bin .../textures/items/ammo_standard.g40_heat.png | Bin 0 -> 340 bytes .../textures/items/ammo_standard.g40_inc.png | Bin 0 -> 336 bytes .../items/ammo_standard.g40_phosphorus.png | Bin 0 -> 372 bytes .../items/ammo_standard.rocket_demo.png | Bin 0 -> 332 bytes .../items/ammo_standard.rocket_inc.png | Bin 0 -> 329 bytes .../items/ammo_standard.rocket_phosphorus.png | Bin 0 -> 343 bytes 15 files changed, 97 insertions(+), 67 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.g40_demo.png rename src/main/resources/assets/hbm/textures/items/{ammo_standard.g40.png => ammo_standard.g40_he.png} (100%) create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.g40_heat.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.g40_inc.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.g40_phosphorus.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_demo.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_inc.png create mode 100644 src/main/resources/assets/hbm/textures/items/ammo_standard.rocket_phosphorus.png diff --git a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java index 70053a148..77a08d1fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java +++ b/src/main/java/com/hbm/items/weapon/sedna/BulletConfig.java @@ -25,11 +25,11 @@ import net.minecraft.util.Vec3; import net.minecraft.world.WorldServer; import net.minecraftforge.common.util.ForgeDirection; -public class BulletConfig { +public class BulletConfig implements Cloneable { public static List configs = new ArrayList(); - public final int id; + public int id; public ComparableStack ammo; /** How much ammo is added to a standard mag when loading one item */ @@ -76,6 +76,13 @@ public class BulletConfig { this.id = configs.size(); configs.add(this); } + + /** Required for the clone() operation to reset the ID, otherwise the ID and config entry will be the same as the original */ + public BulletConfig forceReRegister() { + this.id = configs.size(); + configs.add(this); + return this; + } public BulletConfig setItem(Item ammo) { this.ammo = new ComparableStack(ammo); return this; } public BulletConfig setItem(EnumAmmo ammo) { this.ammo = new ComparableStack(ModItems.ammo_standard, 1, ammo.ordinal()); return this; } @@ -193,4 +200,14 @@ public class BulletConfig { } } }; + + @Override + public BulletConfig clone() { + try { + BulletConfig clone = (BulletConfig) super.clone(); + clone.forceReRegister(); + return clone; + } catch(CloneNotSupportedException e) { } + return null; + } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java index f93da0840..10af203e0 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java +++ b/src/main/java/com/hbm/items/weapon/sedna/ItemGunBaseNT.java @@ -4,7 +4,6 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.function.BiConsumer; -import com.hbm.handler.CasingEjector; import com.hbm.handler.HbmKeybinds.EnumKeybind; import com.hbm.interfaces.IItemHUD; import com.hbm.items.IEquipReceiver; @@ -14,7 +13,6 @@ import com.hbm.items.weapon.sedna.mags.IMagazine; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; import com.hbm.packet.PacketDispatcher; -import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.packet.toclient.GunAnimationPacket; import com.hbm.render.anim.HbmAnimations.AnimType; import com.hbm.render.util.RenderScreenOverlay; @@ -22,7 +20,6 @@ import com.hbm.sound.AudioWrapper; import com.hbm.util.BobMathUtil; import com.hbm.util.EnumUtil; -import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; @@ -97,7 +94,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei A_SIDE, B_SIDE, LEGENDARY, - SEPCIAL, + SPECIAL, SECRET, DEBUG } @@ -128,7 +125,7 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei case A_SIDE: list.add(EnumChatFormatting.YELLOW + "Standard Arsenal"); break; case B_SIDE: list.add(EnumChatFormatting.GOLD + "B-Side"); break; case LEGENDARY: list.add(EnumChatFormatting.RED + "Legendary Weapon"); break; - case SEPCIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break; + case SPECIAL: list.add(EnumChatFormatting.AQUA + "Special Weapon"); break; case SECRET: list.add(EnumChatFormatting.DARK_RED + "SECRET"); break; case DEBUG: list.add((BobMathUtil.getBlink() ? EnumChatFormatting.YELLOW : EnumChatFormatting.GOLD) + "DEBUG"); break; } @@ -244,22 +241,6 @@ public class ItemGunBaseNT extends Item implements IKeybindReceiver, IEquipRecei if(timer <= 1) configs[i].getDecider(stack).accept(stack, ctx[i]); } } - - public static void trySpawnCasing(Entity entity, CasingEjector ejector, BulletConfig bullet, ItemStack stack) { - - if(ejector == null) return; //abort if the gun can't eject bullets at all - if(bullet == null) return; //abort if there's no valid bullet cfg - if(bullet.casing == null) return; //abort if the bullet is caseless - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "casing"); - data.setFloat("pitch", (float) Math.toRadians(entity.rotationPitch)); - data.setFloat("yaw", (float) Math.toRadians(entity.rotationYaw)); - data.setBoolean("crouched", entity.isSneaking()); - data.setString("name", bullet.casing.getName()); - data.setInteger("ej", ejector.getId()); - PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacketNT(data, entity.posX, entity.posY + entity.getEyeHeight(), entity.posZ), new TargetPoint(entity.dimension, entity.posX, entity.posY, entity.posZ, 50)); - } // GUN DRAWN // public static boolean getIsDrawn(ItemStack stack) { return getValueBool(stack, KEY_DRAWN); } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java index 705ca8add..45d0a9ab7 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactory.java @@ -73,8 +73,9 @@ public class GunFactory { R762_SP, R762_FMJ, R762_JHP, R762_AP, R762_DU, BMG50_SP, BMG50_FMJ, BMG50_JHP, BMG50_AP, BMG50_DU, G12_BP, G12_BP_MAGNUM, G12_BP_SLUG, G12, G12_SLUG, G12_FLECHETTE, G12_MAGNUM, G12_EXPLOSIVE, G12_PHOSPHORUS, G12_ANTHRAX, - G40_FLARE, G40, - ROCKET_HE, ROCKET_HEAT, + G40_FLARE, + G40_HE, G40_HEAT, G40_DEMO, G40_INC, G40_PHOSPHORUS, + ROCKET_HE, ROCKET_HEAT, ROCKET_DEMO, ROCKET_INC, ROCKET_PHOSPHORUS, FLAME_DIESEL, FLAME_GAS, FLAME_NAPALM, FLAME_BALEFIRE, M44_EQUESTRIAN, G12_EQUESTRIAN, BMG50_EQUESTRIAN } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java index f2e390e0a..cbb79bcae 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/GunFactoryClient.java @@ -13,7 +13,11 @@ import static com.hbm.items.weapon.sedna.factory.XFactory9mm.*; import static com.hbm.items.weapon.sedna.factory.XFactoryBlackPowder.*; import static com.hbm.items.weapon.sedna.factory.XFactoryRocket.*; +import java.util.function.BiConsumer; + +import com.hbm.entity.projectile.EntityBulletBaseMK4; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.BulletConfig; import com.hbm.items.weapon.sedna.ItemGunBaseNT; import com.hbm.main.ResourceManager; import com.hbm.render.item.weapon.sedna.*; @@ -57,25 +61,52 @@ public class GunFactoryClient { //PROJECTILES ammo_debug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); ammo_debug_buckshot.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + stone.setRenderer(LegoClient.RENDER_STANDARD_BULLET); flint.setRenderer(LegoClient.RENDER_STANDARD_BULLET); iron.setRenderer(LegoClient.RENDER_STANDARD_BULLET); shot.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + m357_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); m357_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); m357_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); m357_ap.setRenderer(LegoClient.RENDER_AP_BULLET); m357_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); + m44_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); m44_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); m44_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); m44_ap.setRenderer(LegoClient.RENDER_AP_BULLET); m44_express.setRenderer(LegoClient.RENDER_EXPRESS_BULLET); m44_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); + + p22_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p22_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p22_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + p22_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + p9_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); p9_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); p9_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); p9_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + + r556_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r556_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r556_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r556_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + + r762_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r762_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r762_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + r762_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + r762_du.setRenderer(LegoClient.RENDER_DU_BULLET); + + bmg50_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + bmg50_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + bmg50_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); + bmg50_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + bmg50_du.setRenderer(LegoClient.RENDER_DU_BULLET); + g12_bp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_bp_magnum.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_bp_slug.setRenderer(LegoClient.RENDER_STANDARD_BULLET); @@ -87,32 +118,17 @@ public class GunFactoryClient { g12_phosphorus.setRenderer(LegoClient.RENDER_AP_BULLET); g12_anthrax.setRenderer(LegoClient.RENDER_STANDARD_BULLET); g12_equestrian.setRenderer(LegoClient.RENDER_LEGENDARY_BULLET); - r762_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - r762_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - r762_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - r762_ap.setRenderer(LegoClient.RENDER_AP_BULLET); - r762_du.setRenderer(LegoClient.RENDER_DU_BULLET); - p22_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - p22_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - p22_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - p22_ap.setRenderer(LegoClient.RENDER_AP_BULLET); + g40_flare.setRenderer(LegoClient.RENDER_FLARE); - g40.setRenderer(LegoClient.RENDER_GRENADE); - rocket_rpzb_he.setRenderer(LegoClient.RENDER_RPZB); - rocket_rpzb_heat.setRenderer(LegoClient.RENDER_RPZB); - rocket_qd_he.setRenderer(LegoClient.RENDER_QD); - rocket_qd_heat.setRenderer(LegoClient.RENDER_QD); - rocket_ml_he.setRenderer(LegoClient.RENDER_ML); - rocket_ml_heat.setRenderer(LegoClient.RENDER_ML); - r556_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - r556_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - r556_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - r556_ap.setRenderer(LegoClient.RENDER_AP_BULLET); - bmg50_sp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - bmg50_fmj.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - bmg50_jhp.setRenderer(LegoClient.RENDER_STANDARD_BULLET); - bmg50_ap.setRenderer(LegoClient.RENDER_AP_BULLET); - bmg50_du.setRenderer(LegoClient.RENDER_DU_BULLET); + + setRendererBulk(LegoClient.RENDER_GRENADE, + g40_he); + setRendererBulk(LegoClient.RENDER_RPZB, + rocket_rpzb_he, rocket_rpzb_heat); + setRendererBulk(LegoClient.RENDER_QD, + rocket_qd_he, rocket_qd_heat); + setRendererBulk(LegoClient.RENDER_ML, + rocket_ml_he, rocket_ml_heat); //HUDS ((ItemGunBaseNT) ModItems.gun_debug) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); ((ItemGunBaseNT) ModItems.gun_pepperbox) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); @@ -148,4 +164,8 @@ public class GunFactoryClient { ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 0).hud(LegoClient.HUD_COMPONENT_DURABILITY_MIRROR, LegoClient.HUD_COMPONENT_AMMO_MIRROR); ((ItemGunBaseNT) ModItems.gun_maresleg_akimbo) .getConfig(null, 1).hud(LegoClient.HUD_COMPONENT_DURABILITY, LegoClient.HUD_COMPONENT_AMMO); } + + public static void setRendererBulk(BiConsumer renderer, BulletConfig... configs) { + for(BulletConfig config : configs) config.setRenderer(renderer); + } } diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java index 830bbf708..59b00e18b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory40mm.java @@ -29,7 +29,7 @@ import net.minecraft.util.MovingObjectPosition; public class XFactory40mm { public static BulletConfig g40_flare; - public static BulletConfig g40; + public static BulletConfig g40_he; public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); @@ -38,7 +38,7 @@ public class XFactory40mm { public static void init() { g40_flare = new BulletConfig().setItem(EnumAmmo.G40_FLARE).setLife(100).setVel(2F).setGrav(0.035D).setRenderRotations(false).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x9E1616).setScale(2F).register("G40Flare")); - g40 = new BulletConfig().setItem(EnumAmmo.G40).setLife(200).setOnImpact(LAMBDA_STANDARD_EXPLODE).setVel(2F).setGrav(0.035D).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_40MM).setScale(2, 2F, 1.5F).register("G40")); + g40_he = new BulletConfig().setItem(EnumAmmo.G40_HE).setLife(200).setOnImpact(LAMBDA_STANDARD_EXPLODE).setVel(2F).setGrav(0.035D).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_40MM).setScale(2, 2F, 1.5F).register("G40")); ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) @@ -55,7 +55,7 @@ public class XFactory40mm { .dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) .dmg(30F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) - .mag(new MagazineSingleReload(0, 4).addConfigs(g40, g40_flare)) + .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_flare)) .offset(0.75, -0.0625, -0.1875D) .setupStandardFire().recoil(Lego.LAMBDA_STANDARD_RECOIL)) .setupStandardConfiguration() diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java index bb905aeab..68eba398b 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryRocket.java @@ -31,6 +31,9 @@ import net.minecraft.util.Vec3; public class XFactoryRocket { + public static BulletConfig rocket_he; //TODO: just make this a fucking array you moron + public static BulletConfig rocket_heat; //TODO: so the amount of lines increases linearly instead of exponentially + public static BulletConfig rocket_rpzb_he; public static BulletConfig rocket_rpzb_heat; public static BulletConfig rocket_qd_he; @@ -38,16 +41,16 @@ public class XFactoryRocket { public static BulletConfig rocket_ml_he; public static BulletConfig rocket_ml_heat; + // FLYING public static Consumer LAMBDA_STANDARD_ACCELERATE = (bullet) -> { if(bullet.accel < 7) bullet.accel += 0.4D; }; public static Consumer LAMBDA_STEERING_ACCELERATE = (bullet) -> { if(bullet.accel < 4) bullet.accel += 0.4D; - if(bullet.getThrower() == null || !(bullet.getThrower() instanceof EntityPlayer)) return; + EntityPlayer player = (EntityPlayer) bullet.getThrower(); if(Vec3.createVectorHelper(bullet.posX - player.posX, bullet.posY - player.posY, bullet.posZ - player.posZ).lengthVector() > 100) return; - if(player.getHeldItem() == null || !(player.getHeldItem().getItem() instanceof ItemGunBaseNT) || !ItemGunBaseNT.getIsAiming(player.getHeldItem())) return; MovingObjectPosition mop = Library.rayTrace(player, 200, 1); @@ -58,34 +61,42 @@ public class XFactoryRocket { vec = vec.normalize(); double speed = Vec3.createVectorHelper(bullet.motionX, bullet.motionY, bullet.motionZ).lengthVector(); - bullet.motionX = vec.xCoord * speed; bullet.motionY = vec.yCoord * speed; bullet.motionZ = vec.zCoord * speed; }; + + // IMPACT public static BiConsumer LAMBDA_STANDARD_EXPLODE = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; Lego.standardExplode(bullet, mop, 5F); bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 3F, 0.25F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); }; + public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); } + public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); } + public static BulletConfig makeML(BulletConfig original) { return original.clone(); } + + //this is starting to get messy but we need to put this crap *somewhere* and fragmenting it into a billion classes with two methods each just isn't gonna help public static void init() { - rocket_rpzb_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D) + rocket_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D) .setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); - rocket_rpzb_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D) - .setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); - rocket_qd_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(400).setSelfDamageDelay(10).setVel(0F).setGrav(0D) - .setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STEERING_ACCELERATE); - rocket_qd_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(400).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D) - .setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STEERING_ACCELERATE); - rocket_ml_he = new BulletConfig().setItem(EnumAmmo.ROCKET_HE).setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D) - .setOnImpact(LAMBDA_STANDARD_EXPLODE).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); - rocket_ml_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D) + rocket_heat = new BulletConfig().setItem(EnumAmmo.ROCKET_HEAT).setLife(300).setDamage(1.5F).setSelfDamageDelay(10).setVel(0F).setGrav(0D) .setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); + + //not a great solution but it makes the entire ordeal a lot more bearable + rocket_rpzb_he = makeRPZB(rocket_he); + rocket_rpzb_heat = makeRPZB(rocket_heat); + + rocket_qd_he = makeQD(rocket_he); + rocket_qd_heat = makeQD(rocket_heat); + + rocket_ml_he = makeML(rocket_he); + rocket_ml_heat = makeML(rocket_heat); ModItems.gun_panzerschreck = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(7).inspect(40).crosshair(Crosshair.L_CIRCUMFLEX) diff --git a/src/main/resources/assets/hbm/textures/items/ammo.png b/src/main/resources/assets/hbm/textures/items/ammo.png index 7a9a0fb47d18012efa4f5fe020bcac90e65e90e5..7bbe059e5766d6b467dc814edfe58ca6586923e4 100644 GIT binary patch literal 14326 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 IRkjHFKas_PQ~&?~ literal 13890 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 AssI20 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_he.png similarity index 100% rename from src/main/resources/assets/hbm/textures/items/ammo_standard.g40.png rename to src/main/resources/assets/hbm/textures/items/ammo_standard.g40_he.png diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_heat.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.g40_heat.png new file mode 100644 index 0000000000000000000000000000000000000000..2988915675bfb337c05ab4526eff184a726223e3 GIT binary patch literal 340 zcmV-a0jvIrP)YU6vy#zBtzR-N@;~akw~b9O336OxcUSg+;z@_Z;Cx4V+Y%CeCz+Q$Z;?h}vR0{{m{b|ta|B*Wo-$mz{K?X4z#yH|=VopU%q zHn&wyE_X03gUQInv<$qN&-InF@=kKizTK0K)*|rdn3h4kQ6rAt3lTNj7&}u1kdD?O zj$#1njT&8D1CT6|1F}exB4j174pImdA>PcVt82V1A{jeVd3AIb3l=@PO3|KHpH|9MR3 zKeA!?024At%3G7+*Y&pyZ|=QfU|?Wiuy!&fXb6e{FwO67zGKKZYRDiZBgU}GP!+Es zDE{0Z$?#u9g@qw@hdP6vu_lAh$%_njcE1@eUSwu)KX4aom|zGRm}>u*mX~0Nzx#;6 z&h9sZfWUu-4<8tD8iLi-Rfekn<>mh}@bmv?5D@r}*ASdhMXVusVNML i=l?L9$pRE<#svVT@qb8pyBECx0000d3AIb3l=@PO3|KHpH|9MR3 zKeA!?024At%3G7+*Y&pyZ|=QfU|?Wiuy!&fXb6e{FwO67zGKKZYRDiZBgW8OT#VNc z78t{EIRoQ%g@qa3zJ1GZ{P=MOY=$tQ3tTvTmC-@ofI(GFjp6Ovw+wIJzGV;=7G|)t zv}Bmu)`sC7oKe+XT>M{EO^rcVSQw76xdd-q6JrR57mz_|Z!hERTesj|foVSY=p2KA zsrG+@EAs=7>1vSLlfd^5rj&?ie!mHaIuSPS7(2O_!qhfUHcDQ zoE>1uH3avk&}rbjN~yWDZd``q!p-v@Wf02mBCkv&}bfl(Gv0Z0!= z8qGS-FHg+_n*}RPt`meozDP^UM%k>-q(C)S{EfdpvAPP66ha&)C5E+Gl zEU4XW@%{CK<93t~ZNumw6^$ReX0eSE8qGRUxWREd*fr|{*8++lrG6miA`g)&Jv1^( eRT8D8>W4p!Q+jj}n`<%v0000 zYxDW>g>*W(h;m?5h@rSowPq0pE1InazPCg=9jY}e#g#x2qLm=oi!73q_R=J+%Eak- z(VLvGK)}Grz`)>!#ms;1Vm6!Jn<#H&GcW{-)cpL@>lozLY`)C8bnjk?wkzk~C;s^KQ#wvOp{1<6@MC?bscG9%cXPu#`~Ec?ymM{B!&j}d zEt1(*FKAr(tsZC&Tc|H9o1dN^5c9RI7SB5rTm0}#sM{Vk1?eTLRv!59=cG1UE_3Oc zHUS@l7M?_<1@jx*r*}X6_LZGyl2H;*xc;4#3uXc74<0^klJ>j6P}3&xlqurHVreF3 mmvpI!rbA-FF3dSAg&58$_QpO86+Z|JDF#nhKbLh*2~7Y>%7wH5 literal 0 HcmV?d00001