Search in sources :

Example 11 with EntityClayMan

use of sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan in project ClaySoldiersMod by SanAndreasP.

the class EntityGravelChunk method onUpdate.

@Override
public void onUpdate() {
    entityAge++;
    if (entityAge > 99999) {
        entityAge = 0;
    }
    super.onUpdate();
    if (!(this instanceof EntitySnowball)) {
        if (prevRotationPitch == 0.0F && prevRotationYaw == 0.0F) {
            float f = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
            prevRotationYaw = rotationYaw = (float) ((Math.atan2(motionX, motionZ) * 180D) / 3.1415927410125732D);
            prevRotationPitch = rotationPitch = (float) ((Math.atan2(motionY, f) * 180D) / 3.1415927410125732D);
        }
        int i = worldObj.getBlockId(xTile, yTile, zTile);
        if (i > 0) {
            Block.blocksList[i].setBlockBoundsBasedOnState(worldObj, xTile, yTile, zTile);
            AxisAlignedBB axisalignedbb = Block.blocksList[i].getCollisionBoundingBoxFromPool(worldObj, xTile, yTile, zTile);
            if (axisalignedbb != null && axisalignedbb.isVecInside(Vec3.createVectorHelper(posX, posY, posZ))) {
                inGround = true;
            }
        }
        if (arrowShake > 0) {
            arrowShake--;
        }
        if (inGround) {
            int j = worldObj.getBlockId(xTile, yTile, zTile);
            int k = worldObj.getBlockMetadata(xTile, yTile, zTile);
            if (j != inTile || k != field_28019_h) {
                inGround = false;
                motionX *= rand.nextFloat() * 0.2F;
                motionY *= rand.nextFloat() * 0.2F;
                motionZ *= rand.nextFloat() * 0.2F;
                ticksInGround = 0;
                ticksInAir = 0;
                return;
            }
            ticksInGround++;
            if (ticksInGround == 1200) {
                setDead();
            }
            return;
        }
        ticksInAir++;
        if (canFollow()) {
            if (target != null && !target.isDead && target.getHealth() > 0) {
                double d = (target.boundingBox.minX + (target.boundingBox.maxX - target.boundingBox.minX) / 2D) - posX;
                double d1 = (target.boundingBox.minY + (target.boundingBox.maxY - target.boundingBox.minY) / 2D) - posY;
                double d2 = (target.boundingBox.minZ + (target.boundingBox.maxZ - target.boundingBox.minZ) / 2D) - posZ;
                setArrowHeading(d, d1, d2, 1.5F, 0.0F);
            }
        }
        Vec3 vec3d = Vec3.createVectorHelper(posX, posY, posZ);
        Vec3 vec3d1 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ);
        MovingObjectPosition movingobjectposition = worldObj.rayTraceBlocks_do_do(vec3d, vec3d1, false, true);
        vec3d = Vec3.createVectorHelper(posX, posY, posZ);
        vec3d1 = Vec3.createVectorHelper(posX + motionX, posY + motionY, posZ + motionZ);
        if (movingobjectposition != null) {
            vec3d1 = Vec3.createVectorHelper(movingobjectposition.hitVec.xCoord, movingobjectposition.hitVec.yCoord, movingobjectposition.hitVec.zCoord);
        }
        Entity entity = null;
        List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.addCoord(motionX, motionY, motionZ).expand(1.0D, 1.0D, 1.0D));
        double d = 0.0D;
        for (int l = 0; l < list.size(); l++) {
            Entity entity1 = (Entity) list.get(l);
            if (!entity1.canBeCollidedWith() || entity1 == owner && ticksInAir < 5) {
                continue;
            }
            float f4 = 0.3F;
            AxisAlignedBB axisalignedbb1 = entity1.boundingBox.expand(f4, f4, f4);
            MovingObjectPosition movingobjectposition1 = axisalignedbb1.calculateIntercept(vec3d, vec3d1);
            if (movingobjectposition1 == null) {
                continue;
            }
            double d1 = vec3d.distanceTo(movingobjectposition1.hitVec);
            if (d1 < d || d == 0.0D) {
                entity = entity1;
                d = d1;
            }
        }
        if (entity != null) {
            movingobjectposition = new MovingObjectPosition(entity);
        }
        if (movingobjectposition != null) {
            if (movingobjectposition.entityHit != null) {
                int attackU = 4;
                if (!(movingobjectposition.entityHit instanceof EntityClayMan || movingobjectposition.entityHit instanceof EntityMob)) {
                    attackU = 0;
                }
                if (movingobjectposition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, owner), attackU)) {
                    setDead();
                }
            } else {
                xTile = movingobjectposition.blockX;
                yTile = movingobjectposition.blockY;
                zTile = movingobjectposition.blockZ;
                inTile = worldObj.getBlockId(xTile, yTile, zTile);
                field_28019_h = worldObj.getBlockMetadata(xTile, yTile, zTile);
                motionX = (float) (movingobjectposition.hitVec.xCoord - posX);
                motionY = (float) (movingobjectposition.hitVec.yCoord - posY);
                motionZ = (float) (movingobjectposition.hitVec.zCoord - posZ);
                float f1 = MathHelper.sqrt_double(motionX * motionX + motionY * motionY + motionZ * motionZ);
                posX -= (motionX / f1) * 0.05000000074505806D;
                posY -= (motionY / f1) * 0.05000000074505806D;
                posZ -= (motionZ / f1) * 0.05000000074505806D;
                inGround = true;
                arrowShake = 7;
            }
        }
        posX += motionX;
        posY += motionY;
        posZ += motionZ;
        float f2 = MathHelper.sqrt_double(motionX * motionX + motionZ * motionZ);
        rotationYaw = (float) ((Math.atan2(motionX, motionZ) * 180D) / 3.1415927410125732D);
        for (rotationPitch = (float) ((Math.atan2(motionY, f2) * 180D) / 3.1415927410125732D); rotationPitch - prevRotationPitch < -180F; prevRotationPitch -= 360F) {
        }
        for (; rotationPitch - prevRotationPitch >= 180F; prevRotationPitch += 360F) {
        }
        for (; rotationYaw - prevRotationYaw < -180F; prevRotationYaw -= 360F) {
        }
        for (; rotationYaw - prevRotationYaw >= 180F; prevRotationYaw += 360F) {
        }
        rotationPitch = prevRotationPitch + (rotationPitch - prevRotationPitch) * 0.2F;
        rotationYaw = prevRotationYaw + (rotationYaw - prevRotationYaw) * 0.2F;
        float f3 = 0.99F;
        float f5 = 0.03F;
        if (isInWater()) {
            for (int i1 = 0; i1 < 4; i1++) {
                float f6 = 0.25F;
                worldObj.spawnParticle("bubble", posX - motionX * f6, posY - motionY * f6, posZ - motionZ * f6, motionX, motionY, motionZ);
            }
            f3 = 0.8F;
        }
        motionX *= f3;
        motionY *= f3;
        motionZ *= f3;
        motionY -= f5;
        setPosition(posX, posY, posZ);
        if (ticksInGround > 0 || inGround) {
            isDead = true;
        }
        if (isDead) {
            double a = posX + ((rand.nextFloat() - rand.nextFloat()) * 0.125D);
            double b = boundingBox.minY + 0.125D + ((rand.nextFloat() - rand.nextFloat()) * 0.25D);
            double c = posZ + ((rand.nextFloat() - rand.nextFloat()) * 0.125D);
            CSMModRegistry.proxy.showEffect(this.worldObj, this, 12);
            // if (FMLCommonHandler.instance().getSide().isClient())
            // CSM_ModRegistry.proxy.showEffect((new EntityDiggingFX(CSM_ModRegistry.proxy.getClientWorld(), a, b, c, 0.0D, 0.0D, 0.0D, Block.gravel, 0, 0)));
            worldObj.playSoundAtEntity(this, "step.gravel", 0.6F, 1.0F / (rand.nextFloat() * 0.2F + 0.9F));
        }
    }
}
Also used : AxisAlignedBB(net.minecraft.util.AxisAlignedBB) EntityMob(net.minecraft.entity.monster.EntityMob) Entity(net.minecraft.entity.Entity) MovingObjectPosition(net.minecraft.util.MovingObjectPosition) EntityClayMan(sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan) EntitySnowball(sanandreasp.mods.ClaySoldiersMod.entity.mount.EntitySnowball) Vec3(net.minecraft.util.Vec3) List(java.util.List)

