diff --git a/src/main/java/com/hbm/blocks/machine/MachineDiesel.java b/src/main/java/com/hbm/blocks/machine/MachineDiesel.java index 0c898c74c..4bce53d0b 100644 --- a/src/main/java/com/hbm/blocks/machine/MachineDiesel.java +++ b/src/main/java/com/hbm/blocks/machine/MachineDiesel.java @@ -1,17 +1,21 @@ package com.hbm.blocks.machine; import java.util.List; +import java.util.Random; import com.hbm.blocks.ITooltipProvider; import com.hbm.inventory.fluid.trait.FT_Combustible.FuelGrade; import com.hbm.tileentity.machine.TileEntityMachineDiesel; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.material.Material; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; public class MachineDiesel extends BlockMachineBase implements ITooltipProvider { @@ -39,6 +43,23 @@ public class MachineDiesel extends BlockMachineBase implements ITooltipProvider public boolean renderAsNormalBlock() { return false; } + + @Override + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand) { + TileEntity tile = world.getTileEntity(x, y, z); + + if(tile instanceof TileEntityMachineDiesel) { + TileEntityMachineDiesel diesel = (TileEntityMachineDiesel) tile; + + if(diesel.hasAcceptableFuel() && diesel.tank.getFill() > 0) { + + ForgeDirection dir = ForgeDirection.getOrientation(tile.getBlockMetadata()); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + world.spawnParticle("smoke", x + 0.5 - dir.offsetX * 0.6 + rot.offsetX * 0.1875, y + 0.3125, z + 0.5 - dir.offsetZ * 0.6 + rot.offsetZ * 0.1875, 0, 0, 0); + } + } + } @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean ext) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java b/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java index 06a41f19c..a50cb1277 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java +++ b/src/main/java/com/hbm/inventory/gui/GUIMachineDiesel.java @@ -1,21 +1,14 @@ package com.hbm.inventory.gui; -import java.util.ArrayList; -import java.util.List; import org.lwjgl.opengl.GL11; import com.hbm.inventory.container.ContainerMachineDiesel; -import com.hbm.inventory.fluid.FluidType; -import com.hbm.inventory.fluid.Fluids; import com.hbm.lib.RefStrings; import com.hbm.tileentity.machine.TileEntityMachineDiesel; -import com.hbm.util.BobMathUtil; -import com.hbm.util.I18nUtil; import net.minecraft.client.Minecraft; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; -import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.ResourceLocation; public class GUIMachineDiesel extends GuiInfoContainer { @@ -37,24 +30,12 @@ public class GUIMachineDiesel extends GuiInfoContainer { diesel.tank.renderTankInfo(this, mouseX, mouseY, guiLeft + 80, guiTop + 69 - 52, 16, 52); this.drawElectricityInfo(this, mouseX, mouseY, guiLeft + 152, guiTop + 69 - 52, 16, 52, diesel.power, diesel.powerCap); - - List text = new ArrayList(); - text.add(EnumChatFormatting.YELLOW + "Accepted Fuels:"); - for(FluidType type : Fluids.getInNiceOrder()) { - long energy = diesel.getHEFromFuel(type); - - if(energy > 0) - text.add(" " + I18nUtil.resolveKey(type.getUnlocalizedName()) + " (" + BobMathUtil.getShortNumber(energy) + "HE/t)"); - } - - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text.toArray(new String[0])); - - String[] text1 = new String[] { "Fuel consumption rate:", + String[] text = new String[] { "Fuel consumption rate:", " 1 mB/t", " 20 mB/s", "(Consumption rate is constant)" }; - this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36 + 16, 16, 16, guiLeft - 8, guiTop + 36 + 16, text1); + this.drawCustomInfoStat(mouseX, mouseY, guiLeft - 16, guiTop + 36, 16, 16, guiLeft - 8, guiTop + 36 + 16, text); if(!diesel.hasAcceptableFuel()) { @@ -89,7 +70,6 @@ public class GUIMachineDiesel extends GuiInfoContainer { } this.drawInfoPanel(guiLeft - 16, guiTop + 36, 16, 16, 2); - this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 16, 16, 16, 3); if(!diesel.hasAcceptableFuel()) this.drawInfoPanel(guiLeft - 16, guiTop + 36 + 32, 16, 16, 6); diff --git a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java index 5feaf3252..b3e31dae2 100644 --- a/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/AssemblerRecipes.java @@ -274,7 +274,7 @@ public class AssemblerRecipes { makeRecipe(new ComparableStack(ModBlocks.machine_centrifuge, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 1), new OreDictStack(ANY_PLASTIC.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.circuit_copper, 1), }, 200); makeRecipe(new ComparableStack(ModBlocks.machine_gascent, 1), new AStack[] {new ComparableStack(ModItems.centrifuge_element, 4), new OreDictStack(ANY_PLASTIC.ingot(), 4), new OreDictStack(DESH.ingot(), 2), new OreDictStack(STEEL.plate528(), 8), new ComparableStack(ModItems.coil_tungsten, 4), new ComparableStack(ModItems.circuit_red_copper, 1) }, 300); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_furnace_off, 1), new AStack[] {new ComparableStack(Blocks.furnace, 1), new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(PB.plate528(), 6), new OreDictStack(OreDictManager.getReflector(), 4), new OreDictStack(CU.plate(), 2), },150); - makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 4), new ComparableStack(Blocks.piston, 4), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(MINGRADE.ingot(), 2), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.wire_red_copper, 6), },200); + makeRecipe(new ComparableStack(ModBlocks.machine_diesel, 1), new AStack[] {new ComparableStack(ModItems.hull_small_steel, 1), new ComparableStack(ModItems.piston_selenium, 1), new OreDictStack(STEEL.ingot(), 6), new OreDictStack(CU.plate(), 4), new ComparableStack(ModItems.coil_copper, 4), }, 100); makeRecipe(new ComparableStack(ModBlocks.machine_selenium, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(TI.plate(), 6), new OreDictStack(CU.plate(), 8), new ComparableStack(ModItems.hull_big_steel, 1), new ComparableStack(ModItems.hull_small_steel, 9), new ComparableStack(ModItems.pedestal_steel, 1), new ComparableStack(ModItems.coil_copper, 4), },250); makeRecipe(new ComparableStack(ModBlocks.machine_rtg_grey, 1), new AStack[] {new ComparableStack(ModItems.rtg_unit, 3), new OreDictStack(STEEL.plate528(), 4), new ComparableStack(ModItems.wire_red_copper, 4), new OreDictStack(ANY_PLASTIC.ingot(), 3), },200); makeRecipe(new ComparableStack(ModBlocks.machine_battery, 1), new AStack[] {new OreDictStack(STEEL.ingot(), 4), new OreDictStack(S.dust(), 12), new OreDictStack(PB.dust(), 12), new OreDictStack(MINGRADE.ingot(), 2), new ComparableStack(ModItems.wire_red_copper, 4), },200); 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 9896e5d2a..a3704fdeb 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -338,6 +338,8 @@ public class AnvilRecipes { new ComparableStack(ModItems.circuit_aluminium), new ComparableStack(ModItems.sawblade) }, new AnvilOutput(new ItemStack(ModBlocks.machine_autosaw))).setTier(2)); + + pullFromAssembler(new ComparableStack(ModBlocks.machine_diesel), 2); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index 69a107e56..c9708afcd 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1863,6 +1863,7 @@ public class ModItems { public static Item oxy_mask; public static Item hat; public static Item beta; + public static Item no9; public static Item t45_helmet; public static Item t45_plate; @@ -4624,6 +4625,7 @@ public class ModItems { mask_rag = new ModArmor(aMatRags, 0).setUnlocalizedName("mask_rag").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_rag"); mask_piss = new ModArmor(aMatRags, 0).setUnlocalizedName("mask_piss").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":mask_piss"); hat = new ArmorHat(MainRegistry.aMatAlloy, 0).setUnlocalizedName("nossy_hat").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":hat"); + no9 = new ArmorNo9(MainRegistry.aMatSteel, 0).setUnlocalizedName("no9").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":no9"); beta = new ItemDrop().setUnlocalizedName("beta").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":beta"); //oxy_mask = new ArmorModel(ArmorMaterial.IRON, 7, 0).setUnlocalizedName("oxy_mask").setMaxStackSize(1).setTextureName(RefStrings.MODID + ":oxy_mask"); @@ -7695,6 +7697,7 @@ public class ModItems { //GameRegistry.registerItem(oxy_mask, oxy_mask.getUnlocalizedName()); GameRegistry.registerItem(hat, hat.getUnlocalizedName()); GameRegistry.registerItem(beta, beta.getUnlocalizedName()); + GameRegistry.registerItem(no9, no9.getUnlocalizedName()); GameRegistry.registerItem(steel_helmet, steel_helmet.getUnlocalizedName()); GameRegistry.registerItem(steel_plate, steel_plate.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/items/armor/ArmorNo9.java b/src/main/java/com/hbm/items/armor/ArmorNo9.java new file mode 100644 index 000000000..754cf6dec --- /dev/null +++ b/src/main/java/com/hbm/items/armor/ArmorNo9.java @@ -0,0 +1,158 @@ +package com.hbm.items.armor; + +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Map.Entry; +import java.util.Set; + +import com.hbm.extprop.HbmPlayerProps; +import com.hbm.lib.Library; +import com.hbm.render.model.ModelNo9; +import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.BlockPos; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBiped; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraft.world.EnumSkyBlock; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.entity.living.LivingAttackEvent; +import net.minecraftforge.event.entity.living.LivingHurtEvent; + +public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandler { + + protected ModelNo9 model; + + public ArmorNo9(ArmorMaterial armorMaterial, int armorType) { + super(armorMaterial, armorType); + } + + @Override + public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { + list.add(EnumChatFormatting.BLUE + "+0.5 DT"); + } + + @Override + public void handleDamage(LivingHurtEvent event, ItemStack stack) { + + if(event.source.isUnblockable()) + return; + + event.ammount -= 0.5F; + + if(event.ammount < 0) + event.ammount = 0; + } + + @Override + public void handleAttack(LivingAttackEvent event, ItemStack armor) { + + if(event.source.isUnblockable()) + return; + + if(event.ammount <= 0.5F) { + event.setCanceled(true); + } + } + + @Override + @SideOnly(Side.CLIENT) + public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack itemStack, int armorSlot) { + + if(model == null) { + model = new ModelNo9(0); + } + + return model; + } + + @Override + public void onArmorTick(World world, EntityPlayer player, ItemStack armor) { + + if(world.isRemote && HbmPlayerProps.getData(player).enableHUD) { + + /*int x = (int) Math.floor(player.posX); + int y = (int) Math.floor(player.posY + player.eyeHeight); + int z = (int) Math.floor(player.posZ);*/ + + if(world.getTotalWorldTime() % 2 == 0) checkLights(world, false); + float range = 50F; + MovingObjectPosition mop = Library.rayTrace(player, range, 0F, false, true, false); + + if(mop != null && mop.typeOfHit == mop.typeOfHit.BLOCK) { + Vec3 look = Vec3.createVectorHelper(player.posX - mop.hitVec.xCoord, player.posY + player.getEyeHeight() - mop.hitVec.yCoord, player.posZ - mop.hitVec.zCoord); + ForgeDirection dir = ForgeDirection.getOrientation(mop.sideHit); + int level = Math.min(15, (int) (25 - (look.lengthVector() * 25 / range))); + lightUpRecursively(world, mop.blockX + dir.offsetX, mop.blockY + dir.offsetY, mop.blockZ + dir.offsetZ, level); + breadcrumb.clear(); + } + } + } + + public static Set breadcrumb = new HashSet(); + public static void lightUpRecursively(World world, int x, int y, int z, int light) { + if(light <= 0) return; + BlockPos pos = new BlockPos(x, y, z); + if(breadcrumb.contains(pos)) return; + breadcrumb.add(pos); + + int existingLight = world.getSavedLightValue(EnumSkyBlock.Block, x, y, z); + int occupancy = world.getBlockLightOpacity(x, y, z); + + if(occupancy >= 255) return; // only block if it's fully blocking, light goes through semi-translucent blocks like it's air + + int newLight = Math.min(15, Math.max(existingLight, light)); + world.setLightValue(EnumSkyBlock.Block, x, y, z, newLight); + lightCheck.put(new Pair(world, pos), world.getTotalWorldTime() + 5); + + lightUpRecursively(world, x + 1, y, z, light - 1); + lightUpRecursively(world, x - 1, y, z, light - 1); + lightUpRecursively(world, x, y + 1, z, light - 1); + lightUpRecursively(world, x, y - 1, z, light - 1); + lightUpRecursively(world, x, y, z + 1, light - 1); + lightUpRecursively(world, x, y, z - 1, light - 1); + } + + public static HashMap lastChecks = new HashMap(); + public static HashMap, Long> lightCheck = new HashMap(); + + public static void checkLights(World world, boolean force) { + Iterator it = lightCheck.entrySet().iterator(); + + while(it.hasNext()) { + Entry, Long> entry = (Entry, Long>) it.next(); + + if(entry.getKey().getKey() == world && (world.getTotalWorldTime() > entry.getValue() || force)) { + BlockPos pos = entry.getKey().getValue(); + world.updateLightByType(EnumSkyBlock.Block, pos.getX(), pos.getY(), pos.getZ()); + it.remove(); + } + } + + lastChecks.put(world, world.getTotalWorldTime()); + } + + public static void updateWorldHook(World world) { + if(world == null || !world.isRemote) return; + Long last = lastChecks.get(world); + + if(last != null && last < world.getTotalWorldTime() + 10) { + checkLights(world, false); + } + } + + // lighting data is saved by the server, not the client, so why would we need that?? + /*public static void unloadWorldHook(World world) { + if(!world.isRemote) return; + checkLights(world, true); + }*/ +} diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index e352f2a77..1099109ea 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -42,6 +42,7 @@ import com.hbm.handler.SiegeOrchestrator; import com.hbm.items.IEquipReceiver; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; +import com.hbm.items.armor.ArmorNo9; import com.hbm.items.armor.IAttackHandler; import com.hbm.items.armor.IDamageHandler; import com.hbm.items.armor.ItemArmorMod; diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index e7c1cbbe5..9e8872aec 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -33,6 +33,7 @@ import com.hbm.items.ISyncButtons; import com.hbm.items.ModItems; import com.hbm.items.armor.ArmorFSB; import com.hbm.items.armor.ArmorFSBPowered; +import com.hbm.items.armor.ArmorNo9; import com.hbm.items.armor.ItemArmorMod; import com.hbm.items.armor.JetpackBase; import com.hbm.items.weapon.ItemGunBase; @@ -788,6 +789,7 @@ public class ModEventHandlerClient { public void clentTick(ClientTickEvent event) { Minecraft mc = Minecraft.getMinecraft(); + ArmorNo9.updateWorldHook(mc.theWorld); if(mc.gameSettings.renderDistanceChunks > 16 && GeneralConfig.enableRenderDistCheck && ! FMLClientHandler.instance().hasOptifine()) { mc.gameSettings.renderDistanceChunks = 16; diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 6c85982a4..4bd61ea87 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -716,6 +716,7 @@ public class ResourceManager { public static final IModelCustom armor_hev = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hev.obj")); public static final IModelCustom armor_ajr = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/AJR.obj")); public static final IModelCustom armor_hat = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/hat.obj")); + public static final IModelCustom armor_no9 = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/no9.obj")); public static final IModelCustom armor_goggles = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/goggles.obj")); public static final IModelCustom armor_fau = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/fau.obj")); public static final IModelCustom armor_dnt = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/armor/dnt.obj")); @@ -869,6 +870,8 @@ public class ResourceManager { public static final ResourceLocation wings_solstice = new ResourceLocation(RefStrings.MODID, "textures/armor/wings_solstice.png"); public static final ResourceLocation hat = new ResourceLocation(RefStrings.MODID, "textures/armor/hat.png"); + public static final ResourceLocation no9 = new ResourceLocation(RefStrings.MODID, "textures/armor/no9.png"); + public static final ResourceLocation no9_insignia = new ResourceLocation(RefStrings.MODID, "textures/armor/no9_insignia.png"); public static final ResourceLocation goggles = new ResourceLocation(RefStrings.MODID, "textures/armor/goggles.png"); public static final ResourceLocation player_manly_tex = new ResourceLocation(RefStrings.MODID, "textures/entity/player_fem.png"); diff --git a/src/main/java/com/hbm/render/model/ModelHat.java b/src/main/java/com/hbm/render/model/ModelHat.java index 100ec356c..673ac6db6 100644 --- a/src/main/java/com/hbm/render/model/ModelHat.java +++ b/src/main/java/com/hbm/render/model/ModelHat.java @@ -14,13 +14,13 @@ public class ModelHat extends ModelArmorBase { super(type); head = new ModelRendererObj(ResourceManager.armor_hat); - body = new ModelRendererObj(ResourceManager.armor_bj, "Body"); - leftArm = new ModelRendererObj(ResourceManager.armor_bj, "LeftArm").setRotationPoint(-5.0F, 2.0F, 0.0F); - rightArm = new ModelRendererObj(ResourceManager.armor_bj, "RightArm").setRotationPoint(5.0F, 2.0F, 0.0F); - leftLeg = new ModelRendererObj(ResourceManager.armor_bj, "LeftLeg").setRotationPoint(1.9F, 12.0F, 0.0F); - rightLeg = new ModelRendererObj(ResourceManager.armor_bj, "RightLeg").setRotationPoint(-1.9F, 12.0F, 0.0F); - leftFoot = new ModelRendererObj(ResourceManager.armor_bj, "LeftFoot").setRotationPoint(1.9F, 12.0F, 0.0F); - rightFoot = new ModelRendererObj(ResourceManager.armor_bj, "RightFoot").setRotationPoint(-1.9F, 12.0F, 0.0F); + body = new ModelRendererObj(null); + leftArm = new ModelRendererObj(null).setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(null).setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(null).setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(null).setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); } @Override diff --git a/src/main/java/com/hbm/render/model/ModelNo9.java b/src/main/java/com/hbm/render/model/ModelNo9.java new file mode 100644 index 000000000..16319f5b6 --- /dev/null +++ b/src/main/java/com/hbm/render/model/ModelNo9.java @@ -0,0 +1,63 @@ +package com.hbm.render.model; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; +import com.hbm.render.loader.ModelRendererObj; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.entity.Entity; + +public class ModelNo9 extends ModelArmorBase { + + public ModelRendererObj lamp; + public ModelRendererObj insig; + + public ModelNo9(int type) { + super(type); + + head = new ModelRendererObj(ResourceManager.armor_no9, "Helmet"); + insig = new ModelRendererObj(ResourceManager.armor_no9, "Insignia"); + lamp = new ModelRendererObj(ResourceManager.armor_no9, "Flame"); + body = new ModelRendererObj(null); + leftArm = new ModelRendererObj(null).setRotationPoint(-5.0F, 2.0F, 0.0F); + rightArm = new ModelRendererObj(null).setRotationPoint(5.0F, 2.0F, 0.0F); + leftLeg = new ModelRendererObj(null).setRotationPoint(1.9F, 12.0F, 0.0F); + rightLeg = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); + leftFoot = new ModelRendererObj(null).setRotationPoint(1.9F, 12.0F, 0.0F); + rightFoot = new ModelRendererObj(null).setRotationPoint(-1.9F, 12.0F, 0.0F); + } + + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { + + setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); + head.copyTo(insig); + head.copyTo(lamp); + + GL11.glPushMatrix(); + + if(type == 0) { + GL11.glShadeModel(GL11.GL_SMOOTH); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.no9); + head.render(par7); + Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.no9_insignia); + insig.render(par7); + + GL11.glColor3f(1F, 1F, 0.8F); + GL11.glDisable(GL11.GL_TEXTURE_2D); + GL11.glPushAttrib(GL11.GL_LIGHTING_BIT); + GL11.glDisable(GL11.GL_LIGHTING); + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240F, 240F); + lamp.render(par7); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glPopAttrib(); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glColor3f(1F, 1F, 1F); + GL11.glShadeModel(GL11.GL_FLAT); + } + + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java index facb5883e..1ec212628 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineDiesel.java @@ -47,8 +47,8 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE public static int fluidCap = 16000; public static HashMap fuelEfficiency = new HashMap(); static { - fuelEfficiency.put(FuelGrade.MEDIUM, 0.9D); - fuelEfficiency.put(FuelGrade.HIGH, 1.0D); + fuelEfficiency.put(FuelGrade.MEDIUM, 0.5D); + fuelEfficiency.put(FuelGrade.HIGH, 0.75D); fuelEfficiency.put(FuelGrade.AERO, 0.1D); } public static boolean shutUp = false; @@ -59,7 +59,7 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE public TileEntityMachineDiesel() { super(5); - tank = new FluidTank(Fluids.DIESEL, 16000, 0); + tank = new FluidTank(Fluids.DIESEL, 4_000, 0); } @Override @@ -192,7 +192,7 @@ public class TileEntityMachineDiesel extends TileEntityMachineBase implements IE if(!shutUp) { if (soundCycle == 0) { - this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 1.5F * this.getVolume(3), 0.5F); + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "fireworks.blast", 0.75F * this.getVolume(3), 0.5F); } soundCycle++; } diff --git a/src/main/resources/assets/hbm/models/armor/no9.obj b/src/main/resources/assets/hbm/models/armor/no9.obj new file mode 100644 index 000000000..44aa2277a --- /dev/null +++ b/src/main/resources/assets/hbm/models/armor/no9.obj @@ -0,0 +1,790 @@ +# Blender v2.79 (sub 0) OBJ File: 'no9.blend' +# www.blender.org +o Insignia +v 5.099990 -6.000002 1.000000 +v 5.099990 -6.000002 -1.000000 +v 5.099989 -8.000000 1.000000 +v 5.099989 -8.000000 -1.000000 +v -5.100010 -6.000002 1.000000 +v -5.100010 -6.000002 -1.000000 +v -5.100010 -8.000000 1.000000 +v -5.100010 -8.000000 -1.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.999900 0.999899 +vt 0.000100 0.000100 +vt 0.999900 0.000100 +vt 1.000000 1.000000 +vt 0.000100 0.999899 +vn 1.0000 0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +s off +f 1/1/1 4/2/1 2/3/1 +f 8/4/2 5/5/2 6/6/2 +f 1/1/1 3/7/1 4/2/1 +f 8/4/2 7/8/2 5/5/2 +o Flame +v 0.124989 -9.375008 -7.000004 +v 0.124989 -9.875008 -7.000004 +v -0.125011 -9.375008 -7.000004 +v -0.125011 -9.875008 -7.000004 +v -0.125011 -9.875008 -7.125004 +v -0.125011 -9.375008 -7.125004 +v 0.124989 -9.875008 -7.125004 +v 0.124989 -9.375008 -7.125004 +v -0.000011 -10.375008 -7.000004 +v -0.000011 -10.375008 -7.125004 +vn 0.0000 1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.9701 -0.2425 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.9701 -0.2425 0.0000 +s off +f 9//3 14//3 11//3 +f 10//4 16//4 9//4 +f 11//5 13//5 12//5 +f 17//6 15//6 10//6 +f 15//7 13//7 14//7 +f 12//8 18//8 17//8 +f 9//3 16//3 14//3 +f 10//4 15//4 16//4 +f 11//5 14//5 13//5 +f 17//6 18//6 15//6 +f 14//7 16//7 15//7 +f 15//7 18//7 13//7 +f 12//8 13//8 18//8 +o Helmet +v 0.999990 -6.500000 -6.000000 +v 0.999989 -10.500000 -6.000000 +v -1.000010 -6.500000 -6.000000 +v -1.000011 -10.500000 -6.000000 +v -1.000011 -10.500000 -5.000000 +v 0.999989 -10.500000 -5.000000 +v -1.000010 -6.500000 -5.000000 +v 0.999990 -6.500000 -5.000000 +v 3.999990 -5.000002 -7.000000 +v -4.000010 -4.999998 -7.000000 +v 3.999990 -5.000002 7.000000 +v -4.000010 -4.999998 7.000000 +v 6.999990 -5.000002 4.000000 +v 6.999990 -5.000002 -4.000000 +v -7.000010 -4.999998 4.000000 +v -7.000010 -4.999998 -4.000000 +v 3.999990 -6.000002 -5.000000 +v -4.000010 -5.999998 -5.000000 +v 3.999990 -6.000002 5.000000 +v -4.000010 -5.999998 5.000000 +v 4.999990 -6.000002 4.000000 +v 4.999990 -6.000002 -4.000000 +v -5.000010 -5.999998 4.000000 +v -5.000010 -5.999998 -4.000000 +v 3.999990 -8.000000 -5.000000 +v -4.000010 -7.999998 -5.000000 +v 3.999990 -8.000000 5.000000 +v -4.000010 -7.999998 5.000000 +v 4.999990 -8.000000 4.000000 +v 4.999990 -8.000000 -4.000000 +v -5.000010 -7.999998 4.000000 +v -5.000010 -7.999998 -4.000000 +v 2.999989 -10.000000 3.000000 +v 2.999989 -10.000000 -3.000000 +v -3.000011 -10.000000 3.000000 +v -3.000011 -10.000000 -3.000000 +v -4.500007 2.000002 0.500000 +v -4.500007 2.000002 -0.500000 +v -4.500010 -7.999998 0.500000 +v -4.500010 -7.999998 -0.500000 +v 4.499993 1.999998 0.500000 +v 4.499993 1.999998 -0.500000 +v 4.499990 -8.000000 0.500000 +v 4.499990 -8.000000 -0.500000 +v 4.157972 -0.439695 1.000000 +v 4.157972 -0.439695 -1.000000 +v 4.842013 1.439692 1.000000 +v 4.842013 1.439692 -1.000000 +v 1.499990 -6.000000 -5.000000 +v -1.500010 -6.000000 -5.000000 +v 1.499990 -7.000000 -5.000000 +v -1.500010 -7.000000 -5.000000 +v 1.499990 -7.000000 -5.500000 +v 1.499990 -6.000000 -5.500000 +v -1.500010 -6.000000 -5.500000 +v -1.500010 -7.000000 -5.500000 +v -0.000011 -10.500008 -6.200969 +v -0.000011 -9.500008 -6.000005 +v -0.707118 -10.207115 -6.200969 +v -1.224756 -10.724754 -6.750005 +v -1.414225 -10.914223 -7.500005 +v -1.000010 -9.500008 -6.200969 +v -1.732061 -9.500008 -6.750005 +v -2.000010 -9.500008 -7.500005 +v -0.707117 -8.792900 -6.200969 +v -1.224755 -8.275261 -6.750005 +v -1.414224 -8.085793 -7.500005 +v -0.000010 -8.500008 -6.200969 +v -0.000010 -7.767960 -6.750005 +v -0.000010 -7.500008 -7.500005 +v 0.707096 -8.792900 -6.200969 +v 1.224734 -8.275261 -6.750005 +v 1.414202 -8.085793 -7.500005 +v 0.999989 -9.500008 -6.200969 +v 1.732039 -9.500008 -6.750005 +v 1.999988 -9.500008 -7.500005 +v 0.707095 -10.207115 -6.200969 +v 1.224733 -10.724754 -6.750005 +v 1.414202 -10.914223 -7.500005 +v -0.000011 -11.232056 -6.750005 +v -0.000012 -11.500008 -7.500005 +v -0.000011 -10.500008 -6.633980 +v -0.000011 -9.500008 -6.500004 +v -0.707118 -10.207115 -6.633980 +v -1.224756 -10.724754 -7.000004 +v -1.000010 -9.500008 -6.633980 +v -1.732061 -9.500008 -7.000004 +v -0.707117 -8.792900 -6.633980 +v -1.224755 -8.275261 -7.000004 +v -0.000010 -8.500008 -6.633980 +v -0.000010 -7.767960 -7.000004 +v 0.707096 -8.792900 -6.633980 +v 1.224734 -8.275261 -7.000004 +v 0.999989 -9.500008 -6.633980 +v 1.732039 -9.500008 -7.000004 +v 0.707095 -10.207115 -6.633980 +v 1.224733 -10.724754 -7.000004 +v -0.000011 -11.232056 -7.000004 +v 1.499990 -8.000000 -5.500000 +v -1.500010 -8.000000 -5.500000 +v 1.499990 -7.646446 -5.353553 +v -1.500010 -7.646446 -5.353553 +v 1.499990 -7.500000 -5.000000 +v -1.500010 -7.500000 -5.000000 +v 1.499990 -7.646446 -4.646447 +v -1.500010 -7.646446 -4.646447 +v 1.499990 -8.000000 -4.500000 +v -1.500010 -8.000000 -4.500000 +v 1.499990 -8.353554 -4.646447 +v -1.500010 -8.353554 -4.646447 +v 1.499989 -8.500000 -5.000000 +v -1.500011 -8.500000 -5.000000 +v 1.499990 -8.353554 -5.353553 +v -1.500010 -8.353554 -5.353553 +v -0.500010 -6.500000 -6.500000 +v 0.499990 -6.500000 -6.500000 +v -0.500011 -10.500000 -6.500000 +v 0.499989 -10.500000 -6.500000 +v -0.500011 -10.500000 -4.500000 +v -0.500010 -6.500000 -4.500000 +v 0.499989 -10.500000 -4.500000 +v 0.499990 -6.500000 -4.500000 +v 1.015152 -8.661617 -6.500004 +v 0.661598 -9.015171 -6.500004 +v 1.015152 -8.661617 -7.500004 +v 0.661598 -9.015171 -7.500004 +v 0.838375 -8.484840 -6.500004 +v 0.484822 -8.838394 -6.500004 +v 0.838375 -8.484840 -7.500004 +v 0.484822 -8.838394 -7.500004 +v 0.249989 -9.250008 -6.500004 +v 0.249989 -9.750008 -6.500004 +v 0.249989 -9.250008 -7.000004 +v 0.249989 -9.750008 -7.000004 +v -0.250011 -9.250008 -6.500004 +v -0.250011 -9.750008 -6.500004 +v -0.250011 -9.250008 -7.000004 +v -0.250011 -9.750008 -7.000004 +v 0.999989 -9.375004 -6.500004 +v -1.000010 -9.375004 -6.500004 +v 0.999989 -9.625004 -6.500004 +v -1.000011 -9.625004 -6.500004 +v 0.999989 -9.625004 -6.750004 +v 0.999989 -9.375004 -6.750004 +v -1.000010 -9.375004 -6.750004 +v -1.000011 -9.625004 -6.750004 +vt 0.604167 0.444444 +vt 0.562500 0.444444 +vt 0.541667 0.416667 +vt 0.791667 0.333333 +vt 0.750000 0.111111 +vt 0.791667 0.111111 +vt 0.583333 0.111111 +vt 0.625000 0.333333 +vt 0.583333 0.333333 +vt 0.750000 0.333333 +vt 0.708333 0.111111 +vt 0.562500 0.000000 +vt 0.604167 0.000000 +vt 0.625000 0.027778 +vt 0.375000 0.111111 +vt 0.041667 -0.000000 +vt 0.375000 -0.000000 +vt 0.375000 0.111111 +vt 0.041667 0.000000 +vt 0.375000 0.000000 +vt 0.375000 0.111111 +vt 0.041667 0.000000 +vt 0.375000 0.000000 +vt 0.375000 0.111111 +vt 0.041667 0.000000 +vt 0.375000 0.000000 +vt 0.500000 0.111111 +vt 0.541667 0.000000 +vt 0.500000 0.111111 +vt 0.541667 0.000000 +vt 0.541667 0.000000 +vt 0.416667 0.111111 +vt 0.500000 0.111111 +vt 0.416667 0.111111 +vt 0.041667 0.166667 +vt 0.041667 0.111111 +vt 0.041667 0.166667 +vt 0.041667 0.111111 +vt 0.500000 0.111111 +vt 0.416667 0.222222 +vt 0.416667 0.222222 +vt 0.416667 0.111111 +vt 0.416667 0.111111 +vt 0.500000 0.222222 +vt 0.416667 0.222222 +vt 0.041667 0.166667 +vt 0.041667 0.111111 +vt 0.041667 0.166667 +vt 0.041667 0.111111 +vt 0.500000 0.222222 +vt 0.416667 0.222222 +vt 0.375000 0.166667 +vt 0.083333 0.333333 +vt 0.375000 0.166667 +vt 0.083333 0.333333 +vt 0.333333 0.666667 +vt 0.083333 0.333333 +vt 0.333333 0.333333 +vt 0.375000 0.166667 +vt 0.458333 0.388889 +vt 0.458333 0.388889 +vt 0.500000 0.222222 +vt 0.458333 0.388889 +vt 0.333333 0.333333 +vt 0.375000 0.166667 +vt 0.500000 0.222222 +vt 0.458333 0.388889 +vt 0.041667 0.000000 +vt 0.000000 0.555556 +vt 0.000000 0.000000 +vt 0.041667 0.555556 +vt 0.000000 -0.000000 +vt 0.041667 -0.000000 +vt -0.000000 0.555556 +vt 0.083333 0.666667 +vt -0.000000 0.666667 +vt 0.791667 0.444444 +vt 0.666667 0.388889 +vt 0.791667 0.388889 +vt 0.625000 0.388889 +vt 0.666667 0.444444 +vt 0.625000 0.444444 +vt 0.833333 0.444444 +vt 0.833333 0.388889 +vt 0.666667 0.500000 +vt 0.791667 0.500000 +vt 0.791667 0.333333 +vt 0.666667 0.333333 +vt 0.312497 0.719916 +vt 0.293795 0.694980 +vt 0.312497 0.670044 +vt 0.479106 0.719320 +vt 0.465838 0.711993 +vt 0.492375 0.676610 +vt 0.666667 0.333333 +vt 0.666667 0.111111 +vt 0.625000 0.111111 +vt 0.875000 0.333333 +vt 0.833333 0.111111 +vt 0.875000 0.111111 +vt 0.541667 0.111111 +vt 0.833333 0.333333 +vt 0.708333 0.500000 +vt 0.625000 0.555556 +vt 0.625000 0.500000 +vt 0.583333 0.611111 +vt 0.500000 0.555556 +vt 0.583333 0.555556 +vt 0.583333 0.500000 +vt 0.958333 0.833333 +vt 0.875000 0.722222 +vt 0.958333 0.722222 +vt 0.458333 0.555556 +vt 0.500000 0.500000 +vt 0.875000 0.833333 +vt 0.791667 0.722222 +vt 0.791667 0.833333 +vt 0.708333 0.722222 +vt 0.875000 0.611111 +vt 0.791667 0.944444 +vt 0.750000 0.666667 +vt 0.583333 0.611111 +vt 0.750000 0.611111 +vt 0.541667 0.611111 +vt 0.583333 0.666667 +vt 0.541667 0.666667 +vt 0.791667 0.666667 +vt 0.791667 0.611111 +vt 0.583333 0.722222 +vt 0.750000 0.722222 +vt 0.750000 0.555556 +vt 0.583333 0.555556 +vt 0.541667 0.361111 +vt 0.625000 0.361111 +vt 0.562500 0.333333 +vt 0.604167 0.333333 +vt 0.625000 0.416667 +vt 0.708333 0.333333 +vt 0.625000 0.083333 +vt 0.541667 0.083333 +vt 0.604167 0.111111 +vt 0.562500 0.111111 +vt 0.541667 0.027778 +vt 0.541667 0.000000 +vt 0.333333 0.333333 +vt 0.333333 0.333333 +vt 0.083333 0.666667 +vt 0.083333 0.333333 +vt 0.041667 0.555556 +vt 0.000000 0.555556 +vt 0.083333 0.555556 +vt 0.325721 0.677348 +vt 0.331199 0.694980 +vt 0.325721 0.712612 +vt 0.299273 0.712613 +vt 0.299273 0.677348 +vt 0.460342 0.694301 +vt 0.465838 0.676610 +vt 0.479106 0.669282 +vt 0.497871 0.694301 +vt 0.492375 0.711993 +vt 0.541667 0.333333 +vt 0.708333 0.555556 +vt 0.500000 0.611111 +vt 0.458333 0.500000 +vt 0.708333 0.833333 +vt 0.791667 0.611111 +vt 0.875000 0.944444 +vt 0.416667 1.000000 +vt 0.625000 0.888889 +vt 0.666667 1.000000 +vt 0.500000 0.777778 +vt 0.541667 0.666667 +vt 0.583333 0.777778 +vt 0.458333 0.888889 +vt 0.500000 0.777778 +vt 0.625000 0.888889 +vt 0.458333 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.583333 0.777778 +vt 0.458333 0.888889 +vt 0.583333 0.777778 +vt 0.625000 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.500000 0.777778 +vt 0.500000 0.777778 +vt 0.625000 0.888889 +vt 0.458333 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.583333 0.777778 +vt 0.458333 0.888889 +vt 0.583333 0.777778 +vt 0.625000 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.500000 0.777778 +vt 0.500000 0.777778 +vt 0.625000 0.888889 +vt 0.458333 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.583333 0.777778 +vt 0.458333 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.500000 0.777778 +vt 0.583333 0.777778 +vt 0.625000 0.888889 +vt 0.458333 0.888889 +vt 0.666667 1.000000 +vt 0.416667 1.000000 +vt 0.500000 0.777778 +vt 0.583333 0.777778 +vt 0.625000 0.888889 +vt 0.166667 0.777778 +vt 0.083333 0.777778 +vt 0.125000 0.666667 +vt 0.208333 0.888889 +vt 0.041667 0.888889 +vt 0.166667 0.777778 +vt 0.208333 0.888889 +vt 0.083333 0.777778 +vt 0.208333 0.888889 +vt 0.083333 0.777778 +vt 0.166667 0.777778 +vt 0.041667 0.888889 +vt 0.166667 0.777778 +vt 0.208333 0.888889 +vt 0.083333 0.777778 +vt 0.208333 0.888889 +vt 0.083333 0.777778 +vt 0.166667 0.777778 +vt 0.041667 0.888889 +vt 0.166667 0.777778 +vt 0.208333 0.888889 +vt 0.083333 0.777778 +vt 0.250000 1.000000 +vt 0.041667 0.888889 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.166667 0.777778 +vt 0.083333 0.777778 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.208333 0.888889 +vt 0.041667 0.888889 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt 0.208333 0.888889 +vt 0.250000 1.000000 +vt 0.166667 0.777778 +vt 0.083333 0.777778 +vt 0.041667 0.888889 +vt 0.250000 1.000000 +vt -0.000000 1.000000 +vt 0.250000 1.000000 +vt 0.041667 0.888889 +vt 0.333333 0.500000 +vt 0.458333 0.444444 +vt 0.458333 0.500000 +vt 0.333333 0.444444 +vt 0.458333 0.388889 +vt 0.458333 0.722222 +vt 0.333333 0.666667 +vt 0.458333 0.666667 +vt 0.458333 0.611111 +vt 0.333333 0.611111 +vt 0.458333 0.555556 +vt 0.333333 0.555556 +vt 0.041667 0.888889 +vt -0.000000 1.000000 +vt -0.000000 1.000000 +vt 0.333333 0.388889 +vt 0.333333 0.722222 +vn 0.0000 -1.0000 0.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.7071 -0.0000 -0.7071 +vn 0.0000 1.0000 -0.0000 +vn -0.4472 -0.8944 0.0000 +vn -0.0000 -0.8944 0.4472 +vn 0.4472 -0.8944 0.0000 +vn -0.0000 -0.8944 -0.4472 +vn 0.4082 -0.8165 -0.4082 +vn 0.4082 -0.8165 0.4082 +vn -0.4082 -0.8165 0.4082 +vn -0.4082 -0.8165 -0.4082 +vn 0.0000 0.0000 1.0000 +vn -0.7071 0.0000 0.7071 +vn 0.7071 0.0000 0.7071 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +vn -0.0000 -0.7071 -0.7071 +vn 0.4851 -0.7276 -0.4851 +vn -0.4851 -0.7276 -0.4851 +vn 0.4851 -0.7276 0.4851 +vn -0.0000 -0.7071 0.7071 +vn -0.4851 -0.7276 0.4851 +vn 0.9397 -0.3420 0.0000 +vn -0.7071 0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.0000 -0.9417 0.3364 +vn -0.5850 -0.5850 0.5618 +vn -0.6659 -0.6659 0.3364 +vn -0.0000 -0.4523 0.8919 +vn -0.3198 -0.3198 0.8919 +vn 0.0000 -0.8273 0.5618 +vn -0.8273 0.0000 0.5618 +vn -0.9417 0.0000 0.3364 +vn -0.4523 0.0000 0.8919 +vn -0.3198 0.3198 0.8919 +vn -0.5850 0.5850 0.5618 +vn -0.6659 0.6659 0.3364 +vn 0.0000 0.8273 0.5618 +vn 0.0000 0.9417 0.3364 +vn -0.0000 0.4523 0.8919 +vn 0.3198 0.3198 0.8919 +vn 0.5850 0.5850 0.5618 +vn 0.6659 0.6659 0.3364 +vn 0.8273 -0.0000 0.5618 +vn 0.9417 -0.0000 0.3364 +vn 0.4523 -0.0000 0.8919 +vn 0.6659 -0.6659 0.3364 +vn 0.3198 -0.3198 0.8919 +vn 0.5850 -0.5850 0.5618 +vn 0.0000 0.3305 -0.9438 +vn 0.2337 0.2337 -0.9438 +vn -0.0000 0.7317 -0.6816 +vn 0.7317 -0.0000 -0.6816 +vn 0.5174 0.5174 -0.6816 +vn 0.3305 -0.0000 -0.9438 +vn 0.2337 -0.2337 -0.9438 +vn -0.0000 -0.7317 -0.6816 +vn 0.5174 -0.5174 -0.6816 +vn 0.0000 -0.3305 -0.9438 +vn -0.2337 -0.2337 -0.9438 +vn -0.7317 0.0000 -0.6816 +vn -0.5174 -0.5174 -0.6816 +vn -0.3305 0.0000 -0.9438 +vn 0.8814 -0.0000 -0.4723 +vn -0.0000 -0.8814 -0.4723 +vn 0.6233 -0.6233 -0.4723 +vn -0.2337 0.2337 -0.9438 +vn -0.6233 -0.6233 -0.4723 +vn -0.8814 0.0000 -0.4723 +vn -0.5174 0.5174 -0.6816 +vn -0.6233 0.6233 -0.4723 +vn 0.0000 0.8814 -0.4723 +vn 0.6233 0.6233 -0.4723 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 0.9239 -0.3827 +vn 0.0000 -0.3827 0.9239 +s off +f 139/9/9 137/10/9 23/11/9 +f 24/12/10 19/13/10 26/14/10 +f 25/15/11 22/16/11 23/17/11 +f 20/18/12 134/19/12 19/13/12 +f 138/20/13 140/21/13 26/22/13 +f 42/23/14 33/24/14 34/25/14 +f 38/26/15 29/27/15 30/28/15 +f 39/29/16 32/30/16 31/31/16 +f 35/32/17 28/33/17 27/34/17 +f 40/35/18 27/34/18 32/36/18 +f 37/37/19 31/31/19 29/38/19 +f 33/39/20 38/40/20 30/28/20 +f 34/25/21 36/41/21 42/42/21 +f 42/23/11 49/43/11 41/44/11 +f 38/26/22 45/45/22 37/46/22 +f 41/47/23 46/48/23 38/40/23 +f 37/37/24 47/49/24 39/50/24 +f 35/51/12 48/52/12 43/53/12 +f 39/29/10 48/54/10 40/55/10 +f 35/32/25 44/56/25 36/57/25 +f 42/42/26 44/58/26 50/59/26 +f 50/60/27 53/61/27 49/43/27 +f 47/62/28 52/63/28 48/54/28 +f 51/64/9 54/65/9 52/66/9 +f 43/67/29 54/65/29 44/56/29 +f 48/52/30 52/68/30 43/53/30 +f 44/58/31 54/69/31 50/59/31 +f 47/49/32 45/70/32 51/71/32 +f 53/72/33 45/45/33 46/73/33 +f 49/74/34 53/75/34 46/48/34 +f 56/76/11 57/77/11 55/78/11 +f 61/79/10 60/80/10 59/81/10 +f 66/82/35 63/83/35 64/84/35 +f 71/85/25 73/86/25 72/87/25 +f 68/88/11 74/89/11 70/90/11 +f 69/91/10 72/87/10 67/92/10 +f 70/93/9 71/85/9 69/94/9 +f 67/95/13 73/86/13 68/96/13 +f 130/97/11 126/98/11 122/99/11 +f 129/100/10 131/101/10 123/102/10 +f 134/19/25 135/103/25 133/104/25 +f 21/105/26 135/103/26 22/16/26 +f 137/106/22 140/107/22 138/108/22 +f 23/17/23 138/109/23 25/15/23 +f 24/12/24 140/107/24 139/110/24 +f 142/111/28 143/112/28 141/113/28 +f 143/114/25 148/115/25 147/116/25 +f 148/115/36 145/117/36 147/116/36 +f 150/118/10 151/119/10 149/120/10 +f 147/116/37 141/113/37 143/112/37 +f 144/121/27 146/122/27 148/115/27 +f 152/123/25 155/124/25 151/119/25 +f 156/125/11 153/126/11 155/124/11 +f 155/124/13 149/127/13 151/119/13 +f 152/123/9 154/128/9 156/125/9 +f 161/129/25 163/130/25 162/131/25 +f 158/132/11 164/133/11 160/134/11 +f 159/135/10 162/131/10 157/136/10 +f 160/137/9 161/129/9 159/138/9 +f 157/139/13 163/130/13 158/140/13 +f 23/11/9 22/141/9 20/142/9 +f 22/141/9 135/143/9 20/142/9 +f 135/143/9 136/144/9 20/142/9 +f 20/142/9 24/145/9 23/11/9 +f 24/145/9 139/9/9 23/11/9 +f 24/12/10 20/18/10 19/13/10 +f 25/15/11 21/105/11 22/16/11 +f 20/18/12 136/146/12 134/19/12 +f 26/22/13 19/147/13 21/148/13 +f 19/147/13 134/149/13 21/148/13 +f 134/149/13 133/150/13 21/148/13 +f 21/148/13 25/151/13 26/22/13 +f 25/151/13 138/20/13 26/22/13 +f 42/23/14 41/44/14 33/24/14 +f 38/26/15 37/46/15 29/27/15 +f 39/29/16 40/55/16 32/30/16 +f 35/32/17 36/57/17 28/33/17 +f 40/35/18 35/51/18 27/34/18 +f 37/37/19 39/50/19 31/31/19 +f 33/39/20 41/47/20 38/40/20 +f 34/25/21 28/152/21 36/41/21 +f 42/23/11 50/60/11 49/43/11 +f 38/26/22 46/73/22 45/45/22 +f 41/47/23 49/74/23 46/48/23 +f 37/37/24 45/70/24 47/49/24 +f 35/51/12 40/35/12 48/52/12 +f 39/29/10 47/62/10 48/54/10 +f 35/32/25 43/67/25 44/56/25 +f 42/42/26 36/41/26 44/58/26 +f 50/60/27 54/153/27 53/61/27 +f 47/62/28 51/154/28 52/63/28 +f 51/64/9 53/155/9 54/65/9 +f 43/67/29 52/66/29 54/65/29 +f 53/72/33 51/156/33 45/45/33 +f 56/76/11 58/157/11 57/77/11 +f 61/79/10 62/158/10 60/80/10 +f 66/82/35 65/159/35 63/83/35 +f 71/85/25 74/89/25 73/86/25 +f 68/88/11 73/86/11 74/89/11 +f 69/91/10 71/85/10 72/87/10 +f 70/93/9 74/89/9 71/85/9 +f 67/95/13 72/87/13 73/86/13 +f 122/99/11 120/160/11 130/97/11 +f 120/160/11 118/161/11 130/97/11 +f 118/161/11 132/162/11 130/97/11 +f 130/97/11 128/163/11 126/98/11 +f 126/98/11 124/164/11 122/99/11 +f 131/101/10 117/165/10 119/166/10 +f 119/166/10 121/167/10 131/101/10 +f 121/167/10 123/102/10 131/101/10 +f 123/102/10 125/168/10 127/169/10 +f 127/169/10 129/100/10 123/102/10 +f 134/19/25 136/146/25 135/103/25 +f 21/105/26 133/104/26 135/103/26 +f 137/106/22 139/110/22 140/107/22 +f 23/17/23 137/170/23 138/109/23 +f 24/12/24 26/14/24 140/107/24 +f 142/111/28 144/171/28 143/112/28 +f 143/114/25 144/172/25 148/115/25 +f 148/115/36 146/122/36 145/117/36 +f 150/118/10 152/123/10 151/119/10 +f 147/116/37 145/117/37 141/113/37 +f 144/121/27 142/173/27 146/122/27 +f 152/123/25 156/125/25 155/124/25 +f 156/125/11 154/174/11 153/126/11 +f 155/124/13 153/175/13 149/127/13 +f 152/123/9 150/176/9 154/128/9 +f 161/129/25 164/133/25 163/130/25 +f 158/132/11 163/130/11 164/133/11 +f 159/135/10 161/129/10 162/131/10 +f 160/137/9 164/133/9 161/129/9 +f 157/139/13 162/131/13 163/130/13 +s 1 +f 99/177/38 78/178/39 79/179/40 +f 75/180/41 76/181/22 77/182/42 +f 98/183/43 77/182/42 78/178/39 +f 77/184/42 81/185/44 78/186/39 +f 78/186/39 82/187/45 79/188/40 +f 77/184/42 76/181/22 80/189/46 +f 81/190/44 83/191/47 84/192/48 +f 81/190/44 85/193/49 82/194/45 +f 80/195/46 76/181/22 83/191/47 +f 83/196/47 87/197/50 84/198/48 +f 84/198/48 88/199/51 85/200/49 +f 83/196/47 76/181/22 86/201/52 +f 87/202/50 89/203/53 90/204/54 +f 87/202/50 91/205/55 88/206/51 +f 86/207/52 76/181/22 89/203/53 +f 89/208/53 93/209/56 90/210/54 +f 90/210/54 94/211/57 91/212/55 +f 89/208/53 76/181/22 92/213/58 +f 93/214/56 97/215/59 94/216/57 +f 92/217/58 76/181/22 95/218/60 +f 93/214/56 95/218/60 96/219/61 +f 96/220/61 99/221/38 97/222/59 +f 95/223/60 76/181/22 75/224/41 +f 95/223/60 98/225/43 96/220/61 +f 100/226/62 102/227/63 101/228/25 +f 116/229/64 102/227/63 100/226/62 +f 105/230/65 102/231/63 103/232/66 +f 102/231/63 104/233/67 101/228/25 +f 105/234/65 106/235/68 104/236/67 +f 104/236/67 106/235/68 101/228/25 +f 109/237/69 106/238/68 107/239/70 +f 106/238/68 108/240/71 101/228/25 +f 109/241/69 110/242/72 108/243/71 +f 108/243/71 110/242/72 101/228/25 +f 113/244/73 110/245/72 111/246/74 +f 110/245/72 112/247/75 101/228/25 +f 82/248/76 107/249/70 105/234/65 +f 88/250/77 107/239/70 85/251/78 +f 112/252/75 114/253/79 101/228/25 +f 91/254/80 109/241/69 88/255/77 +f 94/256/81 111/246/74 91/257/80 +f 113/258/73 114/253/79 112/252/75 +f 115/259/82 94/260/81 97/261/83 +f 99/262/84 115/263/82 97/264/83 +f 114/265/79 100/266/62 101/228/25 +f 103/267/66 99/268/84 79/269/85 +f 79/270/85 105/230/65 103/232/66 +f 116/271/64 114/265/79 115/263/82 +f 118/272/25 119/273/86 117/274/25 +f 120/275/86 121/276/87 119/273/86 +f 125/277/88 128/278/33 127/279/33 +f 128/278/33 129/280/9 127/279/33 +f 130/281/9 131/282/29 129/280/9 +f 132/283/29 117/274/25 131/282/29 +f 99/177/38 98/183/43 78/178/39 +f 98/183/43 75/180/41 77/182/42 +f 77/184/42 80/189/46 81/185/44 +f 78/186/39 81/185/44 82/187/45 +f 81/190/44 80/195/46 83/191/47 +f 81/190/44 84/192/48 85/193/49 +f 83/196/47 86/201/52 87/197/50 +f 84/198/48 87/197/50 88/199/51 +f 87/202/50 86/207/52 89/203/53 +f 87/202/50 90/204/54 91/205/55 +f 89/208/53 92/213/58 93/209/56 +f 90/210/54 93/209/56 94/211/57 +f 93/214/56 96/219/61 97/215/59 +f 93/214/56 92/217/58 95/218/60 +f 96/220/61 98/225/43 99/221/38 +f 95/223/60 75/224/41 98/225/43 +f 116/229/64 103/267/66 102/227/63 +f 105/230/65 104/233/67 102/231/63 +f 105/234/65 107/249/70 106/235/68 +f 109/237/69 108/240/71 106/238/68 +f 109/241/69 111/284/74 110/242/72 +f 113/244/73 112/247/75 110/245/72 +f 82/248/76 85/285/78 107/249/70 +f 88/250/77 109/237/69 107/239/70 +f 91/254/80 111/284/74 109/241/69 +f 94/256/81 113/244/73 111/246/74 +f 113/258/73 115/259/82 114/253/79 +f 115/259/82 113/258/73 94/260/81 +f 99/262/84 116/271/64 115/263/82 +f 103/267/66 116/229/64 99/268/84 +f 79/270/85 82/286/76 105/230/65 +f 116/271/64 100/266/62 114/265/79 +f 118/272/25 120/275/86 119/273/86 +f 120/275/86 122/287/87 121/276/87 +f 125/277/88 126/288/88 128/278/33 +f 128/278/33 130/281/9 129/280/9 +f 130/281/9 132/283/29 131/282/29 +f 132/283/29 118/272/25 117/274/25 diff --git a/src/main/resources/assets/hbm/textures/armor/no9.png b/src/main/resources/assets/hbm/textures/armor/no9.png new file mode 100644 index 000000000..e2254aaa0 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/no9.png differ diff --git a/src/main/resources/assets/hbm/textures/armor/no9_insignia.png b/src/main/resources/assets/hbm/textures/armor/no9_insignia.png new file mode 100644 index 000000000..ae5ab37fe Binary files /dev/null and b/src/main/resources/assets/hbm/textures/armor/no9_insignia.png differ diff --git a/src/main/resources/assets/hbm/textures/blocks/block_cadmium.png b/src/main/resources/assets/hbm/textures/blocks/block_cadmium.png new file mode 100644 index 000000000..55c4cc867 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/blocks/block_cadmium.png differ diff --git a/src/main/resources/assets/hbm/textures/models/machines/dieselgen.png b/src/main/resources/assets/hbm/textures/models/machines/dieselgen.png index a085977af..6775bc83a 100644 Binary files a/src/main/resources/assets/hbm/textures/models/machines/dieselgen.png and b/src/main/resources/assets/hbm/textures/models/machines/dieselgen.png differ diff --git a/src/main/resources/assets/hbm/textures/models/weapons/tau.png b/src/main/resources/assets/hbm/textures/models/weapons/tau.png new file mode 100644 index 000000000..2a3099f11 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/weapons/tau.png differ