From da407e6b31f507591e83af0eaf9430023133c817 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 7 Dec 2024 22:48:32 +0100 Subject: [PATCH] do you dare take a spookie dookie in the skoilet? --- .../java/com/hbm/crafting/WeaponRecipes.java | 29 +- .../entity/effect/EntityFireLingering.java | 3 + .../standard/EntityProcessorCrossSmooth.java | 6 + .../java/com/hbm/extprop/HbmLivingProps.java | 3 + .../com/hbm/handler/EntityEffectHandler.java | 14 +- .../com/hbm/handler/nei/AmmoPressHandler.java | 16 + .../com/hbm/inventory/OreDictManager.java | 28 +- .../java/com/hbm/inventory/material/Mats.java | 21 +- .../inventory/recipes/AmmoPressRecipes.java | 44 ++ .../inventory/recipes/anvil/AnvilRecipes.java | 116 +---- .../weapon/sedna/factory/ConfettiUtil.java | 1 + .../weapon/sedna/factory/GunFactory.java | 1 + .../sedna/factory/GunFactoryClient.java | 2 +- .../weapon/sedna/factory/XFactory22lr.java | 8 +- .../weapon/sedna/factory/XFactory40mm.java | 31 +- .../sedna/factory/XFactoryCatapult.java | 4 +- .../weapon/sedna/factory/XFactoryEnergy.java | 2 +- .../weapon/sedna/factory/XFactoryRocket.java | 27 +- .../weapon/sedna/factory/XFactoryTurret.java | 46 ++ src/main/java/com/hbm/main/NEIRegistry.java | 1 + .../java/com/hbm/particle/ParticleGiblet.java | 1 + .../com/hbm/particle/ParticlePlasmaBlast.java | 3 +- .../com/hbm/particle/ParticleSkeleton.java | 18 +- .../hbm/particle/helper/SkeletonCreator.java | 33 +- .../item/weapon/sedna/ItemRenderAtlas.java | 3 +- .../item/weapon/sedna/ItemRenderBolter.java | 4 +- .../item/weapon/sedna/ItemRenderHangman.java | 4 +- .../turret/TileEntityTurretFritz.java | 5 +- .../turret/TileEntityTurretHoward.java | 4 +- .../turret/TileEntityTurretJeremy.java | 42 +- .../java/com/hbm/util/EntityDamageUtil.java | 20 +- src/main/resources/assets/hbm/lang/de_DE.lang | 11 +- src/main/resources/assets/hbm/lang/en_US.lang | 9 + .../assets/hbm/models/effect/skeleton.obj | 426 +++++++++++------- .../hbm/textures/entity/ModelGrenade.png | Bin 702 -> 0 bytes .../hbm/textures/entity/ModelGrenadeHE.png | Bin 873 -> 0 bytes .../entity/ModelGrenadeIncendiary.png | Bin 867 -> 0 bytes .../hbm/textures/entity/ModelGrenadeSleek.png | Bin 823 -> 0 bytes .../hbm/textures/entity/ModelGrenadeToxic.png | Bin 868 -> 0 bytes .../textures/entity/ModelGrenadeTraining.png | Bin 645 -> 0 bytes .../hbm/textures/entity/ModelRocket.png | Bin 337 -> 0 bytes .../textures/entity/ModelRocketCanister.png | Bin 354 -> 0 bytes .../hbm/textures/entity/ModelRocketEMP.png | Bin 322 -> 0 bytes .../hbm/textures/entity/ModelRocketGlare.png | Bin 339 -> 0 bytes .../hbm/textures/entity/ModelRocketHE.png | Bin 333 -> 0 bytes .../textures/entity/ModelRocketIncendiary.png | Bin 333 -> 0 bytes .../textures/entity/ModelRocketNuclear.png | Bin 375 -> 0 bytes .../textures/entity/ModelRocketPhosphorus.png | Bin 322 -> 0 bytes .../textures/entity/ModelRocketShrapnel.png | Bin 326 -> 0 bytes .../hbm/textures/entity/ModelRocketSleek.png | Bin 327 -> 0 bytes .../textures/items/ammo_standard.p22_ap.png | Bin 187 -> 216 bytes .../textures/items/ammo_standard.p22_fmj.png | Bin 192 -> 242 bytes .../textures/items/ammo_standard.p22_jhp.png | Bin 195 -> 221 bytes .../textures/items/ammo_standard.p22_sp.png | Bin 192 -> 235 bytes .../assets/hbm/textures/particle/skoilet.png | Bin 0 -> 1543 bytes 55 files changed, 600 insertions(+), 386 deletions(-) create mode 100644 src/main/java/com/hbm/handler/nei/AmmoPressHandler.java create mode 100644 src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenade.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeHE.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeIncendiary.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelGrenadeTraining.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocket.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketCanister.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketGlare.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketHE.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketIncendiary.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png delete mode 100644 src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png create mode 100644 src/main/resources/assets/hbm/textures/particle/skoilet.png diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index 381e7f74c..806071a9d 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -33,6 +33,14 @@ public class WeaponRecipes { //SEDNA Parts CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_WOOD.id), new Object[] { "WWW", " W", 'W', KEY_PLANKS }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_WOOD.id), new Object[] { "W ", " W", " W", 'W', KEY_PLANKS }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_POLYMER.id), new Object[] { "WWW", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_POLYMER.id), new Object[] { "W ", " W", " W", 'W', POLYMER.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_BAKELITE.id), new Object[] { "WWW", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_BAKELITE.id), new Object[] { "W ", " W", " W", 'W', BAKELITE.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "WWW", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_HARDPLASTIC.id), new Object[] { "W ", " W", " W", 'W', PC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_stock, 1, Mats.MAT_PVC.id), new Object[] { "WWW", " W", 'W', PVC.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.part_grip, 1, Mats.MAT_PVC.id), new Object[] { "W ", " W", " W", 'W', PVC.ingot() }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.SHOTSHELL, 2), new Object[] { "P", "C", 'P', GUNMETAL.plate(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.casing, EnumCasingType.BUCKSHOT, 2), new Object[] { "P", "C", 'P', ANY_PLASTIC.ingot(), 'C', DictFrame.fromOne(ModItems.casing, EnumCasingType.LARGE) }); @@ -45,12 +53,29 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_greasegun, 1), new Object[] { "BRS", "SMG", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'S', STEEL.bolt(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_maresleg, 1), new Object[] { "BRM", "BGS", 'B', STEEL.lightBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.bolt(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flaregun, 1), new Object[] { "BRM", " G", 'B', STEEL.heavyBarrel(), 'R', STEEL.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', STEEL.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_am180, 1), new Object[] { "BBR", "GMS", 'B', DURA.lightBarrel(), 'R', DURA.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_liberator, 1), new Object[] { "BB ", "BBM", "G G", 'B', DURA.lightBarrel(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_congolake, 1), new Object[] { "BM ", "BRS", "G ", 'B', DURA.heavyBarrel(), 'M', GUNMETAL.mechanism(), 'R', DURA.lightReceiver(), 'S', WOOD.stock(), 'G', WOOD.grip() }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_flamer, 1), new Object[] { " MG", "BBR", " GM", 'M', GUNMETAL.mechanism(), 'G', DURA.grip(), 'B', DURA.heavyBarrel(), 'R', DURA.heavyReceiver() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_heavy_revolver, 1), new Object[] { "BRM", " G", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_carbine, 1), new Object[] { "BRM", "G S", 'B', DESH.lightBarrel(), 'R',DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', WOOD.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_uzi, 1), new Object[] { "BRS", " GM", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'S', ANY_PLASTIC.stock(), 'G', ANY_PLASTIC.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_spas12, 1), new Object[] { "BRM", "BGS", 'B', DESH.lightBarrel(), 'R', DESH.lightReceiver(), 'M', GUNMETAL.mechanism(), 'G', ANY_PLASTIC.grip(), 'S', DESH.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_panzerschreck, 1), new Object[] { "BBB", "PGM", 'B', DESH.heavyBarrel(), 'P', STEEL.plateCast(), 'G', DESH.grip(), 'M', GUNMETAL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_g3, 1), new Object[] { "BRM", "WGS", 'B', WEAPONSTEEL.lightBarrel(), 'R', WEAPONSTEEL.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'W', WOOD.grip(), 'G', RUBBER.grip(), 'S', WOOD.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stinger, 1), new Object[] { "BBB", "PGM", 'B', WEAPONSTEEL.heavyBarrel(), 'P', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'G', WEAPONSTEEL.grip(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_chemthrower, 1), new Object[] { "MHW", "PSS", 'M', WEAPONSTEEL.mechanism(), 'H', RUBBER.pipe(), 'W', ModItems.wrench, 'P', WEAPONSTEEL.heavyBarrel(), 'S', WEAPONSTEEL.shell() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_m2, 1), new Object[] { " G", "BRM", " G", 'G', WOOD.grip(), 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_autoshotgun, 1), new Object[] { "BRM", "G G", 'B', FERRO.heavyBarrel(), 'R', FERRO.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_quadro, 1), new Object[] { "BCB", "BMB", "GG ", 'B', FERRO.heavyBarrel(), 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lag, 1), new Object[] { "BRM", " G", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'R', ANY_RESISTANTALLOY.lightReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_minigun, 1), new Object[] { "BMG", "BRE", "BGM", 'B', ANY_RESISTANTALLOY.lightBarrel(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'E', ModItems.motor_desh }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_missile_launcher, 1), new Object[] { " CM", "BBB", "G ", 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED), 'M', WEAPONSTEEL.mechanism(), 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'G', ANY_PLASTIC.grip() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tesla_cannon, 1), new Object[] { "CCC", "BRB", "MGE", 'C', ModItems.coil_advanced_alloy, 'B', ANY_RESISTANTALLOY.heavyBarrel(), 'R', ANY_RESISTANTALLOY.heavyReceiver(), 'M', WEAPONSTEEL.mechanism(), 'G', ANY_PLASTIC.grip(), 'E', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.ADVANCED) }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_stg77, 1), new Object[] { " D ", "BRS", "GM ", 'D', DIAMOND.gem(), 'B', BIGMT.lightBarrel(), 'R', BIGMT.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_fatman, 1), new Object[] { "PPP", "BSR", "G M", 'P', BIGMT.plate(), 'B', BIGMT.heavyBarrel(), 'S', BIGMT.shell(), 'R', BIGMT.heavyReceiver(), 'G', ANY_HARDPLASTIC.grip(), 'M', BIGMT.mechanism() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_tau, 1), new Object[] { " RD", "CTT", "GMS", 'D', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'C', CU.pipe(), 'T', ModItems.coil_advanced_torus, 'G', ANY_HARDPLASTIC.grip(), 'R', BIGMT.lightReceiver(), 'M', BIGMT.mechanism(), 'S', ANY_HARDPLASTIC.stock() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.gun_lasrifle, 1), new Object[] { "LC ", "BRS", "MG ", 'L', ModItems.crystal_redstone, 'C', DictFrame.fromOne(ModItems.circuit, EnumCircuitType.BISMOID), 'B', ANY_BISMOIDBRONZE.lightBarrel(), 'R', ANY_BISMOIDBRONZE.lightReceiver(), 'S', ANY_HARDPLASTIC.stock(), 'M', BIGMT.mechanism(), 'G', ANY_HARDPLASTIC.grip() }); //SEDNA Ammo CraftingManager.addRecipeAuto(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.STONE, 6), new Object[] { "C", "P", "G", 'C', KEY_COBBLESTONE, 'P', Items.paper, 'G', Items.gunpowder }); diff --git a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java index 2c101d471..1aef970e4 100644 --- a/src/main/java/com/hbm/entity/effect/EntityFireLingering.java +++ b/src/main/java/com/hbm/entity/effect/EntityFireLingering.java @@ -19,6 +19,7 @@ public class EntityFireLingering extends Entity { public static int TYPE_DIESEL = 0; public static int TYPE_BALEFIRE = 1; + public static int TYPE_PHOSPHORUS = 2; public int maxAge = 150; public EntityFireLingering(World world) { @@ -72,6 +73,7 @@ public class EntityFireLingering extends Entity { EntityLivingBase livng = (EntityLivingBase) e; HbmLivingProps props = HbmLivingProps.getData(livng); if(this.getType() == this.TYPE_DIESEL) if(props.fire < 60) props.fire = 60; + if(this.getType() == this.TYPE_PHOSPHORUS) if(props.fire < 300) props.fire = 300; if(this.getType() == this.TYPE_BALEFIRE) if(props.balefire < 100) props.balefire = 100; } else { e.setFire(4); @@ -88,6 +90,7 @@ public class EntityFireLingering extends Entity { MovingObjectPosition mop = worldObj.func_147447_a(up, down, false, true, true); if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) down = mop.hitVec; if(this.getType() == this.TYPE_DIESEL) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); + if(this.getType() == this.TYPE_PHOSPHORUS) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_FIRE); if(this.getType() == this.TYPE_BALEFIRE) FlameCreator.composeEffectClient(worldObj, x, down.yCoord, z, FlameCreator.META_BALEFIRE); } } diff --git a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java index 38cb3383f..48d25e4a2 100644 --- a/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java +++ b/src/main/java/com/hbm/explosion/vanillant/standard/EntityProcessorCrossSmooth.java @@ -28,8 +28,14 @@ public class EntityProcessorCrossSmooth extends EntityProcessorCross { return this; } + public EntityProcessorCrossSmooth setDamageClass(DamageClass clazz) { + this.clazz = clazz; + return this; + } + @Override public void attackEntity(Entity entity, ExplosionVNT source, float amount) { + if(!entity.isEntityAlive()) return; DamageSource dmg = BulletConfig.getDamage(null, source.exploder instanceof EntityLivingBase ? (EntityLivingBase) source.exploder : null, clazz); if(!(entity instanceof EntityLivingBase)) { entity.attackEntityFrom(dmg, amount); diff --git a/src/main/java/com/hbm/extprop/HbmLivingProps.java b/src/main/java/com/hbm/extprop/HbmLivingProps.java index e295d64bd..8a7331382 100644 --- a/src/main/java/com/hbm/extprop/HbmLivingProps.java +++ b/src/main/java/com/hbm/extprop/HbmLivingProps.java @@ -47,6 +47,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { private int contagion; private int oil; public int fire; + public int phosphorus; public int balefire; private List contamination = new ArrayList(); @@ -284,6 +285,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { props.setInteger("hfr_blacklung", blacklung); props.setInteger("hfr_oil", oil); props.setInteger("hfr_fire", fire); + props.setInteger("hfr_phosphorus", phosphorus); props.setInteger("hfr_balefire", balefire); props.setInteger("hfr_cont_count", this.contamination.size()); @@ -309,6 +311,7 @@ public class HbmLivingProps implements IExtendedEntityProperties { blacklung = props.getInteger("hfr_blacklung"); oil = props.getInteger("hfr_oil"); fire = props.getInteger("hfr_fire"); + phosphorus = props.getInteger("hfr_phosphorus"); balefire = props.getInteger("hfr_balefire"); int cont = props.getInteger("hfr_cont_count"); diff --git a/src/main/java/com/hbm/handler/EntityEffectHandler.java b/src/main/java/com/hbm/handler/EntityEffectHandler.java index 52c80352c..ab683b588 100644 --- a/src/main/java/com/hbm/handler/EntityEffectHandler.java +++ b/src/main/java/com/hbm/handler/EntityEffectHandler.java @@ -575,7 +575,10 @@ public class EntityEffectHandler { if(!entity.isEntityAlive()) return; - if(living.isImmuneToFire()) props.fire = 0; + if(living.isImmuneToFire()) { + props.fire = 0; + props.phosphorus = 0; + } double x = living.posX; double y = living.posY; @@ -590,6 +593,13 @@ public class EntityEffectHandler { FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); } + if(props.phosphorus > 0) { + props.phosphorus--; + if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); + if((living.ticksExisted + living.getEntityId()) % 40 == 0) living.attackEntityFrom(DamageSource.onFire, 5F); + FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_FIRE); + } + if(props.balefire > 0) { props.balefire--; if((living.ticksExisted + living.getEntityId()) % 15 == 0) living.worldObj.playSoundEffect(living.posX, living.posY + living.height / 2, living.posZ, "random.fizz", 1F, 1.5F + rand.nextFloat() * 0.5F); @@ -598,7 +608,7 @@ public class EntityEffectHandler { FlameCreator.composeEffect(entity.worldObj, x - living.width / 2 + living.width * rand.nextDouble(), y + rand.nextDouble() * living.height, z - living.width / 2 + living.width * rand.nextDouble(), FlameCreator.META_BALEFIRE); } - if(props.fire > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); + if(props.fire > 0 || props.phosphorus > 0 || props.balefire > 0) if(!entity.isEntityAlive()) ConfettiUtil.decideConfetti(living, DamageSource.onFire); } private static void handleDashing(Entity entity) { diff --git a/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java new file mode 100644 index 000000000..3f1ba26b8 --- /dev/null +++ b/src/main/java/com/hbm/handler/nei/AmmoPressHandler.java @@ -0,0 +1,16 @@ +package com.hbm.handler.nei; + +import com.hbm.blocks.ModBlocks; +import com.hbm.inventory.recipes.AmmoPressRecipes; + +public class AmmoPressHandler extends NEIUniversalHandler { + + public AmmoPressHandler() { + super(ModBlocks.machine_ammo_press.getLocalizedName(), ModBlocks.machine_ammo_press, AmmoPressRecipes.getRecipes()); + } + + @Override + public String getKey() { + return "ntmAmmoPress"; + } +} diff --git a/src/main/java/com/hbm/inventory/OreDictManager.java b/src/main/java/com/hbm/inventory/OreDictManager.java index ef6fb0d36..b918c1480 100644 --- a/src/main/java/com/hbm/inventory/OreDictManager.java +++ b/src/main/java/com/hbm/inventory/OreDictManager.java @@ -546,15 +546,15 @@ public class OreDictManager { for(NTMMaterial mat : Mats.orderedList) { if(mat.smeltable == SmeltingBehavior.SMELTABLE) { - if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.CASTPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.CASTPLATE.name() + name, new ItemStack(ModItems.plate_cast, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WELDEDPLATE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WELDEDPLATE.name() + name, new ItemStack(ModItems.plate_welded, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.HEAVY_COMPONENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.HEAVY_COMPONENT.name() + name, new ItemStack(ModItems.heavy_component, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.DENSEWIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.DENSEWIRE.name() + name, new ItemStack(ModItems.wire_dense, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); - if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); } + if(mat.autogen.contains(MaterialShapes.BOLT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.BOLT.name() + name, new ItemStack(ModItems.bolt, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.INGOT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.INGOT.name() + name, new ItemStack(ModItems.ingot_raw, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.SHELL)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.SHELL.name() + name, new ItemStack(ModItems.shell, 1, mat.id)); + if(mat.autogen.contains(MaterialShapes.PIPE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.PIPE.name() + name, new ItemStack(ModItems.pipe, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.FRAGMENT)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.FRAGMENT.name() + name, new ItemStack(ModItems.bedrock_ore_fragment, 1, mat.id)); if(mat.autogen.contains(MaterialShapes.WIRE)) for(String name : mat.names) OreDictionary.registerOre(MaterialShapes.WIRE.name() + name, new ItemStack(ModItems.wire_fine, 1, mat.id)); @@ -674,10 +674,11 @@ public class OreDictManager { public static void registerGroups() { ANY_RUBBER.addPrefix(INGOT, true); - ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true); - ANY_HARDPLASTIC.addPrefix(INGOT, true); - ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true); - ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true); + ANY_PLASTIC.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(BLOCK, true).addPrefix(GRIP, true).addPrefix(STOCK, true); + ANY_HARDPLASTIC.addPrefix(INGOT, true).addPrefix(STOCK, true).addPrefix(GRIP, true); + ANY_RESISTANTALLOY.addPrefix(INGOT, true).addPrefix(DUST, true).addPrefix(CASTPLATE, true).addPrefix(WELDEDPLATE, true).addPrefix(HEAVY_COMPONENT, true).addPrefix(BLOCK, true) + .addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); + ANY_BISMOIDBRONZE.addPrefix(INGOT, true).addPrefix(CASTPLATE, true).addPrefix(LIGHTBARREL, true).addPrefix(HEAVYBARREL, true).addPrefix(LIGHTRECEIVER, true).addPrefix(HEAVYRECEIVER, true); ANY_TAR.addPrefix(ANY, false); } @@ -685,9 +686,7 @@ public class OreDictManager { @SubscribeEvent public void onRegisterOre(OreRegisterEvent event) { - - if(recursionBrake) - return; + if(recursionBrake) return; recursionBrake = true; @@ -1016,6 +1015,13 @@ public class OreDictManager { public String billet() { return BILLET.name() + groupName; } public String block() { return BLOCK.name() + groupName; } public String ore() { return ORE.name() + groupName; } + public String lightBarrel() { return LIGHTBARREL.name() + groupName; } + public String heavyBarrel() { return HEAVYBARREL.name() + groupName; } + public String lightReceiver() { return LIGHTRECEIVER.name() + groupName; } + public String heavyReceiver() { return HEAVYRECEIVER.name() + groupName; } + public String mechanism() { return MECHANISM.name() + groupName; } + public String stock() { return STOCK.name() + groupName; } + public String grip() { return GRIP.name() + groupName; } } private static void addReRegistration(String original, String additional) { diff --git a/src/main/java/com/hbm/inventory/material/Mats.java b/src/main/java/com/hbm/inventory/material/Mats.java index adfa898fb..122b660cb 100644 --- a/src/main/java/com/hbm/inventory/material/Mats.java +++ b/src/main/java/com/hbm/inventory/material/Mats.java @@ -137,13 +137,13 @@ public class Mats { public static final NTMMaterial MAT_MINGRADE = makeSmeltable(_AS + 1, MINGRADE, 0xFFBA7D, 0xAF1700, 0xE44C0F).setAutogen(WIRE, DUST, BLOCK).m(); public static final NTMMaterial MAT_ALLOY = makeSmeltable(_AS + 2, ALLOY, 0xFF8330, 0x700000, 0xFF7318).setAutogen(WIRE, DUST, DENSEWIRE, PLATE, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); public static final NTMMaterial MAT_DURA = makeSmeltable(_AS + 3, DURA, 0x183039, 0x030B0B, 0x376373).setAutogen(BOLT, DUST, PIPE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, GRIP).m(); - public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT).m(); + public static final NTMMaterial MAT_DESH = makeSmeltable(_AS + 12, DESH, 0xFF6D6D, 0x720000, 0xF22929).setAutogen(DUST, CASTPLATE, BLOCK, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, STOCK, GRIP).m(); public static final NTMMaterial MAT_STAR = makeSmeltable(_AS + 5, STAR, 0xCCCCEA, 0x11111A, 0xA5A5D3).setAutogen(DUST, DENSEWIRE, BLOCK).m(); - public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).m(); - public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT).m(); - public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE).m(); - public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE).m(); + public static final NTMMaterial MAT_FERRO = makeSmeltable(_AS + 7, FERRO, 0xB7B7C9, 0x101022, 0x6B6B8B).setAutogen(HEAVYBARREL, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_TCALLOY = makeSmeltable(_AS + 6, TCALLOY, 0xD4D6D6, 0x323D3D, 0x9CA6A6).setAutogen(DUST, CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_CDALLOY = makeSmeltable(_AS + 13, CDALLOY, 0xF7DF8F, 0x604308, 0xFBD368).setAutogen(CASTPLATE, WELDEDPLATE, HEAVY_COMPONENT, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER).m(); + public static final NTMMaterial MAT_BBRONZE = makeSmeltable(_AS + 16, BBRONZE, 0xE19A69, 0x485353, 0x987D65).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); + public static final NTMMaterial MAT_ABRONZE = makeSmeltable(_AS + 17, ABRONZE, 0xDB9462, 0x203331, 0x77644D).setAutogen(CASTPLATE, LIGHTBARREL, LIGHTRECEIVER).m(); public static final NTMMaterial MAT_BSCCO = makeSmeltable(_AS + 18, BSCCO, 0x767BF1, 0x000000, 0x5E62C0).setAutogen(DENSEWIRE).m(); public static final NTMMaterial MAT_MAGTUNG = makeSmeltable(_AS + 8, MAGTUNG, 0x22A2A2, 0x0F0F0F, 0x22A2A2).setAutogen(WIRE, DUST, DENSEWIRE, BLOCK).m(); public static final NTMMaterial MAT_CMB = makeSmeltable(_AS + 9, CMB, 0x6F6FB4, 0x000011, 0x6F6FB4).setAutogen(DUST, PLATE, CASTPLATE, WELDEDPLATE, BLOCK).m(); @@ -152,11 +152,16 @@ public class Mats { public static final NTMMaterial MAT_SLAG = makeSmeltable(_AS + 11, SLAG, 0x554940, 0x34281F, 0x6C6562).setAutogen(BLOCK).n(); public static final NTMMaterial MAT_MUD = makeSmeltable(_AS + 14, MUD, 0xBCB5A9, 0x481213, 0x96783B).n(); public static final NTMMaterial MAT_GUNMETAL = makeSmeltable(_AS + 19, GUNMETAL, 0xFFEF3F, 0xAD3600, 0xF9C62C).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); - public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); - public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); + public static final NTMMaterial MAT_WEAPONSTEEL = makeSmeltable(_AS + 20, WEAPONSTEEL, 0xA0A0A0, 0x000000, 0x808080).setAutogen(SHELL, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).n(); + public static final NTMMaterial MAT_SATURN = makeSmeltable(_AS + 4, BIGMT, 0x3AC4DA, 0x09282C, 0x30A4B7).setAutogen(PLATE, CASTPLATE, SHELL, BLOCK, LIGHTBARREL, HEAVYBARREL, LIGHTRECEIVER, HEAVYRECEIVER, MECHANISM, STOCK, GRIP).m(); //Extension public static final NTMMaterial MAT_RAREEARTH = makeNonSmeltable(_ES + 00, RAREEARTH, 0xC1BDBD, 0x384646, 0x7B7F7F).setAutogen(FRAGMENT).n(); + public static final NTMMaterial MAT_POLYMER = makeNonSmeltable(_ES + 01, POLYMER, 0x363636, 0x040404, 0x272727).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_BAKELITE = makeNonSmeltable(_ES + 02, BAKELITE, 0xF28086, 0x2B0608, 0xC93940).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_RUBBER = makeNonSmeltable(_ES + 03, RUBBER, 0x817F75, 0x0F0D03, 0x4B4A3F).setAutogen(PIPE, GRIP).n(); + public static final NTMMaterial MAT_HARDPLASTIC = makeNonSmeltable(_ES + 04, PC, 0xEDE7C4, 0x908A67, 0xE1DBB8).setAutogen(STOCK, GRIP).n(); + public static final NTMMaterial MAT_PVC = makeNonSmeltable(_ES + 05, PVC, 0xFCFCFC, 0x9F9F9F, 0xF0F0F0).setAutogen(STOCK, GRIP).n(); public static NTMMaterial makeSmeltable(int id, DictFrame dict, int color) { return makeSmeltable(id, dict, color, color, color); } diff --git a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java index af8c71dbd..d65a7b064 100644 --- a/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AmmoPressRecipes.java @@ -2,6 +2,7 @@ package com.hbm.inventory.recipes; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import static com.hbm.inventory.OreDictManager.*; @@ -14,6 +15,7 @@ import com.hbm.inventory.OreDictManager.DictFrame; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; +import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.recipes.loader.SerializableRecipe; import com.hbm.items.ItemEnums.EnumCasingType; import com.hbm.items.ModItems; @@ -41,6 +43,7 @@ public class AmmoPressRecipes extends SerializableRecipe { OreDictStack smokeless = new OreDictStack(ANY_SMOKELESS.dust()); OreDictStack he = new OreDictStack(ANY_HIGHEXPLOSIVE.ingot()); OreDictStack wp = new OreDictStack(P_WHITE.ingot()); + OreDictStack rp = new OreDictStack(P_RED.dust()); ComparableStack cSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL); ComparableStack cBig = new ComparableStack(ModItems.casing, 1, EnumCasingType.LARGE); ComparableStack sSmall = new ComparableStack(ModItems.casing, 1, EnumCasingType.SMALL_STEEL); @@ -229,6 +232,47 @@ public class AmmoPressRecipes extends SerializableRecipe { null, wp, null, null, smokeless, null, null, sShell, null)); + + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G26_FLARE, 4), + null, rp, null, + null, smokeless, null, + null, cBig, null)); + + ComparableStack dyn = new ComparableStack(ModItems.ball_dynamite); + OreDictStack coplate = new OreDictStack(CU.plate()); + OreDictStack diesel = new OreDictStack(Fluids.DIESEL.getDict(1_000)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HE, 4), + null, dyn, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_HEAT, 4), + coplate, he, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_DEMO, 4), + null, he.copy(2), null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_INC, 4), + null, diesel, null, + null, smokeless, null, + null, cBig, null)); + recipes.add(new AmmoPressRecipe(DictFrame.fromOne(ModItems.ammo_standard, EnumAmmo.G40_PHOSPHORUS, 4), + null, wp, null, + null, smokeless, null, + null, cBig, null)); + } + + public static HashMap getRecipes() { + HashMap recipes = new HashMap(); + + for(AmmoPressRecipe recipe : AmmoPressRecipes.recipes) { + List inputs = new ArrayList(); + for(AStack stack : recipe.input) if(stack != null) inputs.add(stack); + recipes.put(inputs.toArray(new AStack[0]), recipe.output.copy()); + } + + return recipes; } @Override diff --git a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java index 767950bd8..3bffaac96 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -18,7 +18,6 @@ import com.hbm.inventory.material.Mats; import com.hbm.inventory.material.NTMMaterial; import com.hbm.inventory.recipes.AssemblerRecipes; import com.hbm.inventory.recipes.AssemblerRecipes.AssemblerRecipe; -import com.hbm.items.ItemAmmoEnums.*; import com.hbm.items.ItemEnums.EnumChunkType; import com.hbm.items.ModItems; import com.hbm.items.food.ItemFlask.EnumInfusion; @@ -27,7 +26,6 @@ import com.hbm.items.machine.ItemCircuit.EnumCircuitType; import net.minecraft.block.Block; import net.minecraft.init.Blocks; import net.minecraft.init.Items; -import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; @@ -184,9 +182,13 @@ public class AnvilRecipes { for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.SHELL)) constructionRecipes.add(new AnvilConstructionRecipe( new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 4), new AnvilOutput(new ItemStack(ModItems.shell, 1, mat.id))).setTier(1)); - for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) constructionRecipes.add(new AnvilConstructionRecipe( - new OreDictStack(MaterialShapes.PLATE.name() + mat.names[0], 3), - new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + for(NTMMaterial mat : Mats.orderedList) if(mat.autogen.contains(MaterialShapes.PIPE)) { + String key = (OreDictionary.doesOreNameExist(MaterialShapes.PLATE.name() + mat.names[0]) ? + MaterialShapes.PLATE.name() + mat.names[0] : MaterialShapes.INGOT.name() + mat.names[0]); + constructionRecipes.add(new AnvilConstructionRecipe( + new OreDictStack(key, 3), + new AnvilOutput(new ItemStack(ModItems.pipe, 1, mat.id))).setTier(1)); + } constructionRecipes.add(new AnvilConstructionRecipe( new ComparableStack(ModItems.coil_copper, 2), @@ -578,112 +580,8 @@ public class AnvilRecipes { constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 27))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe(new AStack[]{new ComparableStack(ModItems.mold_base), new OreDictStack(STEEL.ingot(), 4)}, new AnvilOutput(new ItemStack(ModItems.mold, 1, 28))).setTier(2)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_357))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_44))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_9))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_50))).setTier(1)); - constructionRecipes.add(new AnvilConstructionRecipe(new OreDictStack(CU.plate()), new AnvilOutput(new ItemStack(ModItems.casing_buckshot))).setTier(1)); - pullFromAssembler(new ComparableStack(ModItems.pellet_buckshot), 1); pullFromAssembler(new ComparableStack(ModItems.pellet_canister), 1); - - constructionRecipes.add(new AnvilConstructionRecipe( new AStack[]{ - new ComparableStack(ModItems.powder_chlorophyte, 1), - new OreDictStack(PB.nugget(), 12),}, - new AnvilOutput(new ItemStack(ModItems.pellet_chlorophyte, 2))).setTier(1)); - - Object[][] recs = new Object[][] { - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), P_RED.dust(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.INCENDIARY), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.SHRAPNEL), 2}, - {ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.STOCK), U238.ingot(), ModItems.ammo_12gauge.stackFromEnum(12, Ammo12Gauge.DU), 3}, - {ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_12gauge.stackFromEnum(120, Ammo12Gauge.SLEEK), 4}, - - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), P_RED.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.INCENDIARY), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(ModBlocks.gravel_obsidian), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHRAPNEL), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), ModItems.powder_poison, ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.CAUSTIC), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), DIAMOND.dust(), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.SHOCK), 2}, - {ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.STOCK), Item.getItemFromBlock(Blocks.soul_sand), ModItems.ammo_20gauge.stackFromEnum(12, Ammo20Gauge.WITHER), 3}, - {ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_20gauge.stackFromEnum(120, Ammo20Gauge.SLEEK), 4}, - - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.EXPLOSIVE), ModItems.egg_balefire_shard, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.BALEFIRE), 4}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.EXPLOSIVE), ModItems.ammo_rocket, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.KAMPF), 2}, - {ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.KAMPF), ModItems.pellet_canister, ModItems.ammo_4gauge.stackFromEnum(12, Ammo4Gauge.CANISTER), 3}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.pellet_claws, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.CLAW), 5}, - {ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.STOCK), ModItems.toothpicks, ModItems.ammo_4gauge.stackFromEnum(4, Ammo4Gauge.VAMPIRE), 5}, - {ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.STOCK), ModItems.pellet_charged, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VOID), 5}, - {ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.STOCK), ModItems.coin_maskman, ModItems.ammo_4gauge.stackFromEnum(120, Ammo4Gauge.SLEEK), 4}, - - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), DURA.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.AP), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), U238.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.DU), 2}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), P_WHITE.ingot(), ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.PHOSPHORUS), 2}, - {ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.DU), STAR.ingot(), ModItems.ammo_44.stackFromEnum(12, Ammo44Magnum.STAR), 3}, - {ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_44.stackFromEnum(24, Ammo44Magnum.CHLOROPHYTE), 3}, - - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), DURA.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.AP), 3}, - {ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.STOCK), U238.ingot(), ModItems.ammo_45.stackFromEnum(32, Ammo45ACP.DU), 3}, - - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.ingot_semtex, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.EXPLOSIVE), 2}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), U238.ingot(), ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.DU), 2}, - {ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.DU), STAR.ingot(), ModItems.ammo_5mm.stackFromEnum(32, Ammo5mm.STAR), 3}, - {ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_5mm.stackFromEnum(128, Ammo5mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), DURA.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.AP), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), U238.ingot(), ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.DU), 2}, - {ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_9mm.stackFromEnum(32, Ammo9mm.CHLOROPHYTE), 3}, - - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), DURA.ingot(), ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.AP), 2}, - {ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_22lr.stackFromEnum(32, Ammo22LR.CHLOROPHYTE), 3}, - - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_RED.dust(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.INCENDIARY), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), P_WHITE.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.PHOSPHORUS), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.ingot_semtex, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.EXPLOSIVE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), DURA.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.AP), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), U238.ingot(), ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.DU), 2}, - {ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.DU), STAR.ingot(), ModItems.ammo_50bmg.stackFromEnum(8, Ammo50BMG.STAR), 3}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.CHLOROPHYTE), 3}, - {ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.STOCK), ModItems.coin_maskman, ModItems.ammo_50bmg.stackFromEnum(128, Ammo50BMG.SLEEK), 4}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.STOCK), ModItems.pellet_flechette, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), 2}, - {ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE), ModItems.nugget_am_mix, ModItems.ammo_50bmg.stackFromEnum(16, Ammo50BMG.FLECHETTE_AM), 3}, - {ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE), ModItems.powder_polonium, ModItems.ammo_50bmg.stackFromEnum(32, Ammo50BMG.FLECHETTE_PO), 3}, - - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), DURA.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.AP), 2}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), U238.ingot(), ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.DU), 2}, - {ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.DU), STAR.ingot(), ModItems.ammo_50ae.stackFromEnum(16, Ammo50AE.STAR), 3}, - {ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_50ae.stackFromEnum(32, Ammo50AE.CHLOROPHYTE), 3}, - - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), DURA.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.AP), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.DU), 2}, - {ModItems.ammo_556.stackFromEnum(16, Ammo556mm.DU), STAR.ingot(), ModItems.ammo_556.stackFromEnum(16, Ammo556mm.STAR), 3}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.CHLOROPHYTE), 3}, - {ModItems.ammo_556.stackFromEnum(128, Ammo556mm.STOCK), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), Items.redstone, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.TRACER), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.STOCK), ModItems.pellet_flechette, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_RED.dust(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_INCENDIARY), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), P_WHITE.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_PHOSPHORUS), 2}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), U238.ingot(), ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_DU), 2}, - {ModItems.ammo_556.stackFromEnum(100, Ammo556mm.FLECHETTE), ModItems.coin_maskman, ModItems.ammo_556.stackFromEnum(128, Ammo556mm.FLECHETTE_SLEEK), 4}, - {ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE), ModItems.pellet_chlorophyte, ModItems.ammo_556.stackFromEnum(32, Ammo556mm.FLECHETTE_CHLOROPHYTE), 3}, - - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), Items.redstone, ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.TRACER), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), DURA.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.AP), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), P_WHITE.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.PHOSPHORUS), 2}, - {ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.STOCK), U238.ingot(), ModItems.ammo_762.stackFromEnum(32, Ammo762NATO.DU), 2} - }; - - for(Object[] objs : recs) { - - ComparableStack ammoIn = new ComparableStack((ItemStack) objs[0]); - ItemStack out = (ItemStack) objs[2]; - - if(objs[1] instanceof Item) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new ComparableStack((Item)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - - } else if(objs[1] instanceof String) { - constructionRecipes.add(new AnvilConstructionRecipe(new AStack[] { ammoIn, new OreDictStack((String)objs[1], 1) }, new AnvilOutput(out)).setTier((int)objs[3])); - } - } } public static void registerConstructionUpgrades() { diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java index 0a483910c..78f42363a 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/ConfettiUtil.java @@ -17,6 +17,7 @@ public class ConfettiUtil { public static void decideConfetti(EntityLivingBase entity, DamageSource source) { if(entity.isEntityAlive()) return; if(source.damageType.equals(DamageClass.LASER.name())) pulverize(entity); + if(source.damageType.equals(DamageClass.ELECTRIC.name())) pulverize(entity); if(source.isExplosion()) gib(entity); if(source.isFireDamage()) cremate(entity); } 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 b68413fd1..f53ea37d2 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 @@ -64,6 +64,7 @@ public class GunFactory { XFactoryCatapult.init(); XFactory75Bolt.init(); XFactoryFolly.init(); + XFactoryTurret.init(); /// PROXY BULLSHIT /// MainRegistry.proxy.registerGunCfg(); 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 3cc626948..bf2d4d3be 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 @@ -148,7 +148,7 @@ public class GunFactoryClient { g26_flare_supply.setRenderer(LegoClient.RENDER_FLARE_SUPPLY); g26_flare_weapon.setRenderer(LegoClient.RENDER_FLARE_WEAPON); - setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc); + setRendererBulk(LegoClient.RENDER_GRENADE, g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus); setRendererBulk(LegoClient.RENDER_RPZB, rocket_rpzb); setRendererBulk(LegoClient.RENDER_QD, rocket_qd); diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java index 4c5af27ea..5d5739636 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactory22lr.java @@ -33,13 +33,13 @@ public class XFactory22lr { public static void init() { SpentCasing casing22 = new SpentCasing(CasingType.STRAIGHT).setColor(SpentCasing.COLOR_CASE_BRASS).setScale(0.5F); - p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP) + p22_sp = new BulletConfig().setItem(EnumAmmo.P22_SP).setKnockback(0F) .setCasing(casing22.clone().register("p22")); - p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setDamage(0.8F).setArmorPiercing(0.1F) + p22_fmj = new BulletConfig().setItem(EnumAmmo.P22_FMJ).setKnockback(0F).setDamage(0.8F).setArmorPiercing(0.1F) .setCasing(casing22.clone().register("p22fmj")); - p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setDamage(1.5F).setArmorPiercing(-0.25F) + p22_jhp = new BulletConfig().setItem(EnumAmmo.P22_JHP).setKnockback(0F).setDamage(1.5F).setArmorPiercing(-0.25F) .setCasing(casing22.clone().register("p22jhp")); - p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F) + p22_ap = new BulletConfig().setItem(EnumAmmo.P22_AP).setKnockback(0F).setDoesPenetrate(true).setDamageFalloutByPen(false).setDamage(1.5F).setArmorPiercing(0.15F) .setCasing(casing22.clone().setColor(SpentCasing.COLOR_CASE_44).register("p22ap")); ModItems.gun_am180 = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() 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 76314dcdb..502e11fb4 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 @@ -33,7 +33,9 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; import com.hbm.util.TrackerUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; @@ -53,6 +55,7 @@ public class XFactory40mm { public static BulletConfig g40_heat; public static BulletConfig g40_demo; public static BulletConfig g40_inc; + public static BulletConfig g40_phosphorus; public static BiConsumer LAMBDA_STANDARD_IGNITE = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY) { @@ -67,7 +70,11 @@ public class XFactory40mm { }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 3F, 0.15F); + } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; @@ -81,16 +88,23 @@ public class XFactory40mm { bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 200); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 400); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; World world = bullet.worldObj; Lego.standardExplode(bullet, mop, 3F); - EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(200).setType(EntityFireLingering.TYPE_DIESEL); + EntityFireLingering fire = new EntityFireLingering(world).setArea(5, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); world.spawnEntityInWorld(fire); bullet.setDead(); for(int dx = -1; dx <= 1; dx++) { for(int dy = -1; dy <= 1; dy++) { - for(int dz = -2; dz <= 2; dz++) { + for(int dz = -1; dz <= 1; dz++) { int x = (int) Math.floor(mop.hitVec.xCoord) + dx; int y = (int) Math.floor(mop.hitVec.yCoord) + dy; int z = (int) Math.floor(mop.hitVec.zCoord) + dz; @@ -103,7 +117,7 @@ public class XFactory40mm { } } } - }; + } public static Consumer LAMBDA_SPAWN_C130_SUPPLIESS = (entity) -> { spawnPlane(entity, C130PayloadType.SUPPLIES); }; public static Consumer LAMBDA_SPAWN_C130_WEAPONS = (entity) -> { spawnPlane(entity, C130PayloadType.WEAPONS); }; @@ -130,9 +144,10 @@ public class XFactory40mm { BulletConfig g40_base = new BulletConfig().setLife(200).setVel(2F).setGrav(0.035D); g40_he = g40_base.clone().setItem(EnumAmmo.G40_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x777777).setScale(2, 2F, 1.5F).register("g40")); - g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); - g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); - g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_heat = g40_base.clone().setItem(EnumAmmo.G40_HEAT).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT).setDamage(0.5F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0x5E6854).setScale(2, 2F, 1.5F).register("g40heat")); + g40_demo = g40_base.clone().setItem(EnumAmmo.G40_DEMO).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE30000).setScale(2, 2F, 1.5F).register("g40demo")); + g40_inc = g40_base.clone().setItem(EnumAmmo.G40_INC).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xE86F20).setScale(2, 2F, 1.5F).register("g40inc")); + g40_phosphorus = g40_base.clone().setItem(EnumAmmo.G40_PHOSPHORUS).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS).setDamage(0.75F).setCasing(new SpentCasing(CasingType.STRAIGHT).setColor(0xC8C8C8).setScale(2, 2F, 1.5F).register("g40phos")); ModItems.gun_flaregun = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(100).draw(7).inspect(39).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) @@ -149,7 +164,7 @@ public class XFactory40mm { .dura(400).draw(7).inspect(39).reloadSequential(true).crosshair(Crosshair.L_CIRCUMFLEX).smoke(LAMBDA_SMOKE) .rec(new Receiver(0) .dmg(20F).delay(24).reload(16, 16, 16, 0).jam(0).sound("hbm:weapon.glShoot", 1.0F, 1.0F) - .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc)) + .mag(new MagazineSingleReload(0, 4).addConfigs(g40_he, g40_heat, g40_demo, g40_inc, g40_phosphorus)) .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/XFactoryCatapult.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java index 301828e7d..5eaada4fd 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryCatapult.java @@ -122,7 +122,7 @@ public class XFactoryCatapult { if(bullet.isDead) return; bullet.setDead(); ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 5); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(2, bullet.damage).withRangeMod(1.5F)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage).withRangeMod(1.5F)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); vnt.explode(); @@ -134,7 +134,7 @@ public class XFactoryCatapult { nuke_demo = new BulletConfig().setItem(EnumAmmo.NUKE_DEMO).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_DEMO); nuke_high = new BulletConfig().setItem(EnumAmmo.NUKE_HIGH).setLife(300).setVel(3F).setGrav(0.025F).setOnImpact(LAMBDA_NUKE_HIGH); nuke_tots = new BulletConfig().setItem(EnumAmmo.NUKE_TOTS).setProjectiles(8).setLife(300).setVel(3F).setGrav(0.025F).setSpread(0.1F).setOnImpact(LAMBDA_NUKE_TINYTOT); - nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setOnImpact(LAMBDA_NUKE_HIVE); + nuke_hive = new BulletConfig().setItem(EnumAmmo.NUKE_HIVE).setProjectiles(12).setLife(300).setVel(1F).setGrav(0.025F).setSpread(0.15F).setDamage(0.5F).setOnImpact(LAMBDA_NUKE_HIVE); ModItems.gun_fatman = new ItemGunBaseNT(WeaponQuality.A_SIDE, new GunConfig() .dura(300).draw(20).inspect(30).crosshair(Crosshair.L_CIRCUMFLEX).hideCrosshair(false) diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java index 85c9e99ab..50773003f 100644 --- a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryEnergy.java @@ -63,7 +63,7 @@ public class XFactoryEnergy { } ExplosionVNT vnt = new ExplosionVNT(beam.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 2F); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage)); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, beam.damage).setDamageClass(beam.config.dmgClass)); vnt.setPlayerProcessor(new PlayerProcessorStandard()); vnt.explode(); beam.worldObj.playSoundEffect(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, "hbm:entity.ufoBlast", 5.0F, 0.9F + beam.worldObj.rand.nextFloat() * 0.2F); 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 da062c452..f0a9933c6 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 @@ -30,8 +30,11 @@ import com.hbm.render.anim.BusAnimation; import com.hbm.render.anim.BusAnimationSequence; import com.hbm.render.anim.BusAnimationKeyframe.IType; import com.hbm.render.anim.HbmAnimations.AnimType; +import com.hbm.util.EntityDamageUtil; +import com.hbm.util.DamageResistanceHandler.DamageClass; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; @@ -82,7 +85,11 @@ public class XFactoryRocket { }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_HEAT = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; - Lego.standardExplode(bullet, mop, 2.5F); bullet.setDead(); + Lego.standardExplode(bullet, mop, 3.5F); bullet.setDead(); + if(mop.typeOfHit == mop.typeOfHit.ENTITY && mop.entityHit instanceof EntityLivingBase) { + EntityLivingBase living = (EntityLivingBase) mop.entityHit; + EntityDamageUtil.attackEntityFromNT(living, bullet.config.getDamage(bullet, bullet.getThrower(), DamageClass.EXPLOSIVE), bullet.damage * 3F, true, true, 0.5F, 5F, 0.2F); + } }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_DEMO = (bullet, mop) -> { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; @@ -96,10 +103,17 @@ public class XFactoryRocket { bullet.setDead(); }; public static BiConsumer LAMBDA_STANDARD_EXPLODE_INC = (bullet, mop) -> { + spawnFire(bullet, mop, false, 300); + }; + public static BiConsumer LAMBDA_STANDARD_EXPLODE_PHOSPHORUS = (bullet, mop) -> { + spawnFire(bullet, mop, true, 600); + }; + + public static void spawnFire(EntityBulletBaseMK4 bullet, MovingObjectPosition mop, boolean phosphorus, int duration) { if(mop.typeOfHit == mop.typeOfHit.ENTITY && bullet.ticksExisted < 3) return; World world = bullet.worldObj; Lego.standardExplode(bullet, mop, 3F); - EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(300).setType(EntityFireLingering.TYPE_DIESEL); + EntityFireLingering fire = new EntityFireLingering(world).setArea(6, 2).setDuration(duration).setType(phosphorus ? EntityFireLingering.TYPE_PHOSPHORUS : EntityFireLingering.TYPE_DIESEL); fire.setPosition(mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord); world.spawnEntityInWorld(fire); bullet.setDead(); @@ -118,7 +132,7 @@ public class XFactoryRocket { } } } - }; + } public static BulletConfig makeRPZB(BulletConfig original) { return original.clone(); } public static BulletConfig makeQD(BulletConfig original) { return original.clone().setLife(400).setOnUpdate(LAMBDA_STEERING_ACCELERATE); } @@ -127,14 +141,15 @@ public class XFactoryRocket { //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_template = new BulletConfig[4]; + rocket_template = new BulletConfig[5]; BulletConfig baseRocket = new BulletConfig().setLife(300).setSelfDamageDelay(10).setVel(0F).setGrav(0D).setOnEntityHit(null).setOnRicochet(null).setOnUpdate(LAMBDA_STANDARD_ACCELERATE); rocket_template[0] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HE).setOnImpact(LAMBDA_STANDARD_EXPLODE); - rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(1.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); - rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); + rocket_template[1] = baseRocket.clone().setItem(EnumAmmo.ROCKET_HEAT).setDamage(0.5F).setOnImpact(LAMBDA_STANDARD_EXPLODE_HEAT); + rocket_template[2] = baseRocket.clone().setItem(EnumAmmo.ROCKET_DEMO).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_DEMO); rocket_template[3] = baseRocket.clone().setItem(EnumAmmo.ROCKET_INC).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_INC); + rocket_template[4] = baseRocket.clone().setItem(EnumAmmo.ROCKET_PHOSPHORUS).setDamage(0.75F).setOnImpact(LAMBDA_STANDARD_EXPLODE_PHOSPHORUS); rocket_rpzb = new BulletConfig[rocket_template.length]; rocket_qd = new BulletConfig[rocket_template.length]; diff --git a/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java new file mode 100644 index 000000000..c5a50ce06 --- /dev/null +++ b/src/main/java/com/hbm/items/weapon/sedna/factory/XFactoryTurret.java @@ -0,0 +1,46 @@ +package com.hbm.items.weapon.sedna.factory; + +import com.hbm.explosion.vanillant.ExplosionVNT; +import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; +import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; +import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; +import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; +import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; +import com.hbm.items.ModItems; +import com.hbm.items.ItemAmmoEnums.Ammo240Shell; +import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.particle.SpentCasing; +import com.hbm.particle.SpentCasing.CasingType; + +public class XFactoryTurret { + + public static BulletConfig dgk_normal; + + public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); + public static BulletConfig shell_normal; + public static BulletConfig shell_explosive; + public static BulletConfig shell_ap; + public static BulletConfig shell_du; + public static BulletConfig shell_w9; + + public static void init() { + dgk_normal = new BulletConfig(); + + shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); + }); + shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { + ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); + vnt.setBlockAllocator(new BlockAllocatorStandard()); + vnt.setBlockProcessor(new BlockProcessorStandard()); + vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); + vnt.setPlayerProcessor(new PlayerProcessorStandard()); + vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); + vnt.explode(); + bullet.setDead(); + }); + shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM); + shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM); + shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + } +} diff --git a/src/main/java/com/hbm/main/NEIRegistry.java b/src/main/java/com/hbm/main/NEIRegistry.java index 3899820c8..1c40d9429 100644 --- a/src/main/java/com/hbm/main/NEIRegistry.java +++ b/src/main/java/com/hbm/main/NEIRegistry.java @@ -67,6 +67,7 @@ public class NEIRegistry { handlers.add(new ArcFurnaceSolidHandler()); handlers.add(new ArcFurnaceFluidHandler()); handlers.add(new RotaryFurnaceHandler()); + handlers.add(new AmmoPressHandler()); //this shit comes last handlers.add(new FluidRecipeHandler()); diff --git a/src/main/java/com/hbm/particle/ParticleGiblet.java b/src/main/java/com/hbm/particle/ParticleGiblet.java index c09a00799..a93128750 100644 --- a/src/main/java/com/hbm/particle/ParticleGiblet.java +++ b/src/main/java/com/hbm/particle/ParticleGiblet.java @@ -66,6 +66,7 @@ public class ParticleGiblet extends EntityFX { GL11.glPushMatrix(); GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); this.theRenderEngine.bindTexture(texture); /* use this instead of EntityFX.interpPosN since interpPosN isn't set up correctly for the current tick for layer 3 particles */ diff --git a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java index 18430e811..413dd35b9 100644 --- a/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java +++ b/src/main/java/com/hbm/particle/ParticlePlasmaBlast.java @@ -7,6 +7,7 @@ import com.hbm.lib.RefStrings; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.texture.TextureManager; @@ -84,9 +85,9 @@ public class ParticlePlasmaBlast extends EntityFX { if(fog) GL11.glEnable(GL11.GL_FOG); GL11.glPolygonOffset(0.0F, 0.0F); - GL11.glEnable(GL11.GL_CULL_FACE); GL11.glAlphaFunc(GL11.GL_GREATER, 0.1F); GL11.glEnable(GL11.GL_LIGHTING); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); GL11.glPopMatrix(); } } diff --git a/src/main/java/com/hbm/particle/ParticleSkeleton.java b/src/main/java/com/hbm/particle/ParticleSkeleton.java index 7958124ae..a3eb3f4c9 100644 --- a/src/main/java/com/hbm/particle/ParticleSkeleton.java +++ b/src/main/java/com/hbm/particle/ParticleSkeleton.java @@ -25,6 +25,7 @@ import net.minecraftforge.client.model.IModelCustom; public class ParticleSkeleton extends EntityFX { public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/particle/skeleton.png"); + public static final ResourceLocation texture_ext = new ResourceLocation(RefStrings.MODID + ":textures/particle/skoilet.png"); public static final IModelCustom skeleton = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/effect/skeleton.obj"), false).asVBO(); protected EnumSkeletonType type; @@ -107,8 +108,6 @@ public class ParticleSkeleton extends EntityFX { GL11.glAlphaFunc(GL11.GL_GREATER, 0); OpenGlHelper.glBlendFunc(770, 771, 1, 0); RenderHelper.enableStandardItemLighting(); - - this.textureManager.bindTexture(texture); double pX = prevPosX + (posX - prevPosX) * interp; double pY = prevPosY + (posY - prevPosY) * interp; @@ -139,9 +138,18 @@ public class ParticleSkeleton extends EntityFX { GL11.glRotated(-90, 0, 1, 0); switch(type) { - case SKULL: skeleton.renderPart("Skull"); break; - case TORSO: skeleton.renderPart("Torso"); break; - case LIMB: skeleton.renderPart("Limb"); break; + case SKULL: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Skull"); break; + case TORSO: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Torso"); break; + case LIMB: + this.textureManager.bindTexture(texture); + skeleton.renderPart("Limb"); break; + case SKULL_VILLAGER: + this.textureManager.bindTexture(texture_ext); + skeleton.renderPart("SkullVillager"); break; } GL11.glColor4f(1F, 1F, 1F, 1F); diff --git a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java index 04bc10b22..48ee29761 100644 --- a/src/main/java/com/hbm/particle/helper/SkeletonCreator.java +++ b/src/main/java/com/hbm/particle/helper/SkeletonCreator.java @@ -20,7 +20,9 @@ import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityPigZombie; import net.minecraft.entity.monster.EntitySkeleton; +import net.minecraft.entity.monster.EntityWitch; import net.minecraft.entity.monster.EntityZombie; +import net.minecraft.entity.passive.EntityVillager; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; @@ -85,7 +87,7 @@ public class SkeletonCreator implements IParticleCreator { } public static enum EnumSkeletonType { - SKULL, TORSO, LIMB + SKULL, TORSO, LIMB, SKULL_VILLAGER } public static Function BONES_BIPED = (entity) -> { @@ -96,8 +98,8 @@ public class SkeletonCreator implements IParticleCreator { new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), }; }; @@ -110,8 +112,22 @@ public class SkeletonCreator implements IParticleCreator { new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ + leftarm.zCoord + forward.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -90, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.375, entity.posZ - leftarm.zCoord + forward.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), + }; + }; + + public static Function BONES_VILLAGER = (entity) -> { + Vec3NT leftarm = new Vec3NT(0.375, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT forward = new Vec3NT(0, 0, 0.25).rotateAroundYDeg(-entity.renderYawOffset); + Vec3NT leftleg = new Vec3NT(0.125, 0, 0).rotateAroundYDeg(-entity.renderYawOffset); + return new BoneDefinition[] { + new BoneDefinition(EnumSkeletonType.SKULL_VILLAGER, -entity.rotationYawHead, entity.rotationPitch, entity.posX, entity.posY + 1.6875, entity.posZ), + new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1, entity.posZ), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX + leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, -45, entity.posX - leftarm.xCoord + forward.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord + forward.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), }; }; @@ -123,8 +139,8 @@ public class SkeletonCreator implements IParticleCreator { new BoneDefinition(EnumSkeletonType.TORSO, -entity.renderYawOffset, 0, entity.posX, entity.posY + 1.125, entity.posZ), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftarm.xCoord, entity.posY + 1.125, entity.posZ + leftarm.zCoord), new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftarm.xCoord, entity.posY + 1.125, entity.posZ - leftarm.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.625, entity.posZ + leftleg.zCoord), - new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.625, entity.posZ - leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX + leftleg.xCoord, entity.posY + 0.375, entity.posZ + leftleg.zCoord), + new BoneDefinition(EnumSkeletonType.LIMB, -entity.renderYawOffset, 0, entity.posX - leftleg.xCoord, entity.posY + 0.375, entity.posZ - leftleg.zCoord), }; }; @@ -137,6 +153,9 @@ public class SkeletonCreator implements IParticleCreator { skullanizer.put(EntitySkeleton.class.getSimpleName(), BONES_ZOMBIE); skullanizer.put(EntityPigZombie.class.getSimpleName(), BONES_ZOMBIE); + skullanizer.put(EntityVillager.class.getSimpleName(), BONES_VILLAGER); + skullanizer.put(EntityWitch.class.getSimpleName(), BONES_VILLAGER); + skullanizer.put(EntityDummy.class.getSimpleName(), BONES_DUMMY); //techguns compat, for some reason diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java index 394415ace..907f5f5c9 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderAtlas.java @@ -104,8 +104,9 @@ public class ItemRenderAtlas extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); + double scale = 0.75D; + GL11.glScaled(scale, scale, scale); GL11.glTranslated(0, 1, 3); - } @Override diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java index ba3af6235..165cd20cc 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderBolter.java @@ -89,9 +89,9 @@ public class ItemRenderBolter extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); - double scale = 3D; + double scale = 2.5D; GL11.glScaled(scale, scale, scale); - GL11.glTranslated(0, 0.25, 1.25); + GL11.glTranslated(0, -0.75, 1.25); } diff --git a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java index 732cf2abf..f02c22562 100644 --- a/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java +++ b/src/main/java/com/hbm/render/item/weapon/sedna/ItemRenderHangman.java @@ -104,9 +104,9 @@ public class ItemRenderHangman extends ItemRenderWeaponBase { @Override public void setupThirdPerson(ItemStack stack) { super.setupThirdPerson(stack); - double scale = 0.375D; + double scale = 0.5D; GL11.glScaled(scale, scale, scale); - GL11.glTranslated(0, 4.25, 8); + GL11.glTranslated(0, 4.25, 11); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java index 226fd6bd4..1271b00f5 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretFritz.java @@ -15,6 +15,7 @@ import com.hbm.inventory.fluid.trait.FT_Flammable; import com.hbm.inventory.fluid.trait.FluidTraitSimple.FT_Liquid; import com.hbm.inventory.gui.GUITurretFritz; import com.hbm.items.ModItems; +import com.hbm.items.weapon.sedna.factory.GunFactory.EnumAmmo; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -57,7 +58,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl ammoStacks = new ArrayList(); - ammoStacks.add(new ItemStack(ModItems.ammo_fuel)); + ammoStacks.add(new ItemStack(ModItems.ammo_standard, 1, EnumAmmo.FLAME_DIESEL.ordinal())); for(FluidType type : Fluids.getInNiceOrder()) { if(type.hasTrait(FT_Combustible.class) && type.hasTrait(FT_Liquid.class)) { @@ -144,7 +145,7 @@ public class TileEntityTurretFritz extends TileEntityTurretBaseNT implements IFl for(int i = 1; i < 10; i++) { - if(slots[i] != null && slots[i].getItem() == ModItems.ammo_fuel) { + if(slots[i] != null && slots[i].getItem() == ModItems.ammo_standard && slots[i].getItemDamage() == EnumAmmo.FLAME_DIESEL.ordinal()) { if(this.tank.getTankType() == Fluids.DIESEL && this.tank.getFill() + 1000 <= this.tank.getMaxFill()) { this.tank.setFill(this.tank.getFill() + 1000); this.decrStackSize(i, 1); diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java index 1e69696fd..71993d569 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretHoward.java @@ -8,6 +8,7 @@ import com.hbm.handler.CasingEjector; import com.hbm.handler.guncfg.GunDGKFactory; import com.hbm.inventory.gui.GUITurretHoward; import com.hbm.items.weapon.sedna.BulletConfig; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.lib.ModDamageSource; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; @@ -24,11 +25,10 @@ import net.minecraft.world.World; public class TileEntityTurretHoward extends TileEntityTurretBaseNT { - static BulletConfig dgk_normal = new BulletConfig(); static List configs = new ArrayList(); static { - configs.add(dgk_normal.id); + configs.add(XFactoryTurret.dgk_normal.id); } @Override diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java index 5f57d1c6d..b2af72b35 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretJeremy.java @@ -3,23 +3,12 @@ package com.hbm.tileentity.turret; import java.util.ArrayList; import java.util.List; -import com.hbm.explosion.vanillant.ExplosionVNT; -import com.hbm.explosion.vanillant.standard.BlockAllocatorStandard; -import com.hbm.explosion.vanillant.standard.BlockProcessorStandard; -import com.hbm.explosion.vanillant.standard.EntityProcessorCrossSmooth; -import com.hbm.explosion.vanillant.standard.ExplosionEffectWeapon; -import com.hbm.explosion.vanillant.standard.PlayerProcessorStandard; import com.hbm.handler.CasingEjector; import com.hbm.inventory.gui.GUITurretJeremy; -import com.hbm.items.ModItems; -import com.hbm.items.ItemAmmoEnums.Ammo240Shell; import com.hbm.items.weapon.sedna.BulletConfig; -import com.hbm.items.weapon.sedna.factory.Lego; -import com.hbm.items.weapon.sedna.factory.XFactoryCatapult; +import com.hbm.items.weapon.sedna.factory.XFactoryTurret; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.toclient.AuxParticlePacketNT; -import com.hbm.particle.SpentCasing; -import com.hbm.particle.SpentCasing.CasingType; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; @@ -30,32 +19,15 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; public class TileEntityTurretJeremy extends TileEntityTurretBaseNT { - - public static SpentCasing CASINNG240MM = new SpentCasing(CasingType.BOTTLENECK).setScale(7.5F).setBounceMotion(0.02F, 0.05F).setColor(SpentCasing.COLOR_CASE_BRASS).setupSmoke(1F, 0.5D, 60, 20); - public static BulletConfig shell_normal = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.STOCK)).setDamage(1F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { - Lego.standardExplode(bullet, mop, 10F); bullet.setDead(); - }); - public static BulletConfig shell_explosive = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.EXPLOSIVE)).setDamage(1.5F).setCasing(CASINNG240MM).setOnImpact((bullet, mop) -> { - ExplosionVNT vnt = new ExplosionVNT(bullet.worldObj, mop.hitVec.xCoord, mop.hitVec.yCoord, mop.hitVec.zCoord, 10F); - vnt.setBlockAllocator(new BlockAllocatorStandard()); - vnt.setBlockProcessor(new BlockProcessorStandard()); - vnt.setEntityProcessor(new EntityProcessorCrossSmooth(1, bullet.damage)); - vnt.setPlayerProcessor(new PlayerProcessorStandard()); - vnt.setSFX(new ExplosionEffectWeapon(10, 2.5F, 1F)); - vnt.explode(); - bullet.setDead(); - }); - public static BulletConfig shell_ap = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_T)).setDamage(2F).setDoesPenetrate(true).setCasing(CASINNG240MM); - public static BulletConfig shell_du = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.APFSDS_DU)).setDamage(2.5F).setDoesPenetrate(true).setDamageFalloutByPen(false).setCasing(CASINNG240MM); - public static BulletConfig shell_w9 = new BulletConfig().setItem(ModItems.ammo_shell.stackFromEnum(Ammo240Shell.W9)).setDamage(2.5F).setCasing(CASINNG240MM).setOnImpact(XFactoryCatapult.LAMBDA_NUKE_STANDARD); + static List configs = new ArrayList(); static { - configs.add(shell_normal.id); - configs.add(shell_explosive.id); - configs.add(shell_ap.id); - configs.add(shell_du.id); - configs.add(shell_w9.id); + configs.add(XFactoryTurret.shell_normal.id); + configs.add(XFactoryTurret.shell_explosive.id); + configs.add(XFactoryTurret.shell_ap.id); + configs.add(XFactoryTurret.shell_du.id); + configs.add(XFactoryTurret.shell_w9.id); } @Override diff --git a/src/main/java/com/hbm/util/EntityDamageUtil.java b/src/main/java/com/hbm/util/EntityDamageUtil.java index 708ca7d9a..54d72e20e 100644 --- a/src/main/java/com/hbm/util/EntityDamageUtil.java +++ b/src/main/java/com/hbm/util/EntityDamageUtil.java @@ -106,7 +106,7 @@ public class EntityDamageUtil { } living.attackedAtYaw = (float) (Math.atan2(deltaZ, deltaX) * 180.0D / Math.PI) - living.rotationYaw; - if(knockbackMultiplier > 0) living.knockBack(entity, amount, deltaX * knockbackMultiplier, deltaZ * knockbackMultiplier); + if(knockbackMultiplier > 0) knockBack(living, entity, amount, deltaX, deltaZ, knockbackMultiplier); } else { living.attackedAtYaw = (float) ((int) (Math.random() * 2.0D) * 180); } @@ -126,6 +126,24 @@ public class EntityDamageUtil { return true; } + public static void knockBack(EntityLivingBase living, Entity attacker, float damage, double motionX, double motionZ, double multiplier) { + if(living.getRNG().nextDouble() >= living.getEntityAttribute(SharedMonsterAttributes.knockbackResistance).getAttributeValue()) { + living.isAirBorne = true; + double horizontal = Math.sqrt(motionX * motionX + motionZ * motionZ); + double magnitude = 0.4D * multiplier; + living.motionX /= 2.0D; + living.motionY /= 2.0D; + living.motionZ /= 2.0D; + living.motionX -= motionX / horizontal * magnitude; + living.motionY += (double) magnitude; + living.motionZ -= motionZ / horizontal * magnitude; + + if(living.motionY > 0.2D) { + living.motionY = 0.2D * multiplier; + } + } + } + public static void damageEntityNT(EntityLivingBase living, DamageSource source, float amount) { if(!living.isEntityInvulnerable()) { amount = ForgeHooks.onLivingHurt(living, source, amount); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2a4c6a22b..f9263ab56 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -1184,6 +1184,7 @@ item.ammo_standard.g40_demo.name=40mm Abrissgranate item.ammo_standard.g40_he.name=40mm Sprenggranate item.ammo_standard.g40_heat.name=40mm Hohlladungsgranate item.ammo_standard.g40_inc.name=40mm Brandgranate +item.ammo_standard.g40_phosphorus.name=40mm Weiße Phosphorgranate item.ammo_standard.m357_ap.name=.357 Magnumkugel (Panzerbrechend) item.ammo_standard.m357_bp.name=.357 Magnumkugel (Schwarzpulver) item.ammo_standard.m357_express.name=.357 Magnumkugel (VMG Express) @@ -1222,6 +1223,7 @@ item.ammo_standard.rocket_demo.name=Abrissrakete item.ammo_standard.rocket_he.name=Explosivrakete item.ammo_standard.rocket_heat.name=Hohlladungsrakete item.ammo_standard.rocket_inc.name=Brandrakete +item.ammo_standard.rocket_phosphorus.name=Weiße Phosphorrakete item.ammo_standard.stone.name=Kugel und Pulver item.ammo_standard.stone_ap.name=Feuerstein und Pulver item.ammo_standard.stone_iron.name=Eisenkugel und Pulver @@ -3778,23 +3780,30 @@ rbmk.rod.xenon=Xenonvergiftung: %s rbmk.rod.coreTemp=Kerntemperatur: %s rbmk.rod.skinTemp=Außentemperatur: %s / %s +shape.barrelHeavy=Schwerer Lauf +shape.barrelLight=Leichter Lauf shape.billet=Billet shape.blade=Turbinenblatt shape.blades=Sägeblatt shape.block=Block shape.dust=Haufen shape.dusttiny=Winziger Haufen -shape.hull_big=Große Hülle +shape.grip=Griff +shape.gunMechanism=Mechanism +shape.hull_big=Große Mechanismus shape.hull_small=Kleine Hülle shape.ingot=Barren shape.nugget=Nugget shape.quantum=Quantum shape.quart=Viertel Block +shape.receiverHeavy=Schwerer Verschluss +shape.receiverLight=Leichter Verschluss shape.ntmpipe=Rohr shape.plate=Platte shape.plateTriple=Gussplatte shape.shell=Mantel shape.stamp=Stempel +shape.stock=Schaft shape.wireFine=Drähte shape.wireDense=Dichter Draht shape.wiresDense=Dichte Drähte diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ecef71ce2..986a89820 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1907,6 +1907,7 @@ item.ammo_standard.g40_demo.name=40mm Grenade, Demolition item.ammo_standard.g40_he.name=40mm Grenade, High-Explosive item.ammo_standard.g40_heat.name=40mm Grenade, Shaped Charge item.ammo_standard.g40_inc.name=40mm Grenade, Incendiary +item.ammo_standard.g40_phosphorus.name=40mm Grenade, White Phosphorus item.ammo_standard.m357_ap.name=.357 Magnum Round (Armor Piercing) item.ammo_standard.m357_bp.name=.357 Magnum Round (Black Powder) item.ammo_standard.m357_express.name=.357 Magnum Round (FMJ Express) @@ -1945,6 +1946,7 @@ item.ammo_standard.rocket_demo.name=Rocket, Demolition item.ammo_standard.rocket_he.name=Rocket, High-Explosive item.ammo_standard.rocket_heat.name=Rocket, Shaped Charge item.ammo_standard.rocket_inc.name=Rocket, Incendiary +item.ammo_standard.rocket_phosphorus.name=Rocket, White Phosphorus item.ammo_standard.stone.name=Ball and Powder item.ammo_standard.stone_ap.name=Flint and Powder item.ammo_standard.stone_iron.name=Iron Ball and Powder @@ -4833,23 +4835,30 @@ rbmk.screen.rod=Control: %s rbmk.screen.temp=Temp: %s rbmk.screen.xenon=Xenon: %s +shape.barrelHeavy=Heavy Barrel +shape.barrelLight=Light Barrel shape.billet=Billet shape.blade=Blade shape.blades=Shredder Blades shape.block=Block shape.dust=Dust shape.dusttiny=Tiny Dust +shape.grip=Grip +shape.gunMechanism=Mechanism shape.hull_big=Big Shell shape.hull_small=Small Shell shape.ingot=Ingot shape.nugget=Nugget shape.quantum=Quantum shape.quart=Quarter Block +shape.receiverHeavy=Heavy Receiver +shape.receiverLight=Light Receiver shape.ntmpipe=Pipe shape.plate=Plate shape.plateTriple=Cast Plate shape.shell=Shell shape.stamp=Press Stamp +shape.stock=Stock shape.wireFine=Wires shape.wireDense=Dense Wire shape.wiresDense=Dense Wires diff --git a/src/main/resources/assets/hbm/models/effect/skeleton.obj b/src/main/resources/assets/hbm/models/effect/skeleton.obj index d7ae2c48e..6e5c28f3c 100644 --- a/src/main/resources/assets/hbm/models/effect/skeleton.obj +++ b/src/main/resources/assets/hbm/models/effect/skeleton.obj @@ -1,182 +1,94 @@ -# Blender v2.79 (sub 0) OBJ File: 'skeleton.blend' +# Blender v2.79 (sub 0) OBJ File: '' # www.blender.org -o Torso -v 0.125000 -0.375000 0.250000 -v 0.125000 0.375000 0.250000 -v 0.125000 -0.375000 -0.250000 -v 0.125000 0.375000 -0.250000 -v -0.125000 -0.375000 0.250000 -v -0.125000 0.375000 0.250000 -v -0.125000 -0.375000 -0.250000 -v -0.125000 0.375000 -0.250000 -v 0.125000 -0.375000 0.250000 -v 0.125000 0.375000 0.250000 -v 0.125000 -0.375000 -0.250000 -v 0.125000 0.375000 -0.250000 -v -0.125000 -0.375000 0.250000 -v -0.125000 0.375000 0.250000 -v -0.125000 -0.375000 -0.250000 -v -0.125000 0.375000 -0.250000 -vt 0.312500 0.000000 -vt 0.437500 0.375000 -vt 0.437500 0.000000 -vt 0.500000 0.000000 -vt 0.437500 0.375000 -vt 0.437500 0.000000 -vt 0.625000 0.000000 -vt 0.500000 0.375000 -vt 0.312500 0.000000 -vt 0.250000 0.375000 -vt 0.250000 0.000000 -vt 0.437500 0.500000 -vt 0.562500 0.375000 -vt 0.562500 0.500000 -vt 0.312500 0.500000 -vt 0.437500 0.500000 -vt 0.437500 0.375000 -vt 0.312500 0.000000 -vt 0.437500 0.000000 -vt 0.437500 0.375000 -vt 0.500000 0.000000 -vt 0.437500 0.000000 -vt 0.500000 0.375000 -vt 0.625000 0.000000 -vt 0.250000 0.375000 -vt 0.312500 0.000000 -vt 0.250000 0.000000 -vt 0.562500 0.375000 -vt 0.437500 0.500000 -vt 0.562500 0.500000 -vt 0.312500 0.500000 -vt 0.437500 0.500000 -vt 0.312500 0.375000 -vt 0.625000 0.375000 -vt 0.312500 0.375000 -vt 0.437500 0.375000 -vt 0.312500 0.375000 -vt 0.625000 0.375000 -vt 0.312500 0.375000 -vt 0.437500 0.375000 -vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 -vn 0.0000 -1.0000 0.0000 -vn 0.0000 1.0000 0.0000 -s off -f 3/1/1 2/2/1 1/3/1 -f 7/4/2 4/5/2 3/6/2 -f 5/7/3 8/8/3 7/4/3 -f 1/9/4 6/10/4 5/11/4 -f 1/12/5 7/13/5 3/14/5 -f 6/15/6 4/5/6 8/16/6 -f 10/17/3 11/18/3 9/19/3 -f 12/20/4 15/21/4 11/22/4 -f 16/23/1 13/24/1 15/21/1 -f 14/25/2 9/26/2 13/27/2 -f 15/28/6 9/29/6 11/30/6 -f 12/20/5 14/31/5 16/32/5 -f 3/1/1 4/33/1 2/2/1 -f 7/4/2 8/8/2 4/5/2 -f 5/7/3 6/34/3 8/8/3 -f 1/9/4 2/35/4 6/10/4 -f 1/12/5 5/36/5 7/13/5 -f 6/15/6 2/35/6 4/5/6 -f 10/17/3 12/37/3 11/18/3 -f 12/20/4 16/23/4 15/21/4 -f 16/23/1 14/38/1 13/24/1 -f 14/25/2 10/39/2 9/26/2 -f 15/28/6 13/40/6 9/29/6 -f 12/20/5 10/39/5 14/31/5 -o Skull -v -0.250000 -0.250000 0.250000 -v -0.250000 0.250000 0.250000 -v -0.250000 -0.250000 -0.250000 -v -0.250000 0.250000 -0.250000 -v 0.250000 -0.250000 0.250000 -v 0.250000 0.250000 0.250000 -v 0.250000 -0.250000 -0.250000 -v 0.250000 0.250000 -0.250000 -v -0.250000 -0.250000 0.250000 -v -0.250000 0.250000 0.250000 -v -0.250000 -0.250000 -0.250000 -v -0.250000 0.250000 -0.250000 -v 0.250000 -0.250000 0.250000 -v 0.250000 0.250000 0.250000 -v 0.250000 -0.250000 -0.250000 -v 0.250000 0.250000 -0.250000 -vt 0.500000 0.750000 -vt 0.375000 0.500000 -vt 0.500000 0.500000 -vt 0.375000 0.750000 -vt 0.250000 0.500000 -vt 0.250000 0.750000 -vt 0.125000 0.500000 -vt 0.125000 0.750000 -vt -0.000000 0.500000 -vt 0.250000 0.750000 +o SkullVillager +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 -0.312500 0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 -0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 0.250000 +v -0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 0.250000 +v -0.250000 -0.312500 0.250000 +v 0.250000 -0.312500 -0.250000 +v -0.250000 0.312500 -0.250000 +v 0.250000 -0.312500 0.250000 +v 0.250000 0.312500 -0.250000 +v 0.250000 0.312500 0.250000 +vt 0.500000 0.875000 +vt 0.375000 0.718750 +vt 0.500000 0.718750 +vt 0.375000 0.875000 +vt 0.250000 0.718750 +vt 0.250000 0.875000 +vt 0.125000 0.718750 +vt 0.125000 0.875000 +vt 0.000000 0.718750 +vt 0.250000 0.875000 vt 0.375000 1.000000 vt 0.250000 1.000000 vt 0.250000 1.000000 -vt 0.375000 0.500000 -vt 0.500000 0.750000 -vt 0.500000 0.500000 -vt 0.250000 0.500000 -vt 0.375000 0.750000 -vt 0.125000 0.500000 -vt 0.250000 0.750000 -vt -0.000000 0.500000 -vt 0.125000 0.750000 +vt 0.375000 0.718750 +vt 0.500000 0.875000 +vt 0.500000 0.718750 +vt 0.250000 0.718750 +vt 0.375000 0.875000 +vt 0.125000 0.718750 +vt 0.250000 0.875000 +vt 0.000000 0.718750 +vt 0.125000 0.875000 vt 0.375000 1.000000 -vt 0.250000 0.750000 +vt 0.250000 0.875000 vt 0.250000 1.000000 vt 0.250000 1.000000 -vt -0.000000 0.750000 -vt 0.375000 0.750000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 vt 0.125000 1.000000 -vt -0.000000 0.750000 -vt 0.375000 0.750000 +vt 0.000000 0.875000 +vt 0.375000 0.875000 vt 0.125000 1.000000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 1.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 -s off -f 18/41/7 19/42/7 17/43/7 -f 20/44/8 23/45/8 19/42/8 -f 24/46/9 21/47/9 23/45/9 -f 22/48/10 17/49/10 21/47/10 -f 23/50/11 17/51/11 19/52/11 -f 20/53/12 22/48/12 24/46/12 -f 27/54/9 26/55/9 25/56/9 -f 31/57/10 28/58/10 27/54/10 -f 29/59/7 32/60/7 31/57/7 -f 25/61/8 30/62/8 29/59/8 -f 25/63/12 31/64/12 27/65/12 -f 30/62/11 28/66/11 32/60/11 -f 18/41/7 20/44/7 19/42/7 -f 20/44/8 24/46/8 23/45/8 -f 24/46/9 22/48/9 21/47/9 -f 22/48/10 18/67/10 17/49/10 -f 23/50/11 21/68/11 17/51/11 -f 20/53/12 18/69/12 22/48/12 -f 27/54/9 28/58/9 26/55/9 -f 31/57/10 32/60/10 28/58/10 -f 29/59/7 30/62/7 32/60/7 -f 25/61/8 26/70/8 30/62/8 -f 25/63/12 29/71/12 31/64/12 -f 30/62/11 26/72/11 28/66/11 +s 1 +f 1/1/1 2/2/1 3/3/1 +f 4/4/2 5/5/2 2/2/2 +f 6/6/3 7/7/3 5/5/3 +f 8/8/4 3/9/4 7/7/4 +f 5/10/5 3/11/5 2/12/5 +f 4/13/6 8/8/6 6/6/6 +f 9/14/3 10/15/3 11/16/3 +f 12/17/4 13/18/4 9/14/4 +f 14/19/1 15/20/1 12/17/1 +f 11/21/2 16/22/2 14/19/2 +f 11/23/6 12/24/6 9/25/6 +f 16/22/5 13/26/5 15/20/5 +f 1/1/1 4/4/1 2/2/1 +f 4/4/2 6/6/2 5/5/2 +f 6/6/3 8/8/3 7/7/3 +f 8/8/4 1/27/4 3/9/4 +f 5/10/5 7/28/5 3/11/5 +f 4/13/6 1/29/6 8/8/6 +f 9/14/3 13/18/3 10/15/3 +f 12/17/4 15/20/4 13/18/4 +f 14/19/1 16/22/1 15/20/1 +f 11/21/2 10/30/2 16/22/2 +f 11/23/6 14/31/6 12/24/6 +f 16/22/5 10/32/5 13/26/5 o Limb -v -0.062500 -0.375000 0.062500 v -0.062500 0.375000 0.062500 v -0.062500 -0.375000 -0.062500 +v -0.062500 -0.375000 0.062500 v -0.062500 0.375000 -0.062500 -v 0.062500 -0.375000 0.062500 -v 0.062500 0.375000 0.062500 v 0.062500 -0.375000 -0.062500 v 0.062500 0.375000 -0.062500 +v 0.062500 -0.375000 0.062500 +v 0.062500 0.375000 0.062500 vt 0.125000 0.437500 vt 0.093750 0.062500 vt 0.125000 0.062500 @@ -196,19 +108,187 @@ vt 0.031250 0.500000 vn -1.0000 0.0000 0.0000 vn 0.0000 0.0000 -1.0000 vn 1.0000 0.0000 0.0000 -vn 0.0000 0.0000 1.0000 +vn 0.0000 -0.0000 1.0000 vn 0.0000 -1.0000 0.0000 vn 0.0000 1.0000 0.0000 -s off -f 34/73/13 35/74/13 33/75/13 -f 36/76/14 39/77/14 35/74/14 -f 40/78/15 37/79/15 39/77/15 -f 38/80/16 33/81/16 37/79/16 -f 39/82/17 33/83/17 35/84/17 -f 36/85/18 38/80/18 40/78/18 -f 34/73/13 36/76/13 35/74/13 -f 36/76/14 40/78/14 39/77/14 -f 40/78/15 38/80/15 37/79/15 -f 38/80/16 34/86/16 33/81/16 -f 39/82/17 37/87/17 33/83/17 -f 36/85/18 34/88/18 38/80/18 +s 1 +f 17/33/7 18/34/7 19/35/7 +f 20/36/8 21/37/8 18/34/8 +f 22/38/9 23/39/9 21/37/9 +f 24/40/10 19/41/10 23/39/10 +f 21/42/11 19/43/11 18/44/11 +f 20/45/12 24/40/12 22/38/12 +f 17/33/7 20/36/7 18/34/7 +f 20/36/8 22/38/8 21/37/8 +f 22/38/9 24/40/9 23/39/9 +f 24/40/10 17/46/10 19/41/10 +f 21/42/11 23/47/11 19/43/11 +f 20/45/12 17/48/12 24/40/12 +o Skull +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 -0.250000 0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 -0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 0.250000 +v -0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 0.250000 +v -0.250000 -0.250000 0.250000 +v 0.250000 -0.250000 -0.250000 +v -0.250000 0.250000 -0.250000 +v 0.250000 -0.250000 0.250000 +v 0.250000 0.250000 -0.250000 +v 0.250000 0.250000 0.250000 +vt 0.500000 0.750000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.375000 0.750000 +vt 0.250000 0.500000 +vt 0.250000 0.750000 +vt 0.125000 0.500000 +vt 0.125000 0.750000 +vt -0.000000 0.500000 +vt 0.250000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt 0.375000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.250000 0.500000 +vt 0.375000 0.750000 +vt 0.125000 0.500000 +vt 0.250000 0.750000 +vt -0.000000 0.500000 +vt 0.125000 0.750000 +vt 0.375000 1.000000 +vt 0.250000 0.750000 +vt 0.250000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vt -0.000000 0.750000 +vt 0.375000 0.750000 +vt 0.125000 1.000000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 -0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 25/49/13 26/50/13 27/51/13 +f 28/52/14 29/53/14 26/50/14 +f 30/54/15 31/55/15 29/53/15 +f 32/56/16 27/57/16 31/55/16 +f 29/58/17 27/59/17 26/60/17 +f 28/61/18 32/56/18 30/54/18 +f 33/62/15 34/63/15 35/64/15 +f 36/65/16 37/66/16 33/62/16 +f 38/67/13 39/68/13 36/65/13 +f 35/69/14 40/70/14 38/67/14 +f 35/71/18 36/72/18 33/73/18 +f 40/70/17 37/74/17 39/68/17 +f 25/49/13 28/52/13 26/50/13 +f 28/52/14 30/54/14 29/53/14 +f 30/54/15 32/56/15 31/55/15 +f 32/56/16 25/75/16 27/57/16 +f 29/58/17 31/76/17 27/59/17 +f 28/61/18 25/77/18 32/56/18 +f 33/62/15 37/66/15 34/63/15 +f 36/65/16 39/68/16 37/66/16 +f 38/67/13 40/70/13 39/68/13 +f 35/69/14 34/78/14 40/70/14 +f 35/71/18 38/79/18 36/72/18 +f 40/70/17 34/80/17 37/74/17 +o Torso +v 0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 0.250000 +v -0.125000 -0.375000 -0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 0.375000 0.250000 +v 0.125000 0.375000 0.250000 +v 0.125000 -0.375000 -0.250000 +v 0.125000 -0.375000 0.250000 +v 0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 -0.250000 +v -0.125000 0.375000 -0.250000 +v -0.125000 -0.375000 0.250000 +v -0.125000 0.375000 0.250000 +vt 0.312500 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.500000 0.000000 +vt 0.437500 0.375000 +vt 0.437500 0.000000 +vt 0.625000 0.000000 +vt 0.500000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.375000 +vt 0.250000 0.000000 +vt 0.437500 0.500000 +vt 0.562500 0.375000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.437500 0.375000 +vt 0.312500 0.000000 +vt 0.437500 0.000000 +vt 0.437500 0.375000 +vt 0.500000 0.000000 +vt 0.437500 0.000000 +vt 0.500000 0.375000 +vt 0.625000 0.000000 +vt 0.250000 0.375000 +vt 0.312500 0.000000 +vt 0.250000 0.000000 +vt 0.562500 0.375000 +vt 0.437500 0.500000 +vt 0.562500 0.500000 +vt 0.312500 0.500000 +vt 0.437500 0.500000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.312500 0.375000 +vt 0.625000 0.375000 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vn 1.0000 -0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -1.0000 -0.0000 0.0000 +vn 0.0000 -0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s 1 +f 41/81/19 42/82/19 43/83/19 +f 44/84/20 45/85/20 41/86/20 +f 46/87/21 47/88/21 44/84/21 +f 43/89/22 48/90/22 46/91/22 +f 43/92/23 44/93/23 41/94/23 +f 48/95/24 45/85/24 47/96/24 +f 49/97/21 50/98/21 51/99/21 +f 52/100/22 53/101/22 50/102/22 +f 54/103/19 55/104/19 53/101/19 +f 56/105/20 51/106/20 55/107/20 +f 53/108/24 51/109/24 50/110/24 +f 52/100/23 56/111/23 54/112/23 +f 41/81/19 45/113/19 42/82/19 +f 44/84/20 47/88/20 45/85/20 +f 46/87/21 48/114/21 47/88/21 +f 43/89/22 42/115/22 48/90/22 +f 43/92/23 46/116/23 44/93/23 +f 48/95/24 42/115/24 45/85/24 +f 49/97/21 52/117/21 50/98/21 +f 52/100/22 54/103/22 53/101/22 +f 54/103/19 56/118/19 55/104/19 +f 56/105/20 49/119/20 51/106/20 +f 53/108/24 55/120/24 51/109/24 +f 52/100/23 49/119/23 56/111/23 diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenade.png deleted file mode 100644 index 519dd733df5eee017eca58c38aea779a0c0d5907..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)N2bZe?^J zG%hhNHDpIvQUCw~JV``BR9Hvtlrc-hKoEuVj|5Rv6hROyV7+F4p!_`jkr&I|8e_RJD29r(COZZb3bW_OD&JH9-soR_8b#=p2PTfA>KjWmGio?+4xrv;}##AJB=S{`dfK-Ryl8LTaADFc-`W2XSeYqO@C8qiAt<1Cx5Dd zCMH@y8zXq8f_HjU{pgao4cg|C>HQBPtkbY^TwL*(Z!VeM{~*FT4J$|U@tAKe zSziV49dgBEzIj1!D8f1o%0bO|%r}?ZM-pKz!v>}7EbgZZ$2h|0n=9a(GQwJhBZ^oQ zMl--0Kum=Hbc|r_8osaClMufjm=8_h8TdDdiSk7)hX*i$uGnLU-;h`UHy#S5@*{VY z|B=iC@FCF4#$$*p5NY!bg*+*x)8rmQw8rE=jHZhcXn?rE;~27J9B@e^n>MY-gMS!y664$Y$ zoibYV6I*K^l0Y$#Lpuo^<`n!EbG7!N2oS1KplnHd5C#Q*E96@HPy~8OEJ9K6^C;HZ zha%8R;%1{+B+zUj64CJxFiDx(b-y$a$EbiQP-+)p@t5+TrM2r&T3lX8C?lYZg3$J- z!yE)*U`(!_a{#C`s}Lf)mQsoXzAx|9-l2jBA@J(iYi+Z*_vlWc2?5y}SEDfqA>@@N z2Y?B85_|RU0DvHj3nbeFy41?#Q)?{ZcH%~(0pIrl0G{WeQmJHO@Ib#WNVkqf4G*P8e0b@+sCjH(h*FcV1jXFP67-#jH7gv&xKQ7Aq`AgsMZvV2pUt4|NbaM3FIXkWW;9T5F0#-haix9s~Kd(s<4;~Uat>M zATN2pBX)CbIypV=z$G>;=HmCSI&R$kl&Syv;(w_oB7^C)AfYTOg zhrV`=>vXyo*<71WswXJivL#vjegl8%BJ;8_x4KgTb_&66EzQe;b#>w^9A?9zHUbeN z2=%phm_ndd4{>|tb4H@AjhUq1mkMN>XZysMa7+L3FBDo2V`I@2)95Ky|GE>2;;u~-Kc9EI=BM=@gM&Htx9IfNF!d3czd%u`(tspo7vr&yUmd@9~^i4-t2qd zesAWzy&8s~xweuNZHuk%*qOWx0GOB@FWqzV&mKOVp927_KYLpn6rT`s1?IRJOOrwBpWp+RCOa530t$ic{!z7l0EcrzgY3(Bs z7$$MI(=8JSVuUh09RemPQ@id-{nJ#y6ezXJp!}pl##*}$wdUGN!fXm=Gf>w1c5DZJ z;2V>x=Ntg)-3Fx0uVswkK_=tZwGK(4u=xxa#3Bc&j=Vwkdu@5lDMv$ z`CZq|lBMz0`B5NXR>0&_vh<+o!PPv?JHmyP?R!?$1fix>d^~j2pLG@9#G{x z5c`WJNJ&L`6o4mcsOILF`C5pKQvnydf%(p>UzYp*ttK=G}n>WKBj2<@(fATio4 zPrHV*VVP38cLus#<27BM$)TW t1QEn&3kg4rD*d}r*Er diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeSleek.png deleted file mode 100644 index 581649526c56cce356cb43c4d82f881596dba5d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 823 zcmV-71IYY|P)=HZtr$76OyqQGMm{+c4y`6?!m(5Ws-dIeR(g5 zu)+p|LAB_6a6iKP54Af@)6SSDk1ITX6#)PylS#B}ezppLQrhu}1h8&GNVlH@9{1@1 zB=H=;*H1VHrRx6yh_nKwwX$04PQOta9{0ZitdiIm)9IJ0f-y@&-ydL=#7cFgmN`yO z0iVPGZ~VUgqC7h<0CkLQ9dJQD z?gD8_k>`0+N8H-c0?=CH@bJ)kVur(^cN=buEvyS{4{n;KI6giG02I=%3JdLWaaXP_ z##n2OvMiee$vH}pma@uP0x%Wp0 zU^E(4ZtB@n9SVUfXP)OxD!L2W|BV99{oz`$V1NE}rF!#j-hTN^;OUEbdpsWZD)tBa z!|L4m4UDdS@qQnygh@<O7^brt$8?wRN;YP08U%4 z8mV;eE7mo_1?16meSk&DWv+TDu(!KYUAmam8{h)Je@$`y#-lyKX)lwu;FyCEs)nu+5)~s}W09xf%te+*!mBX4WYJeqA1uuX|)?OcM zbCYBI^;%WOO+)4e*;JvB+IxR514!ca0nY5q{sIFrVUKCk0&M^Q002ovPDHLkV1jq1 Bb5H;P diff --git a/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png b/src/main/resources/assets/hbm/textures/entity/ModelGrenadeToxic.png deleted file mode 100644 index cd1064afc6432fdb9345cb0bbe4bbf3cd61a7a0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 868 zcmV-q1DpJbP)q9Sr|e}JNR2#Rox<<(m0A*WXy79z?a zSZOcF;T2XEo)%)|)s{BGsfA}F79z;Obz)eOon-REVmGssWU{}w@*adu-kZGl&G+WL zmu+E;tgf%*Rb6!c2iW&B0Dz;%+O>DY#a-~P3jl!4$1hr={F8A2s8e5(aZBl`Lu>Y& z+eZD201N@xFaUE{9iYXH`k4R_T3?cIOX;IHs@pSR)XxN99K|x0HG3pdv<&*00F0x! z7xe0Oks*=E!2oEYve26th@%5!z!bpN^fIpRREi9iL2r`Q>iSAf9Rli55ZeD`4nq`2 z#^6A?&H=#dbs%MVEu|FuVoyEmy+aowrNpa^H^ydh_sN}F69URP?j$E5rBqiD902C{ zJpOcl0|1gJg(d47B2Bvl%=8209LuyHI0yoSVF&zEK`1gN{($n zN{KKG6#xKm90!zARjy6lkrZ?p0~sg-DsOS#vfu(+jA2VsETKZ#WP*m!+?rv>cPoZY;4Lk+C>+)of@!(le!C`A&P zb5EECK=?7<-u_aeXl;8jpLEB1w@gHe`O_znWCE73AVmh@$F+ATw}t?8ItmH=zSBuQ zD)fVzbGxzLb?LKN0AO_h1$CzRT?3$Xzs%rkoDiK31z=FOlcYc&Fqy&ESOC03vHo!> uPcnf>q=VBdkwoc4|87btn1O*qIh6m{<9p;PwO>2{0000hPcG45q|Z|A+y<2oNqbMM~Ff8Naee;a{|fw5Ft z>mFHd-b4|Vk68gCCDRL%E;r2dynuuj&{uT%a9RPnL+5{I+ze9+;97i=&sYH4;L$gkpf8y-En8$S8nH_=lk~87K);%{U(IK?$h@H0(OopwwK$@ zV&9S`1OS^SZt-%IixIFb|1J1WxILk8Rxoeq}5=!0O-hagW0AkEPBW4df z-=Zjx=lNIw03=BQAq2?z0mPW=`m@&;K?2C2<_8dyUQZoQC4>-=^1owADc$Y?mL)Oi z^-TK!K#bf%N+~2sG8R-0jwO-)W^ME7nGxIt47>xI=U-Z%;n$TcE=ox(j@B<#*DGJH{}Fz(*Y!xG&ft;3ycnlN6@t z0_JeCrs9t6Fv{-noz!lvI6;>1s;*b3=DjSL74G){)!Z!;BHSB$B+p3w-XL>9yZ`{we|OtR7_w0P`Bpe z$;G8jPS*o}Du^Zu9ak08b>X+0sN)`ABv5oN#A{*HYxfg{_f~&=fBol8hNKI|k~*5Z8CC;e3wgRpEH}Yuay6$P}?V~x7=I4u6&a_ zJ4mVH^3OTB9G@i?-xatO(S3SbhoITDOQyjIN^Mee?j|=(D_gLb@$8Ro#t*HUSDtm8 zZCsh5UoLaJP$peYaSx-(i}bP0l+XlZ%9prCl=$YSq~rna_7C z@%jpU#>sonecwYVg=JZg-;FV+?jHa;?>#?vyP~y*wN}&!4ghi(2JsbzwE|~u4kIE4 zfEXjTZNomnOu1h*fihTDJB}j*z%)%&)dQC)@ZNI>fr*H<)=)|z#)z^%)^&YPq$UEm zmVHm{`#z#0A~wc|7$eHZ7$fc_Ruc&TAq2M8eoz}i`0?PtANUjAKtx=s-`ll$c?IOr zqP13(s!My{D`z=8tnB{%H2lVBHX4maqw&9Z10i;!az4n+y8r+H07*qoM6N<$f)((P Ap#T5? diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketEMP.png deleted file mode 100644 index 5dcff98f237bba5d8d09525349aae9fe68626b1f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;2KXC$B+p3w-aKym=$?iitXZSJ~;0AdoQ7X zf>DB(SA>5M*iHZ&*y*M%8+!yNOEWJ?Y-wcK2NmX zdRM8h`K8Uw89z78W0LxIVcF##)4iO_{qH(0YgzcG?=NGu-PGBc-kLmDix}r}CdxTQ zNH|Gn=Q{QnY!tg8#H5zA;^4h{mJK%?)-&lnR%c?E;k4}@laFip*2flok1Z}MR56^% zD6Uy~c%mK9-3*?telF{r5}JTa`4ZQN65srk)EtJ8)Z~o3RQ;g*!lvI6;>1s;*b3=DjSL74G){)!Z!;9gG`$B+p3w-XL>9yZ`{we?Y$5V)r;{e-G` ze9_6Sy9<=REcxW9bx5VpTPJ9RT#Zs>-@YdbPb!y{MrNG;srQmmkth40I)9eL`?d=(t^N!8h%)2{3)_GgY!aaUJnNs&^ zSKnSXh2zl{`*i6;Hpeo|Tg32n4IMl!FI;R$`*Vch#~~4| z;v>%vglw5^-S^m{?{dGuy%lF-51pFYydCHf22WQ%mvv4FO+co6iEBiOZ+=Q@4ns(4 Yaz!lvI6;>1s;*b3=DjSL74G){)!Z!;C4?J$B+p3w-X$>m<>5xZR5=%Qv{3dt=s*c zx2i$zz$Zs`PUD$VI=2MK*SIAgTd%14{LE63bzAeC`aTEx*6lxcoh_hw;>k0zncppq z&!)fgu$G@^{^L2rZ!lvI6;>1s;*b3=DjSL74G){)!Z!;C4?J$B+p3w-XGx4jb^emTu6CwW|2|;NXvM zdmZ~1d~)PEq|)cD6SYFFMk%syUrJEXxfrj9QLojWSjb;}^8Iy9E`zDW%rkc;md!W5 zT=T4N%jbuc%5`@;e>&zQYsNG4s@fcxrDwctPVSDH*MhrLdA^qZ5`Xd9`{wO!TaQgx z^4jvYz%xzN{fcWgPMuO4sGO6Nn!WCT3$L!l?|#OrUyXfiC6CqF4u~%cn6F&MzHHTA z8;&Lgj;2z9y^N+>))t;-TIYdYVDNPHb6Mw<&;(@4m$*ih_~xgi<}ie$CTHZO>IdZ~ QXQ!6vgT)|h(e1I`06%ViX#fBK diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketNuclear.png deleted file mode 100644 index 81bf7d0e578159115f5cae555ba369d9834a0648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmV--0f_#IP))jvKrY3KwxT* zC%8vAB<4hGDiO>vz)-h{G`(>B3r&a4kWXE*oBM5k*+iJo?RE61zEA!1fa~@lci9KU z^Cxe`7=T5w+nak~18SQr_JMSJ9kqjH4y?-gtrLImz&c4;f}R}1`58Puf&G?fz4gne zWeK`Et)$h2MvV9n2iR+0B0t%oFX8F`suP+UM}{MKd4+0$7B}v-09VZJ_Tnm5fQNqS zb@wp21zCa)QdD!a)imP6k(sxN@5Ojph))Dc+h>BF&wH+h=BPx-ApKrMBQ9fGtw3{Q ze|6p-$yUYLftPTGsw0aW^2KgC0Hz1rKColodUHG6Z9a+2ZE(lFiwFb)fk5DY^98$S Vm~P`~2!;Rv002ovPDHLkV1mTyqwN3y diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketPhosphorus.png deleted file mode 100644 index 30a9c896dc752ec63c9617ffbdc56138aa75cbfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmV-I0lof-P)+-vRh*ZCMsU1BaG}dmyZ}F$LEgxV7iM zPCVU#dx=V^sI`v8eKP`x=j$y2NGSnu&NVe&&LN4ox5A#up;CED974c*pY~ihP+9NF zF9(b<(HPU^%uCW&@SRj^jg*oQ0(|uc0PDK)2oVB)Y%l43-c?d^rBuwvHDNtDrsUrH zi)xdINAr4rLalYot1si;Jl%m~ZPI%$@~ZQ=?3GrkFUz~%IVZ}vr+~p=Fc=I5pX}m| UImPg1kN^Mx07*qoM6N<$f>RZZ_y7O^ diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketShrapnel.png deleted file mode 100644 index 62fa9befdb2d0fdce8efa0276a40c993b2d67a6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;08|@$B+p3w-da%niY9kil;a&Y%hF#sI}tv zy#?+bk_M{0^;d(owmxfSe5`Cdu|-08`4o%ie+07LY(Mwv^ZB1q42Bsqd+w}!doO*- z&l7WRPLMif%Qa+ZjAv{an^LB{Tt<@+GbjCBFG7sW}WGsmU36sro_r$=RtT`d~2# JTXcJ@Hvp~ldr<%Y diff --git a/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png b/src/main/resources/assets/hbm/textures/entity/ModelRocketSleek.png deleted file mode 100644 index cd8b7015351e2ab6b4de32cc6fe56aa5085fc60a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DjSL74G){)!Z!;6_gu$B+p3w-c?o4jTx#TxGk&)%5F&RfG23 z|6FY5jdz?9&v>m7k8F&P=lGq#_4Za(a*jmdUAc>v)05Zs&QM@!6-Wf#( zX-{a9tY#Xeni;hc|e z^tUc4spL>pD#_uWeky@~=l6a2oiC^CtC3KBctPkgx5tv2ikUB28J5K8obOts(Y5Fg z=dl`w#23p~*lhda0CYTqr>mdKI;VstAXC1?HKN2fKP5GXAtW_9BQI4yC_gznwL~8* L24RbCkM#xsaI?Gwv?1YX}Qw`P2|3v#FGw+pO4OX za8HCGk4FIhK4mP-Ebr^ydzp{VxsHV-wAK(20FXP7%j-r&KoUqk869Q1fn=H)NJ0`M zEuS+PNGiSeM{})pX>v#&O-RDs-H7C aXSo4C+fl<76S%_w0000@{jUH@o0?V-nDygLaH>;on>3P zCX@(10Ydt}u${K^s2RxCT1Lb&^8QWq-ZjP$prc8EETyFFrAc0Qh;0D^6cMVmUe;bF xcaU3P6`2CN>r9cI!%h+4?8&~!ar0yG0SSXj5)*QpU;qFB00>D%PDHLkV1kltLU{lH diff --git a/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png b/src/main/resources/assets/hbm/textures/items/ammo_standard.p22_fmj.png index 1112b26c1c7f0a90af37e90dac2b028f4ff0d471..cfe452c8d451654dee7e45633f7bc7ecfc7df2a0 100644 GIT binary patch delta 198 zcmX@W_=$0XN&QMs7sn8b-sA*{PYr@Ig{7o^$sdc`TV<-etjOm;)0xVzuSA_gLq!k2 zy}eyhLPFx7a59JRt^**RUEQA(3TkR?kCYb06nuE#=*Gs@_TS3NiYF*2hzA6wXGi{f zZTA1*OChlm#umdKI;Vst0I`x&4FCWD delta 148 zcmV;F0Bis90l)!}G=FzVL_t(IjbmUKejqe7^nYk*=zn6>vmkTq?d|`kq@*z1zI~g4 zfq~)w>eZ_m2^qkIE^zzyZHA8@KQf4ki7{NRWg*%nD6YuP&i;S7mgWEd_xAtEGGu=w z!~dsC#Qy(0rZZ{?njusP*!__Vq-#btglx?;0{|#9Y9;|`-VM+I00003GE8QBoBHPZ|L Y0Bt{FaR2CHcK`qY07*qoM6N<$f--y95pr?fHG`fWAi4Bc(+=H;P_LKE6{ME)iGv_qf8jvqyjuhYEI1 zV_mN(p$C>c{yiToDX^||mgDjhvlb{u9Q^0eX7S&DddJ`Yl|Ik^|Ns8&e|x9m^z29t n^OSlO=9jZ3@+w9fpJiZhd6@Ay|B@sR0}yz+`njxgN@xNA2qImV delta 148 zcmV;F0Bis20l)!}G=FzVL_t(IjbmUKejwLL^?$CD>VIO@vmkSP^rZgBSSd3+`|^*0 zfq~)wmT_sSQy80000hPT^Gl3kiP?LZ*LPt(bDlpM@L&pe`Awqt8{W*mvXrbK(E(R&*L}-7Atvt zd^}oP!j#Fa(n%`cY&KIBW)mb%fOPj>uSXb$0630Axm;FD;%_E#0w$FdLJ$N2g+d`! zp{|mZmO!u9BM1Tj_V)Ht73iv2X##>EU~g{^UDs(goBa6kBW<~^jFnCSskj=XX;Y`c z->};+V(awuR0(fc7I7S77{*kmD2mwG*`eKT69fT52-SBm7y!`k_krdhG9^tRJeQhE&%7}=k)u1 zWl6_zFbsnzifFZ32qA#+WK1%t{3J4x+$1^EG}Q-P*NNkpIF4~$S9!+g&!5$I0oQf; z`ST|*J{}v52CnO>ak{S4?REi>@4n8Fq~`lRLJ0EtJaHW3`#!_r5XW)Y+1UZ$=FOY< zzE2PY^m;ut5dgMrBZQ#a?GlC|rfFiDCQ%frF@-`wMUsYL;5d$YwrMmNyQtihr0ZLj z#qRDdrfG6~dz2fZbjE^5bqU$=lySv13tj5ZBNv?AwshOsU z@B8HQdA@!7#{T|3x~|i1x9N7fn5IdsR+}31;ll?2o;-Pi=Xu0&OtDx*2*H;xU$}Sg zo>~rZ94o7Po=3CUWH1;^ZM>UA^L-x}Z-7#$;c%$d_4n`JdGzR!iVG~uqTB6a+qT;5 zgb?Zkc=+(4dSAQU2Eh0I3z6jc`T2#@A|oRsBO@atBO@atBO~K#NW7EJ>I2B?1FrS0 z?z&|40ZARQ`T(x?t?s&H^#QAN`lssyUcY`lg7H;2%+C%ls}Gn=r?*-yl@`zC#?B?L z%NNBFFJ8RZXq<4t17vns2!UjN5%20;+0f*pG7=-_UuwU;mw;jBN;acAs7q>^!t5sxg4fxUa)N1 z^5x)nXu7DqOl;f6aU6!jp>k&#OUV6bmNezlV0`1#>-FZgNmQ%V(PYSM+cp4)hlf*^ zsnu#DfKQ)3O^uiRVH`8m>-EvBV(ZA4gyy;~g+hTvZ4xIZCsT@6tJM*V6_%4wtJOww zf@b?qB9)(FMbx&70(;jdNXA$_pfs_Dyn{{09y8(VWiMMYsR}002ovPDHLkV1iY7_1^#h literal 0 HcmV?d00001