Search in sources :

Example 71 with Vec3

use of net.minecraft.util.Vec3 in project Galacticraft by micdoodle8.

the class TileEntityEmergencyBox method update.

@Override
public void update() {
    if (!this.activated) {
        this.activated = true;
        this.setLightBlocks();
        this.thisVec3 = new Vec3(this.getPos().getX(), this.getPos().getY(), this.getPos().getZ());
        this.vec3Centre = new Vec3(this.pos.getX() + 0.5D, this.pos.getY() + 0.5D, this.pos.getZ() + 0.5D);
        this.mobsAABB = AxisAlignedBB.fromBounds(this.pos.getX() - 14, this.pos.getY() - 7, this.pos.getZ() - 14, this.pos.getX() + 14, this.pos.getY() + 7, this.pos.getZ() + 14);
    }
    if (this.worldObj.isRemote) {
        if (this.openN && this.angleA < 90F) {
            this.lastAngleA = this.angleA;
            this.angleA += SPEED;
            if (this.angleA > 90F)
                this.angleA = 90F;
        }
        if (this.openW && this.angleB < 90F) {
            this.lastAngleB = this.angleB;
            this.angleB += SPEED;
            if (this.angleB > 90F)
                this.angleB = 90F;
        }
        if (this.openS && this.angleC < 90F) {
            this.lastAngleC = this.angleC;
            this.angleC += SPEED;
            if (this.angleC > 90F)
                this.angleC = 90F;
        }
        if (this.openE && this.angleD < 90F) {
            this.lastAngleD = this.angleD;
            this.angleD += SPEED;
            if (this.angleD > 90F)
                this.angleD = 90F;
        }
        if (!this.openN && this.angleA > 0F) {
            this.lastAngleA = this.angleA;
            this.angleA -= SPEED;
            if (this.angleA < 0F)
                this.angleA = 0F;
        }
        if (!this.openW && this.angleB > 0F) {
            this.lastAngleB = this.angleB;
            this.angleB -= SPEED;
            if (this.angleB < 0F)
                this.angleB = 0F;
        }
        if (!this.openS && this.angleC > 0F) {
            this.lastAngleC = this.angleC;
            this.angleC -= SPEED;
            if (this.angleC < 0F)
                this.angleC = 0F;
        }
        if (!this.openE && this.angleD > 0F) {
            this.lastAngleD = this.angleD;
            this.angleD -= SPEED;
            if (this.angleD < 0F)
                this.angleD = 0F;
        }
    } else {
        if (this.cooldown > 0) {
            this.cooldown--;
        }
        boolean updateRequired = false;
        if (this.openN) {
            boolean clash = false;
            BlockPos testPos = this.pos.north(1);
            IBlockState bs = this.worldObj.getBlockState(testPos);
            if (!(bs.getBlock() instanceof BlockAir)) {
                if (bs.getBlock().isOpaqueCube()) {
                    clash = true;
                } else {
                    AxisAlignedBB check = AxisAlignedBB.fromBounds(this.pos.getX() + 0.125D, this.pos.getY() + 0.125D, this.pos.getZ() - 5 / 16D, this.pos.getX() + 0.875D, this.pos.getY() + 0.875D, this.pos.getZ());
                    AxisAlignedBB neighbour = bs.getBlock().getCollisionBoundingBox(this.worldObj, testPos, bs);
                    if (neighbour != null) {
                        clash = check.intersectsWith(neighbour);
                    }
                }
            }
            if (clash) {
                this.openN = false;
                updateRequired = true;
            }
        }
        if (this.openS) {
            boolean clash = false;
            BlockPos testPos = this.pos.south(1);
            IBlockState bs = this.worldObj.getBlockState(testPos);
            if (!(bs.getBlock() instanceof BlockAir)) {
                if (bs.getBlock().isOpaqueCube()) {
                    clash = true;
                } else {
                    AxisAlignedBB check = AxisAlignedBB.fromBounds(this.pos.getX() + 0.125D, this.pos.getY() + 0.125D, this.pos.getZ() + 1D, this.pos.getX() + 0.875D, this.pos.getY() + 0.875D, this.pos.getZ() + 21 / 16D);
                    AxisAlignedBB neighbour = bs.getBlock().getCollisionBoundingBox(this.worldObj, testPos, bs);
                    if (neighbour != null) {
                        clash = check.intersectsWith(neighbour);
                    }
                }
            }
            if (clash) {
                this.openS = false;
                updateRequired = true;
            }
        }
        if (this.openW) {
            boolean clash = false;
            BlockPos testPos = this.pos.west(1);
            IBlockState bs = this.worldObj.getBlockState(testPos);
            if (!(bs.getBlock() instanceof BlockAir)) {
                if (bs.getBlock().isOpaqueCube()) {
                    clash = true;
                } else {
                    AxisAlignedBB check = AxisAlignedBB.fromBounds(this.pos.getX() - 5 / 16D, this.pos.getY() + 0.125D, this.pos.getZ() + 0.125D, this.pos.getX(), this.pos.getY() + 0.875D, this.pos.getZ() + 0.875D);
                    AxisAlignedBB neighbour = bs.getBlock().getCollisionBoundingBox(this.worldObj, testPos, bs);
                    if (neighbour != null) {
                        clash = check.intersectsWith(neighbour);
                    }
                }
            }
            if (clash) {
                this.openW = false;
                updateRequired = true;
            }
        }
        if (this.openE) {
            boolean clash = false;
            BlockPos testPos = this.pos.east(1);
            IBlockState bs = this.worldObj.getBlockState(testPos);
            if (!(bs.getBlock() instanceof BlockAir)) {
                if (bs.getBlock().isOpaqueCube()) {
                    clash = true;
                } else {
                    AxisAlignedBB check = AxisAlignedBB.fromBounds(this.pos.getX() + 1D, this.pos.getY() + 0.125D, this.pos.getZ() + 0.125D, this.pos.getX() + 21 / 16D, this.pos.getY() + 0.875D, this.pos.getZ() + 0.875D);
                    AxisAlignedBB neighbour = bs.getBlock().getCollisionBoundingBox(this.worldObj, testPos, bs);
                    if (neighbour != null) {
                        clash = check.intersectsWith(neighbour);
                    }
                }
            }
            if (clash) {
                this.openE = false;
                updateRequired = true;
            }
        }
        if (updateRequired) {
            this.updateClients();
        }
        if (this.worldObj.rand.nextInt(15) == 0) {
            this.scareMobs();
        }
    }
}
Also used : BlockAir(net.minecraft.block.BlockAir) AxisAlignedBB(net.minecraft.util.AxisAlignedBB) IBlockState(net.minecraft.block.state.IBlockState) BlockVec3(micdoodle8.mods.galacticraft.api.vector.BlockVec3) Vec3(net.minecraft.util.Vec3) BlockPos(net.minecraft.util.BlockPos)