Example 12 with EntityClayMan

use of sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan in project ClaySoldiersMod by SanAndreasP.

the class ItemClayMan method spawnClayMan.

public boolean spawnClayMan(World par0World, int par1, double par2, double par4, double par6) {
    EntityClayMan var8 = new EntityClayMan(par0World, par2, par4, par6, par1);
    if (var8 != null) {
        var8.setLocationAndAngles(par2, par4, par6, par0World.rand.nextFloat() * 360.0F, 0.0F);
        par0World.spawnEntityInWorld(var8);
        var8.playLivingSound();
    }
    return var8 != null;
}
Also used : EntityClayMan(sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan)

Example 13 with EntityClayMan

use of sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan in project ClaySoldiersMod by SanAndreasP.

the class UpgradeRenderHelper method onShieldRender.

// ------------------------------- SHIELD ------------------------------- //
public static void onShieldRender(LeftHandUpgrade upg, RenderManager manager, IUpgradeEntity entity, float partTicks, ModelBase model) {
    if (entity instanceof EntityClayMan && model instanceof ModelClayMan) {
        EntityClayMan kootra = (EntityClayMan) entity;
        ModelClayMan corpse = (ModelClayMan) model;
        GL11.glPushMatrix();
        corpse.bipedLeftArm.postRender(0.0625F);
        GL11.glTranslatef(-0.0625F, 0.4375F, -0.0525F);
        float scale = 0.175F;
        GL11.glTranslatef(0.05F, -0.15F, -0.08F);
        GL11.glScalef(scale, scale, scale);
        GL11.glRotatef(100F, 0.0F, 0.0F, 1.0F);
        GL11.glRotatef(40F, 1.0F, 0.0F, 0.0F);
        GL11.glRotatef(80F, 0.0F, 0.0F, 1.0F);
        manager.itemRenderer.renderItem(kootra, upg.getHeldItem(entity), 0);
        GL11.glPopMatrix();
    }
}
Also used : ModelClayMan(sanandreasp.mods.ClaySoldiersMod.client.model.ModelClayMan) EntityClayMan(sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan)

