From 976e0dba37eaa251a4dd8078cbce0738d605f7ff Mon Sep 17 00:00:00 2001 From: Boblet Date: Tue, 5 Dec 2023 16:39:03 +0100 Subject: [PATCH] decoy missile, recipe stuff --- changelog | 4 + .../java/com/hbm/crafting/WeaponRecipes.java | 2 +- .../java/com/hbm/entity/EntityMappings.java | 1 + .../entity/grenade/EntityGrenadeIFNull.java | 75 +++++++++--------- .../entity/missile/EntityMissileTier1.java | 9 +++ .../inventory/recipes/ArcWelderRecipes.java | 14 ++++ .../inventory/recipes/AssemblerRecipes.java | 24 ------ src/main/java/com/hbm/items/ModItems.java | 3 + src/main/java/com/hbm/main/ClientProxy.java | 1 + .../java/com/hbm/main/ResourceManager.java | 1 + .../entity/rocket/RenderMissileGeneric.java | 21 ++--- .../tileentity/RenderLaunchPadTier1.java | 7 ++ .../tileentity/bomb/TileEntityLaunchPad.java | 1 + src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/items/fuel_tank_large.png | Bin 269 -> 278 bytes .../textures/items/fuel_tank_large_alt.png | Bin 203 -> 0 bytes .../hbm/textures/items/fuel_tank_medium.png | Bin 362 -> 384 bytes .../textures/items/fuel_tank_medium_alt.png | Bin 278 -> 0 bytes .../hbm/textures/items/fuel_tank_small.png | Bin 292 -> 306 bytes .../textures/items/fuel_tank_small_alt.png | Bin 291 -> 0 bytes .../hbm/textures/items/fuelcell_arsenic.png | Bin 293 -> 0 bytes .../hbm/textures/items/fuelcell_base.png | Bin 258 -> 0 bytes .../hbm/textures/items/fuelcell_euphemium.png | Bin 300 -> 0 bytes .../hbm/textures/items/fuelcell_neptunium.png | Bin 287 -> 0 bytes .../hbm/textures/items/fuelcell_plutonium.png | Bin 280 -> 0 bytes .../hbm/textures/items/fuelcell_selenium.png | Bin 294 -> 0 bytes .../hbm/textures/items/fuelcell_u235.png | Bin 280 -> 0 bytes .../hbm/textures/items/fuelcell_u238m2.png | Bin 293 -> 0 bytes .../hbm/textures/items/missile_decoy.png | Bin 0 -> 364 bytes .../hbm/textures/items/thruster_large.png | Bin 461 -> 465 bytes .../hbm/textures/items/thruster_large_alt.png | Bin 288 -> 0 bytes .../hbm/textures/items/thruster_medium.png | Bin 399 -> 430 bytes .../textures/items/thruster_medium_alt.png | Bin 272 -> 0 bytes .../hbm/textures/items/thruster_small.png | Bin 326 -> 469 bytes .../hbm/textures/items/thruster_small_alt.png | Bin 263 -> 0 bytes .../hbm/textures/models/missile_v2_decoy.png | Bin 0 -> 915 bytes 37 files changed, 93 insertions(+), 72 deletions(-) delete mode 100644 src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuel_tank_medium_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuel_tank_small_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_base.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_u235.png delete mode 100644 src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png create mode 100644 src/main/resources/assets/hbm/textures/items/missile_decoy.png delete mode 100644 src/main/resources/assets/hbm/textures/items/thruster_large_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/thruster_medium_alt.png delete mode 100644 src/main/resources/assets/hbm/textures/items/thruster_small_alt.png create mode 100644 src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png diff --git a/changelog b/changelog index 1abab46d5..ee9dd2d76 100644 --- a/changelog +++ b/changelog @@ -10,6 +10,8 @@ * Exposure chamber * Now performs the particle transmutation recipes that were previously done in the crafting table * Stylish as hell +* Decoy missile + * A cheap tier 1 missile that shows up on radar screens as tier 4 (eg. nuclear) missiles ## Changed * Reduced the blast resistance of the large doors from absurdly high to still very but not quite as high @@ -25,6 +27,8 @@ * Explosions now have a 2x larger entity damage radius * Updated the digiminer recipe for mekanism compat * Added config options to the ground water pumps +* Missile parts such as non-custom thrusters and fuselages are now made in the arc welder, recipe ingredients have been adjusted as well +* Null grenades now have a slightly larger radius, should no longer wipe playerdata and require UNDEFINED to make ## Fixed * Fixed ancient bug where custom missiles launched using the launch table would not use the accuracy calculation and always be pin-point accurate diff --git a/src/main/java/com/hbm/crafting/WeaponRecipes.java b/src/main/java/com/hbm/crafting/WeaponRecipes.java index aa58d5393..0ed6e8a9c 100644 --- a/src/main/java/com/hbm/crafting/WeaponRecipes.java +++ b/src/main/java/com/hbm/crafting/WeaponRecipes.java @@ -394,7 +394,7 @@ public class WeaponRecipes { CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_mystery, 1), new Object[] { "A", "G", "A", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_magic }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_spark, 1), new Object[] { " A ", "AGA", " A ", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_spark_mix }); CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_hopwire, 1), new Object[] { " A ", "AGA", " A ", 'G', ModItems.grenade_if_generic, 'A', ModItems.powder_power }); - CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', Blocks.obsidian, 'B', BIGMT.ingot() }); + CraftingManager.addRecipeAuto(new ItemStack(ModItems.grenade_if_null, 1), new Object[] { "BAB", "AGA", "BAB", 'G', ModItems.grenade_if_generic, 'A', ModItems.undefined, 'B', BIGMT.ingot() }); //Mines CraftingManager.addRecipeAuto(new ItemStack(ModBlocks.mine_ap, 4), new Object[] { "C", "P", "T", 'C', ModItems.circuit_targeting_tier2, 'P', IRON.plate(), 'T', ANY_PLASTICEXPLOSIVE.ingot() }); diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 18d585624..16a452ba5 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -58,6 +58,7 @@ public class EntityMappings { addEntity(EntityGrenadeNuke.class, "entity_grenade_nuke", 500); addEntity(EntitySchrab.class, "entity_schrabnel", 500); addEntity(EntityMissileGeneric.class, "entity_missile_generic", 1000); + addEntity(EntityMissileDecoy.class, "entity_missile_decoy", 1000); addEntity(EntityMissileStrong.class, "entity_missile_strong", 1000); addEntity(EntityMissileNuclear.class, "entity_missile_nuclear", 1000); addEntity(EntityMissileCluster.class, "entity_missile_cluster", 1000); diff --git a/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java b/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java index 601381cee..98da6e84c 100644 --- a/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java +++ b/src/main/java/com/hbm/entity/grenade/EntityGrenadeIFNull.java @@ -8,52 +8,51 @@ import com.hbm.items.weapon.ItemGrenade; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLivingBase; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.DamageSource; import net.minecraft.world.World; public class EntityGrenadeIFNull extends EntityGrenadeBouncyBase { - public EntityGrenadeIFNull(World p_i1773_1_) - { - super(p_i1773_1_); - } + public EntityGrenadeIFNull(World world) { + super(world); + } - public EntityGrenadeIFNull(World p_i1774_1_, EntityLivingBase p_i1774_2_) - { - super(p_i1774_1_, p_i1774_2_); - } + public EntityGrenadeIFNull(World world, EntityLivingBase thrower) { + super(world, thrower); + } - public EntityGrenadeIFNull(World p_i1775_1_, double p_i1775_2_, double p_i1775_4_, double p_i1775_6_) - { - super(p_i1775_1_, p_i1775_2_, p_i1775_4_, p_i1775_6_); - } + public EntityGrenadeIFNull(World world, double x, double y, double z) { + super(world, x, y, z); + } - @Override - public void explode() { - - if (!this.worldObj.isRemote) - { - this.setDead(); + @Override + public void explode() { - for(int a = -3; a <= 3; a++) - for(int b = -3; b <= 3; b++) - for(int c = -3; c <= 3; c++) - worldObj.setBlockToAir((int)posX + a, (int)posY + b, (int)posZ + c); - - List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox((int)posX + 0.5 - 3, (int)posY + 0.5 - 3, (int)posZ + 0.5 - 3, (int)posX + 0.5 + 3, (int)posY + 0.5 + 3, (int)posZ + 0.5 + 3)); - - for(Object o : list) { - if(o instanceof EntityLivingBase) { - EntityLivingBase e = (EntityLivingBase)o; - - e.setHealth(0); - } else if(o instanceof Entity) { - Entity e = (Entity)o; - - e.setDead(); - } - } - } - } + if(!this.worldObj.isRemote) { + this.setDead(); + + int range = 5; + + for(int a = -range; a <= range; a++) + for(int b = -range; b <= range; b++) + for(int c = -range; c <= range; c++) + worldObj.setBlockToAir((int) Math.floor(posX + a), (int) Math.floor(posY + b), (int) Math.floor(posZ + c)); + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, + AxisAlignedBB.getBoundingBox((int) posX + 0.5 - 3, (int) posY + 0.5 - 3, (int) posZ + 0.5 - 3, (int) posX + 0.5 + 3, (int) posY + 0.5 + 3, (int) posZ + 0.5 + 3)); + + for(Object o : list) { + if(o instanceof EntityLivingBase) { + EntityLivingBase e = (EntityLivingBase) o; + e.setHealth(0); + e.onDeath(DamageSource.outOfWorld); + } else if(o instanceof Entity) { + Entity e = (Entity) o; + e.setDead(); + } + } + } + } @Override protected int getMaxTimer() { diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index 92ebec3f2..6fb39039e 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -47,6 +47,15 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.warhead_generic_small); } } + public static class EntityMissileDecoy extends EntityMissileTier1 { + public EntityMissileDecoy(World world) { super(world); } + public EntityMissileDecoy(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public void onImpact() { worldObj.newExplosion(this, posX, posY, posZ, 4F, false, false); } + @Override public ItemStack getDebrisRareDrop() { return new ItemStack(ModItems.ingot_steel); } + @Override public String getUnlocalizedName() { return "radar.target.tier4"; } + @Override public int getBlipLevel() { return IRadarDetectableNT.TIER4; } + } + public static class EntityMissileIncendiary extends EntityMissileTier1 { public EntityMissileIncendiary(World world) { super(world); } public EntityMissileIncendiary(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } diff --git a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java index 3c3632c9c..180c6981d 100644 --- a/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/ArcWelderRecipes.java @@ -13,6 +13,7 @@ import com.google.gson.JsonObject; import com.google.gson.stream.JsonWriter; import com.hbm.blocks.ModBlocks; import com.hbm.inventory.FluidStack; +import com.hbm.inventory.OreDictManager; import com.hbm.inventory.RecipesCommon.AStack; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.RecipesCommon.OreDictStack; @@ -31,16 +32,19 @@ public class ArcWelderRecipes extends SerializableRecipe { @Override public void registerDefaults() { + //Parts recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 200L, new OreDictStack(IRON.plate(), 2), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.motor, 2), 100, 400L, new OreDictStack(STEEL.plate(), 1), new ComparableStack(ModItems.coil_copper), new ComparableStack(ModItems.coil_copper_torus))); + //Dense Wires recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_ALLOY.id), 100, 10_000L, new ComparableStack(ModItems.wire_advanced_alloy, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.wire_dense, 1, Mats.MAT_GOLD.id), 100, 10_000L, new ComparableStack(ModItems.wire_gold, 8))); + //Circuits recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_copper), 100, 1_000L, new FluidStack(Fluids.GAS, 100), new ComparableStack(ModItems.circuit_aluminium, 1), new OreDictStack(NETHERQUARTZ.dust()), new ComparableStack(ModItems.wire_copper, 8))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.circuit_red_copper), 100, 2_500L, new FluidStack(Fluids.PETROLEUM, 100), @@ -76,11 +80,21 @@ public class ArcWelderRecipes extends SerializableRecipe { recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.plate_welded, 1, Mats.MAT_OSMIRIDIUM.id), 6_000, 20_000_000L, new FluidStack(Fluids.REFORMGAS, 16_000), new OreDictStack(OSMIRIDIUM.plateCast(), 2))); + //Missile Parts + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_small), 60, 1_000L, new OreDictStack(STEEL.plate(), 4), new ComparableStack(ModItems.wire_aluminium, 4), new OreDictStack(CU.plate(), 4))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_medium), 100, 2_000L, new OreDictStack(STEEL.plate(), 8), new ComparableStack(ModItems.motor, 1), new OreDictStack(GRAPHITE.ingot(), 8))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.thruster_large), 200, 5_000L, new OreDictStack(DURA.ingot(), 12), new ComparableStack(ModItems.motor, 2), new OreDictStack(OreDictManager.getReflector(), 16))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_small), 60, 1_000L, new OreDictStack(Fluids.ETHANOL.getDict(1_000), 6), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_medium), 100, 2_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 8), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.fuel_tank_large), 200, 5_000L, new OreDictStack(Fluids.KEROSENE.getDict(1_000), 12), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8))); + + //Missiles recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_generic), 100, 5_000L, new ComparableStack(ModItems.warhead_generic_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary), 100, 5_000L, new ComparableStack(ModItems.warhead_incendiary_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_cluster), 100, 5_000L, new ComparableStack(ModItems.warhead_cluster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_buster), 100, 5_000L, new ComparableStack(ModItems.warhead_buster_small), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); + recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_decoy), 60, 2_500L, new OreDictStack(STEEL.ingot()), new ComparableStack(ModItems.fuel_tank_small), new ComparableStack(ModItems.thruster_small))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_generic_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); recipes.add(new ArcWelderRecipe(new ItemStack(ModItems.missile_incendiary_strong), 200, 10_000L, new ComparableStack(ModItems.warhead_incendiary_medium), new ComparableStack(ModItems.fuel_tank_medium), new ComparableStack(ModItems.thruster_medium))); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index fb559fa5d..6e69849c6 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -197,12 +197,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModItems.warhead_volcano, 1), new AStack[] {new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 16), new ComparableStack(ModBlocks.det_nuke, 3), new OreDictStack(U238.block(), 24), new ComparableStack(ModItems.circuit_tantalium, 5) }, 600); makeRecipe(new ComparableStack(ModItems.warhead_thermo_endo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_endo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); makeRecipe(new ComparableStack(ModItems.warhead_thermo_exo, 1), new AStack[] {new ComparableStack(ModBlocks.therm_exo, 2), new OreDictStack(TI.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1) },300); - makeRecipe(new ComparableStack(ModItems.fuel_tank_small, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 6, Fluids.ETHANOL.getID()), new OreDictStack(TI.plate(), 6), new OreDictStack(STEEL.plate(), 2), },100); - makeRecipe(new ComparableStack(ModItems.fuel_tank_medium, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 8, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 12), new OreDictStack(STEEL.plate(), 4), },150); - makeRecipe(new ComparableStack(ModItems.fuel_tank_large, 1), new AStack[] {new ComparableStack(ModItems.canister_full, 12, Fluids.KEROSENE.getID()), new OreDictStack(TI.plate(), 24), new OreDictStack(STEEL.plate(), 8), },200); - makeRecipe(new ComparableStack(ModItems.thruster_small, 1), new AStack[] {new OreDictStack(STEEL.plate(), 4), new OreDictStack(W.ingot(), 4), new ComparableStack(ModItems.wire_aluminium, 4), },100); - makeRecipe(new ComparableStack(ModItems.thruster_medium, 1), new AStack[] {new OreDictStack(STEEL.plate(), 8), new OreDictStack(W.ingot(), 8), new ComparableStack(ModItems.motor, 1), new ComparableStack(ModItems.wire_copper, 16), },150); - makeRecipe(new ComparableStack(ModItems.thruster_large, 1), new AStack[] {new OreDictStack(DURA.ingot(), 16), new OreDictStack(W.ingot(), 16), new ComparableStack(ModItems.motor, 2), new ComparableStack(ModItems.wire_gold, 32), new ComparableStack(ModItems.circuit_red_copper, 1), },200); makeRecipe(new ComparableStack(ModItems.thruster_nuclear, 1), new AStack[] {new OreDictStack(DURA.ingot(), 32), new OreDictStack(B.ingot(), 8), new OreDictStack(PB.plate(), 16), new ComparableStack(ModItems.pipes_steel), new ComparableStack(ModItems.circuit_gold, 1) },600); makeRecipe(new ComparableStack(ModItems.sat_base, 1), new AStack[] {new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.plate_desh, 4), new ComparableStack(ModItems.hull_big_titanium, 3), new ComparableStack(ModItems.fluid_barrel_full, 1, Fluids.KEROSENE.getID()), new ComparableStack(ModItems.photo_panel, 24), new ComparableStack(ModItems.board_copper, 12), new ComparableStack(ModItems.circuit_gold, 6), new ComparableStack(ModItems.battery_lithium_cell_6, 1), },500); makeRecipe(new ComparableStack(ModItems.sat_head_mapper, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(STEEL.plate(), 6), new ComparableStack(ModItems.hull_small_steel, 3), new ComparableStack(ModItems.plate_desh, 2), new ComparableStack(ModItems.circuit_gold, 2), new OreDictStack(RUBBER.ingot(), 12), new OreDictStack(REDSTONE.dust(), 6), new ComparableStack(Items.diamond, 1), new ComparableStack(Blocks.glass_pane, 6), },400); @@ -325,24 +319,6 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.therm_exo, 1), new AStack[] {new OreDictStack(TI.plate(), 12), new OreDictStack(P_RED.dust(), 32), new ComparableStack(ModItems.circuit_gold, 1), new ComparableStack(ModItems.coil_gold, 4), },250); makeRecipe(new ComparableStack(ModBlocks.launch_pad, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate(), 12), new ComparableStack(ModBlocks.machine_battery, 1), new ComparableStack(ModItems.circuit_gold, 2), },250); makeRecipe(new ComparableStack(ModItems.spawn_chopper, 1), new AStack[] {new ComparableStack(ModItems.chopper_blades, 5), new ComparableStack(ModItems.chopper_gun, 1), new ComparableStack(ModItems.chopper_head, 1), new ComparableStack(ModItems.chopper_tail, 1), new ComparableStack(ModItems.chopper_torso, 1), new ComparableStack(ModItems.chopper_wing, 2), },300); - //makeRecipe(new ComparableStack(ModItems.missile_generic, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_incendiary, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_buster, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_small, 1), new ComparableStack(ModItems.fuel_tank_small, 1), new ComparableStack(ModItems.thruster_small, 1), new OreDictStack(TI.plate(), 6), new ComparableStack(ModItems.circuit_targeting_tier1, 1), },200); - //makeRecipe(new ComparableStack(ModItems.missile_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_incendiary_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_cluster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_buster_strong, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_medium, 1), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_emp_strong, 1), new AStack[] {new ComparableStack(ModBlocks.emp_bomb, 3), new ComparableStack(ModItems.fuel_tank_medium, 1), new ComparableStack(ModItems.thruster_medium, 1), new OreDictStack(TI.plate(), 10), new OreDictStack(STEEL.plate(), 14), new ComparableStack(ModItems.circuit_targeting_tier2, 1), },250); - //makeRecipe(new ComparableStack(ModItems.missile_burst, 1), new AStack[] {new ComparableStack(ModItems.warhead_generic_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_inferno, 1), new AStack[] {new ComparableStack(ModItems.warhead_incendiary_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_rain, 1), new AStack[] {new ComparableStack(ModItems.warhead_cluster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_drill, 1), new AStack[] {new ComparableStack(ModItems.warhead_buster_large, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier3, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_nuclear, 1), new AStack[] {new ComparableStack(ModItems.warhead_nuclear, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },500); - //makeRecipe(new ComparableStack(ModItems.missile_nuclear_cluster, 1), new AStack[] {new ComparableStack(ModItems.warhead_mirv, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - //makeRecipe(new ComparableStack(ModItems.missile_volcano, 1), new AStack[] {new ComparableStack(ModItems.warhead_volcano, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 20), new OreDictStack(STEEL.plate(), 24), new OreDictStack(AL.plate(), 16), new ComparableStack(ModItems.circuit_targeting_tier5, 1), },600); - //makeRecipe(new ComparableStack(ModItems.missile_endo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_endo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); - //makeRecipe(new ComparableStack(ModItems.missile_exo, 1), new AStack[] {new ComparableStack(ModItems.warhead_thermo_exo, 1), new ComparableStack(ModItems.fuel_tank_large, 1), new ComparableStack(ModItems.thruster_large, 1), new OreDictStack(TI.plate(), 14), new OreDictStack(STEEL.plate(), 20), new OreDictStack(AL.plate(), 12), new ComparableStack(ModItems.circuit_targeting_tier4, 1), },350); makeRecipe(new ComparableStack(ModItems.gun_defabricator, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 2), new OreDictStack(ANY_PLASTIC.ingot(), 8), new OreDictStack(IRON.plate(), 5), new ComparableStack(ModItems.mechanism_special, 3), new ComparableStack(Items.diamond, 1), new ComparableStack(ModItems.plate_dalekanium, 3), },200); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo, 24), new AStack[] {new OreDictStack(STEEL.plate(), 2), new OreDictStack(REDSTONE.dust(), 1), new ComparableStack(Items.glowstone_dust, 1), },50); makeRecipe(new ComparableStack(ModItems.gun_osipr_ammo2, 1), new AStack[] {new OreDictStack(CMB.plate(), 4), new OreDictStack(REDSTONE.dust(), 7), new ComparableStack(ModItems.powder_power, 3), },200); diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 6f74b43d8..539beed9e 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1294,6 +1294,7 @@ public class ModItems { public static Item missile_incendiary; public static Item missile_cluster; public static Item missile_buster; + public static Item missile_decoy; public static Item missile_strong; public static Item missile_incendiary_strong; public static Item missile_cluster_strong; @@ -3909,6 +3910,7 @@ public class ModItems { missile_incendiary = new Item().setUnlocalizedName("missile_incendiary").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_incendiary"); missile_cluster = new Item().setUnlocalizedName("missile_cluster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_cluster"); missile_buster = new Item().setUnlocalizedName("missile_buster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_buster"); + missile_decoy = new Item().setUnlocalizedName("missile_decoy").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_decoy"); missile_strong = new Item().setUnlocalizedName("missile_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_strong"); missile_incendiary_strong = new Item().setUnlocalizedName("missile_incendiary_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_incendiary_strong"); missile_cluster_strong = new Item().setUnlocalizedName("missile_cluster_strong").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_cluster_strong"); @@ -6810,6 +6812,7 @@ public class ModItems { //Missiles GameRegistry.registerItem(missile_generic, missile_generic.getUnlocalizedName()); GameRegistry.registerItem(missile_anti_ballistic, missile_anti_ballistic.getUnlocalizedName()); + GameRegistry.registerItem(missile_decoy, missile_decoy.getUnlocalizedName()); GameRegistry.registerItem(missile_incendiary, missile_incendiary.getUnlocalizedName()); GameRegistry.registerItem(missile_cluster, missile_cluster.getUnlocalizedName()); GameRegistry.registerItem(missile_buster, missile_buster.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index b970e1474..2a8e88ddb 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -664,6 +664,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityTestMissile.class, new RenderTestMissile()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCustom.class, new RenderMissileCustom()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileGeneric.class, new RenderMissileGeneric()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileDecoy.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileAntiBallistic.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileIncendiary.class, new RenderMissileGeneric()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileCluster.class, new RenderMissileGeneric()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 10f658ff5..9816aee87 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1185,6 +1185,7 @@ public class ResourceManager { public static final ResourceLocation missileV2_IN_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_inc.png"); public static final ResourceLocation missileV2_CL_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_cl.png"); public static final ResourceLocation missileV2_BU_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_bu.png"); + public static final ResourceLocation missileV2_decoy_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_v2_decoy.png"); public static final ResourceLocation missileAA_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_abm.png"); public static final ResourceLocation missileStrong_HE_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong.png"); public static final ResourceLocation missileStrong_EMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_strong_emp.png"); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java index 64051609e..1dff79e27 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileGeneric.java @@ -23,21 +23,24 @@ public class RenderMissileGeneric extends Render { GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * interp - 90.0F, 0.0F, 1.0F, 0.0F); GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * interp, 0.0F, 0.0F, 1.0F); - if(entity instanceof EntityMissileGeneric) - bindTexture(ResourceManager.missileV2_HE_tex); - if(entity instanceof EntityMissileIncendiary) - bindTexture(ResourceManager.missileV2_IN_tex); - if(entity instanceof EntityMissileCluster) - bindTexture(ResourceManager.missileV2_CL_tex); - if(entity instanceof EntityMissileBunkerBuster) - bindTexture(ResourceManager.missileV2_BU_tex); - if(entity instanceof EntityMissileAntiBallistic) { bindTexture(ResourceManager.missileAA_tex); GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileABM.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } else { + + if(entity instanceof EntityMissileGeneric) + bindTexture(ResourceManager.missileV2_HE_tex); + if(entity instanceof EntityMissileIncendiary) + bindTexture(ResourceManager.missileV2_IN_tex); + if(entity instanceof EntityMissileCluster) + bindTexture(ResourceManager.missileV2_CL_tex); + if(entity instanceof EntityMissileBunkerBuster) + bindTexture(ResourceManager.missileV2_BU_tex); + if(entity instanceof EntityMissileDecoy) + bindTexture(ResourceManager.missileV2_decoy_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); diff --git a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java index b7159a7bb..8b6e245aa 100644 --- a/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java +++ b/src/main/java/com/hbm/render/tileentity/RenderLaunchPadTier1.java @@ -38,6 +38,13 @@ public class RenderLaunchPadTier1 extends TileEntitySpecialRenderer { ResourceManager.missileV2.renderAll(); GL11.glShadeModel(GL11.GL_FLAT); } + if(toRender.getItem() == ModItems.missile_decoy) { + GL11.glScalef(1.0F, 1.0F, 1.0F); + bindTexture(ResourceManager.missileV2_decoy_tex); + GL11.glShadeModel(GL11.GL_SMOOTH); + ResourceManager.missileV2.renderAll(); + GL11.glShadeModel(GL11.GL_FLAT); + } if(toRender.getItem() == ModItems.missile_strong) { GL11.glScalef(1.5F, 1.5F, 1.5F); bindTexture(ResourceManager.missileStrong_HE_tex); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java index eec19fae0..676409778 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPad.java @@ -65,6 +65,7 @@ public class TileEntityLaunchPad extends TileEntityMachineBase implements IEnerg missiles.put(new ComparableStack(ModItems.missile_emp), EntityMissileEMP.class); //Tier 1 missiles.put(new ComparableStack(ModItems.missile_generic), EntityMissileGeneric.class); + missiles.put(new ComparableStack(ModItems.missile_decoy), EntityMissileDecoy.class); missiles.put(new ComparableStack(ModItems.missile_incendiary), EntityMissileIncendiary.class); missiles.put(new ComparableStack(ModItems.missile_cluster), EntityMissileCluster.class); missiles.put(new ComparableStack(ModItems.missile_buster), EntityMissileBunkerBuster.class); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 27b8e8d17..9cd2d7a8f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -2292,6 +2292,7 @@ item.missile_carrier.name=HTR-01 Trägerrakete item.missile_cluster.name=Streurakete item.missile_cluster_strong.name=Starke Streurakete item.missile_custom.name=Spezialgefertigte Rakete +item.missile_decoy.name=Köderflugkörper item.missile_doomsday.name=Doomsday Rakete item.missile_drill.name=Der Betonbrecher item.missile_emp.name=EMP-Rakete diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index f6aad2998..101515558 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3029,6 +3029,7 @@ item.missile_carrier.name=HTR-01 Carrier Rocket item.missile_cluster.name=Cluster Missile item.missile_cluster_strong.name=Strong Cluster Missile item.missile_custom.name=Custom Missile +item.missile_decoy.name=Decoy Missile item.missile_doomsday.name=Doomsday Missile item.missile_drill.name=The Concrete Cracker item.missile_emp.name=EMP Missile diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_large.png index 1a6b4cb1b030ef808573c800921c2c4b076ae720..afa1cbaf0b1338e2703df324054b22f91b141419 100644 GIT binary patch delta 234 zcmV+aYkH*x6X?io52 zdI48?WGYAy3^Alrr6EsH@sPRi kyP9}=yrWf4{!GdG0?wV4;vO%iegFUf07*qoM6N<$f=1+Mpa1{> delta 225 zcmV<703QFA0*wNYG=IcNL_t(Ijir-43d1lAgELnP#3?6!yPKBN$ zb0BhT)g)6(jb%vi123}t@$_S$P^a8Q-}fss<9mi-5Oc*~*LADb8g*U6dk+8@#}USu zB)^gXT5B*fi0J1)DJ41;0RYf64ZQdGFGJEf2iU7afam?P7Fq!o4hcjA5K$7d*1~bX z!Xb)hr!dcR)IglT|MM bOvTy&NotlfaO4y~00000NkvXXu0mjfs;pp0 diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_large_alt.png deleted file mode 100644 index 198a444303934539787a00b8e1a685db8de72dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 203 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-8&u1Tv>^PcC5`BeK6c3sQdd=K= zZRaDK@FYRSr7Q-~*|$aCZxmwgF$@S@q%xh2;T@mDIZ5O0jE#*Q58lm?TqPydA}yn~ yp7)-AK?uV?(Ym08-}lYcc3HmX$lUZ_64osnoe~VXMT&v0VeoYIb6Mw<&;$UzUq-+H diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_medium.png index a7cd568d9e00437189813e6521828d401e8dc9e3..cd1ac2e15f0fba5929d0995c29a4689cb22b41f7 100644 GIT binary patch delta 341 zcmV-b0jmD$0)PXMG=DcqL_t(Ijir+@s=`1NMUNjLg2bs(g`g7LNt*0PE3vb(w6U?b zb_F&TE5@M4|#~DnOUnLmLpx|xaeTO@jH}Inxron7B%cYdu?{}0^%;)o3Z?kUE zwrx6{4nhb3uGcGC>s%?tYPD(@0h7rjcU`w!9F0Z@As7yagnwZOfYv%+uh%7{LR%~r zxs;M30l;)RMF>H!*Fz~qyWM8FT$X!(uTOAY7tixZl7#(!PY?t=9uJ}@!f~9>9Xx|> zw;NJQvMi(3YSsGQ64c4EEaR*KIGs)(VR0Or0lx2ZJRUh54i!_DWdNMdXFSiV%-%W} z3 n`3m97&$QWW*lxE*?@#&%tbB@Mndvx(00000NkvXXu0mjfy0)7q delta 319 zcmV-F0l@x%1L^{hG=CvUL_t(Ijir+@j)O1|MPF76i6Da0(5K}rX}An+N(#E%AZ6;* z6bMn$7=dLBQnqpw3!{yc-`Vr$Y5X;YFSXk$WLfr{=b3q)S(b&%<>K_NF0(9qdY*^p zdHB8$fYzF}ZCRFuq9}Hofb;qMjN|y#c)ebUs(-2|%ktIt^9~4t04XKo zIHI*CO;dyr+-^78wxzCX4u^v^u>~-YFbt7WB7`7G5|mOjO|xnS_;m$iKqka#nw-tf z30&Im_nS2f(D(hnuyGu>0Z|mu_dP-g%QQ_B0K+g4hM`qkWe`OXzVFj@-D`=Aj>n^Q zb^_i(Cd7|3kT_C0P38#zN~vu?p65HWNbfQeD5b0|gbzQ{LM&OXx9FLy~TU~$q~z#OG$uchF?X(;>PfS7W$eVy_7+4H_#&U()B zf67VTHCxpkLPHsP9?!6;J}>FY(y%P^&kLW%dkoiZU6$V4mbhSD_O5li9TZi(7OeWg za(dH+@3st|ZI;IgFxN1J9)Edw1s1g~ae58(7=x#)pUXO@geCwU+HZpZ diff --git a/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png b/src/main/resources/assets/hbm/textures/items/fuel_tank_small.png index d2ac3f1dc23f5c12e3394d6df8f0d8dc2b3e41f9..d8c0c47d7474161083024bf2967eecd3e8517b7d 100644 GIT binary patch delta 262 zcmV+h0r~!<0-G=J$yL_t(Ijm?ljYK1TqMNgaJ{0A}=ge*W1*W)A;H{cdrgA*ri zz!kUy$<##%PjDzmI_jsbDgO@&?S)Kk?t95S@Yj0z>7s4hux%S6f`~AVV>J5~Gn=Lf zT5Gh{SZe{;_dQJ0bXoHH-Ehu@+wBH`F$QA{07X$ymSuRjz<*lHwrv2c>&m*WhzQ<$ z(lmXpg0&VA;WL9Q%Mg)EHVUTex?qgCzy7hP@B7CL0ES_>c;5S1^!fwmTv(QcBuO}q zgY!J^M=8ZT&tGPu5MxqGMIlBjR8@8H@;ra80{jBRx~?z5*zo_*JN~70H8(%3-2eap M07*qoM6N<$f`>bNRsaA1 delta 248 zcmVDfkZ~$&VLqWkw zsA#zcHKkX`zasizM@bPW8EKmF>}qxle~q`V9-5}{BErdG7^2>&Sl6{T#$2>*+Ze|& z@W0;$YpqvG0id-;YYjl2=R6({fA@df1!D{%f>H|S8~`H1zH#rQX&R&r7Q8NbWtL@# zNZ^fj(6+7DTH~C%Eb06H`wjr+c@DH?Sz^{Ofwk7J><nIF3&iMZq*pmzf~J{rgTN yNfIqFdO}rIfmW8~&rX0}D6#9hz!)3;A9w<`tZ*UeDU3)9e>HEig2+V4lxG^Z#?1V$?qdbA9+J m_eW&kKcBG27HZk~FL_s_h46{l{xAjllEKr}&t;ucLK6Vx^KPyH diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png b/src/main/resources/assets/hbm/textures/items/fuelcell_arsenic.png deleted file mode 100644 index 4a2c066f02c00f6a8ed9db144d9a915a26c9b66c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfwYD6b;ZJh{H#}vRm{`V3JW$Id{)zR?cO5sjI6ASju{y{x>^1uG%H-) z8+GwgBlq;;^M5Vu|9rUab$JVC(*ns;Jw9oZRC+rSZkxFVKKO0N5Ga!QbK^_nhS$61 zPJeExN2vTin<3vzu+d z9k4`x!=1d_r$2gZxLwO%aph^%Upa%>=NT>L`!#>~$JTvxcTzrs{3>w)|K$$W|LeBC pVwDKDMDd4gmU-!PC{xWt~$(69A(Uc(nik diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_base.png b/src/main/resources/assets/hbm/textures/items/fuelcell_base.png deleted file mode 100644 index b74dc7b3503228f0b23140ff25d6e66dcc53d65c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfQ006mPK{GzUq-N+;65i7_?0H zG5Y!YdAgb8kIYr8iXx}&44>!fp>z6DCr6;j#cjHovzP)zTA#vLSa+y}k?G70N~>v!C^+3-N~dF4B&@__557ygTyw|w(DUw_TG9q0)LPgg&ebxsLQ E05VEwtpET3 diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_euphemium.png deleted file mode 100644 index 0acd3351ef16512611b487a6801d49ec6563ede7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 300 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfCb@h* z@7vE9bKUm(s#Q)d9+yMBKNm#@cs;b>^U`!-x&Qrqx$otSOj8Dj>!lIXT6%my5a&i0=>)N>FVdQ&MBb@0ASa7i2wiq diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_neptunium.png deleted file mode 100644 index b4edaede1c263e9bb991f8061151b5648798bbf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf39e`y(w-eDa#TfW$2#xJCPxZ+9HynZ)#d)?5nwrZclB#2 zLB;dMi_bp08sPP?QqD`$rA4Fb-R5n%z1!Fr9I|^KTl75s@g>J7tm4W}%ggn8TY+sHsCp|R3j$P_V9LEcZ0tv_l>IP2iyMFZJ*B?;cw}C j`D7V;XlUeT`gTe~DWM4fbv<+% diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_plutonium.png deleted file mode 100644 index f05ccd94d0f21d3dd4a7889c1f3f12e929442ca2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfBs1U(~ubFZpqUCX?dHb!v*fb~(nM zzkjsn`Lp%ZraO~VZuZ%z-`=3nn+a diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png b/src/main/resources/assets/hbm/textures/items/fuelcell_selenium.png deleted file mode 100644 index 237092dbb8fc68ad914085f3b3621216fb6ecea5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmV+>0oneEP)irAz`QY1TY8{%%#Sceo5f{^C(o0Q@T+=ke= zh@?oBW)RZkK`aE(KNIz9sm{z0RY;z#j-5AuDe?% zX-~M-dN*UcpFgq;16Ds%0Gg)ZcN6>{aHrGp4L}%PcEiWL1n@lXNvvlHUeq8US{yEi s(~;#e90V9gIgaDrGzUdd82umV49xvhkF;_F7ytkO07*qoM6N<$f^8>v3IG5A diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png b/src/main/resources/assets/hbm/textures/items/fuelcell_u235.png deleted file mode 100644 index 86ba25294dec816f97b15324b00aa1d54a4a4b73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 280 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfVpX6-&2k)v!t&=Y9~CxMj8-i-f-=&*5Vw?2*$X c|JuJ~QVk0|$kb#t8|XC#Pgg&ebxsLQ05{`ufB*mh diff --git a/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png b/src/main/resources/assets/hbm/textures/items/fuelcell_u238m2.png deleted file mode 100644 index 9ce019f885d3c09e61d81eefc96f5b7f1774a577..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmV+=0owkFP)z@V z<5=^LO~nA7O^0@s`*{Q*^143z|`st5>@`!R?*4B`|) zFYZ!tKj5;s3-XehhM<-!;s&wzk;2hy31fCL*?IPzcL)9>+(5()ME=ryP$r{3P(YHI zQDb3cYvX&^T8KV@4r=!=Xptb?smJmpLiPh zEj%0!89WFA07j!xMw1yl&r8z6$z;N6wZe7Xj8WPoW8k`O;(s^}e(A*Cdr&%fe_ zVTkYhD5bOt+E!bwR$`haQ52z+LQ07cf;f&*O0nDRejxu$@B2s_ESJk4xnFl{&fuD_ ReVPCO002ovPDHLkV1le>%;*3B delta 419 zcmV;U0bKsk1I+`FG=GFiL_t(Ijirz=OCwPfg};%!Owa^&jfGp-`v)u*taJq{E34QH z;uK*a5rzbRf~*A8W(#Ez*WtZeLJy`-{QODmNH&1~L#foqct?{8|{rAYP;q>;n|kaOC3CjiuIk@T%)UM=&&U+mzWrd?X+hrxa=l4GaM z%qZaG^deA7QK_zF-pZE+TIYuWfE~1)s!r!d8c8ho_kZMTbw{qRf5_F{$hROGsbAPwyIucVgpxZ%H1BV-Tp1* z@+WV*F+H^YkJde`H9S8*QmHhvT+RiQN*{TB{f99<^7(?dsoQItftxP*%b8|PC3UEO#U>tRId*bZ7^ad&3$hqGyZ{`31 N002ovPDHLkV1lEO%9H>A diff --git a/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png b/src/main/resources/assets/hbm/textures/items/thruster_large_alt.png deleted file mode 100644 index ee64287d35a35539afcad69ca9fee68497426ca1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 288 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb|X&(p;* z#KM2+gp0g~6?j;Ug_JjN`W!GgbFeQ@_N7X4j%ujAA7}rb<{v^6_j5RBtUW35__x%1 zZTAJLGm1||y`I+azb-l;XhJ}UpwVqhmWC5z2g}SDBLc%(lpBJ&u0$>UUT6Q;u4Uo8 zH>~z|8zdDv+t}S5Zt@#W&f#u-Sm|kYA~&(SLqs=iy9cY-seY!`;Jpv7>PHA@1_~bf dU|Uqn@ciV#=_%iNQh_dI@O1TaS?83{1ORKNW1s*4 diff --git a/src/main/resources/assets/hbm/textures/items/thruster_medium.png b/src/main/resources/assets/hbm/textures/items/thruster_medium.png index c880ffed8c9b748215619a23d2a18432a8e3c3b3..3437a340ac0f42e69742bfd21299b6fccedb6177 100644 GIT binary patch delta 387 zcmV-}0et?C1Fi#*G=F7DL_t(IjkS@n>f%5Uhd<*XY_p~=enB;j_u(d+dPLU6y|zXOy~RtSL*g5hw8F^0?Kf|Qatj>)nN zz!pz00iq~kzu%LlDX#01Wm%r<^}6)VkAUa%Svww&HceCN^*TwCn0pjt#%I~gE@j87m>edcgNRmV?q6p7Hfazp{ zhrs}4S>kQE+*_u0iBH4fUajpX_6kXoD9f^7+ct`#01;skMY!$vQI;iwAo!hvdhGhv zDv0A)^?JR=bX_9CX0rhiK}v}%%P<~~t9P9`pxf;t&vOtFEX!(4TCdlTQo?Z@y#fG8 z(^T2Ejn!(^m~5IRq?GV|-#7@UgX$Js*VXp^DZT-=4X1XfA2V_Q0000!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb~N=jq}Y zV&T8G{~+%H1s-O}PQe>3yb^7eHw<&Nb{csGth{yH^TCO}$u3WX7jhJx3-Yp@|1pNs z^+U8n_S-|}MAZ+3WbbXL>=A79kvC;F{eCb1aTr4~v(n~AED8P_iUqoE^s%k})g>&F z^PKHA_mp2U$UZu_BPNFD2he2< Mp00i_>zopr0Aj*iXaE2J diff --git a/src/main/resources/assets/hbm/textures/items/thruster_small.png b/src/main/resources/assets/hbm/textures/items/thruster_small.png index f1881cd3c56a1a151d64d269527402b46dd95750..192d0bd6e2a21be75fe7b378ba9ef26393e96b2b 100644 GIT binary patch delta 428 zcmV;d0aO0Q0@VYMGk*b$NklfcgjW6S9SwI;1Iu5Ie+HYQNV7EI%H!19!XUopbIz?>%^C z%{+DBd7jMo^?LnLt_I!i2iJ8Kqr8b?;JU7K z9EX2x(Cv0A1J0xZiS2m%d%hyfV+rqO6*&W__?Sr!0c7-pRObS=Vt9qq5m z(eCGLY8ZyRiBH)7*4Ox21c0rb6@Hu@^0HV!2uUncHeT0&zQ)xYzkjl2v0Pw%+on{R zWitB1WR!4m_J5OTEZF-xP&C>G)y*2Eib>GFWITXqoDz)%^GgdDW&#WpzH*7DA8cvP z8JKeh%dc##wPngHRpzUUBvU~$6?}QSsQgf6gPWnG{OdRAq(G^%b|;b~Q^A#gO>~E)B$XVqV| WySOg2C`^?A0000u)7CgiRE{I6m;s(o#&ZrD*vL70{nyOd7y5L_+Ydr@+FrVeTofR8n0Qk7w4k5b$ zt@ZqVy`q!?KuLKB*##J5P*N`O`u-@f_c%=xUyifHpZ7auS$|$$b`V7obzP&i#&unU z5X5o(`Un78Yv5;`Gd%&)G@YfCD5WsQ5QZU5(;T`ubg(897p8C>V{#!T8p#V&XWUxEX!u46m8pXItwAN)>0J3!lvI6;>1s;*b z3=DjSK$uZf!>a)(C{f}XQ4*Y=R#Ki=l*&+$n3-3imzP?iV4`QBXPIMM=Lb~N>gnPb zV&T7Z!fD7-VouD%_!7i8oeS@mC*~v3?imm}(hU%|+MCQ)fy!D#Z zZUN0*k_(P%r3fXg*;=-vl}l2NZ?@pJ*+w=DJrAz3JaF@gm?^8d>h*Qr0?CB`U*(T5 z@L94Il(wZGnV_i<_nd9j(ThA`ip~f4<|#1mOMJ<=&hIGCoznO3fevEuboFyt=akR{ E0D9I}egFUf diff --git a/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png b/src/main/resources/assets/hbm/textures/models/missile_v2_decoy.png new file mode 100644 index 0000000000000000000000000000000000000000..191b0c97f723e20d641ef0b9d49aed312a565f42 GIT binary patch literal 915 zcmeAS@N?(olHy`uVBq!ia0vp^wm_W0!3HFq6o0G*QY^(zo*^7SP{WbZ!N9=m<>}%W zQZeW4?2UPk90c0xm1ix!ajI2&iSu$Bw^thc4z*r$*-tWmU|3n%ApF(V{fK9XUd+w{ zulR}4d68w)BsZv*?U~<_(qnwG{rKkBk?c3V*qYVyGkE63AAEC5-e;zct>~sNAtx>c zC+_?AaqC9b36H*+`h4OhPBOZrH+jOh_0?Z5Ep%EQ zHEY$IRZBImcpX2MKlRddHJw*WERDC^{HFZJQS0~m#I*MjH9y|32xE_i|Fg)e`5$$^E@s+%Mu*tz$7Sc_W^(n(-fu15 z*1hhv%gfsH>9c0vdvz@H+=XR+vx>J}^(+ohpL=<>!(0>g(o2?mIj>+9sMXxN-QRVg zpVhQ`x0f$s5ZTtPvBqG*hFFm-o?V9+0^WSDp7`a}_414ITkHQRTg6G;SDkWepFx4^ z{py@f$H)8UaWkJgTpY7%m5{7`S&fjB#EM2#f zGp4IAf0o;Qi?fMxwU(|{ZHnEi`A&7Os>}M9A{H`y5jtW|WT*OHFa1~_=wMlAh_7GLj$A{dy(^W3 zcPmaXDElMf_%fnV^3iO0>wW$A|Ad(OwR4nKU(OeIU2yC6$?e??6P(2~=T>p=ShZ?F zNsgfM&$RmQpDNXAGq0xA<=5t9*2teTx|$;PA!btif$I7{^Y6t>e{wu?w&J8)Q}&oB z2(wM`*j=Ee3rr}BTdgwrUM(rE5?(R+*#bYS<>rm}1%3rp>5FmK@*g>N>2{g#RnOoZ zs})`?aenz$|M!Z?-!5Bk*|9t;a{0Q~lf}2T%>J|K+->KI(2}iD6Z<1o_lI;}Zz@@! b^)r6=bhh(ci_RYh<}wCPS3j3^P6