From 984338bd7d50350c960f52f4a0dd308808cc2e0f Mon Sep 17 00:00:00 2001 From: Bob Date: Sat, 25 Mar 2023 22:47:49 +0100 Subject: [PATCH] some tweaks, fans --- src/main/java/com/hbm/blocks/ModBlocks.java | 5 +- .../com/hbm/blocks/machine/MachineFan.java | 117 +++ .../hbm/entity/particle/EntityOilSpillFX.java | 124 ++-- .../hbm/entity/particle/EntityOrangeFX.java | 2 + .../hbm/handler/guncfg/Gun50BMGFactory.java | 13 +- .../inventory/recipes/anvil/AnvilRecipes.java | 2 +- .../java/com/hbm/items/armor/ArmorNo9.java | 32 +- .../com/hbm/items/special/ItemCigarette.java | 6 + src/main/java/com/hbm/main/ClientProxy.java | 2 + .../java/com/hbm/main/CraftingManager.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 5 + .../java/com/hbm/main/ModEventHandler.java | 1 - .../java/com/hbm/main/ResourceManager.java | 6 + .../java/com/hbm/render/model/ModelNo9.java | 33 +- .../com/hbm/render/tileentity/RenderFan.java | 67 ++ .../java/com/hbm/tileentity/TileMappings.java | 2 + .../machine/TileEntityHeaterOilburner.java | 2 + src/main/resources/assets/hbm/lang/de_DE.lang | 5 + src/main/resources/assets/hbm/lang/en_US.lang | 5 + .../assets/hbm/models/machines/fan.obj | 698 ++++++++++++++++++ src/main/resources/assets/hbm/sounds.json | 1 + .../assets/hbm/sounds/weapon/hicalShot.ogg | Bin 0 -> 14489 bytes .../assets/hbm/textures/armor/no9.png | Bin 630 -> 629 bytes .../assets/hbm/textures/items/no9.png | Bin 0 -> 354 bytes .../hbm/textures/models/capes/CapePheo.png | Bin 16324 -> 576 bytes .../hbm/textures/models/machines/fan.png | Bin 0 -> 719 bytes 26 files changed, 1043 insertions(+), 86 deletions(-) create mode 100644 src/main/java/com/hbm/blocks/machine/MachineFan.java create mode 100644 src/main/java/com/hbm/render/tileentity/RenderFan.java create mode 100644 src/main/resources/assets/hbm/models/machines/fan.obj create mode 100644 src/main/resources/assets/hbm/sounds/weapon/hicalShot.ogg create mode 100644 src/main/resources/assets/hbm/textures/items/no9.png create mode 100644 src/main/resources/assets/hbm/textures/models/machines/fan.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index a50fafffc..214fd06f4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -778,6 +778,8 @@ public class ModBlocks { public static Block crane_router; public static Block crane_boxer; public static Block crane_unboxer; + + public static Block fan; public static Block chain; @@ -1900,6 +1902,7 @@ public class ModBlocks { crane_router = new CraneRouter().setBlockName("crane_router").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_boxer = new CraneBoxer().setBlockName("crane_boxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); crane_unboxer = new CraneUnboxer().setBlockName("crane_unboxer").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab); + fan = new MachineFan().setBlockName("fan").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel"); chain = new BlockChain(Material.iron).setBlockName("dungeon_chain").setHardness(0.25F).setResistance(2.0F).setCreativeTab(MainRegistry.blockTab).setBlockTextureName(RefStrings.MODID + ":chain"); @@ -3094,11 +3097,11 @@ public class ModBlocks { GameRegistry.registerBlock(crane_boxer, crane_boxer.getUnlocalizedName()); GameRegistry.registerBlock(crane_unboxer, crane_unboxer.getUnlocalizedName()); GameRegistry.registerBlock(conveyor, conveyor.getUnlocalizedName()); - //GameRegistry.registerBlock(conveyor_classic, conveyor_classic.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_double, conveyor_double.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_triple, conveyor_triple.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_chute, conveyor_chute.getUnlocalizedName()); GameRegistry.registerBlock(conveyor_lift, conveyor_lift.getUnlocalizedName()); + GameRegistry.registerBlock(fan, fan.getUnlocalizedName()); GameRegistry.registerBlock(chain, chain.getUnlocalizedName()); GameRegistry.registerBlock(ladder_sturdy, ladder_sturdy.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/machine/MachineFan.java b/src/main/java/com/hbm/blocks/machine/MachineFan.java new file mode 100644 index 000000000..4e3356f12 --- /dev/null +++ b/src/main/java/com/hbm/blocks/machine/MachineFan.java @@ -0,0 +1,117 @@ +package com.hbm.blocks.machine; + +import java.util.List; + +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.common.registry.EntityRegistry.EntityRegistration; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +public class MachineFan extends BlockContainer { + + public MachineFan() { + super(Material.iron); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return new TileEntityFan(); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack stack) { + int l = BlockPistonBase.determineOrientation(world, x, y, z, player); + world.setBlockMetadataWithNotify(x, y, z, l, 2); + } + + @Override + public int getRenderType(){ + return -1; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { + int meta = world.getBlockMetadata(x, y, z); + + if(side == ForgeDirection.UP || side == ForgeDirection.DOWN) return meta != 0 && meta != 1; + if(side == ForgeDirection.NORTH || side == ForgeDirection.SOUTH) return meta != 2 && meta != 3; + if(side == ForgeDirection.EAST || side == ForgeDirection.WEST) return meta != 4 && meta != 5; + + return false; + } + + public static class TileEntityFan extends TileEntity { + + public float spin; + public float prevSpin; + + @Override + public void updateEntity() { + + this.prevSpin = this.spin; + + if(worldObj.isBlockIndirectlyGettingPowered(xCoord, yCoord, zCoord)) { + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata()); + + int range = 10; + int effRange = 0; + double push = 0.1; + + for(int i = 1; i <= range; i++) { + if(worldObj.getBlock(xCoord + dir.offsetX * i, yCoord + dir.offsetY * i, zCoord + dir.offsetZ * i).isNormalCube()) { + break; + } + + effRange = i; + } + + int x = dir.offsetX * effRange; + int y = dir.offsetY * effRange; + int z = dir.offsetZ * effRange; + + List affected = worldObj.getEntitiesWithinAABB(Entity.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5 + Math.min(x, 0), yCoord + 0.5 + Math.min(y, 0), zCoord + 0.5 + Math.min(z, 0), xCoord + 0.5 + Math.max(x, 0), yCoord + 0.5 + Math.max(y, 0), zCoord + 0.5 + Math.max(z, 0)).expand(0.5, 0.5, 0.5)); + + for(Entity e : affected) { + + e.motionX += dir.offsetX * push; + e.motionY += dir.offsetY * push; + e.motionZ += dir.offsetZ * push; + } + + if(worldObj.isRemote && worldObj.rand.nextInt(30) == 0) { + double speed = 0.2; + worldObj.spawnParticle("cloud", xCoord + 0.5 + dir.offsetX * 0.5, yCoord + 0.5 + dir.offsetY * 0.5, zCoord + 0.5 + dir.offsetZ * 0.5, dir.offsetX * speed, dir.offsetY * speed, dir.offsetZ * speed); + } + + this.spin += 30; + } + + if(this.spin >= 360) { + this.prevSpin -= 360; + this.spin -= 360; + } + } + } +} diff --git a/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java b/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java index 249e16e14..4f932ece6 100644 --- a/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java +++ b/src/main/java/com/hbm/entity/particle/EntityOilSpillFX.java @@ -1,74 +1,74 @@ package com.hbm.entity.particle; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.World; -public class EntityOilSpillFX extends EntityModFX -{ - float smokeParticleScale; - public int particleAge; - public int maxAge; - public EntityOilSpillFX(World world) { - super(world, 0, 0, 0); - } +public class EntityOilSpillFX extends EntityModFX { + float smokeParticleScale; + public int particleAge; + public int maxAge; - public EntityOilSpillFX(World p_i1225_1_, double p_i1225_2_, double p_i1225_4_, double p_i1225_6_, double p_i1225_8_, double p_i1225_10_, double p_i1225_12_) - { - this(p_i1225_1_, p_i1225_2_, p_i1225_4_, p_i1225_6_, p_i1225_8_, p_i1225_10_, p_i1225_12_, 1.0F); - } + public EntityOilSpillFX(World world) { + super(world, 0, 0, 0); + } - public EntityOilSpillFX(World p_i1226_1_, double p_i1226_2_, double p_i1226_4_, double p_i1226_6_, double p_i1226_8_, double p_i1226_10_, double p_i1226_12_, float p_i1226_14_) - { - super(p_i1226_1_, p_i1226_2_, p_i1226_4_, p_i1226_6_, 0.0D, 0.0D, 0.0D); - this.motionX *= 0.10000000149011612D; - this.motionY *= 0.10000000149011612D; - this.motionZ *= 0.10000000149011612D; - this.motionX += p_i1226_8_; - this.motionY += p_i1226_10_; - this.motionZ += p_i1226_12_; - this.particleRed = this.particleGreen = this.particleBlue = (float)(Math.random() * 0.30000001192092896D); - this.particleScale *= 0.75F; - this.particleScale *= p_i1226_14_; - this.smokeParticleScale = this.particleScale; - //this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D)); - //this.particleMaxAge = (int)((float)this.particleMaxAge * p_i1226_14_); - this.noClip = false; - } + public EntityOilSpillFX(World p_i1225_1_, double p_i1225_2_, double p_i1225_4_, double p_i1225_6_, double p_i1225_8_, double p_i1225_10_, double p_i1225_12_) { + this(p_i1225_1_, p_i1225_2_, p_i1225_4_, p_i1225_6_, p_i1225_8_, p_i1225_10_, p_i1225_12_, 1.0F); + } - /** - * Called to update the entity's position/logic. - */ - - @Override - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - if(maxAge < 15) - { - maxAge = rand.nextInt(4) + 15; - } + public EntityOilSpillFX(World p_i1226_1_, double p_i1226_2_, double p_i1226_4_, double p_i1226_6_, double p_i1226_8_, double p_i1226_10_, double p_i1226_12_, float p_i1226_14_) { + super(p_i1226_1_, p_i1226_2_, p_i1226_4_, p_i1226_6_, 0.0D, 0.0D, 0.0D); + this.motionX *= 0.10000000149011612D; + this.motionY *= 0.10000000149011612D; + this.motionZ *= 0.10000000149011612D; + this.motionX += p_i1226_8_; + this.motionY += p_i1226_10_; + this.motionZ += p_i1226_12_; + this.particleRed = this.particleGreen = this.particleBlue = (float) (Math.random() * 0.30000001192092896D); + this.particleScale *= 0.75F; + this.particleScale *= p_i1226_14_; + this.smokeParticleScale = this.particleScale; + this.noClip = false; + } - this.particleAge++; - - if (this.particleAge >= maxAge) - { - this.setDead(); - } + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - this.motionX *= 0.7599999785423279D; - this.motionY *= 0.7599999785423279D; - this.motionZ *= 0.7599999785423279D; + if(maxAge < 15) { + maxAge = rand.nextInt(4) + 15; + } - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } + this.particleAge++; - this.posX += this.motionX; - this.posY += this.motionY; - this.posZ += this.motionZ; - } + if(this.particleAge >= maxAge) { + this.setDead(); + } + + this.motionX *= 0.7599999785423279D; + this.motionY *= 0.7599999785423279D; + this.motionZ *= 0.7599999785423279D; + + if(this.onGround) { + this.motionX *= 0.699999988079071D; + this.motionZ *= 0.699999988079071D; + } + + this.posX += this.motionX; + this.posY += this.motionY; + this.posZ += this.motionZ; + } + + @Override + public boolean writeToNBTOptional(NBTTagCompound nbt) { + return false; + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.setDead(); + } } diff --git a/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java b/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java index 60919e652..8ca6eee37 100644 --- a/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java +++ b/src/main/java/com/hbm/entity/particle/EntityOrangeFX.java @@ -88,10 +88,12 @@ public class EntityOrangeFX extends EntityModFX { } } + @Override public boolean writeToNBTOptional(NBTTagCompound nbt) { return false; } + @Override public void readEntityFromNBT(NBTTagCompound nbt) { super.readEntityFromNBT(nbt); this.setDead(); diff --git a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java index 50544d38f..c7d290c35 100644 --- a/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/Gun50BMGFactory.java @@ -58,15 +58,14 @@ public class Gun50BMGFactory { bullet.spread = 0.0F; bullet.dmgMax = 500F; bullet.dmgMin = 450F; - bullet.headshotMult = 2.5f; + bullet.headshotMult = 2.5F; bullet.wear = 2000; - bullet.velocity = 100; + bullet.velocity = 10F; bullet.doesPenetrate = true; bullet.leadChance = 20; - bullet.incendiary = 10; - bullet.blockDamage = true; - bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); + bullet.blockDamage = false; + bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 2.0F, false, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaStock"); @@ -80,6 +79,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 1; bullet.incendiary = 10; + bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 5.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaInc"); @@ -93,6 +93,7 @@ public class Gun50BMGFactory { bullet.ammo.meta = 2; bullet.explosive = 25; + bullet.destroysBlocks = true; bullet.bImpact = (projectile, x, y, z) -> projectile.worldObj.newExplosion(projectile, x, y, z, 25.0F, true, false); bullet.spentCasing = CASINGLUNA.clone().register("LunaExp"); @@ -184,7 +185,7 @@ public class Gun50BMGFactory { config.reloadDuration = 15; config.firingMode = GunConfiguration.FIRE_MANUAL; config.roundsPerCycle = 1; - config.firingSound = "hbm:weapon.heavyShootPB3"; + config.firingSound = "hbm:weapon.hicalShot"; config.firingPitch = 0.75F; config.ammoCap = 4; config.reloadType = GunConfiguration.RELOAD_SINGLE; 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 a3704fdeb..4becbaf45 100644 --- a/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/anvil/AnvilRecipes.java @@ -243,7 +243,7 @@ public class AnvilRecipes { new ComparableStack(ModItems.pipes_steel, 1), new OreDictStack(TI.ingot(), 12), new OreDictStack(CU.ingot(), 8) - }, new AnvilOutput(new ItemStack(ModBlocks.heater_oilburner))).setTier(3)); + }, new AnvilOutput(new ItemStack(ModBlocks.heater_oilburner))).setTier(2)); constructionRecipes.add(new AnvilConstructionRecipe( new AStack[] { diff --git a/src/main/java/com/hbm/items/armor/ArmorNo9.java b/src/main/java/com/hbm/items/armor/ArmorNo9.java index 754cf6dec..8e58f6552 100644 --- a/src/main/java/com/hbm/items/armor/ArmorNo9.java +++ b/src/main/java/com/hbm/items/armor/ArmorNo9.java @@ -7,6 +7,7 @@ import java.util.List; import java.util.Map.Entry; import java.util.Set; +import com.hbm.extprop.HbmLivingProps; import com.hbm.extprop.HbmPlayerProps; import com.hbm.lib.Library; import com.hbm.render.model.ModelNo9; @@ -19,6 +20,7 @@ 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.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -34,11 +36,13 @@ public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandl public ArmorNo9(ArmorMaterial armorMaterial, int armorType) { super(armorMaterial, armorType); + this.setMaxDamage(0); } @Override public void addInformation(ItemStack itemstack, EntityPlayer player, List list, boolean bool) { list.add(EnumChatFormatting.BLUE + "+0.5 DT"); + list.add(EnumChatFormatting.YELLOW + "Lets you breathe coal, neat!"); } @Override @@ -78,13 +82,35 @@ public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandl @Override public void onArmorTick(World world, EntityPlayer player, ItemStack armor) { - if(world.isRemote && HbmPlayerProps.getData(player).enableHUD) { + if(!world.isRemote) { + if(!armor.hasTagCompound()) { + armor.stackTagCompound = new NBTTagCompound(); + } + + boolean turnOn = HbmPlayerProps.getData(player).enableHUD; + boolean wasOn = armor.getTagCompound().getBoolean("isOn"); + if(turnOn && !wasOn) world.playSoundAtEntity(player, "fire.ignite", 1F, 1.5F); + if(!turnOn && wasOn) world.playSoundAtEntity(player, "random.fizz", 0.5F, 2F); + armor.getTagCompound().setBoolean("isOn", turnOn); // a crude way of syncing the "enableHUD" prop to other players is just by piggybacking off the NBT sync + + if(HbmLivingProps.getBlackLung(player) > HbmLivingProps.maxBlacklung * 0.9) { + HbmLivingProps.setBlackLung(player, (int) (HbmLivingProps.maxBlacklung * 0.9)); + } + + if(HbmLivingProps.getBlackLung(player) >= HbmLivingProps.maxBlacklung * 0.25) { + HbmLivingProps.setBlackLung(player, HbmLivingProps.getBlackLung(player) - 1); + } + } + + if(world.isRemote && world.getTotalWorldTime() % 2 == 0 && armor.hasTagCompound() && armor.getTagCompound().getBoolean("isOn")) { + + //originally it would have just been a bright aura like a torch, but that's boring /*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); + checkLights(world, false); float range = 50F; MovingObjectPosition mop = Library.rayTrace(player, range, 0F, false, true, false); @@ -145,7 +171,7 @@ public class ArmorNo9 extends ArmorModel implements IAttackHandler, IDamageHandl if(world == null || !world.isRemote) return; Long last = lastChecks.get(world); - if(last != null && last < world.getTotalWorldTime() + 10) { + if(last != null && last < world.getTotalWorldTime() + 15) { checkLights(world, false); } } diff --git a/src/main/java/com/hbm/items/special/ItemCigarette.java b/src/main/java/com/hbm/items/special/ItemCigarette.java index 458f9dc24..092885af4 100644 --- a/src/main/java/com/hbm/items/special/ItemCigarette.java +++ b/src/main/java/com/hbm/items/special/ItemCigarette.java @@ -4,6 +4,7 @@ import java.util.List; import com.hbm.extprop.HbmLivingProps; import com.hbm.items.ModItems; +import com.hbm.main.MainRegistry; import com.hbm.packet.AuxParticlePacketNT; import com.hbm.packet.PacketDispatcher; @@ -48,6 +49,11 @@ public class ItemCigarette extends Item { HbmLivingProps.incrementBlackLung(player, 2000); HbmLivingProps.incrementAsbestos(player, 2000); HbmLivingProps.incrementRadiation(player, 100F); + + ItemStack helmet = player.getEquipmentInSlot(4); + if(helmet != null && helmet.getItem() == ModItems.no9) { + player.triggerAchievement(MainRegistry.achNo9); + } } if(this == ModItems.crackpipe) { diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 92bc0c422..4e375b168 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -47,6 +47,7 @@ import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.entity.cart.*; import com.hbm.entity.effect.*; import com.hbm.entity.grenade.*; @@ -267,6 +268,7 @@ public class ClientProxy extends ServerProxy { ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineAutosaw.class, new RenderAutosaw()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineVacuumDistill.class, new RenderVacuumDistill()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityMachineCatalyticReformer.class, new RenderCatalyticReformer()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFan.class, new RenderFan()); //Foundry ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryBasin.class, new RenderFoundry()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityFoundryMold.class, new RenderFoundry()); diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index 547061e43..b01dd9c46 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -307,6 +307,7 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.fraction_spacer), new Object[] { "BHB", 'H', ModItems.hull_big_steel, 'B', Blocks.iron_bars }); addRecipeAuto(new ItemStack(ModBlocks.furnace_iron), new Object[] { "III", "IFI", "BBB", 'I', IRON.ingot(), 'F', Blocks.furnace, 'B', Blocks.stonebrick }); addRecipeAuto(new ItemStack(ModBlocks.machine_mixer), new Object[] { "PIP", "GCG", "PMP", 'P', STEEL.plate(), 'I', DURA.ingot(), 'G', KEY_ANYPANE, 'C', ModItems.circuit_copper, 'M', ModItems.motor }); + addRecipeAuto(new ItemStack(ModBlocks.fan), new Object[] { "BPB", "PRP", "BPB", 'B', ModItems.bolt_tungsten, 'P', IRON.plate(), 'R', REDSTONE.dust() }); addRecipeAuto(new ItemStack(ModBlocks.muffler, 1), new Object[] { "III", "IWI", "III", 'I', ModItems.plate_polymer, 'W', Blocks.wool }); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index ee20261f4..17d3dae1f 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -183,6 +183,7 @@ public class MainRegistry { public static Achievement achSlimeball; public static Achievement achSulfuric; public static Achievement achWitchtaunter; + public static Achievement achNo9; public static Achievement achInferno; public static Achievement bobHidden; public static Achievement horizonsStart; @@ -329,11 +330,13 @@ public class MainRegistry { ChestGenHooks.addItem(ChestGenHooks.VILLAGE_BLACKSMITH, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.bathwater), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.serum), 1, 1, 5)); + ChestGenHooks.addItem(ChestGenHooks.MINESHAFT_CORRIDOR, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 5)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_JUNGLE_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.heart_piece), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); ChestGenHooks.addItem(ChestGenHooks.PYRAMID_DESERT_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.scrumpy), 1, 1, 1)); + ChestGenHooks.addItem(ChestGenHooks.BONUS_CHEST, new WeightedRandomChestContent(new ItemStack(ModItems.no9), 1, 1, 7)); EntityMappings.writeMappings(); @@ -647,6 +650,7 @@ public class MainRegistry { achOmega12 = new Achievement("achievement.omega12", "omega12", 17, -1, ModItems.particle_digamma, null).initIndependentStat().setSpecial().registerStat(); achWitchtaunter = new Achievement("achievement.witchtaunter", "witchtaunter", -8, 7, ModItems.ammo_4gauge.stackFromEnum(Ammo4Gauge.VAMPIRE), null).initIndependentStat().setSpecial().registerStat(); + achNo9 = new Achievement("achievement.no9", "no9", -8, 12, ModItems.no9, null).initIndependentStat().registerStat(); achSlimeball = new Achievement("achievement.slimeball", "slimeball", -10, 6, Items.slime_ball, null).initIndependentStat().registerStat(); achSulfuric = new Achievement("achievement.sulfuric", "sulfuric", -10, 8, ModItems.bucket_sulfuric_acid, achSlimeball).initIndependentStat().setSpecial().registerStat(); achInferno = new Achievement("achievement.inferno", "inferno", -8, 10, ModItems.canister_napalm, null).initIndependentStat().setSpecial().registerStat(); @@ -726,6 +730,7 @@ public class MainRegistry { achRadPoison, achRadDeath, achWitchtaunter, + achNo9, achInferno, achSlimeball, achSulfuric, diff --git a/src/main/java/com/hbm/main/ModEventHandler.java b/src/main/java/com/hbm/main/ModEventHandler.java index 1099109ea..e352f2a77 100644 --- a/src/main/java/com/hbm/main/ModEventHandler.java +++ b/src/main/java/com/hbm/main/ModEventHandler.java @@ -42,7 +42,6 @@ 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/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 4bd61ea87..2acd7e2fd 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -187,6 +187,9 @@ public class ResourceManager { public static final IModelCustom dfc_receiver = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_receiver.obj")); public static final IModelCustom dfc_injector = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/core_injector.obj")); + //Fan + public static final IModelCustom fan = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/machines/fan.obj")); + //Sphere public static final IModelCustom sphere_ruv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_ruv.obj")); public static final IModelCustom sphere_iuv = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/sphere_iuv.obj")); @@ -529,6 +532,9 @@ public class ResourceManager { public static final ResourceLocation dfc_injector_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_injector.png"); public static final ResourceLocation dfc_stabilizer_tex = new ResourceLocation(RefStrings.MODID, "textures/models/core_stabilizer.png"); + //Fan + public static final ResourceLocation fan_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/fan.png"); + //Radgen public static final ResourceLocation radgen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/machines/radgen.png"); diff --git a/src/main/java/com/hbm/render/model/ModelNo9.java b/src/main/java/com/hbm/render/model/ModelNo9.java index 16319f5b6..c94970207 100644 --- a/src/main/java/com/hbm/render/model/ModelNo9.java +++ b/src/main/java/com/hbm/render/model/ModelNo9.java @@ -8,6 +8,8 @@ import com.hbm.render.loader.ModelRendererObj; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; public class ModelNo9 extends ModelArmorBase { @@ -44,18 +46,25 @@ public class ModelNo9 extends ModelArmorBase { 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); + + if(par1Entity instanceof EntityPlayer) { + EntityPlayer player = (EntityPlayer) par1Entity; + ItemStack helmet = player.getEquipmentInSlot(4); + + if(helmet != null && helmet.hasTagCompound() && helmet.getTagCompound().getBoolean("isOn")) { + 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/render/tileentity/RenderFan.java b/src/main/java/com/hbm/render/tileentity/RenderFan.java new file mode 100644 index 000000000..a58ab00d2 --- /dev/null +++ b/src/main/java/com/hbm/render/tileentity/RenderFan.java @@ -0,0 +1,67 @@ +package com.hbm.render.tileentity; + +import org.lwjgl.opengl.GL11; + +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.machine.MachineFan.TileEntityFan; +import com.hbm.main.ResourceManager; +import com.hbm.render.item.ItemRenderBase; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.item.Item; +import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.client.IItemRenderer; + +public class RenderFan extends TileEntitySpecialRenderer implements IItemRendererProvider { + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y, z + 0.5); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glTranslated(0D, 0.5, 0D); + + switch(tile.getBlockMetadata()) { + case 0: GL11.glRotatef(180, 1F, 0F, 0F); break; + case 1: break; + case 2: GL11.glRotatef(-90, 1F, 0F, 0F); break; + case 4: GL11.glRotatef(90, 0F, 0F, 1F); break; + case 3: GL11.glRotatef(90, 1F, 0F, 0F); break; + case 5: GL11.glRotatef(-90, 0F, 0F, 1F); break; + } + + GL11.glTranslated(0D, -0.5, 0D); + + bindTexture(ResourceManager.fan_tex); + ResourceManager.fan.renderPart("Frame"); + + TileEntityFan fan = (TileEntityFan) tile; + float rot = fan.prevSpin + (fan.spin - fan.prevSpin) * interp; + GL11.glRotated(-rot, 0, 1, 0); + ResourceManager.fan.renderPart("Blades"); + + GL11.glPopMatrix(); + } + + @Override + public Item getItemForRenderer() { + return Item.getItemFromBlock(ModBlocks.fan); + } + + @Override + public IItemRenderer getRenderer() { + return new ItemRenderBase() { + public void renderInventory() { + GL11.glTranslated(0, -2.5, 0); + double scale = 5; + GL11.glScaled(scale, scale, scale); + } + public void renderCommon() { + GL11.glScaled(2, 2, 2); + bindTexture(ResourceManager.fan_tex); + ResourceManager.fan.renderAll(); + }}; + } +} diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index b0ad6893a..19088d153 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -11,6 +11,7 @@ import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.generic.BlockSnowglobe.TileEntitySnowglobe; +import com.hbm.blocks.machine.MachineFan.TileEntityFan; import com.hbm.blocks.network.BlockCablePaintable.TileEntityCablePaintable; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.blocks.network.FluidDuctGauge.TileEntityPipeGauge; @@ -349,6 +350,7 @@ public class TileMappings { put(TileEntityCraneBoxer.class, "tileentity_boxer"); put(TileEntityCraneUnboxer.class, "tileentity_unboxer"); put(TileEntityCraneRouter.class, "tileentity_router"); + put(TileEntityFan.class, "tileentity_fan"); put(TileEntityRadioTorchSender.class, "tileentity_rtty_sender"); put(TileEntityRadioTorchReceiver.class, "tileentity_rtty_rec"); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java index 76e9858ad..535d5939b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterOilburner.java @@ -104,6 +104,7 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements tank.readFromNBT(nbt, "tank"); isOn = nbt.getBoolean("isOn"); heatEnergy = nbt.getInteger("heatEnergy"); + setting = nbt.getByte("setting"); } @Override @@ -112,6 +113,7 @@ public class TileEntityHeaterOilburner extends TileEntityMachineBase implements tank.writeToNBT(nbt, "tank"); nbt.setBoolean("isOn", isOn); nbt.setInteger("heatEnergy", heatEnergy); + nbt.setByte("setting", (byte) this.setting); } public void toggleSetting() { diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index cbcdf1528..bc6b2877e 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -48,6 +48,8 @@ achievement.meltdown.desc=Du bist so weit gekommen, und jetzt verpfuscht du es? achievement.meltdown=Rapide Ungeplante Demontage achievement.metalworks.desc=Bobmazon Level 1 (Hochofen) achievement.metalworks=Metallurgie +achievement.no9.desc="Ich hoffe, dass das Blei das wir fördern in deiner Farbe verwendet wird" +achievement.no9=Old Number Nine achievement.nuclear.desc=Bobmazon Level 5 (Urankernbrennstoff) achievement.nuclear=Atomwissenschaft achievement.oil.desc=Bobmazon Level 4 (Elektrischer Ölwärmer) @@ -1850,6 +1852,7 @@ item.gun_lever_action_ammo.name=12x74 Schrotmunition (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dunkel) item.gun_lever_action_sonata.name=Verkehrter Mare's Leg item.gun_lever_action_sonata_2.name=§cSonatas Mikrophon§r +item.gun_lunatic_marksman.name=Lunatic-Scharfschützengewehr item.gun_m2.name=üsMG item.gun_minigun.name=CZ53 Persönliche Minigun item.gun_mirv.name=M42 Nukleares Katapult "Experimentelles MIRV" @@ -2355,6 +2358,7 @@ item.n2_charge.name=Große Sprengladung item.neutrino_lens.name=Neutrinolinse item.neutron_reflector.name=Neutronenreflektor item.niter.name=Salpeter +item.no9.name=Bergbauhelm item.nossy_hat.name=Fabulöser Hut item.nothing.name=Leer item.nuclear_waste.name=Atommüll @@ -3670,6 +3674,7 @@ tile.factory_titanium_core.name=Einfache Fabrikkernkomponente tile.factory_titanium_furnace.name=Einfache Fabrikzugriffsluke tile.factory_titanium_hull.name=Fabrikblock tile.fallout.name=Fallout +tile.fan.name=Ventilator tile.fence_metal.name=Maschendrahtzaun tile.field_disturber.name=Hochenergiefeld-Jammer tile.fire_digamma.name=Verweilendes Digamma diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index ef70a38b3..47acb3efb 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -72,6 +72,8 @@ achievement.manhattan.desc=8:15; August 6th, 1945 achievement.manhattan=The Manhattan Project achievement.meltdown.desc=You got this far, how could you mess this up? achievement.meltdown=Rapid Unscheduled Disassembly +achievement.no9.desc="I hope the lead I'm mining will be used in your paint" +achievement.no9=Old Number Nine achievement.omega12.desc=Solve the problem of continued life on this wretched planet. achievement.omega12=Omega-12 Particle Accelerator achievement.polymer.desc=Delicious, delicious microplastics. @@ -2489,6 +2491,7 @@ item.gun_lever_action_ammo.name=12x74 Buckshot (LEGACY) item.gun_lever_action_dark.name=Mare's Leg (Dark) item.gun_lever_action_sonata.name=Flipped Mare's Leg item.gun_lever_action_sonata_2.name=§cSonata's Microphone§r +item.gun_lunatic_marksman.name=Lunatic Sniper Rifle item.gun_m2.name=Ma Deuce item.gun_minigun.name=CZ53 Personal Minigun item.gun_mirv.name=M42 Nuclear Catapult "Experimental MIRV" @@ -3023,6 +3026,7 @@ item.n2_charge.name=Large Explosive Charge item.neutrino_lens.name=Neutrino Lens item.neutron_reflector.name=Neutron Reflector item.niter.name=Niter +item.no9.name=Mining Helmet item.nossy_hat.name=Fabulous Hat item.nothing.name=Nothing item.nuclear_waste.name=Nuclear Waste @@ -4480,6 +4484,7 @@ tile.factory_titanium_core.name=Basic Factory Core Component tile.factory_titanium_furnace.name=Basic Factory Access Hatch tile.factory_titanium_hull.name=Factory Block tile.fallout.name=Fallout +tile.fan.name=Fan tile.fence_metal.name=Chainlink Fence tile.field_disturber.name=High Energy Field Jammer tile.filing_cabinet.green.name=Dusty Filing Cabinet diff --git a/src/main/resources/assets/hbm/models/machines/fan.obj b/src/main/resources/assets/hbm/models/machines/fan.obj new file mode 100644 index 000000000..90881dc74 --- /dev/null +++ b/src/main/resources/assets/hbm/models/machines/fan.obj @@ -0,0 +1,698 @@ +# Blender v2.79 (sub 0) OBJ File: 'fan.blend' +# www.blender.org +o Blades +v -0.081190 0.703125 0.312500 +v 0.081190 0.796875 0.312500 +v -0.027063 0.734375 0.000000 +v 0.027063 0.765625 0.000000 +v 0.081190 0.703125 -0.312500 +v -0.081190 0.796875 -0.312500 +v 0.027063 0.734375 0.000000 +v -0.027063 0.765625 0.000000 +v 0.312500 0.703125 0.081190 +v 0.312500 0.796875 -0.081190 +v 0.000000 0.734375 0.027063 +v 0.000000 0.765625 -0.027063 +v -0.312500 0.703125 -0.081190 +v -0.312500 0.796875 0.081190 +v -0.000000 0.734375 -0.027063 +v 0.000000 0.765625 0.027063 +v 0.019137 0.265625 0.019137 +v -0.019137 0.234375 -0.019137 +v -0.163561 0.296875 0.278381 +v -0.278381 0.203125 0.163561 +v -0.019137 0.265625 -0.019137 +v 0.019137 0.234375 0.019137 +v 0.163561 0.296875 -0.278381 +v 0.278381 0.203125 -0.163561 +v -0.019137 0.265625 0.019137 +v 0.019137 0.234375 -0.019137 +v -0.278381 0.296875 -0.163561 +v -0.163561 0.203125 -0.278381 +v 0.019137 0.265625 -0.019137 +v -0.019137 0.234375 0.019137 +v 0.278381 0.296875 0.163561 +v 0.163561 0.203125 0.278381 +v -0.081190 0.703125 0.312500 +v 0.081190 0.796875 0.312500 +v -0.027063 0.734375 0.000000 +v 0.027063 0.765625 0.000000 +v 0.081190 0.703125 -0.312500 +v -0.081190 0.796875 -0.312500 +v 0.027063 0.734375 0.000000 +v -0.027063 0.765625 0.000000 +v 0.312500 0.703125 0.081190 +v 0.312500 0.796875 -0.081190 +v 0.000000 0.734375 0.027063 +v 0.000000 0.765625 -0.027063 +v -0.312500 0.703125 -0.081190 +v -0.312500 0.796875 0.081190 +v -0.000000 0.734375 -0.027063 +v 0.000000 0.765625 0.027063 +v 0.019137 0.265625 0.019137 +v -0.019137 0.234375 -0.019137 +v -0.163561 0.296875 0.278381 +v -0.278381 0.203125 0.163561 +v -0.019137 0.265625 -0.019137 +v 0.019137 0.234375 0.019137 +v 0.163561 0.296875 -0.278381 +v 0.278381 0.203125 -0.163561 +v -0.019137 0.265625 0.019137 +v 0.019137 0.234375 -0.019137 +v -0.278381 0.296875 -0.163561 +v -0.163561 0.203125 -0.278381 +v 0.019137 0.265625 -0.019137 +v -0.019137 0.234375 0.019137 +v 0.278381 0.296875 0.163561 +v 0.163561 0.203125 0.278381 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.642857 0.750000 +vt 0.571429 0.854167 +vt 0.678571 0.854167 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.571429 0.854167 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.607143 0.750000 +vt 0.642857 0.750000 +vt 0.642857 0.750000 +vt 0.642857 0.750000 +vt 0.607143 0.750000 +vn -0.5000 0.8660 0.0000 +vn 0.5000 0.8660 0.0000 +vn 0.0000 0.8660 0.5000 +vn -0.0000 0.8660 -0.5000 +vn -0.3536 0.8660 -0.3536 +vn 0.3536 0.8660 0.3536 +vn 0.3536 0.8660 -0.3536 +vn -0.3536 0.8660 0.3536 +vn 0.5000 -0.8660 0.0000 +vn -0.5000 -0.8660 -0.0000 +vn -0.0000 -0.8660 -0.5000 +vn 0.0000 -0.8660 0.5000 +vn 0.3536 -0.8660 0.3536 +vn -0.3536 -0.8660 -0.3536 +vn -0.3536 -0.8660 0.3536 +vn 0.3536 -0.8660 -0.3536 +s off +f 2/1/1 3/2/1 1/3/1 +f 6/4/2 7/5/2 5/6/2 +f 10/7/3 11/8/3 9/9/3 +f 14/10/4 15/11/4 13/12/4 +f 19/13/5 18/14/5 20/15/5 +f 24/16/6 21/17/6 22/18/6 +f 27/19/7 26/20/7 28/21/7 +f 31/22/8 30/23/8 32/24/8 +f 35/25/9 34/26/9 33/27/9 +f 39/28/10 38/29/10 37/30/10 +f 43/31/11 42/32/11 41/33/11 +f 47/34/12 46/35/12 45/36/12 +f 52/37/13 49/38/13 51/39/13 +f 56/40/14 53/41/14 55/42/14 +f 60/43/15 57/44/15 59/45/15 +f 62/46/16 63/47/16 64/48/16 +f 2/1/1 4/49/1 3/2/1 +f 6/4/2 8/50/2 7/5/2 +f 10/7/3 12/51/3 11/8/3 +f 14/10/4 16/52/4 15/11/4 +f 19/13/5 17/53/5 18/14/5 +f 24/16/6 23/54/6 21/17/6 +f 27/19/7 25/55/7 26/20/7 +f 31/22/8 29/56/8 30/23/8 +f 35/25/9 36/57/9 34/26/9 +f 39/28/10 40/58/10 38/29/10 +f 43/31/11 44/59/11 42/32/11 +f 47/34/12 48/60/12 46/35/12 +f 52/37/13 50/61/13 49/38/13 +f 56/40/14 54/62/14 53/41/14 +f 60/43/15 58/63/15 57/44/15 +f 62/46/16 61/64/16 63/47/16 +o Frame +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.375000 0.000000 0.375000 +v -0.375000 0.000000 -0.375000 +v 0.375000 0.000000 0.375000 +v 0.375000 0.000000 -0.375000 +v -0.375000 1.000000 0.375000 +v -0.375000 1.000000 -0.375000 +v 0.375000 1.000000 0.375000 +v 0.375000 1.000000 -0.375000 +v -0.062500 0.000000 0.062500 +v -0.062500 1.000000 0.062500 +v -0.062500 0.000000 -0.062500 +v -0.062500 1.000000 -0.062500 +v 0.062500 0.000000 0.062500 +v 0.062500 1.000000 0.062500 +v 0.062500 0.000000 -0.062500 +v 0.062500 1.000000 -0.062500 +v 0.375000 0.937500 0.375000 +v 0.062500 0.937500 0.062500 +v 0.375000 0.937500 0.312500 +v 0.062500 0.937500 0.000000 +v 0.312500 0.937500 0.375000 +v 0.000000 0.937500 0.062500 +v 0.375000 0.937500 -0.375000 +v 0.062500 0.937500 -0.062500 +v 0.312500 0.937500 -0.375000 +v 0.000000 0.937500 -0.062500 +v 0.375000 0.937500 -0.312500 +v 0.062500 0.937500 0.000000 +v -0.375000 0.937500 -0.375000 +v -0.062500 0.937500 -0.062500 +v -0.375000 0.937500 -0.312500 +v -0.062500 0.937500 0.000000 +v -0.312500 0.937500 -0.375000 +v -0.000000 0.937500 -0.062500 +v -0.375000 0.937500 0.375000 +v -0.062500 0.937500 0.062500 +v -0.312500 0.937500 0.375000 +v 0.000000 0.937500 0.062500 +v -0.375000 0.937500 0.312500 +v -0.062500 0.937500 0.000000 +v -0.062500 0.500000 0.000000 +v -0.375000 0.500000 0.312500 +v 0.000000 0.500000 0.062500 +v -0.312500 0.500000 0.375000 +v -0.062500 0.500000 0.062500 +v -0.375000 0.500000 0.375000 +v -0.000000 0.500000 -0.062500 +v -0.312500 0.500000 -0.375000 +v -0.062500 0.500000 0.000000 +v -0.375000 0.500000 -0.312500 +v -0.062500 0.500000 -0.062500 +v -0.375000 0.500000 -0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 -0.312500 +v 0.000000 0.500000 -0.062500 +v 0.312500 0.500000 -0.375000 +v 0.062500 0.500000 -0.062500 +v 0.375000 0.500000 -0.375000 +v 0.000000 0.500000 0.062500 +v 0.312500 0.500000 0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 0.312500 +v 0.062500 0.500000 0.062500 +v 0.375000 0.500000 0.375000 +v -0.312500 0.500000 -0.375000 +v -0.000000 0.500000 -0.062500 +v -0.375000 0.500000 0.375000 +v -0.062500 0.500000 0.062500 +v -0.312500 0.500000 0.375000 +v 0.000000 0.500000 0.062500 +v -0.375000 0.500000 0.312500 +v -0.062500 0.500000 0.000000 +v -0.062500 0.937500 0.000000 +v -0.375000 0.937500 0.312500 +v 0.000000 0.937500 0.062500 +v -0.312500 0.937500 0.375000 +v -0.062500 0.937500 0.062500 +v -0.375000 0.937500 0.375000 +v -0.000000 0.937500 -0.062500 +v -0.312500 0.937500 -0.375000 +v -0.062500 0.937500 0.000000 +v -0.375000 0.937500 -0.312500 +v -0.062500 0.937500 -0.062500 +v -0.375000 0.937500 -0.375000 +v 0.062500 0.937500 0.000000 +v 0.375000 0.937500 -0.312500 +v 0.000000 0.937500 -0.062500 +v 0.312500 0.937500 -0.375000 +v 0.062500 0.937500 -0.062500 +v 0.375000 0.937500 -0.375000 +v 0.000000 0.937500 0.062500 +v 0.312500 0.937500 0.375000 +v 0.062500 0.937500 0.000000 +v 0.375000 0.937500 0.312500 +v 0.062500 0.937500 0.062500 +v 0.375000 0.937500 0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 0.312500 +v 0.000000 0.062500 0.062500 +v -0.312500 0.062500 0.375000 +v -0.062500 0.062500 0.062500 +v -0.375000 0.062500 0.375000 +v -0.000000 0.062500 -0.062500 +v -0.312500 0.062500 -0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 -0.312500 +v -0.062500 0.062500 -0.062500 +v -0.375000 0.062500 -0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 -0.312500 +v 0.000000 0.062500 -0.062500 +v 0.312500 0.062500 -0.375000 +v 0.062500 0.062500 -0.062500 +v 0.375000 0.062500 -0.375000 +v 0.000000 0.062500 0.062500 +v 0.312500 0.062500 0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 0.312500 +v 0.062500 0.062500 0.062500 +v 0.375000 0.062500 0.375000 +v -0.062500 0.500000 0.000000 +v -0.375000 0.500000 -0.312500 +v -0.062500 0.500000 -0.062500 +v -0.375000 0.500000 -0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 -0.312500 +v 0.000000 0.500000 -0.062500 +v 0.312500 0.500000 -0.375000 +v 0.062500 0.500000 -0.062500 +v 0.375000 0.500000 -0.375000 +v 0.000000 0.500000 0.062500 +v 0.312500 0.500000 0.375000 +v 0.062500 0.500000 0.000000 +v 0.375000 0.500000 0.312500 +v 0.062500 0.500000 0.062500 +v 0.375000 0.500000 0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 0.312500 +v 0.000000 0.062500 0.062500 +v -0.312500 0.062500 0.375000 +v -0.062500 0.062500 0.062500 +v -0.375000 0.062500 0.375000 +v -0.000000 0.062500 -0.062500 +v -0.312500 0.062500 -0.375000 +v -0.062500 0.062500 0.000000 +v -0.375000 0.062500 -0.312500 +v -0.062500 0.062500 -0.062500 +v -0.375000 0.062500 -0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 -0.312500 +v 0.000000 0.062500 -0.062500 +v 0.312500 0.062500 -0.375000 +v 0.062500 0.062500 -0.062500 +v 0.375000 0.062500 -0.375000 +v 0.000000 0.062500 0.062500 +v 0.312500 0.062500 0.375000 +v 0.062500 0.062500 0.000000 +v 0.375000 0.062500 0.312500 +v 0.062500 0.062500 0.062500 +v 0.375000 0.062500 0.375000 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt -0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.666667 +vt 0.000000 0.333333 +vt 0.571429 0.333333 +vt 0.500000 0.041667 +vt 0.571429 -0.000000 +vt 0.000000 -0.000000 +vt 0.071429 0.291667 +vt 0.071429 0.041667 +vt 0.500000 0.291667 +vt 0.071429 0.708333 +vt 0.000000 0.666667 +vt 0.000000 1.000000 +vt 0.500000 0.958333 +vt 0.571429 1.000000 +vt 0.071429 0.958333 +vt 0.500000 0.708333 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.333333 +vt 0.571429 0.000000 +vt 1.000000 0.000000 +vt 0.857143 0.708333 +vt 0.785714 0.375000 +vt 0.857143 0.375000 +vt 0.785714 0.708333 +vt 0.714286 0.375000 +vt 0.714286 0.708333 +vt 0.642857 0.375000 +vt 0.642857 0.708333 +vt 0.571429 0.375000 +vt 0.642857 0.333333 +vt 0.714286 0.333333 +vt 0.714286 0.750000 +vt 0.250000 0.145833 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.321429 0.145833 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.321429 0.187500 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.250000 0.187500 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.250000 0.187500 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.321429 0.145833 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.250000 0.145833 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.107143 0.041667 +vt 0.071429 0.062500 +vt 0.250000 0.145833 +vt 0.500000 0.062500 +vt 0.464286 0.041667 +vt 0.321429 0.145833 +vt 0.464286 0.291667 +vt 0.500000 0.270833 +vt 0.321429 0.187500 +vt 0.071429 0.270833 +vt 0.107143 0.291667 +vt 0.250000 0.187500 +vt 0.071429 0.270833 +vt 0.107143 0.291667 +vt 0.250000 0.187500 +vt 0.464286 0.291667 +vt 0.500000 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.062500 +vt 0.464286 0.041667 +vt 0.321429 0.145833 +vt 0.107143 0.041667 +vt 0.071429 0.062500 +vt 0.250000 0.145833 +vt 0.250000 0.187500 +vt 0.107143 0.291667 +vt 0.071429 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.270833 +vt 0.464286 0.291667 +vt 0.321429 0.145833 +vt 0.464286 0.041667 +vt 0.500000 0.062500 +vt 0.250000 0.145833 +vt 0.071429 0.062500 +vt 0.107143 0.041667 +vt 0.071429 0.270833 +vt 0.107143 0.291667 +vt 0.250000 0.187500 +vt 0.464286 0.291667 +vt 0.500000 0.270833 +vt 0.321429 0.187500 +vt 0.500000 0.062500 +vt 0.464286 0.041667 +vt 0.321429 0.145833 +vt 0.107143 0.041667 +vt 0.071429 0.062500 +vt 0.250000 0.145833 +vt 0.000000 0.666667 +vt -0.000000 0.666667 +vt 0.000000 0.666667 +vt 0.571429 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.333333 +vt 0.571429 0.708333 +vt 0.642857 0.750000 +vt 0.285714 0.145833 +vt 0.250000 0.166667 +vt 0.071429 0.041667 +vt 0.321429 0.166667 +vt 0.285714 0.145833 +vt 0.500000 0.041667 +vt 0.285714 0.187500 +vt 0.321429 0.166667 +vt 0.500000 0.291667 +vt 0.250000 0.166667 +vt 0.285714 0.187500 +vt 0.071429 0.291667 +vt 0.250000 0.166667 +vt 0.285714 0.187500 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.321429 0.166667 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.285714 0.145833 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.250000 0.166667 +vt 0.071429 0.041667 +vt 0.285714 0.145833 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vt 0.321429 0.166667 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.285714 0.187500 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.250000 0.166667 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.250000 0.166667 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.285714 0.187500 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.321429 0.166667 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.285714 0.145833 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vt 0.250000 0.166667 +vt 0.285714 0.187500 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.321429 0.166667 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.285714 0.145833 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.250000 0.166667 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vt 0.071429 0.291667 +vt 0.285714 0.187500 +vt 0.285714 0.187500 +vt 0.500000 0.291667 +vt 0.321429 0.166667 +vt 0.321429 0.166667 +vt 0.500000 0.041667 +vt 0.285714 0.145833 +vt 0.285714 0.145833 +vt 0.071429 0.041667 +vt 0.250000 0.166667 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +s off +f 66/65/17 67/66/17 65/67/17 +f 68/68/18 71/69/18 67/70/18 +f 72/71/19 69/72/19 71/73/19 +f 70/74/20 65/75/20 69/76/20 +f 71/73/21 74/77/21 67/78/21 +f 65/79/21 75/80/21 69/72/21 +f 67/78/21 73/81/21 65/79/21 +f 69/72/21 76/82/21 71/73/21 +f 72/71/22 79/83/22 70/84/22 +f 66/85/22 78/86/22 68/87/22 +f 70/84/22 77/88/22 66/85/22 +f 68/87/22 80/89/22 72/71/22 +f 78/90/19 73/91/19 74/92/19 +f 80/93/20 74/94/20 76/95/20 +f 79/96/17 76/97/17 75/98/17 +f 77/99/18 75/100/18 73/101/18 +f 82/102/17 83/103/17 81/104/17 +f 84/105/18 87/106/18 83/103/18 +f 88/107/19 85/108/19 87/106/19 +f 86/109/20 81/110/20 85/108/20 +f 87/106/21 81/111/21 83/112/21 +f 84/113/22 86/109/22 88/107/22 +f 90/114/22 93/115/22 91/116/22 +f 96/117/22 99/118/22 97/119/22 +f 102/120/22 105/121/22 103/122/22 +f 108/123/22 111/124/22 109/125/22 +f 117/126/22 114/127/22 116/128/22 +f 123/129/22 120/130/22 122/131/22 +f 129/132/22 126/133/22 128/134/22 +f 135/135/22 132/136/22 134/137/22 +f 206/138/21 204/139/21 207/140/21 +f 200/141/21 198/142/21 201/143/21 +f 194/144/21 137/145/21 195/146/21 +f 141/147/21 143/148/21 140/149/21 +f 148/150/21 146/151/21 149/152/21 +f 154/153/21 152/154/21 155/155/21 +f 160/156/21 158/157/21 161/158/21 +f 166/159/21 164/160/21 167/161/21 +f 173/162/22 170/163/22 172/164/22 +f 179/165/22 176/166/22 178/167/22 +f 185/168/22 182/169/22 184/170/22 +f 191/171/22 188/172/22 190/173/22 +f 212/174/21 210/175/21 213/176/21 +f 218/177/21 216/178/21 219/179/21 +f 224/180/21 222/181/21 225/182/21 +f 230/183/21 228/184/21 231/185/21 +f 66/65/17 68/186/17 67/66/17 +f 68/68/18 72/187/18 71/69/18 +f 72/71/19 70/84/19 69/72/19 +f 70/74/20 66/188/20 65/75/20 +f 71/73/21 76/82/21 74/77/21 +f 65/79/21 73/81/21 75/80/21 +f 67/78/21 74/77/21 73/81/21 +f 69/72/21 75/80/21 76/82/21 +f 72/71/22 80/89/22 79/83/22 +f 66/85/22 77/88/22 78/86/22 +f 70/84/22 79/83/22 77/88/22 +f 68/87/22 78/86/22 80/89/22 +f 78/90/19 77/189/19 73/91/19 +f 80/93/20 78/190/20 74/94/20 +f 79/96/17 80/191/17 76/97/17 +f 77/99/18 79/192/18 75/100/18 +f 82/102/17 84/105/17 83/103/17 +f 84/105/18 88/107/18 87/106/18 +f 88/107/19 86/109/19 85/108/19 +f 86/109/20 82/193/20 81/110/20 +f 87/106/21 85/108/21 81/111/21 +f 84/113/22 82/194/22 86/109/22 +f 91/116/22 92/195/22 90/114/22 +f 90/114/22 94/196/22 93/115/22 +f 93/115/22 89/197/22 91/116/22 +f 97/119/22 98/198/22 96/117/22 +f 96/117/22 100/199/22 99/118/22 +f 99/118/22 95/200/22 97/119/22 +f 103/122/22 104/201/22 102/120/22 +f 102/120/22 106/202/22 105/121/22 +f 105/121/22 101/203/22 103/122/22 +f 109/125/22 110/204/22 108/123/22 +f 108/123/22 112/205/22 111/124/22 +f 111/124/22 107/206/22 109/125/22 +f 116/128/22 115/207/22 117/126/22 +f 117/126/22 113/208/22 114/127/22 +f 114/127/22 118/209/22 116/128/22 +f 122/131/22 121/210/22 123/129/22 +f 123/129/22 119/211/22 120/130/22 +f 120/130/22 124/212/22 122/131/22 +f 128/134/22 127/213/22 129/132/22 +f 129/132/22 125/214/22 126/133/22 +f 126/133/22 130/215/22 128/134/22 +f 134/137/22 133/216/22 135/135/22 +f 135/135/22 131/217/22 132/136/22 +f 132/136/22 136/218/22 134/137/22 +f 207/140/21 205/219/21 206/138/21 +f 206/138/21 208/220/21 204/139/21 +f 204/139/21 203/221/21 207/140/21 +f 201/143/21 199/222/21 200/141/21 +f 200/141/21 202/223/21 198/142/21 +f 198/142/21 197/224/21 201/143/21 +f 195/146/21 193/225/21 194/144/21 +f 194/144/21 196/226/21 137/145/21 +f 137/145/21 138/227/21 195/146/21 +f 140/149/21 142/228/21 141/147/21 +f 141/147/21 139/229/21 143/148/21 +f 143/148/21 144/230/21 140/149/21 +f 149/152/21 147/231/21 148/150/21 +f 148/150/21 150/232/21 146/151/21 +f 146/151/21 145/233/21 149/152/21 +f 155/155/21 153/234/21 154/153/21 +f 154/153/21 156/235/21 152/154/21 +f 152/154/21 151/236/21 155/155/21 +f 161/158/21 159/237/21 160/156/21 +f 160/156/21 162/238/21 158/157/21 +f 158/157/21 157/239/21 161/158/21 +f 167/161/21 165/240/21 166/159/21 +f 166/159/21 168/241/21 164/160/21 +f 164/160/21 163/242/21 167/161/21 +f 172/164/22 171/243/22 173/162/22 +f 173/162/22 169/244/22 170/163/22 +f 170/163/22 174/245/22 172/164/22 +f 178/167/22 177/246/22 179/165/22 +f 179/165/22 175/247/22 176/166/22 +f 176/166/22 180/248/22 178/167/22 +f 184/170/22 183/249/22 185/168/22 +f 185/168/22 181/250/22 182/169/22 +f 182/169/22 186/251/22 184/170/22 +f 190/173/22 189/252/22 191/171/22 +f 191/171/22 187/253/22 188/172/22 +f 188/172/22 192/254/22 190/173/22 +f 213/176/21 211/255/21 212/174/21 +f 212/174/21 214/256/21 210/175/21 +f 210/175/21 209/257/21 213/176/21 +f 219/179/21 217/258/21 218/177/21 +f 218/177/21 220/259/21 216/178/21 +f 216/178/21 215/260/21 219/179/21 +f 225/182/21 223/261/21 224/180/21 +f 224/180/21 226/262/21 222/181/21 +f 222/181/21 221/263/21 225/182/21 +f 231/185/21 229/264/21 230/183/21 +f 230/183/21 232/265/21 228/184/21 +f 228/184/21 227/266/21 231/185/21 diff --git a/src/main/resources/assets/hbm/sounds.json b/src/main/resources/assets/hbm/sounds.json index 986c8077d..6458aa7fc 100644 --- a/src/main/resources/assets/hbm/sounds.json +++ b/src/main/resources/assets/hbm/sounds.json @@ -171,6 +171,7 @@ "weapon.robin_explosion": {"category": "player", "sounds": [{"name": "weapon/robin_explosion", "stream": false}]}, "weapon.shotgunPump": {"category": "player", "sounds": [{"name": "weapon/shotgunShootPump", "stream": false}]}, "weapon.explosionMedium": {"category": "player", "sounds": [{"name": "weapon/explosion_medium", "stream": false}]}, + "weapon.hicalShot": {"category": "player", "sounds": [{"name": "weapon/hicalShot", "stream": false}]}, "weapon.dFlash": {"category": "player", "sounds": [{"name": "weapon/dFlash", "stream": false}]}, diff --git a/src/main/resources/assets/hbm/sounds/weapon/hicalShot.ogg b/src/main/resources/assets/hbm/sounds/weapon/hicalShot.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3ddaf7410848510f68d22b5ab60b24438dadf2ad GIT binary patch literal 14489 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 Jo1c>6{{U~f9%cXl literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/armor/no9.png b/src/main/resources/assets/hbm/textures/armor/no9.png index e2254aaa061aaa8ed121083f34a124a319009e18..a72d1dc15895d792249f8f9286230574bab4b5f4 100644 GIT binary patch delta 564 zcmV-40?YmO1oZ@vG#V^PL_t(Ijh&NEXcIvc#(x_(EZMXW-2@ujkxm?cOK&2A4aHuI zAniphSP^Xx_E4c%C5c9CHiWc{m(Do*r)}_qVQ1dVyzhJ8n>DVTKPw2q?5p>NzV7y% zA7(o39JQ~|&AIipw_@-25Au^GMH;#PbSa?Vzhg$Q7!zP%pt~w|cIu(=^$+hn_I-T4 zC;;-4B_jeb_29Xp*5`hI=zi<-y~cMn%tW6Wsse!R?V!4Hu^<4PWP*CFaS+`Hpz`>h z$PAAH@a6Lw>iaZih_XahrhUzoVL8t^M-Er!HL(ev*j3Xt!MT?YK>%cAUz} zsxh;$WPJK_g521DxTlfJ8=IbFVHHFGbb5GlTwNFX7ARk%0?%d@C!W@rc@TS zCD0Seua5rAkdPw!GegQ_f0M%yIcn2S7Dj#?{sK!1{rHa$5Z<%^0000PF3TwLGqBnzt`0;r2t%x0%v#fsVVI4Sf!U4ULmDtR1$daXgZ zSP-&02~Q6IdYqI>q&It~UR5?a$%J3%fiR`As2x`%(jHy4PWykiE2n5I^k(~RR zdnAFLNPcznXNH6n(VrPo9{ZadhR9)?ezGv~qwp8Bq5UQhrt1O{00000NkvXXu0mjf DxZx70 diff --git a/src/main/resources/assets/hbm/textures/items/no9.png b/src/main/resources/assets/hbm/textures/items/no9.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0992b61af7955a2493d4e2cc39e1884bd9c203 GIT binary patch literal 354 zcmV-o0iFJdP)b;@~(9-Nc!^y9eaz4yK2;J;-RL-*uR0Gywm zk@N>#Jv>@^>|3@91MKb}5H2kmCzvaS%lH<6onXxvE*Z3rSp3l~ngVQTIKet~DEhXf^^--K)I= zQ~k-n_LqsGsFXr$&`UGfuYjiMD{&kf{Sjl$05ZdKp25osbN~PV07*qoM6N<$f|?YQ ARsaA1 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png b/src/main/resources/assets/hbm/textures/models/capes/CapePheo.png index 97b7a75388c98f96cd39145625db8a6df39ef767..25842e022b911224451da9ab1970c382f064b2fd 100644 GIT binary patch literal 576 zcmeAS@N?(olHy`uVBq!ia0vp^4nVBH!3-p)I`?e@QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`+XH+;T-5@!l)cmyJyZ|%FF17Q(5X|WZr!@IY11an2)$biw|w~UVaJXg z@75nt@zpprb=idr7l8T>95|4bm1SvZ+11q*7#P^s*XQf&Yi@2nb?Q`md;4wMwk=({ zboJ`hDJdz=&d$op$}%!CWo2dJ;^H129;vCR>(;Fc3k%E7&tI`(g`}k9|NsAiW(L`r z`U5H5k|4iepa{``Vd;DBzd((g1s;*b3=Dh+K$tP>S|=w^@V%#tV~B_M+e>$YS`2tt zAF$otwdn4WMWT^YL(4z1-~0d5XTj#{OU&;Tq*=w3e7ZPqtYsRTJ zJPdb!+`4_+`_sFw8C+-jio>hJIau~F9Jm)H(qQ4$V9j7qUBdLFQdNLyMnj+VgqIOa zEX@`191-se`BEKjHy%x!S6>m+u(Wm0ZY7>2>PK2~538Okxx%#0_n!UlE1#?o;XI(%`BEc1(|mmyw18|5 UAO?X;!IMFhr>mdKI;Vst0LlUb@Bjb+ literal 16324 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 diff --git a/src/main/resources/assets/hbm/textures/models/machines/fan.png b/src/main/resources/assets/hbm/textures/models/machines/fan.png new file mode 100644 index 0000000000000000000000000000000000000000..003223c2f3e52f86f8a15732a73970e6b1d9299e GIT binary patch literal 719 zcmV;=0xsVkP4@!F7NuW*92;u&AApOu( zG_-3W1mZYGuh)|)cJWXNR43P^juR~J`zosKhxGOoMUmi~@A;pu+I~o~a{Ssf3)S{R zime(ai{{hW2W+<+OlIE;&*1jzLi~MxhabQG0I>H_+1lQpoZ$GljqA(v+!XI%&)9CW zg`>ha=Sb5ubG6hiCV@BikE{r)!X~pPMk%BT^@;VKOP@1uPdE3E?DpzH0KoO-xtPqJ zm(@zF+pm)iKK@eP>H zj8Y0@&(s8~>Z5x=Q-PQYDQ|aW$^i4KF|T?7dmoi<@%iIvVKwRt`uY0>Ns`D;qwm`H zeWQ=c9hSlLodPd%a+C6Ww6-5sZTu8h+YfDH{{et-Cc!v9gl7N%002ovPDHLkV1mf{ BOo;#h literal 0 HcmV?d00001