Example 14 with EntityClayMan

use of sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan in project ClaySoldiersMod by SanAndreasP.

the class EntityBunny method onUpdate.

@Override
public void onUpdate() {
    super.onUpdate();
    if (gotRider) {
        if (riddenByEntity != null) {
            gotRider = false;
            return;
        }
        List list = worldObj.getEntitiesWithinAABBExcludingEntity(this, boundingBox.expand(0.1D, 0.1D, 0.1D));
        for (int i = 0; i < list.size(); i++) {
            Entity entity = (Entity) list.get(i);
            if (!(entity instanceof EntityClayMan)) {
                continue;
            }
            EntityLiving entityliving = (EntityLiving) entity;
            if (entityliving.ridingEntity != null || entityliving.riddenByEntity == this) {
                continue;
            }
            entity.mountEntity(this);
            break;
        }
        gotRider = false;
    }
}
Also used : Entity(net.minecraft.entity.Entity) EntityClayMan(sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan) EntityLiving(net.minecraft.entity.EntityLiving) List(java.util.List)

Example 15 with EntityClayMan

use of sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan in project ClaySoldiersMod by SanAndreasP.

the class EntityBunny method attackEntityFrom.

@Override
public boolean attackEntityFrom(DamageSource damagesource, float i) {
    float origDmg = i;
    Entity e = damagesource.getSourceOfDamage();
    if ((e == null || !(e instanceof EntityClayMan)) && !damagesource.isFireDamage()) {
        i = 100F;
    }
    if (riddenByEntity != null && riddenByEntity instanceof EntityClayMan) {
        if (e instanceof EntityGravelChunk) {
            if (((EntityGravelChunk) e).getClayTeam() == ((EntityClayMan) riddenByEntity).getClayTeam())
                return false;
            else
                i = origDmg;
        }
        if (e instanceof EntityFireball) {
            if (((EntityFireball) e).getClayTeam() == ((EntityClayMan) riddenByEntity).getClayTeam())
                return false;
            else
                i = origDmg;
        }
        if (e instanceof EntitySnowball) {
            if (((EntitySnowball) e).getClayTeam() == ((EntityClayMan) riddenByEntity).getClayTeam())
                return false;
            else
                i = origDmg;
        }
    }
    if (this.getHealth() - i <= 0 && rand.nextInt(25) == 0 && !(e instanceof EntityPlayer)) {
        this.setHealth(20F);
        return false;
    }
    boolean fred = super.attackEntityFrom(damagesource, i);
    if (fred && this.getHealth() <= 0) {
        Item item1 = CSMModRegistry.bunnyDoll;
        for (int j = 0; j < 4; j++) {
            double a = posX + ((rand.nextFloat() - rand.nextFloat()) * 0.125D);
            double b = boundingBox.minY + 0.125D + ((rand.nextFloat() - rand.nextFloat()) * 0.25D);
            double c = posZ + ((rand.nextFloat() - rand.nextFloat()) * 0.125D);
            CSMModRegistry.proxy.showEffect(this.worldObj, this, 3);
        }
        isDead = true;
    }
    return fred;
}
Also used : Entity(net.minecraft.entity.Entity) EntityItem(net.minecraft.entity.item.EntityItem) Item(net.minecraft.item.Item) EntityClayMan(sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan) EntityPlayer(net.minecraft.entity.player.EntityPlayer) EntityFireball(sanandreasp.mods.ClaySoldiersMod.entity.projectile.EntityFireball) EntityGravelChunk(sanandreasp.mods.ClaySoldiersMod.entity.projectile.EntityGravelChunk)

