From ca2505dad0c8c7f38f2c74abd3909852b4d7b57a Mon Sep 17 00:00:00 2001 From: Bob Date: Wed, 14 Feb 2024 21:29:08 +0100 Subject: [PATCH] launch pad textures, silo launch pad --- changelog | 1 + src/main/java/com/hbm/blocks/ModBlocks.java | 2 +- .../entity/missile/EntityMissileTier1.java | 5 + .../hbm/entity/projectile/EntityChemical.java | 12 + .../java/com/hbm/main/ResourceManager.java | 4 +- .../java/com/hbm/tileentity/TileMappings.java | 1 + .../bomb/TileEntityLaunchPadBase.java | 7 + .../bomb/TileEntityLaunchPadLarge.java | 31 +-- src/main/resources/assets/hbm/lang/de_DE.lang | 5 +- src/main/resources/assets/hbm/lang/en_US.lang | 5 +- .../hbm/models/weapons/launch_pad_erector.obj | 30 +-- .../hbm/models/weapons/launch_pad_silo.obj | 255 ++++++++++++++++++ .../textures/models/launchpad/erector_abm.png | Bin 1268 -> 1968 bytes .../textures/models/launchpad/erector_v2.png | Bin 1634 -> 2876 bytes .../hbm/textures/models/launchpad/pad.png | Bin 1993 -> 7615 bytes .../hbm/textures/models/launchpad/silo.png | Bin 0 -> 3394 bytes 16 files changed, 309 insertions(+), 49 deletions(-) create mode 100644 src/main/resources/assets/hbm/models/weapons/launch_pad_silo.obj create mode 100644 src/main/resources/assets/hbm/textures/models/launchpad/silo.png diff --git a/changelog b/changelog index 77a41cc8c..80e8902be 100644 --- a/changelog +++ b/changelog @@ -68,6 +68,7 @@ * Balefire spread is now limited to prevent densely vegetated biomes from lagging to hell * The bricked furnace now makes charcoal twice as fast * Combination ovens no longer need two welded copper plates and instead only cast plates, therefore no longer being post-arc welder. This should make it more affordable and useful in the initial earlygame where things like automatic wood farms are most important. +* Any water-like extinguishing fluid shot from the chemical thrower can now wash away fallout layers ## Fixed * Fixed dupe caused by shift-clicking ashes out of the bricked furnace diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 38a9fd385..21b10b095 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2160,7 +2160,7 @@ public class ModBlocks { tesla = new MachineTesla(Material.iron).setBlockName("tesla").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":tesla"); launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":launch_pad"); - launch_pad_large = new LaunchPadLarge(Material.iron).setBlockName("launch_pad_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":concrete_smooth"); + launch_pad_large = new LaunchPadLarge(Material.iron).setBlockName("launch_pad_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); machine_radar = new MachineRadar(Material.iron).setBlockName("machine_radar").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":machine_radar"); machine_radar_large = new MachineRadarLarge(Material.iron).setBlockName("machine_radar_large").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); radar_screen = new MachineRadarScreen(Material.iron).setBlockName("radar_screen").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.missileTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java index 3f9b01111..93cd9a875 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier1.java @@ -25,6 +25,11 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT { return list; } + @Override + protected float getContrailScale() { + return 0.5F; + } + public static class EntityMissileGeneric extends EntityMissileTier1 { public EntityMissileGeneric(World world) { super(world); } public EntityMissileGeneric(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/entity/projectile/EntityChemical.java b/src/main/java/com/hbm/entity/projectile/EntityChemical.java index 240d8f9d5..9a6a87c22 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityChemical.java +++ b/src/main/java/com/hbm/entity/projectile/EntityChemical.java @@ -453,6 +453,18 @@ public class EntityChemical extends EntityThrowableNT { if(core instanceof IRepairable) { ((IRepairable) core).tryExtinguish(worldObj, x, y, z, fext); } + + if(fext == EnumExtinguishType.WATER && style == ChemicalStyle.LIQUID) { + for(int i = -2; i <= 2; i++) { + for(int j = 0; j <= 1; j++) { + for(int k = -2; k <= 2; k++) { + if(worldObj.getBlock(x + i, y + j, z + k) == ModBlocks.fallout) { + worldObj.setBlock(x + i, y + j, z + k, Blocks.air); + } + } + } + } + } } Block block = worldObj.getBlock(x, y, z); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 0d1a9613d..d6d9c7086 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1087,7 +1087,7 @@ public class ResourceManager { public static final IModelCustom soyuz_launcher_support = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/launch_table/soyuz_launcher_support.obj"), false).asDisplayList(); //Missile Parts - public static final IModelCustom missile_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missilePad.obj")); + public static final IModelCustom missile_pad = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_silo.obj")); public static final IModelCustom missile_erector = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/launch_pad_erector.obj")).asDisplayList(); public static final IModelCustom missile_assembly = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_assembly.obj")); public static final IModelCustom strut = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/strut.obj")); @@ -1288,7 +1288,7 @@ public class ResourceManager { public static final ResourceLocation soyuz_launcher_support_tex = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz_launcher/launcher_support.png"); //Missile Parts - public static final ResourceLocation missile_pad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missilePad.png"); + public static final ResourceLocation missile_pad_tex = new ResourceLocation(RefStrings.MODID, "textures/models/launchpad/silo.png"); public static final ResourceLocation missile_erector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/launchpad/pad.png"); public static final ResourceLocation missile_erector_micro_tex = new ResourceLocation(RefStrings.MODID, "textures/models/launchpad/erector_micro.png"); public static final ResourceLocation missile_erector_v2_tex = new ResourceLocation(RefStrings.MODID, "textures/models/launchpad/erector_v2.png"); diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index defb5b790..1f99e3dd9 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -340,6 +340,7 @@ public class TileMappings { put(TileEntitySpacer.class, "tileentity_fraction_spacer"); put(TileEntityMachineCatalyticCracker.class, "tileentity_catalytic_cracker"); put(TileEntityMachineCatalyticReformer.class, "tileentity_catalytic_reformer"); + put(TileEntityMachineHydrotreater.class, "tileentity_hydrotreater"); put(TileEntityMachineCoker.class, "tileentity_coker"); put(TileEntityChimneyBrick.class, "tileentity_chimney_brick"); put(TileEntityChimneyIndustrial.class, "tileentity_chimney_industrial"); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index b2e746207..efe1d593e 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -144,6 +144,13 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl this.power = Library.chargeTEFromItems(slots, 2, power, maxPower); tanks[0].loadTank(3, 4, slots); tanks[1].loadTank(5, 6, slots); + + if(this.isMissileValid()) { + if(slots[0].getItem() instanceof ItemMissile) { + ItemMissile missile = (ItemMissile) slots[0].getItem(); + setFuel(missile); + } + } this.networkPackNT(250); } diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java index 2b6622bfe..cf826d0d4 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadLarge.java @@ -1,6 +1,5 @@ package com.hbm.tileentity.bomb; -import com.hbm.inventory.fluid.Fluids; import com.hbm.items.weapon.ItemMissile; import com.hbm.items.weapon.ItemMissile.MissileFormFactor; import com.hbm.main.MainRegistry; @@ -60,7 +59,6 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase implements if(slots[0].getItem() instanceof ItemMissile) { ItemMissile missile = (ItemMissile) slots[0].getItem(); this.formFactor = missile.formFactor.ordinal(); - setFuel(missile); if(missile.formFactor == MissileFormFactor.ATLAS || missile.formFactor == MissileFormFactor.HUGE) { erectorSpeed /= 2F; @@ -185,36 +183,15 @@ public class TileEntityLaunchPadLarge extends TileEntityLaunchPadBase implements } } - if(this.erected && this.hasFuel() && this.tanks[1].getTankType() == Fluids.OXYGEN) { - - //maybe too much? - /*if(this.formFactor == MissileFormFactor.ATLAS.ordinal() && worldObj.getTotalWorldTime() % 4 == 0) { - ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - 10); - ForgeDirection rot = dir.getRotation(ForgeDirection.DOWN); - - NBTTagCompound data = new NBTTagCompound(); - data.setString("type", "tower"); - data.setFloat("lift", -5F); - data.setFloat("base", 0.25F); - data.setFloat("max", 0.5F); - data.setInteger("life", 30 + worldObj.rand.nextInt(10)); - data.setDouble("posX", xCoord + 0.5 - (dir.offsetX + rot.offsetX) * 0.5); - data.setDouble("posZ", zCoord + 0.5 - (dir.offsetZ + rot.offsetZ) * 0.5); - data.setDouble("posY", yCoord + 14.625); - data.setBoolean("noWind", true); - data.setFloat("alphaMod", 0.01F); - data.setFloat("strafe", 0.05F); - for(int i = 0; i < 3; i++) MainRegistry.proxy.effectNT(data); - }*/ - + if(this.erected && (this.formFactor == MissileFormFactor.HUGE.ordinal() || this.formFactor == MissileFormFactor.ATLAS.ordinal()) && this.tanks[1].getFill() > 0) { NBTTagCompound data = new NBTTagCompound(); data.setString("type", "tower"); data.setFloat("lift", 0F); data.setFloat("base", 0.5F); data.setFloat("max", 2F); - data.setInteger("life", 60 + worldObj.rand.nextInt(30)); - data.setDouble("posX", xCoord + 0.5); - data.setDouble("posZ", zCoord + 0.5); + data.setInteger("life", 70 + worldObj.rand.nextInt(30)); + data.setDouble("posX", xCoord + 0.5 + worldObj.rand.nextGaussian() * 0.5); + data.setDouble("posZ", zCoord + 0.5 + worldObj.rand.nextGaussian() * 0.5); data.setDouble("posY", yCoord + 2); data.setBoolean("noWind", true); data.setFloat("alphaMod", 2F); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index ca43e4679..ca5bae17c 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -346,7 +346,7 @@ container.heaterOven=Heizofen container.hydrotreater=Hydrotreater container.iGenerator=Industrieller Generator container.keyForge=Schlossertisch -container.launchPad=Raketenabschussrampe +container.launchPad=Startrampe container.launchTable=Große Startrampe container.leadBox=Sicherheitsbehälter container.machineArcWelder=Lichtbogenschweißer @@ -4072,7 +4072,8 @@ tile.lamp_tritium_green_off.name=Grüne Tritiumlampe tile.lamp_tritium_green_on.name=Grüne Tritiumlampe tile.lantern.name=Laterne tile.lantern_behemoth.name=Alte Laterne -tile.launch_pad.name=Raketenabschussrampe +tile.launch_pad.name=Silo-Startrampe +tile.launch_pad_large.name=Startrampe tile.launch_table.name=Große Startrampe tile.leaves_layer.name=Totes Laub tile.lox_barrel.name=LOX-Fass diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index b65517cbe..b830664c3 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -705,7 +705,7 @@ container.heaterOven=Heating Oven container.hydrotreater=Hydrotreater container.iGenerator=Industrial Generator container.keyForge=Locksmith Table -container.launchPad=Missile Launch Pad +container.launchPad=Launch Pad container.launchTable=Large Launch Pad container.leadBox=Containment Box container.machineArcWelder=Arc Welder @@ -5077,7 +5077,8 @@ tile.lantern_behemoth.name=Old Lantern tile.spotlight_incandescent.name=Cage Lamp tile.spotlight_fluoro.name=Fluorescent Light tile.spotlight_halogen.name=Halogen Floodlight -tile.launch_pad.name=Missile Launch Pad +tile.launch_pad.name=Silo Launch Pad +tile.launch_pad_large.name=Launch Pad tile.launch_table.name=Large Launch Pad tile.leaves_layer.name=Fallen Leaves tile.lox_barrel.name=LOX Barrel diff --git a/src/main/resources/assets/hbm/models/weapons/launch_pad_erector.obj b/src/main/resources/assets/hbm/models/weapons/launch_pad_erector.obj index 40c90c71d..6e1c08cdd 100644 --- a/src/main/resources/assets/hbm/models/weapons/launch_pad_erector.obj +++ b/src/main/resources/assets/hbm/models/weapons/launch_pad_erector.obj @@ -14124,30 +14124,30 @@ vt 0.975000 0.539474 vt 0.925000 0.750000 vt 1.000000 0.539474 vt 0.975000 0.750000 -vt 0.925000 0.776316 -vt 0.900000 0.776316 -vt 0.900000 0.763158 -vt 0.975000 0.776316 vt 1.000000 0.763158 vt 1.000000 0.776316 -vt 0.925000 0.750000 +vt 0.975000 0.776316 vt 0.900000 0.763158 -vt 0.900000 0.750000 +vt 0.925000 0.776316 +vt 0.900000 0.776316 +vt 1.000000 0.763158 vt 0.975000 0.750000 vt 1.000000 0.750000 -vt 1.000000 0.763158 -vt 0.975000 0.539474 -vt 1.000000 0.526316 -vt 1.000000 0.539474 +vt 0.900000 0.763158 +vt 0.900000 0.750000 +vt 0.925000 0.750000 +vt 0.900000 0.526316 vt 0.925000 0.539474 vt 0.900000 0.539474 -vt 0.900000 0.526316 -vt 0.975000 0.986842 -vt 1.000000 0.986842 -vt 1.000000 1.000000 -vt 0.925000 0.986842 +vt 1.000000 0.526316 +vt 1.000000 0.539474 +vt 0.975000 0.539474 vt 0.900000 1.000000 vt 0.900000 0.986842 +vt 0.925000 0.986842 +vt 1.000000 1.000000 +vt 0.975000 0.986842 +vt 1.000000 0.986842 vt 1.000000 0.776316 vt 0.975000 0.986842 vt 0.975000 0.776316 diff --git a/src/main/resources/assets/hbm/models/weapons/launch_pad_silo.obj b/src/main/resources/assets/hbm/models/weapons/launch_pad_silo.obj new file mode 100644 index 000000000..02249dc56 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/launch_pad_silo.obj @@ -0,0 +1,255 @@ +# Blender v2.79 (sub 0) OBJ File: 'launch_pad_silo.blend' +# www.blender.org +o Plane +v -1.500000 1.000000 1.500000 +v 1.500000 1.000000 1.500000 +v -1.500000 1.000000 -1.500000 +v 1.500000 1.000000 -1.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 1.500000 0.000000 -0.500000 +v 0.500000 0.000000 -1.500000 +v 1.500000 0.000000 -1.500000 +v 0.500000 0.000000 1.500000 +v 1.500000 0.000000 1.500000 +v 0.500000 0.000000 0.500000 +v 1.500000 0.000000 0.500000 +v -1.500000 0.000000 -0.500000 +v -0.500000 0.000000 -0.500000 +v -1.500000 0.000000 -1.500000 +v -0.500000 0.000000 -1.500000 +v -1.500000 0.000000 1.500000 +v -0.500000 0.000000 1.500000 +v -1.500000 0.000000 0.500000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.500000 -1.500000 +v 0.500000 0.500000 -0.500000 +v 1.500000 0.500000 -0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 1.500000 +v 1.500000 0.500000 0.500000 +v -1.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -1.500000 +v -0.500000 0.500000 1.500000 +v -0.500000 0.500000 0.500000 +v -1.500000 0.500000 0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +vt 0.250000 0.750000 +vt 0.750000 1.000000 +vt -0.000000 1.000000 +vt 0.250000 0.500000 +vt -0.000000 0.250000 +vt 0.500000 0.750000 +vt 0.750000 0.250000 +vt 0.500000 0.500000 +vt 0.250000 0.250000 +vt 0.500000 0.125000 +vt 0.500000 0.250000 +vt 0.250000 0.125000 +vt 0.500000 0.250000 +vt 0.250000 0.250000 +vt 0.250000 0.125000 +vt 0.500000 0.250000 +vt 0.250000 0.250000 +vt 0.250000 0.250000 +vt 0.500000 0.125000 +vt 0.500000 0.250000 +vt 1.000000 -0.000000 +vt 0.750000 0.250000 +vt 0.750000 -0.000000 +vt 1.000000 -0.000000 +vt 0.750000 0.250000 +vt 0.750000 -0.000000 +vt 1.000000 -0.000000 +vt 0.750000 0.250000 +vt 0.750000 -0.000000 +vt 1.000000 -0.000000 +vt 0.750000 0.250000 +vt 0.750000 -0.000000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 0.750000 0.250000 +vt 1.000000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 0.750000 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.500000 +vt 0.750000 0.250000 +vt 1.000000 0.250000 +vt 0.750000 0.250000 +vt 1.000000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt -0.000000 -0.000000 +vt 0.250000 0.125000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 1.000000 0.625000 +vt 0.750000 0.500000 +vt 1.000000 0.500000 +vt 0.750000 0.000000 +vt 0.500000 0.125000 +vt 0.500000 0.000000 +vt 0.250000 0.125000 +vt 0.750000 0.250000 +vt 0.000000 0.250000 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.500000 0.125000 +vt 0.500000 0.000000 +vt 0.000000 0.250000 +vt 0.750000 0.250000 +vt 0.250000 0.125000 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.750000 0.000000 +vt 0.500000 0.125000 +vt 0.500000 0.000000 +vt 0.000000 0.250000 +vt 0.750000 0.250000 +vt 0.250000 0.125000 +vt 0.000000 0.000000 +vt 0.250000 0.000000 +vt 0.500000 0.125000 +vt 0.750000 -0.000000 +vt 0.250000 0.750000 +vt 0.500000 0.500000 +vt 0.500000 0.750000 +vt 0.500000 0.500000 +vt 0.250000 0.750000 +vt 0.500000 0.750000 +vt 0.250000 0.125000 +vt 0.500000 0.125000 +vt 0.500000 0.125000 +vt 0.250000 0.125000 +vt 1.000000 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.250000 +vt 1.000000 0.250000 +vt 0.750000 0.625000 +vt 0.750000 0.625000 +vt 1.000000 0.250000 +vt 0.750000 0.500000 +vt 0.750000 0.500000 +vt 1.000000 0.250000 +vt 0.750000 0.625000 +vt 0.750000 0.625000 +vt 0.750000 0.625000 +vt 0.750000 0.625000 +vt 0.250000 -0.000000 +vt 0.750000 0.625000 +vt 0.750000 0.625000 +vt 0.500000 -0.000000 +vt 0.250000 0.500000 +vt 0.250000 0.500000 +vn 0.0000 1.0000 0.0000 +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 +s off +f 5/1/1 3/2/1 1/3/1 +f 6/4/1 1/3/1 2/5/1 +f 7/6/1 4/7/1 3/2/1 +f 8/8/1 2/5/1 4/7/1 +f 8/9/2 28/10/2 6/11/2 +f 32/12/3 8/13/3 7/14/3 +f 35/15/4 7/16/4 5/17/4 +f 6/18/5 35/19/5 5/20/5 +f 11/21/6 10/22/6 9/23/6 +f 15/24/6 14/25/6 13/26/6 +f 19/27/6 18/28/6 17/29/6 +f 23/30/6 22/31/6 21/32/6 +f 29/33/2 15/34/2 13/35/2 +f 33/36/4 18/37/4 20/38/4 +f 27/39/6 28/40/6 26/41/6 +f 26/42/6 33/43/6 25/44/6 +f 32/45/6 36/46/6 31/47/6 +f 29/48/6 35/49/6 28/50/6 +f 35/51/4 22/52/4 24/53/4 +f 28/54/5 16/55/5 15/56/5 +f 26/57/2 11/58/2 9/59/2 +f 36/60/5 24/61/5 23/62/5 +f 14/63/4 30/64/4 2/5/4 +f 27/65/3 9/66/3 10/67/3 +f 30/64/4 4/7/4 2/5/4 +f 32/68/3 17/69/3 18/70/3 +f 14/71/3 29/72/3 13/73/3 +f 34/74/3 2/75/3 1/76/3 +f 34/74/3 21/77/3 22/78/3 +f 21/32/2 36/79/2 23/80/2 +f 3/81/2 36/79/2 1/82/2 +f 31/83/2 19/84/2 17/85/2 +f 19/86/5 33/87/5 20/88/5 +f 4/89/5 33/87/5 3/90/5 +f 25/91/5 12/92/5 11/93/5 +f 27/94/4 12/95/4 4/7/4 +f 37/96/1 40/97/1 39/98/1 +f 44/99/6 41/100/6 43/101/6 +f 5/1/1 7/6/1 3/2/1 +f 6/4/1 5/1/1 1/3/1 +f 7/6/1 8/8/1 4/7/1 +f 8/8/1 6/4/1 2/5/1 +f 8/9/2 26/102/2 28/10/2 +f 32/12/3 26/103/3 8/13/3 +f 35/15/4 32/104/4 7/16/4 +f 6/18/5 28/105/5 35/19/5 +f 11/21/6 12/106/6 10/22/6 +f 15/24/6 16/107/6 14/25/6 +f 19/27/6 20/108/6 18/28/6 +f 23/30/6 24/109/6 22/31/6 +f 29/33/2 28/110/2 15/34/2 +f 33/36/4 32/111/4 18/37/4 +f 27/39/6 30/112/6 28/40/6 +f 26/42/6 32/113/6 33/43/6 +f 32/45/6 35/114/6 36/46/6 +f 29/48/6 34/115/6 35/49/6 +f 35/51/4 34/116/4 22/52/4 +f 28/54/5 30/117/5 16/55/5 +f 26/57/2 25/118/2 11/58/2 +f 36/60/5 35/119/5 24/61/5 +f 14/63/4 16/120/4 30/64/4 +f 27/65/3 26/121/3 9/66/3 +f 30/64/4 27/94/4 4/7/4 +f 32/68/3 31/122/3 17/69/3 +f 14/71/3 2/75/3 29/72/3 +f 34/74/3 29/72/3 2/75/3 +f 34/74/3 1/76/3 21/77/3 +f 21/32/2 1/82/2 36/79/2 +f 3/81/2 31/83/2 36/79/2 +f 31/83/2 3/81/2 19/84/2 +f 19/86/5 3/90/5 33/87/5 +f 4/89/5 25/91/5 33/87/5 +f 25/91/5 4/89/5 12/92/5 +f 27/94/4 10/123/4 12/95/4 +f 37/96/1 38/124/1 40/97/1 +f 44/99/6 42/125/6 41/100/6 diff --git a/src/main/resources/assets/hbm/textures/models/launchpad/erector_abm.png b/src/main/resources/assets/hbm/textures/models/launchpad/erector_abm.png index c597f87c9697846241d8c5e76e94f0e0439dffe8..4da76e4669055e51e674e1b5414d3396d87a7978 100644 GIT binary patch literal 1968 zcmb_ddo z8<~huE-@1dV-81W64AIvW0Y^c{`l7V*80}>*V*gY@4KG;zW=<>-s{;J?ifc2F(oko z03^^(cAkQKPOzzaLU6 z5a!`pyoKfVaYq^nDtvaa?_LDq>z_9XOZm!9=gd{M37oR`!9y)m)6+sg<){t@gHb}) z!Fa4g4H4!FJ>soG)aTFlGS~GIiLtr5KnVtNoMc(Q+0& zyGOh#s526t$}yMjJx)Hc2(89cNW#*(AJ$DW)Sp-=p)vX{!!t3Yg4mtmOHE@h!{CHQ z>d_ohTd3b8mln?NNZie8OU%Dqom=xcGV@eT>f&NZadGj-*zylo(`##w)JiqBwu%CU zuG&7!jm~ldw?bvik<(|cAC|?_J?{gz0?8N|;seN)&`|rP@7voxEYsA1Rqt{w)oR18 zfs>h3x5-OEQ?eb-!fFyHZ2k6;=6EAP)-a)*e8>dNC07YwJqx07WxOuR5r3X|h>8j| zbmY^%P!=5=yg92eRq-~0?#Hia+}x3OuJpd}n>Y9NUNcmYjM&c^I76+9I#_JXki;=Z zO_RJ1>aldpMi;i;w5iE1YjH63p;GBvqTchHiW%i)ojd}^?nf6b%0D6^LLFsKTFjXg zg-A+K6otPh*RG*fYF)SIu1xfDj*6s!fSK{t#FhB6zlvB&?8aWIDsUjWJX+Og9WPL5 zyzXrGdRsF|achn}*qV*7zOiw>tO?S?4eU1&w?ZJghlaB6f?uZ-jL?Ggv|Bsl?RUc|M|OjK0ZHXG-7A}PJJd=N_qU=q0<5Ma2mIuEAbP6<=RV{?+T&{z$2Kjgn zhtoySTUU~SjfmE$JkYX^e4!}sV0{hkf&MkHS7pcyH!b&KsB>v)X~zVLOb9SEE-VE} z9k47!e!49C8&yty&{CSu-@<)7iYuBQ7B}8mpJV>u@hqm>Z=RmF7)}w)1XlY$aP8h~ zFKyJHe)oL~`~Y~n_*FyMz`(#i9D%;5Z#@;Ze=6*{KjZ{ELunJ#WeEIl7$hJZ>A=Fk)E)l z6i)Ho7x!)DAqXfv7Qc3z=Jo?zleI{H5&RP2BJHAfHGw?pO`U~ytS=SEGH+BUvwJoF|~>_Qg`}$yuK7{!J7De-igG0dZ1RodXlq zLjPuLS~8cn_!+y2J0fXBweBW%DA3q1QXQ@G^C5NLBD1uby8}ejuuLQZp*y7=>}#nSMiF54#0-Eg^x>dk3luO}Y8$ zzJ?4Q-j7kp%k`v7Jt_L)mCD=LfL~Y(I-NBKib6RiW5?e+!_Dw4;cC?GZCaA|U($n* zbSKY1x~>=ETG$co$Ai=Sk2n>k!kq2ds7MXm@Fx7%d-{U=!(y=&lbm>w@pMHLnfTJ= zyvSRfz^mDXpsZpLCH$0f|_qsJuj3bbwu9KL4FP2c4)6PSW7#eH2k8G7*YY|`u{ ze+A&b5L}v`-Frb?1PpZ6adv0;s9pV4+!f}5?r0!pqP^ugr6wwl1iHS%GmQx2=r8`q zmi&PnF4mU;Q2@Smlr#CvOjeZiGI-NL^9v|O5=cvH%yxAACOP9sy<^W8xKI`M*;0Hh zdGzx+K2R0yX9Vu_A^1IWa8;m4%U0HRbS!VhT17thD<+Zj1APV<3`q)wa`nayi?db@ z)yTjndj&#O&f{E81!os7ym;`Y$)(fee3#e7?1=y)^!ronXq_Jr*vtnftD??k!50jm M?J;%~n{&zk0(TUY#sB~S literal 1268 zcmeAS@N?(olHy`uVBq!ia0vp^2|&DogAGW2Se7jgq*#ibJVQ8upoSx*1IS(N>Eakt zG3V{vy3>YcFS%uy=E=jFl0ORy#WH z*_B2ICe3Ecqt_Y_+&j4BgVoK8St%!#-@lGHfBDAajdefd&dy&l(Wv{wy*>R;XU^Qa zK_~lEdzs9N@`M)(4m?apz{Hb{Jv%Lpjiv9`gw?m#bxdpE)?R$~%rcu7Ze>ZXx%Ks> zPs00u+<33O>(s}z-p9RXa@MC_X6tZlkYIrjoqfz@t%ZU2y`^@4dp*PbpSAv1TOF?k ziAv6b>`(tSl_gVmKb<@CuVnQ0nc@A$8jMK-3T%u?PjVaPEIzgM{n5X1ua`khI+^_Z zz5bdl!rC==MK|u&vX!0cYzYJk_^JUKA489k5xCf0y7}*3kYxuilG`NiT8| z&tQgl1MHV8-<$S)*PpXG{*dM7o}G-fh1*$vJnNKP`=5C&2WttZj!@OZ=?%V2T`eio zn1Yx(TU7X}I2DAkX6h4v&k82%-Efon^63VnT8xmSxX8%D1QW zQMsCZQKojphcBm8Bsw}ziu>*5KCD*%_qa|j@8;BMgPA@V+-3^@qfSD*XJE| zpPqVe=Y1xEng>-{xP4_l>eo_YVv?+ck+`y#y=SHDUzoBea${ot~H<;yn&zt`DwaMhL% z$Fx>0&@#i1G|~A>)QX{>-oQa^8Zh2wJ#5+$IJYmy6x{)ri$Zd$`*170aI}H zYK7;s;&gV-yO?prH;Oj^n&T09AHiBoVQM#kVIqr<9E{}%d*5@@7MhNbuzU= gUPu*EV4UIKc_90}Xl0xNuoz?TboFyt=akR{09W80DF6Tf diff --git a/src/main/resources/assets/hbm/textures/models/launchpad/erector_v2.png b/src/main/resources/assets/hbm/textures/models/launchpad/erector_v2.png index d57c5b24327702d40fcfb56d797a97d289c3eff8..d494ed9f24bfac383bdcabd6417a94d319678b04 100644 GIT binary patch delta 2854 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 diff --git a/src/main/resources/assets/hbm/textures/models/launchpad/pad.png b/src/main/resources/assets/hbm/textures/models/launchpad/pad.png index 37a1af1c4a5bfedde724386d023024b1b9a62525..6f908dc2c562270a5ca948a21a83a376824ccce4 100644 GIT binary patch literal 7615 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 Z-H+{GWcXm!z!zE24egs+r5d(j{{!$cHbejb literal 1993 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 N4z^ADw{{ez1g(Ls~ literal 0 HcmV?d00001