Example 72 with Vec3

use of net.minecraft.util.Vec3 in project Galacticraft by micdoodle8.

the class TileEntityEmergencyBox method scareMobs.

private void scareMobs() {
    List<Entity> moblist = this.worldObj.getEntitiesInAABBexcluding(null, mobsAABB, IMob.mobSelector);
    if (!moblist.isEmpty()) {
        for (Entity entry : moblist) {
            if (!(entry instanceof EntityCreature && entry instanceof IEntityBreathable)) {
                continue;
            }
            EntityCreature mob = (EntityCreature) entry;
            PathNavigate nav = mob.getNavigator();
            if (nav == null) {
                continue;
            }
            Vec3 vecNewTarget = RandomPositionGenerator.findRandomTargetBlockAwayFrom(mob, 12, 5, vec3Centre);
            if (vecNewTarget == null) {
                vecNewTarget = RandomPositionGenerator.findRandomTargetBlockAwayFrom(mob, 14, 7, vec3Centre);
                if (vecNewTarget == null)
                    continue;
            }
            double distanceNew = vecNewTarget.squareDistanceTo(thisVec3);
            double distanceCurrent = thisVec3.squareDistanceTo(new Vec3(mob.posX, mob.posY, mob.posZ));
            if (distanceNew > distanceCurrent) {
                Vec3 vecOldTarget = null;
                if (nav.getPath() != null && !nav.getPath().isFinished()) {
                    vecOldTarget = nav.getPath().getPosition(mob);
                }
                if (vecOldTarget == null || distanceCurrent > vecOldTarget.squareDistanceTo(thisVec3)) {
                    nav.tryMoveToXYZ(vecNewTarget.xCoord, vecNewTarget.yCoord, vecNewTarget.zCoord, 1.3D);
                }
            }
        }
    }
}
Also used : Entity(net.minecraft.entity.Entity) TileEntity(net.minecraft.tileentity.TileEntity) IEntityBreathable(micdoodle8.mods.galacticraft.api.entity.IEntityBreathable) BlockVec3(micdoodle8.mods.galacticraft.api.vector.BlockVec3) Vec3(net.minecraft.util.Vec3) PathNavigate(net.minecraft.pathfinding.PathNavigate) EntityCreature(net.minecraft.entity.EntityCreature)

