From 668b3be77cfe487eeaa0a7395feb5e17050110c2 Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 25 Mar 2023 00:37:14 +0100 Subject: [PATCH] funny miner's helmet with headlamp --- .../com/hbm/blocks/machine/MachineDiesel.java | 21 + .../hbm/inventory/gui/GUIMachineDiesel.java | 24 +- .../inventory/recipes/AssemblerRecipes.java | 2 +- .../inventory/recipes/anvil/AnvilRecipes.java | 2 + src/main/java/com/hbm/items/ModItems.java | 3 + .../java/com/hbm/items/armor/ArmorNo9.java | 158 ++++ .../java/com/hbm/main/ModEventHandler.java | 1 + .../com/hbm/main/ModEventHandlerClient.java | 2 + .../java/com/hbm/main/ResourceManager.java | 3 + .../java/com/hbm/render/model/ModelHat.java | 14 +- .../java/com/hbm/render/model/ModelNo9.java | 63 ++ .../machine/TileEntityMachineDiesel.java | 8 +- .../resources/assets/hbm/models/armor/no9.obj | 790 ++++++++++++++++++ .../assets/hbm/textures/armor/no9.png | Bin 0 -> 630 bytes .../hbm/textures/armor/no9_insignia.png | Bin 0 -> 243 bytes .../hbm/textures/blocks/block_cadmium.png | Bin 0 -> 743 bytes .../textures/models/machines/dieselgen.png | Bin 521 -> 1023 bytes .../hbm/textures/models/weapons/tau.png | Bin 0 -> 13978 bytes 18 files changed, 1057 insertions(+), 34 deletions(-) create mode 100644 src/main/java/com/hbm/items/armor/ArmorNo9.java create mode 100644 src/main/java/com/hbm/render/model/ModelNo9.java create mode 100644 src/main/resources/assets/hbm/models/armor/no9.obj create mode 100644 src/main/resources/assets/hbm/textures/armor/no9.png create mode 100644 src/main/resources/assets/hbm/textures/armor/no9_insignia.png create mode 100644 src/main/resources/assets/hbm/textures/blocks/block_cadmium.png create mode 100644 src/main/resources/assets/hbm/textures/models/weapons/tau.png 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 0000000000000000000000000000000000000000..e2254aaa061aaa8ed121083f34a124a319009e18 GIT binary patch literal 630 zcmV-+0*U>JP)KH)|eO>7K`f}MmCohR?Mc|auo@{$=*F>QK~NufctIJljO;p)dTycdeCv3 zSTP%&q}_6%*HVWczL*arniv@t@77W8}uhJ&jyk-|!?0s~`fXi&o5Lr(VU1+4MLm z^gUgGUP&r>9DsVQLAh8EvN{P*4*+_cluD#Gd#7GiHaf|KU+94_rLw3US0vINUA0d9 z@2BgMKu-t+$Rv@R`<2s#8EvkyOW3~O=k|DKb<>6|!DZEpFQ4hDu2OOsXUCrR>>gTe~DWM4flI~>b literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..55c4cc867d70f47d69966db173ac0610af62ec92 GIT binary patch literal 743 zcmV?P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0%A!-K~y+T9a6h) z6iF04RbB2Lk9&>RLbkLL5+d2ihyalxet`&WM1uBT_A7|^2qc1i5Rj}kK$e%li^q68 z7|%>kcTIKG?RsuC(hW+gd(J)Q+{<1(K~(dS8)@bB>ch;5NrlP5;iF&P+I|jrFu{xI zpcYO`pmatLvK7_g>ipy1uYVH-L>9w}IH)h1%Qr|Z7j=py$;N5Vin~sc>7=}#|MBkq zF&jm3mUWAgi%C&V%lfFOL;_{8#m*!}%gYJpB6!MeF~LRf=>)-P&hz&;Cpgb}4TwR_ zy=nW^xmteqq_l@mC>XfN?u{Zj)9dpvh%j(RItCs*%w}%Z^KO1>Hn%*%hVK(ppNG}K zQi`=Rk=k2oZai7jEY$5RBb_GGHsp{gd;rgpTctBANg1rzF6Shb`ZlwQY)_2WqC9j% zVgY&pOW--lL0Q+U^?(1gSDzRT`_)ZzacVjh!(?-D#&-@5embdgHW5_@@PHI*F7}<_ zcI!)F5FjyGZ)c*fB-T1|Q_NoHSlbKOA$>A-46Jyso-ThIV$5F^;HKjYys?mvF^`(Jl}an&RlG42nqiK$0V$!xSF->0000EWmrjOO-%qQ00008 Z000000002eQ41pfz+Gk*iNNkliB_tVnUP9f z0jWO#7Jfp5mI_Q=TM4ORN<-!}LXl7gDgvoe1*FIwBBy7c&pzAFAyoY&E57r+ zcjx!Md+&TX1s+r?728`E1zTHNN)q`=!Hl;;*Y(F3$Ham2?tjV2Ng~E{yWJ$>i9y9! zjxkB`uP{z%-BPKPh&fLkfs9dA)wjOi@B2O%)hCq`!7E3pCv+-_Uc&oaR3Al7RaM;H z-n!Zuh5-P+^+AS7s)szrBt@-ObCt{Ga$tR0dIDq2xTliiRarRR_p*UPkFvbH>xzK&~0`2}ZHm=T; zY&L5H(HZjn9%P@ zn67~#V*rE>*cm9BB^=qO3Mt0K@epfFR$i7BaY5A=mz9!unw8ZvKLPMlZD;nzO*Spv1DhFMvNKzx6JN|?J(!tP8Np`?s8jl9AQY!FrqK=aqOi~^u-xQWMNs$JME(E z`m_5!GCO#F`#*6ZIuFEcJG8sJm1Ql@wv#=8E-pxPu?YRTc3xc1 zbbK$ijTfeA;`;g;rfH7q_V)Gw(44$#G*cS5ySsC-F%E3o=I*7kQcytDGaX@I&gb*k z-{0rzsg9$qtgN6~tzvC$4b^HD^?KcA%VEFU+uI7@o=VRBAHnVQAW-V-pE`k}ipmhrb z#3Z!9m2ocM0!nZPBEVueNo$a7-+^aeqLD4_!e=F|BorJpU;u!cdTglx<=T8lCjb2b zUX^Lz1~rN%;tE{L9b)PqdJX_s)79RwDW9#cR6h|b5yQZ%tADj=?MW2({K5M*rTx%0 zQY=RbwTibR5yK$DFo-Y=A`HWHxm=pMu90OK>bgc%RijAIx}rQ`KEJzJ+&=QCJmK{Q zrrgKnA6%c4LHlaT;O0N!1n)#Cwt-b*zZWDd%!s~VD!wqO(PG(l?EfMJgeh-h&F-|H zr34f}Nn>1Z(tqX#7uhQfOz*pEyXv?RKm|ZM0D;J$BH3Fo%5J_o_>hQU@FK>YSLjJY z6zKcTNW?IRFbpCLg9yVgk)3szi4`TwGAtI0(X1+6k)gyO!Z3(13?dAJ2*V)4Fo-Y= z{h!A)xF`7KzO{K${>0rZgnV)S4dZ(-VGMpehhJvywOQ+O6nQute)-7rytmBV6Q;cT z2ZRO;MHsv9OR?w03HM4d?PHNShCzg37;KLD3(n^=0AMzo0RV`uS2woqzIW?wbJ7J) WhlvW0$vznX0000H)ckox|%sdkK1<6BNNe31F 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�ek z`g+Z++py;Zw^%&2{C`gX^q(uZsRdqZqEn;8o<7Gtd7B)D1hS9~&3(EorZkVfh9Crc z&F;+jGhB7z%ZGe3hg9vZ_*G7qHgbG7W|iA|OsGskY;@uIa<&9a_~sPw*CuHS8_q-& z`HHhfo2h7Xao^-4mIvhACbVDXCA_26{wpKig$3-onM075C#GxfHy7$;0j0(lLO_M-_L_a$!bbT=NNuN6afi`r&n@cUNPKD6K_^ktF^MJVHuyZT&zAZCgmyhlx1M%0DycT5d}a^4DIBK) zedp||s{srd<60F}_-*fFskMz=zH{qZaLF6}mof=yO|X~tXDiNk8E}(A%|E>119Tyc z)@YuEIoJ^%-(TKV&kb`L_Z@PI5vq{Kg4yp+{u__wKGF?l)P_sGA=CEM?MsQEvHydIL^fvZeQc_tt;&^NKGE zCl;{lg7H_mPf5j1$#*dl>>J3&80G@nefbC&B@(OOh{UEYLjw3Zg1cgS8wd5T%kJi1 zG%mag+4cVxOJrB-s0lP=%-yJJoYYP>>d%33NUdT|a0s_bf+ZT92nLyohK}KR+c)D&;BZhj7BRQQzzPbo(VUkw2A>JMaiGIY3x99GW?FkVBBNqpUXkGC6LKkT0_Y$!36j1g+BcAq=VsY+DXn|LB7888j)7MGd#3!si`^W9NHmpfWwD>u}af zK2tZ7YM}DD`{#pgnb@;g)q`Q8SzjHrdgj8XSk>MqP)ygSM(m4wqV}hQ&8G~Ku9xax zhSESnZqYLgM*=hzti__(6X2KGtBMR<2luxWrtH~M z!eos|RHXQxuU6c4$py;9g z@IL+lX-6M#@3|#`9~LoM25IRr%=w|1NL=Qt5e{{;U7{%)0iy_U)7pJR*FAe*+y${a5?@`{Uv!7RMx} zJs4a<8Xh$^XVy1*xYi{I%3J|R+zx-?4*eZJ69k5 zpqb2sm(cb zFp9m^x7m&h`3Mkl;%J@?Dg!O99NbG8p%woes4Mk|L<-Y=;*`<|K-Xp&Dz?FsQVi$o zdZcqFR>v4~&h_D~fBhHnfwFmX8}dsyyfp8|gc<^gvZTXJi?C$CjT}5&?MdKcud+$W zyCL*9()KLD_iSOnMI8bOtXFfS5g0@&_3@G9=Excxvo+qd1gLt=N*LIFw6O#Q2A2@sGw5wiPXgYP4_R)Ld9~n4!!_ zX@DeE1G*Hnp|XZuU@af_m|UBBKV;bGcj_7Am!M|3f&MT-+I_t8n&4?9f(=p?(s!sz zB9=27R2YQ&93VV=@f%8H7iwu*RZ0}ZNNY^lkz`)gdFD*4NoTOw!noa@>a zg20(JxDesuT`iZY(3>tvbpQOzy$TX|YmOlZKcKEkfPH7o+pGdjp|7^AxsT^a=w4jP zz3Y*4li%I!YR&v+@6o9_gSmq>IkGu^{O>qp5nDk)e%x*;7xq#_^Jf;&kcUQ?rZ(V+a~jba0fA8Nzg+-1`eEm1 z+nl@PzjC})5P1dp1M_ar?x^>L$=8r9G@p>IBO~SSw#2HcsuqUtSkimR{}m4|8Q5Wn zM%~OqR-`o?iM%-!Vt@Y8HJo86J)jTgvB8UvFW}P(=p9PfqDua!69aqQL zavcEO6P5Ih^U3i<4Dp$4syaT|$z=Sv?FxP~oRxEj;z}#?g{5Z7Mn`9zJRH^Tvzp(dBjn#t*dyE>;&k&nnva;zko3J8W35Hn3@r<$yqzl@1ZKDm zsyZ%Q?&DvwAG^Kx>CC?$Ai8R^7cSmGY% zHGD^?)!MqstT_impYofn5gi`;GDHdcuSp)X{wM6|uH)(GwIkvsG&qOc)9aSk+c!0b zcQ8ugTrM1Um%P`(Imc$W;m&SXBjiDQb7USE?}^W9C*rsskW7+GX5#bwO_6$}RX`dw zRRG{+W;uyAzWj11apSbypRHeGrxZ25`tYs}4^hE}8(#^p?@wxqs>mpJ8=H%RX+*Ag znk90g6STK-)!be-ZqDC?ll^;1;4v%&D^i-|hvH&F(J}molYc`9xjmksWX``w)LFoL zoDz?a(%H1;GZiC@h$K7}%0Bno^Q-v)KPWP6yM-OcItDYHya{m_k1j$kYB9mqfsHOr zHCY$CSva(je8`AAEl#w`v_3~^zCicdV`~*UbbER)U^*^3vQlPQNf$;g-ElrSLaPfe zM}kG9ay+w#p~SwMti-3N$b>R8#S}AfU)oQ~tl{UzIWhsldl`bRFb|yhZ1IT@ksVc& z2D(`~HvIVoI-4vc4m25>p98qejh5E7RI64gT&fN3$cd-H@d1>t^snyyK6f*W(BX@p zVYB6njo#N>{2w$yd)djcStlcZRFRmax}|=~G*spuZ*l8<{!*!gD{DxHA0=#Q7<0n; z(dzjD=i=EsFkRs1-t?3oMr#pq9}PV_COcQE6fvRm4&QEOae6c@M4QLdk!&r@HRuI6wT$okGcV(U;^M@`9W)lDEMj`u^=mlbB*-+@m%kqR=@ z=;17{zUTFc6purt_yYQw4%*gPqIWyZ>#fdVSH-{N+5%l(Yw!O&c$r*7Ux}*Ooy6S1 z6lD7fwIP3MK(js4~m4N5e7n5pB!o0ix$bAB3 zCP!M%I8xXhHksEq*5BI>Xy1c@J?;O_4~P!5 z|BMIw4p<1>LbkVK^IsYXrN82ug=Mgi6ud`dOz&5v8{1%|Vv3322=J}i^y=P}d;dG| z4dxWPM4Gr*q%+T?T`R*Q&Qpr*_$qGNcj01y5{Xdrps2d|4?XRR`RtydrjQWvzr19M z?SzGLw2en?0DzPtd3jP~-=wX9Rd15x#hFI;q~z-)BUe)&7uJe4fIJ{or!d!4v`0Z< zI9~z(ze$UuI%2>D0m2Uda51snmkD!X%szLO>7(2rW zLA0M+2{Dk$?+mzO68W=9G6}4OhRo7(T{$$wZ-lyna*5L{t~X~fIZhP*@&NBP^zX-e zi#|^UdsalHPWV9o0cSPW%c8yKxv86E@tCrRkV2ZX6tq;-lE20%$rk6d%stN@*6!p@(?x@ z@6!ShD2lzqTW$e(do{aqD>4QdU)aLzitQ6{ta~=vfb?5mbsbe7cO8MZ0tOL(!b7=} zZ;sWpWIx!at918ey^MIW*-pjQctj-3%_HvR!#JedB|2f0Ez14JnvX+VK{96K*Bz8J z*V6;XI-Vb%9eBpYcTdlWzcABv)ICo2h>|B)c7ahcb}{+l_ee5rZd%{H^Pugy&Gh4b z7x!3KH#ZH99qHhkuBi)aD5WOIG>F>9r+4{B5@bMEG8@VVQQ$$`IuLusjD)=gO`4Ss01n+J-sOTODdh_*dmmy|YlB%7A(Y4W;`(jpOr8ykN0N;rnVrBm z^+Cg71`cmv-70?b>q97xKE>|aj!m*xSkxcLi+Rup3>F#kqP2eOh?Hf^+CR0YnE%Ki zAAG4(tVAIP8kD2oie>ejluts<+?jOLzwC>BY`t^ZZwR^-FdEQ$5Jg(y%gks{A`^~W zR}$zvBOvNN=UdD9WIwhU-i@uLb-ARiF0b*?W+L>hwEH70e=~JQy|jxz>iE#Q&M8iu z7Ucj2*!g#}qg0%@omi_zv$mcQ@;vM4x0|f6-0DV4WFF`?ir@p=m>h~HYunw9z2BQp zTzC$3ycVQ%c$fGXh?IvtSY;`UMYy_;3ItLwiVcV7dJ3THgD@yN86GZIrozI@$Eq4<1_^ZUYZDgHix7zAvJxFRl z2;-N2t8?U1nsLy&@p{VoB@bWqh4SU;Cgt{UUFC61zq|1AartpU8=*1B<4f_;H!sa@ ziy>2EIXV6URGwA4;e-lOhSx569WG|Dc~@3R-qG+-DIUb^s!f+d>XF!n_s-WjEsg_Xc%i}A{cU^-SdH^eY;r=R#RIz7+C>cNT0clAZC`ia z$PWV<8e-lLGjzNH-X$1~z7*t+m@>2_(>-Ft3alIBchpr~?>4otu~#!{yKYF0n}L># z6}mzR+Vxc&fBee)FlXr-8naQKy}?1E&AV$x2zh15dwuDN<)-WLN|S<|GF0 z(qdg#{MH9`?o8VIXO)C~-J=|b#yT#L!p=sv`d+NIhm4)ygFoo@pnX;o)x(pG=7_tO z)>j|r&#t3by?mE&B$@?!(2(CV0sy#2AtatGqrK&BMwqd=*6YP7%;C+wSGIp%z44_} z-lK^ar6nB^E+^3Kvqa)h?AA}#UbH2?2p`yBDDSzhx6IG4_uma5l>(C0%ecXL-GpD+ zjhkmSHcnv&su)>Psx8kw1qIaMxc?bdt~17|i=m~6n{-NnA{LsRk+Hd;-9`Dl1$}mw z=-#Oi5_4a6{MR{J6N?n@P!ePx1`kzVxBXWuCj+Is3(axW_@WO#Oiyf^a-4a1c^3cH zIj(-3SVB56Ww%)nYKxOg%4KYw2T_NxG;G>*gSCQ#4$mw?3)VBl^vqQ1z#f`Y zu7}yUrUJdwoCgT3>NR@Zq{Tzz7r>G|*_4VARJunG!a4!B|Hjb5* zm9Jt2EO~cU56gE8TamZWMaZD1zQ=xxi3(LEnl<|;OeE)F*4hQ`z9DPRJFgkSYP*=( zS%z7zR9UHIpYxXm-rf23? z-{K+hOcdDDo#&w=o_1{6rcfkhe=UDo_i%WBm&IBH0)amNxnK-Vo^cYdYq^L&{MVCg zRIQm&?v07$cBH~dZR7DXg?QY+^SYQMb49_tA<+%3bcaWRPkwA>w>VbbN<~dM6c11P zOG>0{_B+H-W;Iz3g(XjbhnhSd9yyt|!@EuY8eB-CE=f;z**sX}|M5B0v4ZcE6{J z@uEr)#t17#j^KH0zB8zv5)6SDS`~5<4A`pglU3WLE!Dii>w2auZQ$aWh|RvKlMRUJ zb4zKYCtyah?khG{-EPFB0%;fLk}Hi{Aw`+E#9S31MXll)Oi^Qxd7Eg@Qajx=+ZnVy z5$CPmqZ8!>pk>DODK4ufv6z6aJ#WJi^?uDhAqSp`WRFIk$V6dBNS8Lr114pY#x(jD zxH^TNXdZ81wDZF2`qg|(9=bDI`#rB-ke%^4Q{BYpe+rUcMr0pjd+uV9`7McfPB-j+ ztac`Yo5hAl8EY)3yQx2hc;mmGzooR8FO5Hjfa0%@IQPfRUwB}C(;qVA1zR?5v^RVP z1B88DQ++<1sX1F-Jue7$Zs+T>Hl#$@ID3Xf}2BP46yb8xeMsJ)`{diWzjb)>-6}EIVBfd!> z_cw=&%iu-@(&?hVym6JDUtCg~USq8{ci)SHz~z0$#hPGh=sM}R>OHqHuX_=Ee!jC* z#nI|~q*5CW(|9@dX1K-S73Ldg2)PTK$ajA~nP41z^_HV;7jMXu4BCFO-+8j;VNh?y z488mNy4Nty(ZB9=nfQ98VdA&dqg~i}^6+5t!D6^tF}=p*0PS=tSF|#uPL7YC z!`ug1nOWUvap?Tpcv9(TN_X(aQ|UYj8QIRjBBRHYu#2U;dzhr(t;m0(hYO{D1_soR z+jQMY%oAFa<9RXq)Bysg%!X+je7hsWcP{Fhy%|q%3j$vSDS{2 zbs14VyMD^g%Ck#LLpM;^UN6cimig;lnPk5kxzrpOJnTng+Gm|8-ZwB1&ImMaaYlYq zvy%oj$KOCO*`vW_GZkscZ0hvdX+&sT!IN(g%2h(>u8t&5!@PY@%cl^JqAb zjI5pUi#pu{Jpp6u1g9uM5C!wQUQEF=imPeFkfix)YmKz>cepIV@a?F5Ye`BVTaFnP z)Hu5Q59#ED0c8~t7-G@ zTRisFz1hBV&^1l;Jz<^Ziuz0~$Hi@r)+f!Jq+?}+ULF$TsP2i~n9qxJcN25y8g7S`^G<_{KYIjIVy8 zO-L|tetzy+JLRb86Iy@}yysmSOV%aep6fxT3(96fRIuiSncUVn zT8f;u`+LwEjpcSROOO*;iS8(ax8i+EX{eUvV`a}nrK`6D$d>l=I+O%7!Wa(&W4>u>u!i|BzEs;_&OS{H$mnPCL8A zU#f(BnS1fg;v^WOxvWXE6AirMvd?jQry+h#;0Uf^_v=ZsGhT3v&A@`Mm)AUAdFkeF z3%>Nnw=W56p3mgoqS5$905@7<;jNVh+w-_a8ZZ#KFQuupYwS|6)}`%PfJ0>eq{_4- z4TbXA)He{03p(oy9173iZ_kgng1ZuvVQt>DEs0zn65gY~-S4)EdWem2i?UJ}H=ZI= ztb6}@Nt7ZFIZDP|sJ=@S$?`4HaWtm{5ZOngolC15d|d{#6q!hxf5UTJ><5tUg+}FU%B& m9f_^oaS;N2-)#5z$}Avyk8SFE2*243K}k+swno|_?Ee6?HWo_& literal 0 HcmV?d00001