Aggregations

EntityClayMan (sanandreasp.mods.ClaySoldiersMod.entity.EntityClayMan)24 Entity (net.minecraft.entity.Entity)12 List (java.util.List)7 EntityLiving (net.minecraft.entity.EntityLiving)5 EntityFireball (sanandreasp.mods.ClaySoldiersMod.entity.projectile.EntityFireball)4 EntityGravelChunk (sanandreasp.mods.ClaySoldiersMod.entity.projectile.EntityGravelChunk)4 EntityMob (net.minecraft.entity.monster.EntityMob)3 AxisAlignedBB (net.minecraft.util.AxisAlignedBB)3 MovingObjectPosition (net.minecraft.util.MovingObjectPosition)3 Vec3 (net.minecraft.util.Vec3)3 ModelClayMan (sanandreasp.mods.ClaySoldiersMod.client.model.ModelClayMan)3 EntityPlayer (net.minecraft.entity.player.EntityPlayer)2 WorldClient (net.minecraft.client.multiplayer.WorldClient)1 EntityItem (net.minecraft.entity.item.EntityItem)1 Item (net.minecraft.item.Item)1 PotionEffect (net.minecraft.potion.PotionEffect)1 EntityBunny (sanandreasp.mods.ClaySoldiersMod.entity.mount.EntityBunny)1 EntityGecko (sanandreasp.mods.ClaySoldiersMod.entity.mount.EntityGecko)1 EntityHorse (sanandreasp.mods.ClaySoldiersMod.entity.mount.EntityHorse)1 EntityPegasus (sanandreasp.mods.ClaySoldiersMod.entity.mount.EntityPegasus)1