diff --git a/src/main/java/com/hbm/entity/effect/EntityBlackHole.java b/src/main/java/com/hbm/entity/effect/EntityBlackHole.java index 5050c7085..8a2d2f0b7 100644 --- a/src/main/java/com/hbm/entity/effect/EntityBlackHole.java +++ b/src/main/java/com/hbm/entity/effect/EntityBlackHole.java @@ -1,16 +1,26 @@ package com.hbm.entity.effect; +import java.util.List; import java.util.Random; import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRubble; import com.hbm.explosion.ExplosionNukeGeneric; +import com.hbm.items.ModItems; +import com.hbm.lib.ModDamageSource; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityFallingBlock; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; @@ -31,27 +41,27 @@ public class EntityBlackHole extends Entity { @Override public void onUpdate() { + super.onUpdate(); float size = this.dataWatcher.getWatchableObjectFloat(16); - for(int k = 0; k < size * 5; k++) { - double phi = rand.nextDouble() * (Math.PI * 2); - double costheta = rand.nextDouble() * 2 - 1; - double theta = Math.acos(costheta); - double x = Math.sin( theta) * Math.cos( phi ); - double y = Math.sin( theta) * Math.sin( phi ); - double z = Math.cos( theta ); - - Vec3 vec = Vec3.createVectorHelper(x, y, z); - int length = (int)Math.ceil(size * 15); - - for(int i = 0; i < length; i ++) { - int x0 = (int)(this.posX + (vec.xCoord * i)); - int y0 = (int)(this.posY + (vec.yCoord * i)); - int z0 = (int)(this.posZ + (vec.zCoord * i)); + if(!worldObj.isRemote) { + for(int k = 0; k < size * 2; k++) { + double phi = rand.nextDouble() * (Math.PI * 2); + double costheta = rand.nextDouble() * 2 - 1; + double theta = Math.acos(costheta); + double x = Math.sin( theta) * Math.cos( phi ); + double y = Math.sin( theta) * Math.sin( phi ); + double z = Math.cos( theta ); - if(!worldObj.isRemote) { - + Vec3 vec = Vec3.createVectorHelper(x, y, z); + int length = (int)Math.ceil(size * 15); + + for(int i = 0; i < length; i ++) { + int x0 = (int)(this.posX + (vec.xCoord * i)); + int y0 = (int)(this.posY + (vec.yCoord * i)); + int z0 = (int)(this.posZ + (vec.zCoord * i)); + if(worldObj.getBlock(x0, y0, z0).getMaterial().isLiquid()) { worldObj.setBlock(x0, y0, z0, Blocks.air); } @@ -71,32 +81,80 @@ public class EntityBlackHole extends Entity { } } } - - ExplosionNukeGeneric.succ(worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, (int)Math.ceil(size * 15)); - if(!worldObj.isRemote && ExplosionNukeGeneric.dedify(worldObj, (int)this.posX, (int)this.posY, (int)this.posZ, (int)Math.ceil(size * 2))) { - this.setDead(); - int r = (int)Math.ceil(size); - int r2 = r * r; - int r22 = r2 / 2; - for (int xx = -r; xx < r; xx++) { - int X = xx + (int)this.posX; - int XX = xx * xx; - for (int yy = -r; yy < r; yy++) { - int Y = yy + (int)this.posY; - int YY = XX + yy * yy; - for (int zz = -r; zz < r; zz++) { - int Z = zz + (int)this.posZ; - int ZZ = YY + zz * zz; - if (ZZ < r22) { - worldObj.setBlock(X, Y, Z, ModBlocks.gravel_obsidian); - } + double range = size * 15; + + List entities = worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox( + posX - range, posY - range, posZ - range, posX + range, posY + range, posZ + range)); + + for(Entity e : entities) { + + if(e instanceof EntityPlayer && ((EntityPlayer)e).capabilities.isCreativeMode) + continue; + + if(e instanceof EntityFallingBlock && !worldObj.isRemote && e.ticksExisted > 1) { + + double x = e.posX; + double y = e.posY; + double z = e.posZ; + Block b = ((EntityFallingBlock)e).func_145805_f(); + int meta = ((EntityFallingBlock)e).field_145814_a; + + e.setDead(); + + EntityRubble rubble = new EntityRubble(worldObj); + rubble.setMetaBasedOnBlock(b, meta); + rubble.setPositionAndRotation(x, y, z, 0, 0); + rubble.motionX = e.motionX; + rubble.motionY = e.motionY; + rubble.motionZ = e.motionZ; + worldObj.spawnEntityInWorld(rubble); + } + + Vec3 vec = Vec3.createVectorHelper(posX - e.posX, posY - e.posY, posZ - e.posZ); + + double dist = vec.lengthVector(); + + if(dist > range) + continue; + + vec = vec.normalize(); + + if(!(e instanceof EntityItem)) + vec.rotateAroundY((float)Math.toRadians(15)); + + double speed = 0.1D; + e.motionX += vec.xCoord * speed; + e.motionY += vec.yCoord * speed * 2; + e.motionZ += vec.zCoord * speed; + + if(e instanceof EntityBlackHole) + continue; + + if(dist < size * 1.5) { + e.attackEntityFrom(ModDamageSource.blackhole, 1000); + + if(!(e instanceof EntityLivingBase)) + e.setDead(); + + if(!worldObj.isRemote && e instanceof EntityItem) { + EntityItem item = (EntityItem) e; + ItemStack stack = item.getEntityItem(); + + if(stack.getItem() == ModItems.pellet_antimatter || stack.getItem() == ModItems.flame_pony) { + this.setDead(); + worldObj.createExplosion(null, this.posX, this.posY, this.posZ, 5.0F, true); + return; } } } - - worldObj.createExplosion(null, this.posX, this.posY, this.posZ, 5.0F, true); } + + this.setPosition(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ); + + this.motionX *= 0.99D; + this.motionY *= 0.99D; + this.motionZ *= 0.99D; } @Override @@ -114,24 +172,20 @@ public class EntityBlackHole extends Entity { nbt.setFloat("size", this.dataWatcher.getWatchableObjectFloat(16)); } - @Override + @Override @SideOnly(Side.CLIENT) - public boolean isInRangeToRenderDist(double distance) - { - return distance < 25000; - } + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } - @Override + @Override @SideOnly(Side.CLIENT) - public int getBrightnessForRender(float p_70070_1_) - { - return 15728880; - } - - @Override - public float getBrightness(float p_70013_1_) - { - return 1.0F; - } + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } + @Override + public float getBrightness(float p_70013_1_) { + return 1.0F; + } } diff --git a/src/main/java/com/hbm/entity/effect/EntityQuasar.java b/src/main/java/com/hbm/entity/effect/EntityQuasar.java new file mode 100644 index 000000000..d02eb6925 --- /dev/null +++ b/src/main/java/com/hbm/entity/effect/EntityQuasar.java @@ -0,0 +1,22 @@ +package com.hbm.entity.effect; + +import net.minecraft.world.World; + +public class EntityQuasar extends EntityBlackHole { + + public EntityQuasar(World world) { + super(world); + this.ignoreFrustumCheck = true; + this.isImmuneToFire = true; + } + + public EntityQuasar(World world, float size) { + super(world); + this.dataWatcher.updateObject(16, size); + } + + @Override + public void onUpdate() { + super.onUpdate(); + } +} diff --git a/src/main/java/com/hbm/entity/effect/EntitySpear.java b/src/main/java/com/hbm/entity/effect/EntitySpear.java new file mode 100644 index 000000000..8603ce6f2 --- /dev/null +++ b/src/main/java/com/hbm/entity/effect/EntitySpear.java @@ -0,0 +1,101 @@ +package com.hbm.entity.effect; + +import com.hbm.explosion.ExplosionNT; +import com.hbm.explosion.ExplosionNT.ExAttrib; +import com.hbm.main.MainRegistry; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.Vec3; +import net.minecraft.world.World; + +public class EntitySpear extends Entity { + + public EntitySpear(World p_i1582_1_) { + super(p_i1582_1_); + this.setSize(2F, 10F); + this.isImmuneToFire = true; + this.ignoreFrustumCheck = true; + } + + @Override + protected void entityInit() { } + + @Override + public void onUpdate() { + + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + this.motionX = 0; + this.motionY = -0.2; + this.motionZ = 0; + + int x = (int) Math.floor(posX); + int y = (int) Math.floor(posY); + int z = (int) Math.floor(posZ); + + if(worldObj.getBlock(x, y - 1, z).getMaterial() == Material.air) { + this.setPositionAndRotation(this.posX + this.motionX, this.posY + this.motionY, this.posZ + this.motionZ, 0, 0); + + if(!worldObj.isRemote) { + double ix = posX + rand.nextGaussian() * 25; + double iz = posZ + rand.nextGaussian() * 25; + double iy = worldObj.getHeightValue((int)Math.floor(ix), (int)Math.floor(iz)) + 2; + + ExAttrib at = Vec3.createVectorHelper(ix - posX, 0, iz - posZ).lengthVector() < 20 ? ExAttrib.DIGAMMA_CIRCUIT : ExAttrib.DIGAMMA; + + new ExplosionNT(worldObj, this, ix, iy, iz, 7.5F) + .addAttrib(ExAttrib.NOHURT) + .addAttrib(ExAttrib.NOPARTICLE) + .addAttrib(ExAttrib.NODROP) + .addAttrib(ExAttrib.NOSOUND) + .addAttrib(at).explode(); + } + + if(worldObj.isRemote) { + + double dy = worldObj.getHeightValue((int)Math.floor(posX), (int)Math.floor(posZ)) + 2; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "smoke"); + data.setString("mode", "radialDigamma"); + data.setInteger("count", 3); + data.setDouble("posX", posX); + data.setDouble("posY", dy); + data.setDouble("posZ", posZ); + MainRegistry.proxy.effectNT(data); + } + + } else if(!worldObj.isRemote) { + this.setDead(); + } + } + + @Override + protected void readEntityFromNBT(NBTTagCompound p_70037_1_) { } + + @Override + protected void writeEntityToNBT(NBTTagCompound p_70014_1_) { } + + @Override + @SideOnly(Side.CLIENT) + public boolean isInRangeToRenderDist(double distance) { + return distance < 25000; + } + + @Override + @SideOnly(Side.CLIENT) + public int getBrightnessForRender(float p_70070_1_) { + return 15728880; + } + + @Override + public float getBrightness(float p_70013_1_) { + return 1.0F; + } +} diff --git a/src/main/java/com/hbm/entity/projectile/EntityRubble.java b/src/main/java/com/hbm/entity/projectile/EntityRubble.java index 287ce942d..d200dd4aa 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityRubble.java +++ b/src/main/java/com/hbm/entity/projectile/EntityRubble.java @@ -51,7 +51,7 @@ public class EntityRubble extends EntityThrowable { //worldObj.playAuxSFX(2001, (int)posX, (int)posY, (int)posZ, this.dataWatcher.getWatchableObjectInt(16) + (this.dataWatcher.getWatchableObjectInt(17) << 12)); if(!worldObj.isRemote) - PacketDispatcher.wrapper.sendToAllAround(new ParticleBurstPacket((int)posX - 1, (int)posY, (int)posZ - 1, this.dataWatcher.getWatchableObjectInt(16), this.dataWatcher.getWatchableObjectInt(17)), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 50)); + PacketDispatcher.wrapper.sendToAllAround(new ParticleBurstPacket((int)Math.floor(posX), (int)posY, (int)Math.floor(posZ), this.dataWatcher.getWatchableObjectInt(16), this.dataWatcher.getWatchableObjectInt(17)), new TargetPoint(worldObj.provider.dimensionId, posX, posY, posZ, 50)); } } diff --git a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java index 1028a942a..353d3b7bb 100644 --- a/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java +++ b/src/main/java/com/hbm/handler/guncfg/GunRocketFactory.java @@ -2,9 +2,8 @@ package com.hbm.handler.guncfg; import java.util.ArrayList; +import com.hbm.entity.effect.EntitySpear; import com.hbm.entity.projectile.EntityBulletBase; -import com.hbm.explosion.ExplosionNT; -import com.hbm.explosion.ExplosionNT.ExAttrib; import com.hbm.handler.BulletConfigSyncingUtil; import com.hbm.handler.BulletConfiguration; import com.hbm.handler.GunConfiguration; @@ -418,7 +417,14 @@ public class GunRocketFactory { if(bullet.worldObj.isRemote) return; - for(int i = 0; i < 250; i++) { + EntitySpear spear = new EntitySpear(bullet.worldObj); + spear.posX = bullet.posX; + spear.posZ = bullet.posZ; + spear.posY = bullet.posY + 100; + + bullet.worldObj.spawnEntityInWorld(spear); + + /*for(int i = 0; i < 250; i++) { double ix = bullet.posX + bullet.worldObj.rand.nextGaussian() * 15; double iy = bullet.posY + bullet.worldObj.rand.nextGaussian() * 2; @@ -432,7 +438,7 @@ public class GunRocketFactory { .addAttrib(ExAttrib.NODROP) .addAttrib(ExAttrib.NOSOUND) .addAttrib(at).explode(); - } + }*/ } }; diff --git a/src/main/java/com/hbm/items/special/ItemDigamma.java b/src/main/java/com/hbm/items/special/ItemDigamma.java index a0079243b..87baec6f0 100644 --- a/src/main/java/com/hbm/items/special/ItemDigamma.java +++ b/src/main/java/com/hbm/items/special/ItemDigamma.java @@ -3,7 +3,7 @@ package com.hbm.items.special; import java.util.List; import com.hbm.config.WeaponConfig; -import com.hbm.entity.effect.EntityRagingVortex; +import com.hbm.entity.effect.EntityQuasar; import com.hbm.util.ContaminationUtil; import com.hbm.util.I18nUtil; @@ -59,7 +59,7 @@ public class ItemDigamma extends ItemHazard { if(entityItem.onGround) { if(WeaponConfig.dropSing) { - EntityRagingVortex bl = new EntityRagingVortex(entityItem.worldObj, 10F); + EntityQuasar bl = new EntityQuasar(entityItem.worldObj, 5F); bl.posX = entityItem.posX; bl.posY = entityItem.posY; bl.posZ = entityItem.posZ; diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 868b46e99..d19d4d9b4 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -495,8 +495,10 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityBlackHole.class, new RenderBlackHole()); RenderingRegistry.registerEntityRenderingHandler(EntityVortex.class, new RenderBlackHole()); RenderingRegistry.registerEntityRenderingHandler(EntityRagingVortex.class, new RenderBlackHole()); + RenderingRegistry.registerEntityRenderingHandler(EntityQuasar.class, new RenderQuasar()); RenderingRegistry.registerEntityRenderingHandler(EntityDeathBlast.class, new RenderDeathBlast()); RenderingRegistry.registerEntityRenderingHandler(EntityNukeExplosionAdvanced.class, new RenderSnowball(ModItems.energy_ball)); + RenderingRegistry.registerEntityRenderingHandler(EntitySpear.class, new RenderSpear()); //minecarts RenderingRegistry.registerEntityRenderingHandler(EntityMinecartTest.class, new RenderMinecartTest()); //items @@ -717,6 +719,22 @@ public class ClientProxy extends ServerProxy { Minecraft.getMinecraft().effectRenderer.addEffect(fx); } } + + if("radialDigamma".equals(mode)) { + + Vec3 vec = Vec3.createVectorHelper(2, 0, 0); + vec.rotateAroundY(rand.nextFloat() * (float)Math.PI * 2F); + + for(int i = 0; i < count; i++) { + ParticleDigammaSmoke fx = new ParticleDigammaSmoke(man, world, x, y, z); + fx.motionY = 0; + fx.motionX = vec.xCoord; + fx.motionZ = vec.zCoord; + Minecraft.getMinecraft().effectRenderer.addEffect(fx); + + vec.rotateAroundY((float)Math.PI * 2F / (float)count); + } + } if("shock".equals(mode)) { @@ -731,8 +749,8 @@ public class ClientProxy extends ServerProxy { fx.motionX = vec.xCoord; fx.motionZ = vec.zCoord; Minecraft.getMinecraft().effectRenderer.addEffect(fx); - - vec.rotateAroundY(360 / count); + + vec.rotateAroundY((float)Math.PI * 2F / (float)count); } } diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 27b1f1093..fa1403313 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -642,6 +642,8 @@ public class MainRegistry { EntityRegistry.registerModEntity(EntityRBMKDebris.class, "entity_rbmk_debris", 154, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityUFO.class, "entity_ntm_ufo", 155, this, 1000, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosionNT.class, "entity_ntm_explosion_nt", 156, this, 1000, 1, true); + EntityRegistry.registerModEntity(EntityQuasar.class, "entity_digamma_quasar", 157, this, 250, 1, true); + EntityRegistry.registerModEntity(EntitySpear.class, "entity_digamma_spear", 158, this, 1000, 1, true); EntityRegistry.registerGlobalEntityID(EntityNuclearCreeper.class, "entity_mob_nuclear_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x204131, 0x75CE00); EntityRegistry.registerGlobalEntityID(EntityTaintedCreeper.class, "entity_mob_tainted_creeper", EntityRegistry.findGlobalUniqueEntityId(), 0x813b9b, 0xd71fdd); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index 90fbf0032..466942212 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -538,6 +538,8 @@ public class ResourceManager { public static final IModelCustom ff_python = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/python.obj")); public static final IModelCustom ff_maresleg = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/maresleg.obj")); public static final IModelCustom fireext = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/fireext.obj")); + + public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj")); public static final IModelCustom grenade_frag = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_frag.obj")); public static final IModelCustom grenade_aschrab = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/grenade_aschrab.obj")); @@ -594,6 +596,8 @@ public class ResourceManager { public static final ResourceLocation fireext_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fireext_normal.png"); public static final ResourceLocation fireext_foam_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fireext_foam.png"); public static final ResourceLocation fireext_sand_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/fireext_sand.png"); + + public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png"); public static final ResourceLocation ff_gold = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/gold.png"); public static final ResourceLocation ff_gun_bright = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/ff/gun_bright.png"); diff --git a/src/main/java/com/hbm/particle/ParticleDigammaSmoke.java b/src/main/java/com/hbm/particle/ParticleDigammaSmoke.java new file mode 100644 index 000000000..36a923c15 --- /dev/null +++ b/src/main/java/com/hbm/particle/ParticleDigammaSmoke.java @@ -0,0 +1,78 @@ +package com.hbm.particle; + +import com.hbm.main.ModEventHandlerClient; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.world.World; + +@SideOnly(Side.CLIENT) +public class ParticleDigammaSmoke extends EntityFX { + + private int age; + public int maxAge; + + public ParticleDigammaSmoke(TextureManager p_i1213_1_, World p_i1218_1_, double p_i1218_2_, double p_i1218_4_, double p_i1218_6_) { + super(p_i1218_1_, p_i1218_2_, p_i1218_4_, p_i1218_6_); + particleIcon = ModEventHandlerClient.particleBase; + maxAge = 100 + rand.nextInt(40); + this.noClip = true; + + this.particleScale = 5; + + this.particleRed = 0.5F + rand.nextFloat() * 0.2F; + this.particleGreen = 0.0F; + this.particleBlue = 0.0F; + } + + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; + + particleAlpha = 1 - ((float) age / (float) maxAge); + + ++this.age; + + if(this.age == this.maxAge) { + this.setDead(); + } + + this.motionX *= 0.99D; + this.motionY *= 0.99D; + this.motionZ *= 0.99D; + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + } + + @Override + public int getFXLayer() { + return 1; + } + + @Override + public void renderParticle(Tessellator tess, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) { + + tess.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); + tess.setNormal(0.0F, 1.0F, 0.0F); + + float scale = this.particleScale; + float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) p_70539_2_ - interpPosX)); + float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) p_70539_2_ - interpPosY)); + float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) p_70539_2_ - interpPosZ)); + + tess.addVertexWithUV((double) (pX - p_70539_3_ * scale - p_70539_6_ * scale), (double) (pY - p_70539_4_ * scale), (double) (pZ - p_70539_5_ * scale - p_70539_7_ * scale), particleIcon.getMaxU(), particleIcon.getMaxV()); + tess.addVertexWithUV((double) (pX - p_70539_3_ * scale + p_70539_6_ * scale), (double) (pY + p_70539_4_ * scale), (double) (pZ - p_70539_5_ * scale + p_70539_7_ * scale), particleIcon.getMaxU(), particleIcon.getMinV()); + tess.addVertexWithUV((double) (pX + p_70539_3_ * scale + p_70539_6_ * scale), (double) (pY + p_70539_4_ * scale), (double) (pZ + p_70539_5_ * scale + p_70539_7_ * scale), particleIcon.getMinU(), particleIcon.getMinV()); + tess.addVertexWithUV((double) (pX + p_70539_3_ * scale - p_70539_6_ * scale), (double) (pY - p_70539_4_ * scale), (double) (pZ + p_70539_5_ * scale - p_70539_7_ * scale), particleIcon.getMinU(), particleIcon.getMaxV()); + } + + @Override + public int getBrightnessForRender(float p_70070_1_) { + return 240; + } +} diff --git a/src/main/java/com/hbm/particle/ParticleSmokePlume.java b/src/main/java/com/hbm/particle/ParticleSmokePlume.java index 0d966e1c8..bc6c9c2c5 100644 --- a/src/main/java/com/hbm/particle/ParticleSmokePlume.java +++ b/src/main/java/com/hbm/particle/ParticleSmokePlume.java @@ -35,27 +35,26 @@ public class ParticleSmokePlume extends EntityFX { this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; - + particleAlpha = 1 - ((float) age / (float) maxAge); - + ++this.age; - if (this.age == this.maxAge) { + if(this.age == this.maxAge) { this.setDead(); } - - double bak = Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector(); - - this.moveEntity(this.motionX, this.motionY, this.motionZ); - - if (Math.abs(motionX) < 0.025 && Math.abs(motionZ) < 0.025) - { - motionY = bak; - } - motionX *= 0.925; - motionY *= 0.925; - motionZ *= 0.925; + double bak = Vec3.createVectorHelper(motionX, motionY, motionZ).lengthVector(); + + this.moveEntity(this.motionX, this.motionY, this.motionZ); + + if(Math.abs(motionX) < 0.025 && Math.abs(motionZ) < 0.025) { + motionY = bak; + } + + motionX *= 0.925; + motionY *= 0.925; + motionZ *= 0.925; } public int getFXLayer() { @@ -63,40 +62,40 @@ public class ParticleSmokePlume extends EntityFX { } public void renderParticle(Tessellator p_70539_1_, float p_70539_2_, float p_70539_3_, float p_70539_4_, float p_70539_5_, float p_70539_6_, float p_70539_7_) { - + this.theRenderEngine.bindTexture(texture); - + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glDepthMask(false); - OpenGlHelper.glBlendFunc(770, 771, 1, 0); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); RenderHelper.disableStandardItemLighting(); - + Random urandom = new Random(this.getEntityId()); - + for(int i = 0; i < 6; i++) { - + p_70539_1_.startDrawingQuads(); - - this.particleRed = this.particleGreen = this.particleBlue = urandom.nextFloat() * 0.7F + 0.2F; - + + this.particleRed = this.particleGreen = this.particleBlue = urandom.nextFloat() * 0.7F + 0.2F; + p_70539_1_.setColorRGBA_F(this.particleRed, this.particleGreen, this.particleBlue, this.particleAlpha); p_70539_1_.setNormal(0.0F, 1.0F, 0.0F); p_70539_1_.setBrightness(240); - + float scale = 0.5F; - float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double)p_70539_2_ - interpPosX) + urandom.nextGaussian() * 0.5); - float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double)p_70539_2_ - interpPosY) + urandom.nextGaussian() * 0.5); - float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double)p_70539_2_ - interpPosZ) + urandom.nextGaussian() * 0.5); - - p_70539_1_.addVertexWithUV((double)(pX - p_70539_3_ * scale - p_70539_6_ * scale), (double)(pY - p_70539_4_ * scale), (double)(pZ - p_70539_5_ * scale - p_70539_7_ * scale), 1, 1); - p_70539_1_.addVertexWithUV((double)(pX - p_70539_3_ * scale + p_70539_6_ * scale), (double)(pY + p_70539_4_ * scale), (double)(pZ - p_70539_5_ * scale + p_70539_7_ * scale), 1, 0); - p_70539_1_.addVertexWithUV((double)(pX + p_70539_3_ * scale + p_70539_6_ * scale), (double)(pY + p_70539_4_ * scale), (double)(pZ + p_70539_5_ * scale + p_70539_7_ * scale), 0, 0); - p_70539_1_.addVertexWithUV((double)(pX + p_70539_3_ * scale - p_70539_6_ * scale), (double)(pY - p_70539_4_ * scale), (double)(pZ + p_70539_5_ * scale - p_70539_7_ * scale), 0, 1); + float pX = (float) ((this.prevPosX + (this.posX - this.prevPosX) * (double) p_70539_2_ - interpPosX) + urandom.nextGaussian() * 0.5); + float pY = (float) ((this.prevPosY + (this.posY - this.prevPosY) * (double) p_70539_2_ - interpPosY) + urandom.nextGaussian() * 0.5); + float pZ = (float) ((this.prevPosZ + (this.posZ - this.prevPosZ) * (double) p_70539_2_ - interpPosZ) + urandom.nextGaussian() * 0.5); + + p_70539_1_.addVertexWithUV((double) (pX - p_70539_3_ * scale - p_70539_6_ * scale), (double) (pY - p_70539_4_ * scale), (double) (pZ - p_70539_5_ * scale - p_70539_7_ * scale), 1, 1); + p_70539_1_.addVertexWithUV((double) (pX - p_70539_3_ * scale + p_70539_6_ * scale), (double) (pY + p_70539_4_ * scale), (double) (pZ - p_70539_5_ * scale + p_70539_7_ * scale), 1, 0); + p_70539_1_.addVertexWithUV((double) (pX + p_70539_3_ * scale + p_70539_6_ * scale), (double) (pY + p_70539_4_ * scale), (double) (pZ + p_70539_5_ * scale + p_70539_7_ * scale), 0, 0); + p_70539_1_.addVertexWithUV((double) (pX + p_70539_3_ * scale - p_70539_6_ * scale), (double) (pY - p_70539_4_ * scale), (double) (pZ + p_70539_5_ * scale - p_70539_7_ * scale), 0, 1); p_70539_1_.draw(); } - + GL11.glPolygonOffset(0.0F, 0.0F); GL11.glEnable(GL11.GL_LIGHTING); } diff --git a/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java b/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java index 191d6ea5c..aac5d11da 100644 --- a/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java +++ b/src/main/java/com/hbm/render/entity/effect/RenderBlackHole.java @@ -4,7 +4,6 @@ import java.util.Random; import org.lwjgl.opengl.GL11; -import com.hbm.entity.effect.EntityBlackHole; import com.hbm.entity.effect.EntityRagingVortex; import com.hbm.entity.effect.EntityVortex; import com.hbm.lib.RefStrings; @@ -21,11 +20,11 @@ import net.minecraftforge.client.model.IModelCustom; public class RenderBlackHole extends Render { - private static final ResourceLocation objTesterModelRL = new ResourceLocation(RefStrings.MODID, "models/Sphere.obj"); - private IModelCustom blastModel; - private ResourceLocation hole = new ResourceLocation(RefStrings.MODID, "textures/models/BlackHole.png"); - private ResourceLocation swirl = new ResourceLocation(RefStrings.MODID, "textures/entity/bhole.png"); - private ResourceLocation disc = new ResourceLocation(RefStrings.MODID, "textures/entity/bholeDisc.png"); + protected static final ResourceLocation objTesterModelRL = new ResourceLocation(RefStrings.MODID, "models/Sphere.obj"); + protected IModelCustom blastModel; + protected ResourceLocation hole = new ResourceLocation(RefStrings.MODID, "textures/models/BlackHole.png"); + protected ResourceLocation swirl = new ResourceLocation(RefStrings.MODID, "textures/entity/bhole.png"); + protected ResourceLocation disc = new ResourceLocation(RefStrings.MODID, "textures/entity/bholeDisc.png"); public RenderBlackHole() { blastModel = AdvancedModelLoader.loadModel(objTesterModelRL); @@ -64,11 +63,15 @@ public class RenderBlackHole extends Render { GL11.glPopMatrix(); } - private void renderDisc(Entity entity, float interp) { + protected ResourceLocation discTex() { + return this.disc; + } + + protected void renderDisc(Entity entity, float interp) { float glow = 0.75F; - bindTexture(disc); + bindTexture(discTex()); GL11.glPushMatrix(); GL11.glRotatef(entity.getEntityId() % 90 - 45, 1, 0, 0); @@ -86,7 +89,7 @@ public class RenderBlackHole extends Render { Vec3 vec = Vec3.createVectorHelper(1, 0, 0); - for(int k = 0; k < 15; k++) { + for(int k = 0; k < steps(); k++) { GL11.glPushMatrix(); GL11.glRotatef((entity.ticksExisted + interp % 360) * -((float)Math.pow(k + 1, 1.25)), 0, 1, 0); @@ -135,7 +138,11 @@ public class RenderBlackHole extends Render { GL11.glPopMatrix(); } - private void setColorFromIteration(Tessellator tess, int iteration, float alpha) { + protected int steps() { + return 15; + } + + protected void setColorFromIteration(Tessellator tess, int iteration, float alpha) { if(iteration < 5) { float g = 0.125F + iteration * (1F / 10F); @@ -155,18 +162,10 @@ public class RenderBlackHole extends Render { float g = 1F - i * (1F / 9F); float b = i * (1F / 5F); tess.setColorRGBA_F(r, g, b, alpha); - return; - } - - switch(iteration) { - case 0: tess.setColorRGBA_F(1.0F, 0.0F, 0.0F, alpha); break; - case 1: tess.setColorRGBA_F(1.0F, 0.5F, 0.0F, alpha); break; - case 2: tess.setColorRGBA_F(1.0F, 1.0F, 0.0F, alpha); break; - case 3: tess.setColorRGBA_F(0.5F, 1.0F, 1.0F, alpha); break; } } - private void renderSwirl(Entity entity, float interp) { + protected void renderSwirl(Entity entity, float interp) { float glow = 0.75F; @@ -267,7 +266,7 @@ public class RenderBlackHole extends Render { GL11.glPopMatrix(); } - private void renderJets(Entity entity, float interp) { + protected void renderJets(Entity entity, float interp) { Tessellator tess = Tessellator.instance; @@ -309,7 +308,7 @@ public class RenderBlackHole extends Render { GL11.glPopMatrix(); } - private void renderFlare(Entity entity) { + protected void renderFlare(Entity entity) { GL11.glPushMatrix(); GL11.glScalef(0.2F, 0.2F, 0.2F); @@ -367,7 +366,7 @@ public class RenderBlackHole extends Render { GL11.glPopMatrix(); } - private void setColorFull(Entity e, Tessellator tessellator) { + protected void setColorFull(Entity e, Tessellator tessellator) { if(e instanceof EntityVortex) tessellator.setColorRGBA_I(0x3898b3, (int) (255.0F * (1.0F))); @@ -379,7 +378,7 @@ public class RenderBlackHole extends Render { tessellator.setColorRGBA_I(0xFFB900, (int) (255.0F * (1.0F))); } - private void setColorNone(Entity e, Tessellator tessellator) { + protected void setColorNone(Entity e, Tessellator tessellator) { if(e instanceof EntityVortex) tessellator.setColorRGBA_I(0x3898b3, 0); diff --git a/src/main/java/com/hbm/render/entity/effect/RenderQuasar.java b/src/main/java/com/hbm/render/entity/effect/RenderQuasar.java new file mode 100644 index 000000000..759cd4a98 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/effect/RenderQuasar.java @@ -0,0 +1,62 @@ +package com.hbm.render.entity.effect; + +import org.lwjgl.opengl.GL11; + +import com.hbm.lib.RefStrings; + +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderQuasar extends RenderBlackHole { + + protected ResourceLocation quasar = new ResourceLocation(RefStrings.MODID, "textures/entity/bholeD.png"); + + @Override + public void doRender(Entity entity, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_CULL_FACE); + + float size = entity.getDataWatcher().getWatchableObjectFloat(16); + + GL11.glScalef(size, size, size); + + bindTexture(hole); + blastModel.renderAll(); + + renderDisc(entity, interp); + renderJets(entity, interp); + + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glEnable(GL11.GL_LIGHTING); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation discTex() { + return this.quasar; + } + + @Override + protected void setColorFromIteration(Tessellator tess, int iteration, float alpha) { + float r = 1.0F; + float g = (float) Math.pow(iteration / 15F, 2); + float b = (float) Math.pow(iteration / 15F, 2); + + tess.setColorRGBA_F(r, g, b, alpha); + } + + @Override + protected int steps() { + return 15; + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return super.getEntityTexture(entity); + } +} diff --git a/src/main/java/com/hbm/render/entity/effect/RenderSpear.java b/src/main/java/com/hbm/render/entity/effect/RenderSpear.java new file mode 100644 index 000000000..e0be421f6 --- /dev/null +++ b/src/main/java/com/hbm/render/entity/effect/RenderSpear.java @@ -0,0 +1,36 @@ +package com.hbm.render.entity.effect; + +import org.lwjgl.opengl.GL11; + +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; + +public class RenderSpear extends Render { + + @Override + public void doRender(Entity entity, double x, double y, double z, float f, float interp) { + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x, (float) y + 15, (float) z); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + + GL11.glRotated(180, 1, 0, 0); + GL11.glScaled(2, 2, 2); + + GL11.glShadeModel(GL11.GL_SMOOTH); + bindTexture(ResourceManager.lance_tex); + ResourceManager.lance.renderPart("Spear"); + GL11.glShadeModel(GL11.GL_FLAT); + + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity entity) { + return ResourceManager.lance_tex; + } +} diff --git a/src/main/java/com/hbm/render/entity/projectile/RenderRubble.java b/src/main/java/com/hbm/render/entity/projectile/RenderRubble.java index 8e112ba52..ce8c40d63 100644 --- a/src/main/java/com/hbm/render/entity/projectile/RenderRubble.java +++ b/src/main/java/com/hbm/render/entity/projectile/RenderRubble.java @@ -20,13 +20,12 @@ public class RenderRubble extends Render { } @Override - public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, - float p_76986_9_) { + public void doRender(Entity rocket, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { GL11.glPushMatrix(); GL11.glTranslatef((float) p_76986_2_, (float) p_76986_4_, (float) p_76986_6_); GL11.glScalef(1.0F, 1.0F, 1.0F); GL11.glRotatef(180, 1, 0, 0); - GL11.glRotatef((rocket.ticksExisted % 360) * 10, 1, 1, 1); + GL11.glRotatef(((rocket.ticksExisted + p_76986_9_) % 360) * 10, 1, 1, 1); try { int block = rocket.getDataWatcher().getWatchableObjectInt(16); diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 27fb3d2d6..0d8b40e0f 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -26,7 +26,7 @@ achievement.digammaKnow.desc=what this world is about. achievement.digammaKnow=The Terror of Knowing achievement.digammaSee.desc=into the abyss. achievement.digammaSee=The Terror of Seeing -achievement.digammaUpOnTop.desc=Ich tu was ich will, verantwortungslos. +achievement.digammaUpOnTop.desc=Bewundere meinen Sohn, er ist mein Klon. achievement.digammaUpOnTop=Bewundere mich, bewundere mein Heim achievement.fiend.desc=Sei gemein. achievement.fiend2.desc=Sei gemeiner. diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 947413306..dc8d13779 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -26,7 +26,7 @@ achievement.digammaKnow.desc=what this world is about. achievement.digammaKnow=The Terror of Knowing achievement.digammaSee.desc=into the abyss. achievement.digammaSee=The Terror of Seeing -achievement.digammaUpOnTop.desc=I do what I want, but irresponsibly. +achievement.digammaUpOnTop.desc=Admire my son, he's my clone. achievement.digammaUpOnTop=Admire Me, Admire my Home achievement.fiend.desc=Be mean. achievement.fiend2.desc=Be meaner. diff --git a/src/main/resources/assets/hbm/models/weapons/lance.obj b/src/main/resources/assets/hbm/models/weapons/lance.obj new file mode 100644 index 000000000..1a7937ca7 --- /dev/null +++ b/src/main/resources/assets/hbm/models/weapons/lance.obj @@ -0,0 +1,1092 @@ +# Blender v2.79 (sub 0) OBJ File: 'lance.blend' +# www.blender.org +o Blade +v -0.000000 2.000000 -10.750000 +v 0.000000 2.000000 -9.250000 +v -0.000000 7.000000 -10.562500 +v 0.000000 7.000000 -9.437500 +v -0.000000 11.000000 -10.632812 +v 0.000000 11.000000 -9.367188 +v 0.000000 15.000000 -10.000000 +v 0.125000 11.000000 -10.000000 +v 0.125000 7.000000 -10.000000 +v 0.125000 2.000000 -10.000000 +v -0.125000 11.000000 -10.000000 +v -0.125000 7.000000 -10.000000 +v -0.125000 2.000000 -10.000000 +vn -0.9864 0.0062 -0.1644 +vn -0.9864 0.0062 0.1644 +vn 0.9864 0.0062 0.1644 +vn 0.9864 0.0062 -0.1644 +vn 0.9762 0.0000 -0.2169 +vn 0.9810 -0.0034 0.1938 +vn -0.9762 0.0000 0.2169 +vn -0.9810 -0.0034 -0.1938 +vn -0.9806 0.0306 -0.1937 +vn -0.9806 0.0306 0.1937 +vn 0.9806 0.0306 0.1937 +vn 0.9806 0.0306 -0.1937 +vn -0.9762 0.0000 -0.2169 +vn 0.9762 0.0000 0.2169 +vn 0.9810 -0.0034 -0.1938 +vn -0.9810 -0.0034 0.1938 +s off +f 13//1 3//1 1//1 +f 4//2 13//2 2//2 +f 10//3 4//3 2//3 +f 3//4 10//4 1//4 +f 3//5 8//5 9//5 +f 4//6 8//6 6//6 +f 4//7 11//7 12//7 +f 3//8 11//8 5//8 +f 7//9 5//9 11//9 +f 7//10 11//10 6//10 +f 6//11 8//11 7//11 +f 7//12 8//12 5//12 +f 13//13 12//13 3//13 +f 4//7 12//7 13//7 +f 10//14 9//14 4//14 +f 3//5 9//5 10//5 +f 3//15 5//15 8//15 +f 4//14 9//14 8//14 +f 4//16 6//16 11//16 +f 3//13 12//13 11//13 +o Spear +v 0.000000 0.000000 -0.500000 +v 0.000000 1.000000 -0.375000 +v 0.191342 0.000000 -0.461940 +v 0.143506 1.000000 -0.346455 +v 0.353553 0.000000 -0.353553 +v 0.265165 1.000000 -0.265165 +v 0.461940 0.000000 -0.191342 +v 0.346455 1.000000 -0.143506 +v 0.500000 0.000000 0.000000 +v 0.375000 1.000000 0.000000 +v 0.461940 0.000000 0.191342 +v 0.346455 1.000000 0.143506 +v 0.353553 0.000000 0.353553 +v 0.265165 1.000000 0.265165 +v 0.191342 0.000000 0.461940 +v 0.143506 1.000000 0.346455 +v 0.000000 0.000000 0.500000 +v 0.000000 1.000000 0.375000 +v -0.191342 0.000000 0.461940 +v -0.143506 1.000000 0.346455 +v -0.353553 0.000000 0.353554 +v -0.265165 1.000000 0.265165 +v -0.461940 0.000000 0.191342 +v -0.346455 1.000000 0.143506 +v -0.500000 0.000000 -0.000000 +v -0.375000 1.000000 -0.000000 +v -0.461940 0.000000 -0.191342 +v -0.346455 1.000000 -0.143506 +v -0.353553 0.000000 -0.353554 +v -0.265165 1.000000 -0.265165 +v -0.191341 0.000000 -0.461940 +v -0.143506 1.000000 -0.346455 +v 0.000000 1.000000 -0.250000 +v 0.095671 1.000000 -0.230970 +v 0.176777 1.000000 -0.176777 +v 0.230970 1.000000 -0.095671 +v 0.250000 1.000000 0.000000 +v 0.230970 1.000000 0.095671 +v 0.176777 1.000000 0.176777 +v 0.095671 1.000000 0.230970 +v 0.000000 1.000000 0.250000 +v -0.095671 1.000000 0.230970 +v -0.176777 1.000000 0.176777 +v -0.230970 1.000000 0.095671 +v -0.250000 1.000000 -0.000000 +v -0.230970 1.000000 -0.095671 +v -0.176777 1.000000 -0.176777 +v -0.095671 1.000000 -0.230970 +v 0.000001 4.000000 -0.125000 +v 0.047836 4.000000 -0.115485 +v 0.088389 4.000000 -0.088388 +v 0.115486 4.000000 -0.047835 +v 0.125001 4.000000 0.000000 +v 0.115486 4.000000 0.047835 +v 0.088389 4.000000 0.088388 +v 0.047836 4.000000 0.115485 +v 0.000001 4.000000 0.125000 +v -0.047835 4.000000 0.115485 +v -0.088388 4.000000 0.088388 +v -0.115484 4.000000 0.047835 +v -0.124999 4.000000 -0.000000 +v -0.115484 4.000000 -0.047835 +v -0.088388 4.000000 -0.088388 +v -0.047835 4.000000 -0.115485 +v -0.125000 2.000000 -1.000000 +v -0.125000 2.000000 1.000000 +v -0.125000 1.000000 -0.500000 +v -0.125000 1.000000 0.500000 +v -0.125000 1.750000 -1.000000 +v -0.125000 1.750000 1.000000 +v -0.125000 1.500000 -0.750000 +v -0.125000 1.500000 0.750000 +v 0.125000 2.000000 -1.000000 +v 0.125000 2.000000 1.000000 +v 0.125000 1.000000 -0.500000 +v 0.125000 1.000000 0.500000 +v 0.125000 1.750000 -1.000000 +v 0.125000 1.750000 1.000000 +v 0.125000 1.500000 -0.750000 +v 0.125000 1.500000 0.750000 +v -0.000000 7.000000 -0.703125 +v 0.000000 7.000000 0.703125 +v -0.000000 11.000000 -0.711914 +v 0.000000 11.000000 0.711914 +v 0.187500 11.000000 0.000000 +v 0.187500 7.000000 0.000000 +v -0.187500 11.000000 0.000000 +v -0.187500 7.000000 0.000000 +v 0.187500 9.292893 0.000000 +v -0.000000 9.596968 -0.760187 +v -0.187500 9.292893 0.000000 +v 0.000000 9.596968 0.760188 +v -0.187500 4.707107 0.000000 +v 0.187500 4.707107 0.000000 +v 0.000000 4.376669 0.826094 +v -0.000000 4.376669 -0.826094 +v 0.000000 10.500000 0.702026 +v -0.187500 10.500000 0.000000 +v 0.187500 10.500000 0.000000 +v -0.000000 10.500000 -0.702026 +v 0.180469 11.150000 0.000000 +v -0.000000 11.150000 -0.685217 +v -0.180469 11.150000 0.000000 +v 0.000000 11.150000 0.685217 +v 0.000000 10.250000 0.697083 +v -0.187500 10.250000 0.000000 +v 0.187500 10.899999 0.000000 +v -0.000000 10.900000 -0.709937 +v 0.187500 10.250000 0.000000 +v -0.000000 10.250000 -0.697083 +v 0.000000 10.900000 0.709937 +v -0.187500 10.899999 0.000000 +v 0.150000 11.799999 0.000000 +v -0.000000 11.799999 -0.569531 +v -0.161719 11.549999 0.000000 +v 0.000000 11.549999 0.614026 +v 0.161719 11.549999 0.000000 +v -0.000000 11.549999 -0.614026 +v -0.150000 11.799999 0.000000 +v 0.000000 11.799999 0.569531 +v -0.143506 0.000000 -0.346455 +v -0.265165 0.000000 -0.265165 +v -0.346455 0.000000 -0.143506 +v -0.375000 0.000000 -0.000000 +v -0.346455 0.000000 0.143506 +v -0.265165 0.000000 0.265165 +v -0.143506 0.000000 0.346455 +v 0.000000 0.000000 0.375000 +v -0.000000 2.000000 -0.750000 +v 0.000000 2.000000 0.750000 +v 0.000000 15.000000 0.000000 +v 0.125000 2.000000 0.000000 +v -0.125000 2.000000 0.000000 +v -0.125000 9.292893 0.000000 +v -0.000000 9.535723 -0.607073 +v 0.125000 9.292893 0.000000 +v 0.000000 9.535723 0.607073 +v 0.125000 4.707107 0.000000 +v -0.125000 4.707107 0.000000 +v 0.000000 4.443764 0.658359 +v -0.000000 4.443763 -0.658359 +v 0.143506 0.000000 0.346455 +v 0.265165 0.000000 0.265165 +v 0.346455 0.000000 0.143506 +v 0.375000 0.000000 0.000000 +v 0.346455 0.000000 -0.143506 +v 0.265165 0.000000 -0.265165 +v 0.143506 0.000000 -0.346455 +v 0.000000 0.000000 -0.375000 +v -0.050833 3.200000 -0.400000 +v 0.050833 3.200000 -0.400000 +v -0.052083 3.000000 -0.400000 +v 0.052083 3.000000 -0.400000 +v 0.125000 2.600000 0.000000 +v 0.054583 2.600000 0.400000 +v -0.054583 2.600000 0.400000 +v -0.125000 2.600000 0.000000 +v -0.054583 2.600000 -0.400000 +v 0.054583 2.600000 -0.400000 +v -0.053333 2.800000 -0.400000 +v 0.053333 2.800000 -0.400000 +v 0.053333 2.800000 0.400000 +v -0.053333 2.800000 0.400000 +v -0.125000 2.800000 0.000000 +v 0.052083 3.000000 0.400000 +v -0.052083 3.000000 0.400000 +v 0.050833 3.200000 0.400000 +v -0.050833 3.200000 0.400000 +v -0.125000 3.000000 0.000000 +v 0.125000 2.800000 0.000000 +v -0.125000 3.200000 0.000000 +v 0.125000 3.200000 0.000000 +v 0.125000 3.000000 0.000000 +v 0.375000 -25.000000 0.000000 +v 0.346455 -25.000000 0.143506 +v 0.265165 -25.000000 0.265165 +v 0.143506 -25.000000 0.346455 +v -0.143506 -25.000000 -0.346455 +v 0.000000 -25.000000 -0.375000 +v -0.265165 -25.000000 -0.265165 +v -0.346455 -25.000000 -0.143506 +v -0.375000 -25.000000 -0.000000 +v -0.346455 -25.000000 0.143506 +v -0.265165 -25.000000 0.265165 +v -0.143506 -25.000000 0.346455 +v 0.000000 -25.000000 0.375000 +v 0.265165 -25.000000 -0.265165 +v 0.346455 -25.000000 -0.143506 +v 0.143506 -25.000000 -0.346455 +v -0.000000 11.000000 -0.632812 +v 0.000000 11.000000 0.632812 +v 0.125000 11.000000 0.000000 +v -0.125000 11.000000 0.000000 +v 0.000000 0.000000 -0.500000 +v 0.000000 1.000000 -0.375000 +v 0.191342 0.000000 -0.461940 +v 0.143506 1.000000 -0.346455 +v 0.353553 0.000000 -0.353553 +v 0.265165 1.000000 -0.265165 +v 0.461940 0.000000 -0.191342 +v 0.346455 1.000000 -0.143506 +v 0.500000 0.000000 0.000000 +v 0.375000 1.000000 0.000000 +v 0.461940 0.000000 0.191342 +v 0.346455 1.000000 0.143506 +v 0.353553 0.000000 0.353553 +v 0.265165 1.000000 0.265165 +v 0.191342 0.000000 0.461940 +v 0.143506 1.000000 0.346455 +v 0.000000 0.000000 0.500000 +v 0.000000 1.000000 0.375000 +v -0.191342 0.000000 0.461940 +v -0.143506 1.000000 0.346455 +v -0.353553 0.000000 0.353554 +v -0.265165 1.000000 0.265165 +v -0.461940 0.000000 0.191342 +v -0.346455 1.000000 0.143506 +v -0.500000 0.000000 -0.000000 +v -0.375000 1.000000 -0.000000 +v -0.461940 0.000000 -0.191342 +v -0.346455 1.000000 -0.143506 +v -0.353553 0.000000 -0.353554 +v -0.265165 1.000000 -0.265165 +v -0.191341 0.000000 -0.461940 +v -0.143506 1.000000 -0.346455 +v 0.375000 -25.000000 0.000000 +v 0.346455 -25.000000 0.143506 +v 0.265165 -25.000000 0.265165 +v 0.143506 -25.000000 0.346455 +v -0.143506 -25.000000 -0.346455 +v 0.000000 -25.000000 -0.375000 +v -0.265165 -25.000000 -0.265165 +v -0.346455 -25.000000 -0.143506 +v -0.375000 -25.000000 -0.000000 +v -0.346455 -25.000000 0.143506 +v -0.265165 -25.000000 0.265165 +v -0.143506 -25.000000 0.346455 +v 0.000000 -25.000000 0.375000 +v 0.265165 -25.000000 -0.265165 +v 0.346455 -25.000000 -0.143506 +v 0.143506 -25.000000 -0.346455 +vt 0.328841 0.711306 +vt 0.332693 0.691938 +vt 0.375600 0.720607 +vt 0.431917 0.877807 +vt 0.552324 0.912209 +vt 0.449118 0.912209 +vt 0.449118 0.826203 +vt 0.552324 0.826203 +vt 0.569525 0.860605 +vt 0.569525 0.877807 +vt 0.431917 0.860605 +vt 0.586726 0.877807 +vt 0.611052 0.860605 +vt 0.611052 0.877807 +vt 0.351927 0.877807 +vt 0.390390 0.860605 +vt 0.390390 0.877807 +vt 0.414716 0.877807 +vt 0.535123 0.774600 +vt 0.466319 0.791801 +vt 0.466319 0.774600 +vt 0.586726 0.860605 +vt 0.649515 0.860606 +vt 0.649515 0.877807 +vt 0.414716 0.860605 +vt 0.863921 0.406653 +vt 0.817182 0.553922 +vt 0.817182 0.406653 +vt 0.770443 0.406653 +vt 0.766894 0.573454 +vt 0.863920 0.406653 +vt 0.817182 0.553922 +vt 0.817182 0.406653 +vt 0.770443 0.406653 +vt 0.766894 0.573454 +vt 0.358258 0.458672 +vt 0.309511 0.469319 +vt 0.307664 0.458968 +vt 0.359234 0.532763 +vt 0.318714 0.550466 +vt 0.315549 0.533284 +vt 0.856990 0.571920 +vt 0.816600 0.557894 +vt 0.308591 0.511153 +vt 0.358258 0.493951 +vt 0.358258 0.511153 +vt 0.408757 0.452067 +vt 0.358258 0.451801 +vt 0.407924 0.511153 +vt 0.358258 0.493952 +vt 0.408253 0.493951 +vt 0.307758 0.452067 +vt 0.358258 0.458672 +vt 0.307664 0.458968 +vt 0.817182 0.259384 +vt 0.777374 0.571920 +vt 0.817763 0.557894 +vt 0.856990 0.571920 +vt 0.867470 0.573454 +vt 0.308591 0.511153 +vt 0.358258 0.511153 +vt 0.408757 0.452067 +vt 0.358258 0.451801 +vt 0.777374 0.571920 +vt 0.817763 0.557893 +vt 0.399754 0.550466 +vt 0.402919 0.533284 +vt 0.407004 0.469319 +vt 0.408851 0.458968 +vt 0.407924 0.511153 +vt 0.408253 0.493951 +vt 0.307758 0.452067 +vt 0.817182 0.259383 +vt 0.860139 0.240048 +vt 0.871586 0.238149 +vt 0.399754 0.550466 +vt 0.359234 0.532763 +vt 0.402919 0.533284 +vt 0.407004 0.469319 +vt 0.408851 0.458968 +vt 0.318714 0.550466 +vt 0.359234 0.549983 +vt 0.309511 0.469319 +vt 0.358258 0.468986 +vt 0.774224 0.240049 +vt 0.762778 0.238149 +vt 0.762778 0.238149 +vt 0.860138 0.240049 +vt 0.871586 0.238149 +vt 0.774224 0.240049 +vt 0.764471 0.040755 +vt 0.788397 0.095441 +vt 0.788397 0.109113 +vt 0.843083 0.095441 +vt 0.843083 0.081770 +vt 0.867008 0.040755 +vt 0.843083 0.095441 +vt 0.843083 0.109113 +vt 0.788397 0.095441 +vt 0.788397 0.081770 +vt 0.814238 0.979608 +vt 0.857496 0.706177 +vt 0.814238 0.706177 +vt 0.814238 0.706177 +vt 0.770981 0.706177 +vt 0.772740 0.606082 +vt 0.814238 0.589483 +vt 0.855736 0.606082 +vt 0.814238 0.589483 +vt 0.659409 0.037409 +vt 0.645648 0.030328 +vt 0.659409 0.030242 +vt 0.660578 0.072637 +vt 0.646817 0.065212 +vt 0.660578 0.065126 +vt 0.576844 0.037409 +vt 0.590605 0.030328 +vt 0.590605 0.037323 +vt 0.646817 0.072551 +vt 0.619295 0.077482 +vt 0.645648 0.037323 +vt 0.618127 0.042426 +vt 0.578013 0.072637 +vt 0.591773 0.065212 +vt 0.591773 0.072551 +vt 0.686931 0.025225 +vt 0.688099 0.060281 +vt 0.358679 0.352399 +vt 0.351977 0.377315 +vt 0.309012 0.352399 +vt 0.358657 0.352393 +vt 0.351999 0.377321 +vt 0.308661 0.352393 +vt 0.352034 0.377330 +vt 0.358622 0.352384 +vt 0.402555 0.377330 +vt 0.358490 0.352849 +vt 0.352165 0.376864 +vt 0.309737 0.352849 +vt 0.358162 0.354097 +vt 0.352494 0.375617 +vt 0.314473 0.354097 +vt 0.357956 0.354876 +vt 0.352699 0.374837 +vt 0.317434 0.354877 +vt 0.322091 0.772488 +vt 0.352431 0.752216 +vt 0.372703 0.782556 +vt 0.388725 0.605356 +vt 0.379234 0.653073 +vt 0.331517 0.643582 +vt 0.339812 0.684819 +vt 0.349113 0.680967 +vt 0.359180 0.680967 +vt 0.368481 0.684819 +vt 0.375600 0.691938 +vt 0.379452 0.701239 +vt 0.379452 0.711306 +vt 0.368481 0.727726 +vt 0.359180 0.731578 +vt 0.349113 0.731578 +vt 0.339812 0.727726 +vt 0.332693 0.720607 +vt 0.328841 0.701239 +vt 0.431917 0.895008 +vt 0.569525 0.895008 +vt 0.535123 0.946611 +vt 0.466319 0.946611 +vt 0.431917 0.843404 +vt 0.535123 0.791801 +vt 0.569525 0.843404 +vt 0.351927 0.860605 +vt 0.867470 0.573454 +vt 0.358258 0.468986 +vt 0.359234 0.549983 +vt 0.308262 0.493951 +vt 0.816601 0.557893 +vt 0.308262 0.493951 +vt 0.816525 0.255423 +vt 0.315549 0.533284 +vt 0.817839 0.255423 +vt 0.816525 0.255423 +vt 0.817839 0.255423 +vt 0.815740 0.040755 +vt 0.788397 0.081770 +vt 0.815740 0.081770 +vt 0.815740 0.225807 +vt 0.770736 0.207805 +vt 0.815740 0.122784 +vt 0.788397 0.122784 +vt 0.815740 0.095441 +vt 0.815740 0.109113 +vt 0.860744 0.207805 +vt 0.843083 0.122784 +vt 0.843083 0.109113 +vt 0.815740 0.040755 +vt 0.843083 0.081770 +vt 0.815740 0.081770 +vt 0.815740 0.225807 +vt 0.815740 0.122784 +vt 0.843083 0.122784 +vt 0.815740 0.095441 +vt 0.815740 0.109113 +vt 0.788397 0.122784 +vt 0.788397 0.109113 +vt 0.576844 0.030242 +vt 0.619295 0.060281 +vt 0.618127 0.025225 +vt 0.578013 0.065126 +vt 0.714453 0.030242 +vt 0.714453 0.037409 +vt 0.686931 0.042426 +vt 0.715621 0.065126 +vt 0.715621 0.072637 +vt 0.688099 0.077482 +vt 0.401644 0.377315 +vt 0.401994 0.377321 +vt 0.308101 0.352384 +vt 0.400919 0.376864 +vt 0.396182 0.375617 +vt 0.393222 0.374837 +vt 0.368850 0.791856 +vt 0.361732 0.798975 +vt 0.352431 0.802828 +vt 0.342363 0.802828 +vt 0.333062 0.798975 +vt 0.325944 0.791856 +vt 0.322091 0.782556 +vt 0.325944 0.763187 +vt 0.333062 0.756069 +vt 0.342363 0.752216 +vt 0.361732 0.756069 +vt 0.368850 0.763187 +vt 0.372703 0.772488 +vt 0.341008 0.595864 +vt 0.353410 0.590728 +vt 0.366833 0.590728 +vt 0.379234 0.595865 +vt 0.393862 0.617757 +vt 0.393862 0.631180 +vt 0.388725 0.643582 +vt 0.366833 0.658210 +vt 0.353410 0.658210 +vt 0.341008 0.653073 +vt 0.326380 0.631180 +vt 0.326380 0.617757 +vt 0.331517 0.605356 +vt 0.448853 0.088295 +vt 0.448963 0.017988 +vt 0.462194 0.020251 +vt 0.438930 0.086598 +vt 0.435638 0.016368 +vt 0.428936 0.085383 +vt 0.422250 0.015394 +vt 0.418896 0.084653 +vt 0.408831 0.015069 +vt 0.408831 0.084409 +vt 0.395412 0.015394 +vt 0.398767 0.084653 +vt 0.382024 0.016368 +vt 0.388726 0.085383 +vt 0.368700 0.017988 +vt 0.378733 0.086598 +vt 0.355469 0.020251 +vt 0.368809 0.088295 +vt 0.342363 0.023152 +vt 0.358980 0.090471 +vt 0.329413 0.026683 +vt 0.349267 0.093119 +vt 0.316648 0.030836 +vt 0.339694 0.096234 +vt 0.304100 0.035603 +vt 0.487380 0.099809 +vt 0.501014 0.030837 +vt 0.513563 0.035603 +vt 0.477968 0.096234 +vt 0.488250 0.026683 +vt 0.458683 0.090471 +vt 0.475300 0.023152 +vt 0.087222 0.997477 +vt 0.104605 0.001514 +vt 0.104605 0.997679 +vt 0.459748 0.114582 +vt 0.431854 0.316771 +vt 0.453161 0.113836 +vt 0.400212 0.111446 +vt 0.399839 0.315568 +vt 0.393584 0.111596 +vt 0.428309 0.316424 +vt 0.446563 0.113189 +vt 0.396279 0.315702 +vt 0.386959 0.111845 +vt 0.424759 0.316130 +vt 0.439957 0.112642 +vt 0.392722 0.315889 +vt 0.380339 0.112193 +vt 0.433343 0.112194 +vt 0.417647 0.315702 +vt 0.426723 0.111845 +vt 0.421205 0.315889 +vt 0.389167 0.316130 +vt 0.373724 0.112641 +vt 0.414087 0.315568 +vt 0.420098 0.111596 +vt 0.385617 0.316424 +vt 0.367117 0.113189 +vt 0.410526 0.315488 +vt 0.413470 0.111446 +vt 0.382071 0.316771 +vt 0.360519 0.113835 +vt 0.406963 0.315461 +vt 0.406841 0.111397 +vt 0.378531 0.317172 +vt 0.353931 0.114581 +vt 0.403401 0.315488 +vt 0.052455 0.997074 +vt 0.069838 0.001111 +vt 0.069839 0.997276 +vt 0.121989 0.001715 +vt 0.121989 0.997880 +vt 0.139372 0.001917 +vt 0.139372 0.998082 +vt 0.035072 0.996872 +vt 0.052455 0.000909 +vt 0.017688 0.996670 +vt 0.035072 0.000708 +vt 0.156756 0.002118 +vt 0.156756 0.998284 +vt 0.243673 0.999292 +vt 0.261056 0.003327 +vt 0.261056 0.999494 +vt 0.174139 0.002320 +vt 0.174139 0.998485 +vt 0.000305 0.996469 +vt 0.017688 0.000506 +vt 0.087222 0.001312 +vt 0.278440 0.003529 +vt 0.278440 0.999695 +vt 0.191523 0.998687 +vt 0.208906 0.002723 +vt 0.208906 0.998889 +vt 0.226290 0.999090 +vt 0.243673 0.003126 +vt 0.226289 0.002924 +vt 0.191523 0.002521 +vt 0.330283 0.099809 +vt 0.468395 0.093119 +vt 0.435394 0.317172 +vt 0.000305 0.000305 +vn 0.0000 -1.0000 0.0000 +vn -1.0000 -0.0000 0.0000 +vn 1.0000 -0.0000 -0.0000 +vn 0.0000 1.0000 -0.0000 +vn 0.0000 -0.7071 -0.7071 +vn 0.0000 -0.4472 0.8944 +vn 0.0000 0.0000 1.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.4472 -0.8944 +vn 0.0000 -0.7071 0.7071 +vn 0.9662 0.0000 -0.2577 +vn 0.9704 -0.0053 0.2415 +vn -0.9662 -0.0000 0.2577 +vn -0.9704 -0.0053 -0.2415 +vn 0.9660 0.0453 0.2544 +vn 0.0000 0.9285 -0.3714 +vn 0.9657 0.0000 -0.2597 +vn 0.9668 0.0000 -0.2554 +vn -0.9661 -0.0051 -0.2580 +vn -0.9670 -0.0050 -0.2547 +vn 0.0000 0.9285 0.3714 +vn -0.9657 0.0000 0.2597 +vn -0.9668 0.0000 0.2554 +vn 0.9660 0.0453 -0.2544 +vn 0.9661 -0.0051 0.2580 +vn 0.9670 -0.0050 0.2547 +vn 0.0000 -0.9285 -0.3714 +vn -0.9660 0.0453 0.2544 +vn -0.9660 0.0453 -0.2544 +vn -0.0000 -0.9285 0.3714 +vn 0.9742 0.0106 0.2253 +vn -0.9742 0.0106 -0.2253 +vn -0.9864 0.0062 -0.1644 +vn -0.9864 0.0062 0.1644 +vn 0.9864 0.0062 0.1644 +vn 0.9864 0.0062 -0.1644 +vn 0.9806 0.0306 0.1937 +vn -0.9806 0.0306 0.1937 +vn -0.9806 0.0306 -0.1937 +vn -0.9795 -0.0000 -0.2017 +vn -0.9795 -0.0000 0.2017 +vn 0.9806 0.0306 -0.1937 +vn 0.9810 -0.0034 0.1938 +vn 0.9795 0.0000 -0.2017 +vn 0.0000 -1.0000 -0.0001 +vn 0.0000 -1.0000 0.0001 +vn 0.9704 -0.0053 -0.2415 +vn 0.9662 0.0000 0.2577 +vn -0.9704 -0.0053 0.2415 +vn -0.9662 -0.0000 -0.2577 +vn 0.9661 -0.0051 -0.2580 +vn 0.9670 -0.0050 -0.2547 +vn -0.9657 0.0000 -0.2597 +vn -0.9668 0.0000 -0.2554 +vn 0.9742 0.0106 -0.2253 +vn -0.9661 -0.0051 0.2580 +vn -0.9670 -0.0050 0.2547 +vn 0.9657 0.0000 0.2597 +vn 0.9668 0.0000 0.2554 +vn -0.9742 0.0106 0.2253 +vn -0.9849 0.0000 -0.1734 +vn -0.9824 0.0000 -0.1865 +vn -0.9832 0.0023 -0.1823 +vn -0.9843 0.0000 -0.1764 +vn -0.9838 0.0061 -0.1793 +vn -0.9824 0.0000 0.1865 +vn -0.9832 0.0023 0.1823 +vn -0.9838 0.0061 0.1793 +vn -0.9843 0.0000 0.1764 +vn -0.9849 0.0000 0.1734 +vn 0.9849 0.0000 0.1734 +vn 0.9824 -0.0000 0.1865 +vn 0.9832 0.0023 0.1823 +vn 0.9843 0.0000 0.1764 +vn 0.9838 0.0061 0.1793 +vn 0.9824 -0.0000 -0.1865 +vn 0.9832 0.0023 -0.1823 +vn 0.9838 0.0061 -0.1793 +vn 0.9843 0.0000 -0.1764 +vn 0.9849 0.0000 -0.1734 +vn -0.9810 -0.0034 -0.1938 +vn -0.9810 -0.0034 0.1938 +vn 0.9795 0.0000 0.2017 +vn 0.9810 -0.0034 -0.1938 +vn 0.0000 0.1240 -0.9922 +vn 0.3797 0.1240 -0.9167 +vn 0.7016 0.1240 -0.7016 +vn 0.9167 0.1240 -0.3797 +vn 0.9922 0.1240 0.0000 +vn 0.9167 0.1240 0.3797 +vn 0.7016 0.1240 0.7016 +vn 0.3797 0.1240 0.9167 +vn 0.0000 0.1240 0.9922 +vn -0.3797 0.1240 0.9167 +vn -0.7016 0.1240 0.7016 +vn -0.9167 0.1240 0.3797 +vn -0.9922 0.1240 0.0000 +vn -0.9167 0.1240 -0.3797 +vn -0.7016 0.1240 -0.7016 +vn -0.3797 0.1240 -0.9167 +vn 0.3827 0.0000 0.9239 +vn 0.7071 0.0000 0.7071 +vn -0.9991 0.0416 0.0000 +vn -0.9231 0.0416 -0.3823 +vn 0.9231 0.0416 0.3823 +vn 0.7065 0.0416 0.7065 +vn -0.7065 0.0416 -0.7065 +vn 0.3823 0.0416 0.9231 +vn -0.3823 0.0416 -0.9231 +vn 0.0000 0.0416 0.9991 +vn 0.0000 0.0416 -0.9991 +vn 0.3823 0.0416 -0.9231 +vn -0.3823 0.0416 0.9231 +vn 0.7065 0.0416 -0.7065 +vn -0.7065 0.0416 0.7065 +vn 0.9231 0.0416 -0.3823 +vn -0.9231 0.0416 0.3823 +vn 0.9991 0.0416 0.0000 +vn -0.3827 0.0000 0.9239 +vn 0.9239 0.0000 0.3827 +vn -0.7071 0.0000 0.7071 +vn -0.9239 0.0000 0.3827 +vn 0.9239 0.0000 -0.3827 +vn -0.7071 0.0000 -0.7071 +vn -0.9239 0.0000 -0.3827 +vn 0.7071 0.0000 -0.7071 +vn 0.3827 0.0000 -0.9239 +vn -0.3827 0.0000 -0.9239 +s off +f 246/1/17 243/2/17 242/3/17 +f 79/4/18 84/5/18 85/6/18 +f 93/7/19 92/8/19 86/9/19 +f 78/10/20 87/11/20 86/9/20 +f 82/12/21 92/13/21 84/14/21 +f 81/15/22 93/16/22 85/17/22 +f 83/18/23 87/11/23 79/4/23 +f 80/19/17 89/20/17 81/21/17 +f 78/10/24 90/22/24 82/12/24 +f 84/14/25 88/23/25 80/24/25 +f 85/17/26 91/25/26 83/18/26 +f 94/26/27 102/27/27 99/28/27 +f 95/29/28 102/27/28 105/30/28 +f 95/31/29 104/32/29 101/33/29 +f 94/34/30 104/32/30 103/35/30 +f 98/36/31 117/37/31 97/38/31 +f 130/39/31 133/40/31 129/41/31 +f 104/32/32 150/42/32 147/43/32 +f 123/44/33 112/45/33 122/46/33 +f 121/47/34 98/36/34 120/48/34 +f 123/49/35 111/50/35 113/51/35 +f 121/52/36 100/53/36 96/54/36 +f 107/55/27 94/26/27 99/28/27 +f 148/56/37 104/32/37 147/57/37 +f 148/58/37 102/27/37 103/59/37 +f 118/60/38 111/50/38 119/61/38 +f 124/62/39 100/53/39 125/63/39 +f 150/64/32 102/27/32 149/65/32 +f 127/66/40 130/39/40 131/67/40 +f 115/68/40 98/36/40 96/69/40 +f 118/70/41 112/45/41 110/71/41 +f 124/72/42 98/36/42 97/38/42 +f 106/73/43 153/74/43 108/75/43 +f 133/76/44 128/77/44 129/78/44 +f 117/79/44 100/53/44 97/80/44 +f 127/81/45 128/77/45 132/82/45 +f 115/83/45 100/53/45 116/84/45 +f 154/85/46 106/73/46 109/86/46 +f 107/55/47 95/29/47 108/87/47 +f 107/55/46 154/88/46 109/89/46 +f 106/73/48 94/34/48 109/86/48 +f 153/90/43 107/55/43 108/87/43 +f 106/73/29 95/31/29 101/33/29 +f 142/91/49 173/92/49 165/93/49 +f 176/94/50 169/95/50 143/96/50 +f 143/96/51 175/97/51 178/98/51 +f 142/91/52 174/99/52 172/100/52 +f 144/101/53 204/102/53 205/103/53 +f 144/101/54 206/104/54 204/102/54 +f 144/101/55 203/105/55 206/104/55 +f 206/104/56 148/106/56 147/107/56 +f 150/108/57 206/104/57 147/107/57 +f 144/101/58 205/103/58 203/105/58 +f 150/108/59 205/103/59 204/102/59 +f 148/106/60 205/103/60 149/109/60 +f 166/110/23 163/111/23 165/112/23 +f 172/113/23 173/114/23 171/115/23 +f 178/116/24 181/117/24 180/118/24 +f 173/114/17 174/119/17 183/120/17 +f 163/111/17 164/121/17 185/122/17 +f 168/123/24 176/124/24 175/125/24 +f 166/110/20 165/112/20 182/126/20 +f 172/113/20 171/115/20 170/127/20 +f 119/128/17 122/129/17 118/130/17 +f 112/131/20 111/132/20 110/133/20 +f 120/134/17 125/135/17 121/136/17 +f 114/137/20 116/138/20 117/139/20 +f 128/140/17 130/141/17 129/142/17 +f 126/143/20 132/144/20 133/145/20 +f 228/146/20 220/147/20 212/148/20 +f 213/149/17 221/150/17 229/151/17 +f 243/2/61 244/152/61 254/153/61 +f 254/153/62 252/154/62 253/155/62 +f 253/155/17 239/156/17 242/3/17 +f 239/156/17 240/157/17 242/3/17 +f 240/157/17 241/158/17 242/3/17 +f 242/3/17 251/159/17 250/160/17 +f 250/160/62 249/161/62 248/162/62 +f 248/162/17 247/163/17 246/1/17 +f 246/1/61 245/164/61 243/2/61 +f 243/2/17 254/153/17 242/3/17 +f 254/153/17 253/155/17 242/3/17 +f 242/3/17 250/160/17 248/162/17 +f 248/162/17 246/1/17 242/3/17 +f 85/6/18 83/165/18 79/4/18 +f 79/4/18 78/10/18 84/5/18 +f 78/10/18 82/166/18 84/5/18 +f 84/5/18 80/167/18 81/168/18 +f 84/5/18 81/168/18 85/6/18 +f 87/11/19 91/169/19 93/7/19 +f 93/7/19 89/20/19 88/170/19 +f 92/8/19 90/171/19 86/9/19 +f 93/7/19 88/170/19 92/8/19 +f 86/9/19 87/11/19 93/7/19 +f 78/10/20 79/4/20 87/11/20 +f 82/12/21 90/22/21 92/13/21 +f 81/15/22 89/172/22 93/16/22 +f 83/18/23 91/25/23 87/11/23 +f 80/19/17 88/170/17 89/20/17 +f 78/10/24 86/9/24 90/22/24 +f 84/14/25 92/13/25 88/23/25 +f 85/17/26 93/16/26 91/25/26 +f 94/26/63 103/59/63 102/27/63 +f 95/29/64 99/28/64 102/27/64 +f 95/31/65 105/173/65 104/32/65 +f 94/34/66 101/33/66 104/32/66 +f 98/36/31 114/174/31 117/37/31 +f 130/39/31 126/175/31 133/40/31 +f 104/32/32 105/173/32 150/42/32 +f 123/44/67 113/176/67 112/45/67 +f 121/47/68 96/69/68 98/36/68 +f 123/49/69 119/61/69 111/50/69 +f 121/52/70 125/63/70 100/53/70 +f 107/55/71 109/89/71 94/26/71 +f 148/56/37 103/35/37 104/32/37 +f 148/58/37 149/177/37 102/27/37 +f 118/60/72 110/178/72 111/50/72 +f 124/62/73 97/80/73 100/53/73 +f 150/64/32 105/30/32 102/27/32 +f 127/66/40 126/175/40 130/39/40 +f 115/68/40 114/174/40 98/36/40 +f 118/70/74 122/46/74 112/45/74 +f 124/72/75 120/48/75 98/36/75 +f 106/73/43 152/179/43 153/74/43 +f 133/76/44 132/82/44 128/77/44 +f 117/79/44 116/84/44 100/53/44 +f 127/81/45 131/180/45 128/77/45 +f 115/83/45 96/54/45 100/53/45 +f 154/85/46 152/181/46 106/73/46 +f 107/55/64 99/28/64 95/29/64 +f 107/55/46 151/182/46 154/88/46 +f 106/73/66 101/33/66 94/34/66 +f 153/90/43 151/183/43 107/55/43 +f 106/73/76 108/75/76 95/31/76 +f 142/91/49 146/184/49 171/185/49 +f 146/184/77 170/186/77 171/185/77 +f 152/187/78 154/188/78 184/189/78 +f 154/188/49 142/91/49 163/190/49 +f 163/190/79 184/189/79 154/188/79 +f 177/191/80 182/192/80 173/92/80 +f 182/192/81 165/93/81 173/92/81 +f 165/93/49 163/190/49 142/91/49 +f 142/91/49 171/185/49 173/92/49 +f 143/96/50 153/193/50 181/194/50 +f 153/193/82 152/187/82 184/189/82 +f 181/194/83 153/193/83 184/189/83 +f 179/195/84 182/192/84 176/94/84 +f 182/192/85 177/191/85 176/94/85 +f 143/96/50 181/194/50 179/195/50 +f 170/186/86 146/184/86 169/95/86 +f 146/184/50 143/96/50 169/95/50 +f 179/195/50 176/94/50 143/96/50 +f 143/96/51 145/196/51 168/197/51 +f 145/196/87 167/198/87 168/197/87 +f 151/199/88 153/193/88 185/200/88 +f 153/193/51 143/96/51 180/201/51 +f 180/201/89 185/200/89 153/193/89 +f 183/202/90 186/203/90 175/97/90 +f 186/203/91 178/98/91 175/97/91 +f 178/98/51 180/201/51 143/96/51 +f 143/96/51 168/197/51 175/97/51 +f 142/91/52 154/188/52 164/204/52 +f 154/188/92 151/199/92 185/200/92 +f 164/204/93 154/188/93 185/200/93 +f 166/205/94 186/203/94 174/99/94 +f 186/203/95 183/202/95 174/99/95 +f 142/91/52 164/204/52 166/205/52 +f 167/198/96 145/196/96 172/100/96 +f 145/196/52 142/91/52 172/100/52 +f 142/91/52 166/205/52 174/99/52 +f 206/104/97 203/105/97 148/106/97 +f 150/108/98 204/102/98 206/104/98 +f 150/108/99 149/109/99 205/103/99 +f 148/106/100 203/105/100 205/103/100 +f 166/110/23 164/121/23 163/111/23 +f 172/113/23 174/119/23 173/114/23 +f 178/116/24 179/206/24 181/117/24 +f 183/120/17 175/125/17 176/124/17 +f 176/124/17 177/207/17 183/120/17 +f 177/207/17 173/114/17 183/120/17 +f 185/122/17 180/118/17 181/117/17 +f 181/117/17 184/208/17 185/122/17 +f 184/208/17 163/111/17 185/122/17 +f 168/123/24 169/209/24 176/124/24 +f 182/126/20 179/210/20 178/211/20 +f 178/211/20 186/212/20 182/126/20 +f 186/212/20 166/110/20 182/126/20 +f 170/127/20 169/213/20 168/214/20 +f 168/214/20 167/215/20 170/127/20 +f 167/215/20 172/113/20 170/127/20 +f 119/128/17 123/216/17 122/129/17 +f 112/131/20 113/217/20 111/132/20 +f 120/134/17 124/218/17 125/135/17 +f 114/137/20 115/219/20 116/138/20 +f 128/140/17 131/220/17 130/141/17 +f 126/143/20 127/221/20 132/144/20 +f 212/148/20 210/222/20 208/223/20 +f 208/223/20 238/224/20 236/225/20 +f 236/225/20 234/226/20 232/227/20 +f 232/227/20 230/228/20 228/146/20 +f 228/146/20 226/229/20 220/147/20 +f 226/229/20 224/230/20 220/147/20 +f 224/230/20 222/231/20 220/147/20 +f 220/147/20 218/232/20 216/233/20 +f 216/233/20 214/234/20 212/148/20 +f 212/148/20 208/223/20 236/225/20 +f 236/225/20 232/227/20 212/148/20 +f 232/227/20 228/146/20 212/148/20 +f 220/147/20 216/233/20 212/148/20 +f 237/235/17 207/236/17 209/237/17 +f 209/237/17 211/238/17 237/235/17 +f 211/238/17 213/149/17 237/235/17 +f 213/149/17 215/239/17 217/240/17 +f 217/240/17 219/241/17 213/149/17 +f 219/241/17 221/150/17 213/149/17 +f 221/150/17 223/242/17 229/151/17 +f 223/242/17 225/243/17 229/151/17 +f 225/243/17 227/244/17 229/151/17 +f 229/151/17 231/245/17 233/246/17 +f 233/246/17 235/247/17 237/235/17 +f 229/151/17 233/246/17 237/235/17 +f 237/235/17 213/149/17 229/151/17 +s 1 +f 15/248/101 16/249/102 14/250/101 +f 17/251/102 18/252/103 16/249/102 +f 19/253/103 20/254/104 18/252/103 +f 21/255/104 22/256/105 20/254/104 +f 23/257/105 24/258/106 22/256/105 +f 25/259/106 26/260/107 24/258/106 +f 27/261/107 28/262/108 26/260/107 +f 29/263/108 30/264/109 28/262/108 +f 31/265/109 32/266/110 30/264/109 +f 33/267/110 34/268/111 32/266/110 +f 35/269/111 36/270/112 34/268/111 +f 37/271/112 38/272/113 36/270/112 +f 39/273/113 40/274/114 38/275/113 +f 41/276/114 42/277/115 40/274/114 +f 42/277/115 45/278/116 44/279/116 +f 45/278/116 14/250/101 44/279/116 +f 155/280/117 189/281/118 156/282/118 +f 58/283/119 75/284/120 59/285/120 +f 51/286/121 68/287/122 52/288/122 +f 59/285/120 76/289/123 60/290/123 +f 52/288/122 69/291/124 53/292/124 +f 60/290/123 77/293/125 61/294/125 +f 53/292/124 70/295/126 54/296/126 +f 46/297/127 63/298/128 47/299/128 +f 61/294/125 62/300/127 46/297/127 +f 54/296/126 71/301/129 55/302/129 +f 47/299/128 64/303/130 48/304/130 +f 55/302/129 72/305/131 56/306/131 +f 48/304/130 65/307/132 49/308/132 +f 56/306/131 73/309/133 57/310/133 +f 49/308/132 66/311/134 50/312/134 +f 57/310/133 74/313/119 58/314/119 +f 50/312/134 67/315/121 51/286/121 +f 140/316/135 199/317/23 141/318/23 +f 156/282/118 188/319/136 157/320/136 +f 157/320/136 187/321/19 158/322/19 +f 139/323/137 198/324/135 140/316/135 +f 138/325/138 197/326/137 139/323/137 +f 158/322/19 201/327/139 159/328/139 +f 135/329/140 194/330/141 136/331/141 +f 159/328/139 200/332/142 160/333/142 +f 137/334/18 196/335/138 138/325/138 +f 141/318/23 190/336/117 155/280/117 +f 136/331/141 195/337/18 137/338/18 +f 161/339/143 192/340/24 162/341/24 +f 134/342/144 193/343/140 135/329/140 +f 162/341/24 191/344/144 134/342/144 +f 160/333/142 202/345/143 161/339/143 +f 15/248/101 17/251/102 16/249/102 +f 17/251/102 19/253/103 18/252/103 +f 19/253/103 21/255/104 20/254/104 +f 21/255/104 23/257/105 22/256/105 +f 23/257/105 25/259/106 24/258/106 +f 25/259/106 27/261/107 26/260/107 +f 27/261/107 29/263/108 28/262/108 +f 29/263/108 31/265/109 30/264/109 +f 31/265/109 33/267/110 32/266/110 +f 33/267/110 35/269/111 34/268/111 +f 35/269/111 37/271/112 36/270/112 +f 37/271/112 39/346/113 38/272/113 +f 39/273/113 41/276/114 40/274/114 +f 41/276/114 43/347/115 42/277/115 +f 42/277/115 43/347/115 45/278/116 +f 45/278/116 15/248/101 14/250/101 +f 155/280/117 190/336/117 189/281/118 +f 58/283/119 74/348/119 75/284/120 +f 51/286/121 67/315/121 68/287/122 +f 59/285/120 75/284/120 76/289/123 +f 52/288/122 68/287/122 69/291/124 +f 60/290/123 76/289/123 77/293/125 +f 53/292/124 69/291/124 70/295/126 +f 46/297/127 62/300/127 63/298/128 +f 61/294/125 77/293/125 62/300/127 +f 54/296/126 70/295/126 71/301/129 +f 47/299/128 63/298/128 64/303/130 +f 55/302/129 71/301/129 72/305/131 +f 48/304/130 64/303/130 65/307/132 +f 56/306/131 72/305/131 73/309/133 +f 49/308/132 65/307/132 66/311/134 +f 57/310/133 73/309/133 74/313/119 +f 50/312/134 66/311/134 67/315/121 +f 140/316/135 198/324/135 199/317/23 +f 156/282/118 189/281/118 188/319/136 +f 157/320/136 188/319/136 187/321/19 +f 139/323/137 197/326/137 198/324/135 +f 138/325/138 196/335/138 197/326/137 +f 158/322/19 187/321/19 201/327/139 +f 135/329/140 193/343/140 194/330/141 +f 159/328/139 201/327/139 200/332/142 +f 137/334/18 195/349/18 196/335/138 +f 141/318/23 199/317/23 190/336/117 +f 136/331/141 194/330/141 195/337/18 +f 161/339/143 202/345/143 192/340/24 +f 134/342/144 191/344/144 193/343/140 +f 162/341/24 192/340/24 191/344/144 +f 160/333/142 200/332/142 202/345/143 diff --git a/src/main/resources/assets/hbm/textures/entity/bholeD.png b/src/main/resources/assets/hbm/textures/entity/bholeD.png new file mode 100644 index 000000000..cd736b4e1 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/entity/bholeD.png differ