Example 73 with Vec3

use of net.minecraft.util.Vec3 in project TecTech by Technus.

the class QuantumStuffRender method tesAbuse.

private void tesAbuse(int x, int y, int z, float sx, float sy, float sz, float rotX, float rotY, float rotZ, float sideU, float sideV) {
    Vec3 pos = Vec3.createVectorHelper(sx, sy, sz);
    pos.rotateAroundX(rotX);
    pos.rotateAroundY(rotY);
    pos.rotateAroundZ(rotZ);
    tes.addVertexWithUV(pos.xCoord + x + .5f, pos.yCoord + y + .5f, pos.zCoord + z + .5f, sideU, sideV);
}
Also used : Vec3(net.minecraft.util.Vec3)

Example 74 with Vec3

use of net.minecraft.util.Vec3 in project ClaySoldiersMod by SanAndreasP.

the class EntitySnowball method onUpdate.

@Override
public void onUpdate() {
    super.onUpdate();
    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++;
    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 = 0;
            if (!(movingobjectposition.entityHit instanceof EntityClayMan || movingobjectposition.entityHit instanceof EntityMob)) {
                attackU = 0;
            } else {
                if (movingobjectposition.entityHit instanceof EntityClayMan) {
                    if (((EntityClayMan) movingobjectposition.entityHit).getClayTeam() == getClayTeam()) {
                        setDead();
                        return;
                    }
                }
                ((EntityLiving) movingobjectposition.entityHit).addPotionEffect(new PotionEffect(Potion.moveSlowdown.getId(), 30, 1));
                movingobjectposition.entityHit.motionX = motionX;
                movingobjectposition.entityHit.motionY += 0.25F;
                movingobjectposition.entityHit.motionZ = motionZ;
                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) EntityLiving(net.minecraft.entity.EntityLiving) PotionEffect(net.minecraft.potion.PotionEffect) Vec3(net.minecraft.util.Vec3) List(java.util.List)

Example 75 with Vec3

use of net.minecraft.util.Vec3 in project ClaySoldiersMod by SanAndreasP.

the class EntityFireball method onUpdate.

@Override
public void onUpdate() {
    super.onUpdate();
    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++;
    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 = 0;
            if (!(movingobjectposition.entityHit instanceof EntityClayMan || movingobjectposition.entityHit instanceof EntityMob)) {
                attackU = 2;
            } else {
                if (movingobjectposition.entityHit instanceof EntityClayMan) {
                    if (((EntityClayMan) movingobjectposition.entityHit).getClayTeam() == getClayTeam()) {
                        setDead();
                        return;
                    }
                }
            }
            if (movingobjectposition.entityHit.attackEntityFrom(DamageSource.causeThrownDamage(this, owner), attackU)) {
                int fire = 4;
                if (owner != null && owner instanceof EntityClayMan) {
                // if (((EntityClayMan)owner).hasCoal)
                // fire = 8;
                }
                movingobjectposition.entityHit.setFire(fire);
                worldObj.playAuxSFXAtEntity(null, 1009, (int) movingobjectposition.entityHit.posX, (int) movingobjectposition.entityHit.posY, (int) movingobjectposition.entityHit.posZ, 0);
                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) Vec3(net.minecraft.util.Vec3) List(java.util.List)

Aggregations

Vec3 (net.minecraft.util.Vec3)136 Block (net.minecraft.block.Block)32 MovingObjectPosition (net.minecraft.util.MovingObjectPosition)26 Entity (net.minecraft.entity.Entity)22 EntityPlayer (net.minecraft.entity.player.EntityPlayer)21 AxisAlignedBB (net.minecraft.util.AxisAlignedBB)19 ArrayList (java.util.ArrayList)13 TileEntity (net.minecraft.tileentity.TileEntity)9 ItemToolBase (club.nsdn.nyasamarailway.item.tool.ItemToolBase)8 ItemStack (net.minecraft.item.ItemStack)7 List (java.util.List)6 EntityLivingBase (net.minecraft.entity.EntityLivingBase)6 EntityItem (net.minecraft.entity.item.EntityItem)6 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)6 Random (java.util.Random)5 BlockRailBase (net.minecraft.block.BlockRailBase)5 BlockVec3 (micdoodle8.mods.galacticraft.api.vector.BlockVec3)4 IBlockState (net.minecraft.block.state.IBlockState)4 Tessellator (net.minecraft.client.renderer.Tessellator)4 InvokeEvent (cc.hyperium.event.InvokeEvent)3