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();
}
}
}
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);
}
}
}
}
}
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);
}
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));
}
}
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));
}
}
Aggregations