diff --git a/src/main/java/api/hbm/energy/PowerNet.java b/src/main/java/api/hbm/energy/PowerNet.java index 74ed23b88..62adacbba 100644 --- a/src/main/java/api/hbm/energy/PowerNet.java +++ b/src/main/java/api/hbm/energy/PowerNet.java @@ -121,7 +121,7 @@ public class PowerNet implements IPowerNet { long req = weight.get(i); double fraction = (double)req / (double)totalReq; - long given = (int) Math.floor(fraction * power); + long given = (long) Math.floor(fraction * power); totalGiven += (given - con.transferPower(given)); } diff --git a/src/main/java/com/hbm/entity/mob/EntityBurrowingBase.java b/src/main/java/com/hbm/entity/mob/EntityBurrowingBase.java index 7595edf29..152a69bd7 100644 --- a/src/main/java/com/hbm/entity/mob/EntityBurrowingBase.java +++ b/src/main/java/com/hbm/entity/mob/EntityBurrowingBase.java @@ -34,6 +34,12 @@ public abstract class EntityBurrowingBase extends EntityCreature { @Override protected void updateFallState(double distFallen, boolean onGround) { } + /** + * ...and we turn off the default AI routines. We don't care about path-finding anyway. + */ + @Override + protected void updateEntityActionState() { } + /** * Calls moveFlying to add motion depending on our entity's rotation, then moves. Drag is applied depending on whether it is underground or airborne. * Called in onLivingUpdate TODO: figure out if strafe and forward are set by one of the superclasses or if this part is pointless @@ -72,6 +78,14 @@ public abstract class EntityBurrowingBase extends EntityCreature { return false; } + /** + * Contrary to its name, all I could find about it was that it controlled some rotation behavior. BoT seems to work fine with it, so we'll use it here too. + */ + @Override + protected boolean isAIEnabled() { + return true; + } + /** * Whether the entity can freely dig up and down or if gravity should be applied instead. * Some entities might not be able to course-correct when airborne, such as small non-worm entities. diff --git a/src/main/java/com/hbm/entity/mob/EntityBurrowingSwingingBase.java b/src/main/java/com/hbm/entity/mob/EntityBurrowingSwingingBase.java new file mode 100644 index 000000000..3705ddb3c --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/EntityBurrowingSwingingBase.java @@ -0,0 +1,64 @@ +package com.hbm.entity.mob; + +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.World; + +/** + * The name comes from the "swinging" movement patterns as part of its custom path-finding. Also handles rotation. + * The end result kind of looks like dolphins jumping out of the water just to dive back in. + * This class assumes that all implementations are indeed hostile mobs. + * @author hbm + * + */ +public abstract class EntityBurrowingSwingingBase extends EntityBurrowingBase { + + protected Entity target = null; + + public EntityBurrowingSwingingBase(World world) { + super(world); + } + + @Override + public void onUpdate() { + + super.onUpdate(); + + double dx = motionX; + double dy = motionY; + double dz = motionZ; + float f3 = MathHelper.sqrt_double(dx * dx + dz * dz); + this.prevRotationYaw = this.rotationYaw = (float) (Math.atan2(dx, dz) * 180.0D / Math.PI); + this.prevRotationPitch = this.rotationPitch = (float) (Math.atan2(dy, f3) * 180.0D / Math.PI); + } + + @Override + protected void updateAITasks() { + + this.updateEntityActionState(); + super.updateAITasks(); + + swingingMovement(); + } + + @Override + protected void updateEntityActionState() { + + if(!this.worldObj.isRemote && this.worldObj.difficultySetting == EnumDifficulty.PEACEFUL) { + setDead(); + } + if((this.target != null) && (this.target.isDead)) { + this.target = null; + } + if(this.posY < -10.0D) { + this.motionY = 1D; + } else if(this.posY < 3.0D) { + this.motionY = 0.3D; + } + } + + protected void swingingMovement() { + + } +} diff --git a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeSkeleton.java b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeSkeleton.java index 537363990..1aaaeec1f 100644 --- a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeSkeleton.java +++ b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeSkeleton.java @@ -9,11 +9,16 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.IEntityLivingData; import net.minecraft.entity.IRangedAttackMob; import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.EntityAIArrowAttack; +import net.minecraft.entity.ai.EntityAIHurtByTarget; +import net.minecraft.entity.ai.EntityAILookIdle; +import net.minecraft.entity.ai.EntityAINearestAttackableTarget; +import net.minecraft.entity.ai.EntityAISwimming; +import net.minecraft.entity.ai.EntityAIWander; +import net.minecraft.entity.ai.EntityAIWatchClosest; import net.minecraft.entity.ai.attributes.AttributeModifier; import net.minecraft.entity.monster.EntityMob; -import net.minecraft.entity.monster.EntitySkeleton; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Items; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; @@ -25,6 +30,13 @@ public class EntitySiegeSkeleton extends EntityMob implements IRangedAttackMob, public EntitySiegeSkeleton(World world) { super(world); + this.tasks.addTask(1, new EntityAISwimming(this)); + this.tasks.addTask(2, new EntityAIArrowAttack(this, 1.0D, 20, 60, 15.0F)); + this.tasks.addTask(3, new EntityAIWander(this, 1.0D)); + this.tasks.addTask(5, new EntityAIWatchClosest(this, EntityPlayer.class, 8.0F)); + this.tasks.addTask(5, new EntityAILookIdle(this)); + this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); + this.targetTasks.addTask(2, new EntityAINearestAttackableTarget(this, EntityPlayer.class, 0, true)); } @Override @@ -66,7 +78,6 @@ public class EntitySiegeSkeleton extends EntityMob implements IRangedAttackMob, protected void entityInit() { super.entityInit(); this.getDataWatcher().addObject(12, (int) 0); - this.getDataWatcher().addObject(13, (byte) 0); } @Override @@ -118,20 +129,28 @@ public class EntitySiegeSkeleton extends EntityMob implements IRangedAttackMob, @Override public void attackEntityWithRangedAttack(EntityLivingBase target, float f) { - - Vec3 vec = Vec3.createVectorHelper(target.posX - posY, target.posY + target.height * 0.5 - (posY + this.getEyeHeight()), target.posZ -posZ).normalize(); + + double x = posX; + double y = posY + this.getEyeHeight(); + double z = posZ; + + Vec3 vec = Vec3.createVectorHelper(target.posX - x, target.posY + target.getYOffset() + target.height * 0.5 - y, target.posZ - z).normalize(); SiegeTier tier = this.getTier(); - EntitySiegeLaser laser = new EntitySiegeLaser(worldObj, this); - laser.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, 1F, 0.15F); - laser.setColor(0x808080); - laser.setDamage(tier.damageMod); - laser.setExplosive(tier.laserExplosive); - laser.setBreakChance(tier.laserBreak); - if(tier.laserIncendiary) laser.setIncendiary(); - worldObj.spawnEntityInWorld(laser); - this.playSound("hbm:weapon.ballsLaser", 2.0F, 1.0F); + for(int i = 0; i < 3; i++) { + EntitySiegeLaser laser = new EntitySiegeLaser(worldObj, this); + laser.setPosition(x, y, z); + laser.setThrowableHeading(vec.xCoord, vec.yCoord, vec.zCoord, 1F, i == 1 ? 0.15F : 5F); + laser.setColor(0x808000); + laser.setDamage(tier.damageMod); + laser.setExplosive(tier.laserExplosive); + laser.setBreakChance(tier.laserBreak); + if(tier.laserIncendiary) laser.setIncendiary(); + worldObj.spawnEntityInWorld(laser); + } + + this.playSound("hbm:weapon.ballsLaser", 2.0F, 0.9F + rand.nextFloat() * 0.2F); } @Override diff --git a/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java new file mode 100644 index 000000000..af4a617ed --- /dev/null +++ b/src/main/java/com/hbm/entity/mob/siege/EntitySiegeTunneler.java @@ -0,0 +1,62 @@ +package com.hbm.entity.mob.siege; + +import com.hbm.entity.mob.EntityBurrowingBase; + +import net.minecraft.entity.IEntityLivingData; +import net.minecraft.entity.SharedMonsterAttributes; +import net.minecraft.entity.ai.attributes.AttributeModifier; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.world.EnumDifficulty; +import net.minecraft.world.World; + +public class EntitySiegeTunneler extends EntityBurrowingBase { + + public EntitySiegeTunneler(World world) { + super(world); + } + + @Override + protected void entityInit() { + super.entityInit(); + this.getDataWatcher().addObject(12, (int) 0); + } + + @Override + protected void applyEntityAttributes() { + super.applyEntityAttributes(); + this.getEntityAttribute(SharedMonsterAttributes.followRange).setBaseValue(40.0D); + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.23D); + } + + public void setTier(SiegeTier tier) { + this.getDataWatcher().updateObject(12, tier.id); + + this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).applyModifier(new AttributeModifier("Tier Speed Mod", tier.speedMod, 1)); + this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(tier.health); + this.setHealth(this.getMaxHealth()); + } + + public SiegeTier getTier() { + SiegeTier tier = SiegeTier.tiers[this.getDataWatcher().getWatchableObjectInt(12)]; + return tier != null ? tier : SiegeTier.CLAY; + } + + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + nbt.setInteger("siegeTier", this.getTier().id); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + this.setTier(SiegeTier.tiers[nbt.getInteger("siegeTier")]); + } + + @Override + public IEntityLivingData onSpawnWithEgg(IEntityLivingData data) { + this.setTier(SiegeTier.tiers[rand.nextInt(SiegeTier.getLength())]); + this.addRandomArmor(); + return super.onSpawnWithEgg(data); + } +} diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 964666e89..10618cde6 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -589,6 +589,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntitySiegeUFO.class, new RenderSiegeUFO()); RenderingRegistry.registerEntityRenderingHandler(EntitySiegeCraft.class, new RenderSiegeCraft()); RenderingRegistry.registerEntityRenderingHandler(EntitySiegeSkeleton.class, new RenderSiegeSkeleton()); + RenderingRegistry.registerEntityRenderingHandler(EntitySiegeTunneler.class, new RenderSiegeTunneler()); RenderingRegistry.registerEntityRenderingHandler(EntityGhost.class, new RenderGhost()); //"particles" RenderingRegistry.registerEntityRenderingHandler(EntitySmokeFX.class, new MultiCloudRenderer(new Item[] { ModItems.smoke1, ModItems.smoke2, ModItems.smoke3, ModItems.smoke4, ModItems.smoke5, ModItems.smoke6, ModItems.smoke7, ModItems.smoke8 })); diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 15a003f98..f7831f75c 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -496,6 +496,7 @@ public class MainRegistry { EntityRegistry.registerGlobalEntityID(EntitySiegeSkeleton.class, "entity_meme_skeleton", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x000080); EntityRegistry.registerGlobalEntityID(EntitySiegeUFO.class, "entity_meme_ufo", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x800000); EntityRegistry.registerGlobalEntityID(EntitySiegeCraft.class, "entity_meme_craft", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x808000); + EntityRegistry.registerGlobalEntityID(EntitySiegeTunneler.class, "entity_meme_tunneler", EntityRegistry.findGlobalUniqueEntityId(), 0x303030, 0x008080); EntityRegistry.registerModEntity(EntitySPV.class, "entity_self_propelled_vehicle_mark_1", 160, this, 1000, 1, true); diff --git a/src/main/java/com/hbm/render/entity/mob/RenderSiegeTunneler.java b/src/main/java/com/hbm/render/entity/mob/RenderSiegeTunneler.java new file mode 100644 index 000000000..1a4eed429 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/mob/RenderSiegeTunneler.java @@ -0,0 +1,45 @@ +package com.hbm.render.entity.mob; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; +import com.hbm.render.loader.HFRWavefrontObject; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderSiegeTunneler extends Render { + + public RenderSiegeTunneler() { + this.shadowOpaque = 0.0F; + } + + public static final IModelCustom body = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/mobs/tunneler.obj")); + public static final ResourceLocation texture = new ResourceLocation(RefStrings.MODID, "textures/entity/siege_drill.png"); + + @Override + public void doRender(Entity entity, double x, double y, double z, float f0, float f1) { + + GL11.glPushMatrix(); + GL11.glTranslated(x, y, z); + + GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * f1 - 90.0F, 0.0F, 1.0F, 0.0F); + GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * f1 - 90, 0.0F, 0.0F, 1.0F); + + this.bindEntityTexture(entity); + GL11.glShadeModel(GL11.GL_SMOOTH); + GL11.glDisable(GL11.GL_CULL_FACE); + body.renderAll(); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return texture; + } +} diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java b/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java index c58be3e43..113b0ffdb 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityConverterRfHe.java @@ -45,14 +45,14 @@ public class TileEntityConverterRfHe extends TileEntity implements IEnergyGenera if(simulate) return 0; - long capacity = maxReceive * 4L; + long capacity = maxReceive / 4L; subBuffer = capacity; for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { this.sendPower(worldObj, xCoord + dir.offsetX, yCoord + dir.offsetY, zCoord + dir.offsetZ, dir); } - return (int) ((capacity - subBuffer) / 4L); + return (int) ((capacity - subBuffer) * 4L); } @Override diff --git a/src/main/resources/assets/hbm/models/mobs/tunneler.obj b/src/main/resources/assets/hbm/models/mobs/tunneler.obj new file mode 100644 index 000000000..c438bc16c --- /dev/null +++ b/src/main/resources/assets/hbm/models/mobs/tunneler.obj @@ -0,0 +1,783 @@ +# Blender v2.79 (sub 0) OBJ File: 'tunneler.blend' +# www.blender.org +o Drill +v 0.000000 0.812500 -0.500000 +v -0.143506 0.812500 -0.346455 +v -0.353553 0.812500 -0.353553 +v -0.346455 0.812500 -0.143506 +v -0.500000 0.812500 0.000000 +v -0.346455 0.812500 0.143506 +v -0.353553 0.812500 0.353553 +v -0.143506 0.812500 0.346455 +v -0.000000 0.812500 0.500000 +v 0.143506 0.812500 0.346455 +v 0.353553 0.812500 0.353554 +v 0.346455 0.812500 0.143506 +v 0.500000 0.812500 0.000000 +v 0.346455 0.812500 -0.143506 +v 0.353553 0.812500 -0.353554 +v 0.143506 0.812500 -0.346455 +v 0.000000 1.812500 0.000000 +vt 0.312500 0.106061 +vt 0.312500 0.060606 +vt 0.562500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.312500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.312500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.312500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.312500 0.060606 +vt 0.312500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.312500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.060606 +vt 0.312500 0.015152 +vt 0.312500 0.106061 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.281250 0.060606 +vt 0.250000 0.015152 +vt 0.750000 0.181818 +vt 0.687500 0.181818 +vt 0.750000 -0.000000 +vt 0.625000 0.121212 +vt 0.625000 0.060606 +vt 0.687500 -0.000000 +vt 0.812500 0.060606 +vt 0.812500 0.121212 +vn 0.6914 0.3231 -0.6462 +vn -0.6914 0.3231 -0.6462 +vn 0.0320 0.3231 -0.9458 +vn -0.9458 0.3231 0.0320 +vn -0.6462 0.3231 -0.6914 +vn -0.6462 0.3231 0.6914 +vn -0.9458 0.3231 -0.0320 +vn 0.0320 0.3231 0.9458 +vn -0.6914 0.3231 0.6462 +vn -0.0320 0.3231 -0.9458 +vn 0.9458 0.3231 0.0320 +vn 0.6914 0.3231 0.6462 +vn -0.0320 0.3231 0.9458 +vn 0.9458 0.3231 -0.0320 +vn 0.6462 0.3231 -0.6914 +vn 0.6462 0.3231 0.6914 +vn 0.0000 -1.0000 -0.0000 +s off +f 16/1/1 1/2/1 17/3/1 +f 1/2/2 2/4/2 17/3/2 +f 2/5/3 3/6/3 17/3/3 +f 3/6/4 4/7/4 17/3/4 +f 4/8/5 5/9/5 17/3/5 +f 5/9/6 6/10/6 17/3/6 +f 6/11/7 7/12/7 17/3/7 +f 7/12/8 8/13/8 17/3/8 +f 8/14/9 9/15/9 17/3/9 +f 15/16/10 16/17/10 17/3/10 +f 14/18/11 15/16/11 17/3/11 +f 9/15/12 10/19/12 17/3/12 +f 10/20/13 11/21/13 17/3/13 +f 11/21/14 12/22/14 17/3/14 +f 13/23/15 14/24/15 17/3/15 +f 12/25/16 13/23/16 17/3/16 +f 13/26/17 12/27/17 14/24/17 +f 15/28/17 14/29/17 16/17/17 +f 1/30/17 16/31/17 2/4/17 +f 3/32/17 2/33/17 4/7/17 +f 5/34/17 4/35/17 6/10/17 +f 7/36/17 6/37/17 8/13/17 +f 9/38/17 8/39/17 10/19/17 +f 11/40/17 10/41/17 12/22/17 +f 16/42/17 14/43/17 6/44/17 +f 14/43/17 12/45/17 10/46/17 +f 10/46/17 8/47/17 14/43/17 +f 8/47/17 6/44/17 14/43/17 +f 6/44/17 4/48/17 2/49/17 +f 2/49/17 16/42/17 6/44/17 +o Body +v -0.250000 -0.750000 0.500000 +v -0.500000 -0.750000 0.250000 +v -0.500000 0.750000 0.250000 +v -0.250000 0.750000 0.500000 +v -0.500000 -0.750000 -0.250000 +v -0.250000 -0.750000 -0.500000 +v -0.250000 0.750000 -0.500000 +v -0.500000 0.750000 -0.250000 +v 0.500000 -0.750000 0.250000 +v 0.250000 -0.750000 0.500000 +v 0.250000 0.750000 0.500000 +v 0.500000 0.750000 0.250000 +v 0.250000 -0.750000 -0.500000 +v 0.500000 -0.750000 -0.250000 +v 0.500000 0.750000 -0.250000 +v 0.250000 0.750000 -0.500000 +v -0.375000 -0.750000 0.375000 +v -0.375000 -0.750000 -0.375000 +v 0.375000 -0.750000 -0.375000 +v 0.375000 -0.750000 0.375000 +v -0.375000 -0.875000 0.375000 +v -0.375000 -0.875000 -0.375000 +v 0.375000 -0.875000 -0.375000 +v 0.375000 -0.875000 0.375000 +v -0.500000 -0.875000 0.500000 +v -0.500000 -0.875000 -0.500000 +v 0.500000 -0.875000 -0.500000 +v 0.500000 -0.875000 0.500000 +v -0.500000 -1.125000 0.500000 +v -0.500000 -1.125000 -0.500000 +v 0.500000 -1.125000 -0.500000 +v 0.500000 -1.125000 0.500000 +v 0.000000 0.750000 -0.250000 +v -0.176777 0.750000 -0.176777 +v -0.250000 0.750000 0.000000 +v -0.176777 0.750000 0.176777 +v 0.000000 0.750000 0.250000 +v 0.176777 0.750000 0.176777 +v 0.250000 0.750000 -0.000000 +v 0.176777 0.750000 -0.176777 +v 0.000000 0.812500 -0.250000 +v -0.176777 0.812500 -0.176777 +v -0.250000 0.812500 0.000000 +v -0.176777 0.812500 0.176777 +v 0.000000 0.812500 0.250000 +v 0.176777 0.812500 0.176777 +v 0.250000 0.812500 -0.000000 +v 0.176777 0.812500 -0.176777 +v -0.062500 0.062500 0.500000 +v -0.062500 -0.025888 0.411612 +v 0.062500 0.062500 0.500000 +v 0.062500 -0.025888 0.411612 +v 0.062500 -0.202665 0.765165 +v -0.062500 -0.202665 0.765165 +v -0.062500 -0.291053 0.676777 +v 0.062500 -0.291053 0.676777 +v 0.125000 -0.158471 0.809359 +v -0.125000 -0.158471 0.809359 +v -0.125000 -0.335248 0.632583 +v 0.125000 -0.335248 0.632583 +v 0.125000 -0.335248 0.986136 +v -0.125000 -0.335248 0.986136 +v -0.125000 -0.512024 0.809359 +v 0.125000 -0.512024 0.809359 +v 0.406250 0.500000 -0.343750 +v 0.343750 0.500000 -0.406250 +v 0.406250 -0.500000 -0.343750 +v 0.343750 -0.500000 -0.406250 +v 0.520527 0.000000 -0.583027 +v 0.583027 0.000000 -0.520527 +v 0.520527 -0.500000 -0.583027 +v 0.583027 -0.500000 -0.520527 +v -0.406250 0.500000 0.343750 +v -0.343750 0.500000 0.406250 +v -0.406250 -0.500000 0.343750 +v -0.343750 -0.500000 0.406250 +v -0.520527 0.000000 0.583027 +v -0.583027 0.000000 0.520527 +v -0.520527 -0.500000 0.583027 +v -0.583027 -0.500000 0.520527 +v -0.343750 0.500000 -0.406250 +v -0.406250 0.500000 -0.343750 +v -0.343750 -0.500000 -0.406250 +v -0.406250 -0.500000 -0.343750 +v -0.583027 0.000000 -0.520527 +v -0.520527 0.000000 -0.583027 +v -0.583027 -0.500000 -0.520527 +v -0.520527 -0.500000 -0.583027 +v 0.343750 0.500000 0.406250 +v 0.406250 0.500000 0.343750 +v 0.343750 -0.500000 0.406250 +v 0.406250 -0.500000 0.343750 +v 0.583027 0.000000 0.520527 +v 0.520527 0.000000 0.583027 +v 0.583027 -0.500000 0.520527 +v 0.520527 -0.500000 0.583027 +v 0.375000 -1.125000 0.375000 +v 0.375000 -1.125000 -0.375000 +v -0.375000 -1.125000 0.375000 +v -0.375000 -1.125000 -0.375000 +v 0.250000 -1.062500 0.250000 +v 0.250000 -1.062500 -0.250000 +v -0.250000 -1.062500 0.250000 +v -0.250000 -1.062500 -0.250000 +v 0.062500 0.062500 -0.500000 +v 0.062500 -0.025888 -0.411612 +v -0.062500 0.062500 -0.500000 +v -0.062500 -0.025888 -0.411612 +v -0.062500 -0.202665 -0.765165 +v 0.062500 -0.202665 -0.765165 +v 0.062500 -0.291053 -0.676777 +v -0.062500 -0.291053 -0.676777 +v -0.125000 -0.158471 -0.809359 +v 0.125000 -0.158471 -0.809359 +v 0.125000 -0.335248 -0.632583 +v -0.125000 -0.335248 -0.632583 +v -0.125000 -0.335248 -0.986136 +v 0.125000 -0.335248 -0.986136 +v 0.125000 -0.512024 -0.809359 +v -0.125000 -0.512024 -0.809359 +v 0.500000 0.062500 0.062500 +v 0.411612 -0.025888 0.062500 +v 0.500000 0.062500 -0.062500 +v 0.411612 -0.025888 -0.062500 +v 0.765165 -0.202665 -0.062500 +v 0.765165 -0.202665 0.062500 +v 0.676777 -0.291053 0.062500 +v 0.676777 -0.291053 -0.062500 +v 0.809359 -0.158471 -0.125000 +v 0.809359 -0.158471 0.125000 +v 0.632583 -0.335248 0.125000 +v 0.632583 -0.335248 -0.125000 +v 0.986136 -0.335248 -0.125000 +v 0.986136 -0.335248 0.125000 +v 0.809359 -0.512024 0.125000 +v 0.809359 -0.512024 -0.125000 +v -0.500000 0.062500 -0.062500 +v -0.411612 -0.025888 -0.062500 +v -0.500000 0.062500 0.062500 +v -0.411612 -0.025888 0.062500 +v -0.765165 -0.202665 0.062500 +v -0.765165 -0.202665 -0.062500 +v -0.676777 -0.291053 -0.062500 +v -0.676777 -0.291053 0.062500 +v -0.809359 -0.158471 0.125000 +v -0.809359 -0.158471 -0.125000 +v -0.632583 -0.335248 -0.125000 +v -0.632583 -0.335248 0.125000 +v -0.986136 -0.335248 0.125000 +v -0.986136 -0.335248 -0.125000 +v -0.809359 -0.512024 -0.125000 +v -0.809359 -0.512024 0.125000 +vt 0.750000 0.757576 +vt 0.625000 0.393939 +vt 0.750000 0.393939 +vt 0.187500 0.757576 +vt 0.062500 0.393939 +vt 0.187500 0.393939 +vt 0.375000 0.757576 +vt 0.250000 0.393939 +vt 0.375000 0.393939 +vt 0.562500 0.757576 +vt 0.562500 0.393939 +vt 0.593750 0.393939 +vt 0.406250 0.393939 +vt 0.437500 0.393939 +vt 0.437500 0.757576 +vt 0.218750 0.393939 +vt 0.250000 0.757576 +vt 0.031250 0.393939 +vt 0.062500 0.757576 +vt 0.218750 0.363636 +vt 0.031250 0.363636 +vt 0.781250 0.363636 +vt 0.593750 0.363636 +vt 0.406250 0.363636 +vt 0.593750 0.333333 +vt 0.218750 0.333333 +vt 0.406250 0.333333 +vt 0.781250 0.333333 +vt 0.281250 0.333333 +vt 0.500000 0.303030 +vt 0.468750 0.333333 +vt 0.781250 0.333333 +vt 1.000000 0.303030 +vt 0.968750 0.333333 +vt 0.531250 0.333333 +vt 0.750000 0.303030 +vt 0.718750 0.333333 +vt 0.031250 0.333333 +vt 0.250000 0.303030 +vt 1.000000 0.242424 +vt 0.750000 0.242424 +vt 0.000000 0.303030 +vt 0.250000 0.242424 +vt 0.500000 0.242424 +vt 0.218750 0.030303 +vt 0.250000 0.000000 +vt 0.250000 0.939394 +vt 0.062500 1.000000 +vt 0.484375 0.015152 +vt 0.531250 -0.000000 +vt 0.531250 0.015152 +vt 0.578125 0.015152 +vt 0.625000 -0.000000 +vt 0.625000 0.015152 +vt 0.296875 0.015152 +vt 0.343750 -0.000000 +vt 0.343750 0.015152 +vt 0.390625 0.015152 +vt 0.437500 -0.000000 +vt 0.437500 0.015152 +vt 0.484375 -0.000000 +vt 0.578125 -0.000000 +vt 0.250000 0.015152 +vt 0.296875 -0.000000 +vt 0.390625 -0.000000 +vt 0.296875 0.848485 +vt 0.250000 0.863636 +vt 0.265625 0.848485 +vt 0.484375 0.757576 +vt 0.453125 0.848485 +vt 0.453125 0.757576 +vt 0.296875 0.757576 +vt 0.265625 0.757576 +vt 0.390625 0.757576 +vt 0.421875 0.848485 +vt 0.390625 0.848485 +vt 0.359375 0.757576 +vt 0.328125 0.848485 +vt 0.328125 0.757576 +vt 0.437500 0.863636 +vt 0.375000 0.924242 +vt 0.375000 0.863636 +vt 0.312500 0.863636 +vt 0.484375 0.848485 +vt 0.250000 0.924242 +vt 0.312500 0.984848 +vt 0.250000 0.984848 +vt 0.312500 0.924242 +vt 0.500000 0.863636 +vt 0.437500 0.924242 +vt 0.812500 0.393939 +vt 0.828125 0.515152 +vt 0.812500 0.515152 +vt 0.750000 0.393939 +vt 0.750000 0.636364 +vt 0.812500 0.636364 +vt 0.828125 0.636364 +vt 0.890625 0.393939 +vt 0.828125 0.393939 +vt 0.828125 0.333333 +vt 0.812500 0.333333 +vt 0.812500 0.393939 +vt 0.828125 0.515152 +vt 0.812500 0.515152 +vt 0.750000 0.393939 +vt 0.750000 0.636364 +vt 0.812500 0.636364 +vt 0.828125 0.636364 +vt 0.890625 0.393939 +vt 0.828125 0.393939 +vt 0.828125 0.333333 +vt 0.812500 0.333333 +vt 0.812500 0.393939 +vt 0.828125 0.515152 +vt 0.812500 0.515152 +vt 0.750000 0.393939 +vt 0.750000 0.636364 +vt 0.812500 0.636364 +vt 0.828125 0.636364 +vt 0.890625 0.393939 +vt 0.828125 0.393939 +vt 0.812500 0.333333 +vt 0.812500 0.393939 +vt 0.828125 0.515152 +vt 0.812500 0.515152 +vt 0.750000 0.393939 +vt 0.750000 0.636364 +vt 0.812500 0.636364 +vt 0.828125 0.636364 +vt 0.890625 0.393939 +vt 0.828125 0.393939 +vt 0.828125 0.333333 +vt 0.812500 0.333333 +vt 0.062500 0.060606 +vt 0.031250 0.030303 +vt 0.000000 0.000000 +vt 0.031250 0.212121 +vt 0.000000 0.242424 +vt 0.218750 0.212121 +vt 0.187500 0.181818 +vt 0.062500 0.181818 +vt 0.187500 0.060606 +vt 0.296875 0.848485 +vt 0.250000 0.863636 +vt 0.265625 0.848485 +vt 0.484375 0.757576 +vt 0.453125 0.848485 +vt 0.453125 0.757576 +vt 0.296875 0.757576 +vt 0.265625 0.757576 +vt 0.421875 0.757576 +vt 0.390625 0.848485 +vt 0.390625 0.757576 +vt 0.359375 0.757576 +vt 0.328125 0.848485 +vt 0.328125 0.757576 +vt 0.375000 0.863636 +vt 0.437500 0.924242 +vt 0.375000 0.924242 +vt 0.421875 0.848485 +vt 0.312500 0.863636 +vt 0.484375 0.848485 +vt 0.437500 0.863636 +vt 0.250000 0.984848 +vt 0.312500 0.924242 +vt 0.312500 0.984848 +vt 0.500000 0.863636 +vt 0.250000 0.924242 +vt 0.265625 0.848485 +vt 0.312500 0.863636 +vt 0.250000 0.863636 +vt 0.453125 0.757576 +vt 0.484375 0.848485 +vt 0.453125 0.848485 +vt 0.296875 0.757576 +vt 0.265625 0.757576 +vt 0.390625 0.757576 +vt 0.421875 0.848485 +vt 0.390625 0.848485 +vt 0.359375 0.757576 +vt 0.328125 0.848485 +vt 0.328125 0.757576 +vt 0.375000 0.863636 +vt 0.437500 0.924242 +vt 0.375000 0.924242 +vt 0.500000 0.863636 +vt 0.437500 0.863636 +vt 0.250000 0.984848 +vt 0.312500 0.924242 +vt 0.312500 0.984848 +vt 0.250000 0.924242 +vt 0.296875 0.848485 +vt 0.250000 0.863636 +vt 0.265625 0.848485 +vt 0.484375 0.757576 +vt 0.453125 0.848485 +vt 0.453125 0.757576 +vt 0.296875 0.757576 +vt 0.265625 0.757576 +vt 0.390625 0.757576 +vt 0.421875 0.848485 +vt 0.390625 0.848485 +vt 0.359375 0.757576 +vt 0.328125 0.848485 +vt 0.328125 0.757576 +vt 0.375000 0.863636 +vt 0.437500 0.924242 +vt 0.375000 0.924242 +vt 0.437500 0.863636 +vt 0.359375 0.848485 +vt 0.312500 0.863636 +vt 0.484375 0.848485 +vt 0.250000 0.984848 +vt 0.312500 0.924242 +vt 0.312500 0.984848 +vt 0.500000 0.924242 +vt 0.250000 0.924242 +vt 0.625000 0.757576 +vt -0.000000 0.757576 +vt 0.000000 0.393939 +vt -0.000000 0.939394 +vt 0.000000 0.818182 +vt 0.250000 0.818182 +vt 0.187500 1.000000 +vt 0.250000 -0.000000 +vt 0.421875 0.757576 +vt 0.359375 0.848485 +vt 0.500000 0.924242 +vt 0.890625 0.636364 +vt 0.890625 0.636364 +vt 0.890625 0.636364 +vt 0.828125 0.333333 +vt 0.890625 0.636364 +vt 0.359375 0.848485 +vt 0.500000 0.924242 +vt 0.296875 0.848485 +vt 0.484375 0.757576 +vt 0.421875 0.757576 +vt 0.359375 0.848485 +vt 0.500000 0.924242 +vt 0.421875 0.757576 +vt 0.500000 0.863636 +vn 0.0000 0.0000 1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -1.0000 0.0000 0.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.9239 0.0000 -0.3827 +vn 0.3827 0.0000 0.9239 +vn -0.9239 0.0000 0.3827 +vn -0.3827 0.0000 -0.9239 +vn 0.3827 0.0000 -0.9239 +vn 0.9239 0.0000 0.3827 +vn -0.3827 0.0000 0.9239 +vn -0.9239 0.0000 -0.3827 +vn 0.0000 0.7071 -0.7071 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 0.7071 0.7071 +vn 0.0000 -0.7071 0.7071 +vn 0.6325 0.4472 -0.6325 +vn -0.6325 0.4472 0.6325 +vn -0.6325 0.4472 -0.6325 +vn 0.6325 0.4472 0.6325 +vn 0.4472 -0.8944 0.0000 +vn -0.4472 -0.8944 0.0000 +vn 0.0000 -0.8944 0.4472 +vn 0.0000 -0.8944 -0.4472 +vn -0.7071 0.7071 0.0000 +vn -0.7071 -0.7071 0.0000 +vn 0.7071 0.7071 0.0000 +vn 0.7071 -0.7071 0.0000 +s off +f 28/50/18 18/51/18 27/52/18 +f 32/53/19 26/54/19 31/55/19 +f 24/56/20 30/57/20 23/58/20 +f 20/59/21 19/60/21 34/61/21 +f 35/62/22 22/63/22 25/64/22 +f 36/65/23 30/57/23 33/66/23 +f 37/67/24 26/54/24 29/68/24 +f 20/59/25 22/63/25 19/60/25 +f 36/69/26 26/54/26 37/70/26 +f 37/71/26 18/51/26 34/72/26 +f 34/72/26 22/63/26 35/73/26 +f 35/73/26 30/57/26 36/69/26 +f 35/73/25 38/74/25 34/72/25 +f 37/70/19 40/75/19 36/69/19 +f 36/69/20 39/76/20 35/73/20 +f 34/72/18 41/77/18 37/71/18 +f 40/78/27 43/79/27 39/80/27 +f 38/81/27 45/82/27 41/83/27 +f 39/84/27 42/85/27 38/86/27 +f 41/87/27 44/88/27 40/75/27 +f 42/85/18 49/89/18 45/82/18 +f 43/79/25 46/90/25 42/85/25 +f 45/91/19 48/92/19 44/88/19 +f 44/88/20 47/93/20 43/79/20 +f 48/92/26 117/94/26 47/95/26 +f 32/53/27 24/96/27 20/97/27 +f 57/98/28 64/99/28 56/100/28 +f 55/101/29 62/102/29 54/103/29 +f 53/104/30 60/105/30 52/106/30 +f 51/107/31 58/108/31 50/109/31 +f 50/109/32 65/110/32 57/98/32 +f 56/100/33 63/111/33 55/101/33 +f 54/112/34 61/113/34 53/104/34 +f 52/106/35 59/114/35 51/107/35 +f 73/115/36 76/116/36 72/117/36 +f 67/118/25 71/119/25 66/120/25 +f 69/121/37 72/117/37 67/122/37 +f 68/123/38 71/124/38 70/125/38 +f 68/126/19 73/127/19 69/128/19 +f 75/129/38 78/130/38 74/131/38 +f 71/124/36 74/131/36 70/125/36 +f 73/127/36 74/131/36 77/132/36 +f 72/133/36 75/129/36 71/119/36 +f 80/134/39 78/135/39 79/136/39 +f 77/132/19 78/130/19 81/137/19 +f 76/138/25 79/139/25 75/129/25 +f 77/132/37 80/134/37 76/116/37 +f 89/140/23 86/141/23 87/142/23 +f 84/143/24 87/142/24 82/144/24 +f 82/145/40 86/141/40 83/146/40 +f 85/147/22 86/141/22 88/148/22 +f 85/149/26 89/140/26 84/150/26 +f 97/151/21 94/152/21 95/153/21 +f 92/154/22 95/153/22 90/155/22 +f 90/156/41 94/152/41 91/157/41 +f 93/158/24 94/152/24 96/159/24 +f 93/160/26 97/151/26 92/161/26 +f 105/162/22 102/163/22 103/164/22 +f 100/165/23 103/164/23 98/166/23 +f 98/167/42 102/163/42 99/168/42 +f 101/169/21 102/163/21 104/170/21 +f 100/171/26 104/170/26 105/162/26 +f 113/172/24 110/173/24 111/174/24 +f 108/175/21 111/174/21 106/176/21 +f 106/177/43 110/173/43 107/178/43 +f 109/179/23 110/173/23 112/180/23 +f 109/181/26 113/172/26 108/182/26 +f 117/94/44 120/183/44 116/184/44 +f 46/185/26 114/186/26 49/187/26 +f 47/95/26 116/184/26 46/185/26 +f 49/187/26 115/188/26 48/92/26 +f 120/183/26 119/189/26 118/190/26 +f 114/186/45 119/189/45 115/188/45 +f 115/188/46 121/191/46 117/94/46 +f 116/184/47 118/190/47 114/186/47 +f 129/192/38 132/193/38 128/194/38 +f 123/195/19 127/196/19 122/197/19 +f 125/198/39 128/194/39 123/199/39 +f 122/200/36 126/201/36 124/202/36 +f 124/203/25 129/204/25 125/205/25 +f 130/206/36 135/207/36 134/208/36 +f 127/209/38 130/206/38 126/201/38 +f 129/204/38 130/206/38 133/210/38 +f 128/211/38 131/212/38 127/196/38 +f 135/213/37 137/214/37 134/215/37 +f 133/210/25 134/208/25 137/214/25 +f 132/216/19 135/207/19 131/212/19 +f 133/210/39 136/217/39 132/193/39 +f 144/218/48 149/219/48 148/220/48 +f 138/221/18 144/222/18 143/223/18 +f 141/224/49 144/218/49 139/225/49 +f 140/226/50 143/227/50 142/228/50 +f 140/229/20 145/230/20 141/231/20 +f 146/232/50 151/233/50 150/234/50 +f 143/227/48 146/232/48 142/228/48 +f 145/230/48 146/232/48 149/219/48 +f 143/223/48 148/235/48 147/236/48 +f 151/237/51 153/238/51 150/239/51 +f 149/219/20 150/234/20 153/238/20 +f 148/235/18 151/233/18 147/236/18 +f 149/219/49 152/240/49 148/220/49 +f 161/241/50 164/242/50 160/243/50 +f 155/244/20 159/245/20 154/246/20 +f 157/247/51 160/243/51 155/248/51 +f 156/249/48 159/250/48 158/251/48 +f 156/252/18 161/253/18 157/254/18 +f 162/255/48 167/256/48 166/257/48 +f 158/251/50 163/258/50 162/255/50 +f 158/259/50 165/260/50 161/253/50 +f 160/261/50 163/258/50 159/245/50 +f 167/262/49 169/263/49 166/264/49 +f 162/255/18 169/263/18 165/260/18 +f 163/258/20 168/265/20 167/256/20 +f 165/260/51 168/266/51 164/242/51 +f 28/50/18 21/267/18 18/51/18 +f 32/53/19 29/68/19 26/54/19 +f 24/56/20 33/66/20 30/57/20 +f 34/61/21 18/51/21 21/267/21 +f 21/267/21 20/59/21 34/61/21 +f 25/64/22 24/56/22 35/62/22 +f 24/56/22 23/58/22 35/62/22 +f 33/66/23 32/53/23 36/65/23 +f 32/53/23 31/55/23 36/65/23 +f 29/68/24 28/268/24 37/67/24 +f 28/268/24 27/269/24 37/67/24 +f 20/59/25 25/64/25 22/63/25 +f 36/69/26 31/55/26 26/54/26 +f 37/71/26 27/52/26 18/51/26 +f 34/72/26 19/60/26 22/63/26 +f 35/73/26 23/58/26 30/57/26 +f 35/73/25 39/76/25 38/74/25 +f 37/70/19 41/87/19 40/75/19 +f 36/69/20 40/75/20 39/76/20 +f 34/72/18 38/74/18 41/77/18 +f 40/78/27 44/88/27 43/79/27 +f 38/81/27 42/85/27 45/82/27 +f 39/84/27 43/79/27 42/85/27 +f 41/87/27 45/91/27 44/88/27 +f 42/85/18 46/90/18 49/89/18 +f 43/79/25 47/93/25 46/90/25 +f 45/91/19 49/187/19 48/92/19 +f 44/88/20 48/92/20 47/93/20 +f 48/92/26 115/188/26 117/94/26 +f 20/97/27 21/270/27 28/271/27 +f 28/271/27 29/68/27 32/53/27 +f 32/53/27 33/272/27 24/96/27 +f 24/96/27 25/273/27 20/97/27 +f 20/97/27 28/271/27 32/53/27 +f 57/98/28 65/110/28 64/99/28 +f 55/101/29 63/111/29 62/102/29 +f 53/104/30 61/113/30 60/105/30 +f 51/107/31 59/114/31 58/108/31 +f 50/109/32 58/108/32 65/110/32 +f 56/100/33 64/99/33 63/111/33 +f 54/112/34 62/274/34 61/113/34 +f 52/106/35 60/105/35 59/114/35 +f 73/115/36 77/132/36 76/116/36 +f 67/118/25 72/133/25 71/119/25 +f 69/121/37 73/115/37 72/117/37 +f 68/123/38 66/275/38 71/124/38 +f 68/126/19 70/276/19 73/127/19 +f 75/129/38 79/139/38 78/130/38 +f 71/124/36 75/129/36 74/131/36 +f 73/127/36 70/276/36 74/131/36 +f 72/133/36 76/138/36 75/129/36 +f 80/134/39 81/137/39 78/135/39 +f 77/132/19 74/131/19 78/130/19 +f 76/138/25 80/277/25 79/139/25 +f 77/132/37 81/137/37 80/134/37 +f 89/140/23 88/148/23 86/141/23 +f 84/143/24 89/140/24 87/142/24 +f 82/145/40 87/142/40 86/141/40 +f 85/147/22 83/278/22 86/141/22 +f 85/149/26 88/148/26 89/140/26 +f 97/151/21 96/159/21 94/152/21 +f 92/154/22 97/151/22 95/153/22 +f 90/156/41 95/153/41 94/152/41 +f 93/158/24 91/279/24 94/152/24 +f 93/160/26 96/159/26 97/151/26 +f 105/162/22 104/170/22 102/163/22 +f 100/165/23 105/162/23 103/164/23 +f 98/167/42 103/164/42 102/163/42 +f 101/169/21 99/280/21 102/163/21 +f 100/171/26 101/281/26 104/170/26 +f 113/172/24 112/180/24 110/173/24 +f 108/175/21 113/172/21 111/174/21 +f 106/177/43 111/174/43 110/173/43 +f 109/179/23 107/282/23 110/173/23 +f 109/181/26 112/180/26 113/172/26 +f 117/94/44 121/191/44 120/183/44 +f 46/185/26 116/184/26 114/186/26 +f 47/95/26 117/94/26 116/184/26 +f 49/187/26 114/186/26 115/188/26 +f 120/183/26 121/191/26 119/189/26 +f 114/186/45 118/190/45 119/189/45 +f 115/188/46 119/189/46 121/191/46 +f 116/184/47 120/183/47 118/190/47 +f 129/192/38 133/210/38 132/193/38 +f 123/195/19 128/211/19 127/196/19 +f 125/198/39 129/192/39 128/194/39 +f 122/200/36 127/209/36 126/201/36 +f 124/203/25 126/283/25 129/204/25 +f 130/206/36 131/212/36 135/207/36 +f 127/209/38 131/212/38 130/206/38 +f 129/204/38 126/283/38 130/206/38 +f 128/211/38 132/216/38 131/212/38 +f 135/213/37 136/217/37 137/214/37 +f 133/210/25 130/206/25 134/208/25 +f 132/216/19 136/284/19 135/207/19 +f 133/210/39 137/214/39 136/217/39 +f 144/218/48 145/285/48 149/219/48 +f 138/221/18 139/286/18 144/222/18 +f 141/224/49 145/285/49 144/218/49 +f 140/226/50 138/287/50 143/227/50 +f 140/229/20 142/288/20 145/230/20 +f 146/232/50 147/236/50 151/233/50 +f 143/227/48 147/236/48 146/232/48 +f 145/230/48 142/288/48 146/232/48 +f 143/223/48 144/222/48 148/235/48 +f 151/237/51 152/240/51 153/238/51 +f 149/219/20 146/232/20 150/234/20 +f 148/235/18 152/289/18 151/233/18 +f 149/219/49 153/238/49 152/240/49 +f 161/241/50 165/260/50 164/242/50 +f 155/244/20 160/261/20 159/245/20 +f 157/247/51 161/241/51 160/243/51 +f 156/249/48 154/290/48 159/250/48 +f 156/252/18 158/259/18 161/253/18 +f 162/255/48 163/258/48 167/256/48 +f 158/251/50 159/250/50 163/258/50 +f 158/259/50 162/255/50 165/260/50 +f 160/261/50 164/291/50 163/258/50 +f 167/262/49 168/266/49 169/263/49 +f 162/255/18 166/257/18 169/263/18 +f 163/258/20 164/291/20 168/265/20 +f 165/260/51 169/263/51 168/266/51 diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png new file mode 100644 index 000000000..132e23ffe Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png new file mode 100644 index 000000000..307af4045 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_bones.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png new file mode 100644 index 000000000..4165c8f4b Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_he.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png new file mode 100644 index 000000000..67d55d217 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_incendiary.png differ diff --git a/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png new file mode 100644 index 000000000..c7752fd92 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/items/ammo_stinger_rocket_nuclear.png differ