public static float[] vecToRotations(Vec3d vec) { float yaw = (float) MathHelper.atan2(vec.z, vec.x); float pitch = (float) Math.asin(vec.y / vec.length()); return new float[]{(float) Math.toDegrees(pitch), (float) Math.toDegrees(yaw) + 90}; }
public void addEntity(Vec3d origin, Entity target, Entity caster, double potency, double duration) { double dist = target.getPositionVector().subtract(origin).length(); int numPoints = (int) (dist * LightningGenerator.POINTS_PER_DIST); newEntries.add(new TrackingEntry(numPoints, potency, duration, caster, target)); }
public static float signAngle(Vec3d a, Vec3d b, Vec3d n) { Vec3d cross = a.crossProduct(b); double s = cross.length(); double c = a.dotProduct(b); double angle = MathHelper.atan2(s, c); if (n != null) { if (n.dotProduct(cross) < 0) { angle = -angle; } } return (float) Math.toDegrees(angle); }
public static boolean isEntityLookingAt(EntityLivingBase looker, EntityLivingBase seen, double degree) { Vec3d vec3d = looker.getLook(1.0F).normalize(); Vec3d vec3d1 = new Vec3d(seen.posX - looker.posX, seen.getEntityBoundingBox().minY + (double) seen.getEyeHeight() - (looker.posY + (double) looker.getEyeHeight()), seen.posZ - looker.posZ); double d0 = vec3d1.length(); vec3d1 = vec3d1.normalize(); double d1 = vec3d.dotProduct(vec3d1); return d1 > 1.0D - degree / d0; }
public static boolean isEntityLookingAt(EntityLivingBase looker, EntityLivingBase seen, double degree) { degree *= 1 + (looker.getDistance(seen) * 0.1); Vec3d vec3d = looker.getLook(1.0F).normalize(); Vec3d vec3d1 = new Vec3d(seen.posX - looker.posX, seen.getEntityBoundingBox().minY + (double) seen.getEyeHeight() - (looker.posY + (double) looker.getEyeHeight()), seen.posZ - looker.posZ); double d0 = vec3d1.length(); vec3d1 = vec3d1.normalize(); double d1 = vec3d.dotProduct(vec3d1); return d1 > 1.0D - degree / d0 ? looker.canEntityBeSeen(seen) && !isStoneMob(seen) : false; }
Vec3d der = derivative.get(i); Vec3d norm = new Vec3d(der.y, -der.x, der.z).normalize().scale(thickness).scale(concave.size() < i ? concave.get(i).length() : 1); Vec3d nextPoint = points.get(i + 1); Vec3d nextDer = derivative.get(i + 1); Vec3d nextDerNorm = new Vec3d(nextDer.y, -nextDer.x, nextDer.z).normalize().scale(thickness).scale(concave.size() < i ? concave.get(i).length() : 1); Vec3d nextMidPoint = new Vec3d((to.x + nextPoint.x) / 2, (to.y + nextPoint.y) / 2, (to.z + nextPoint.z) / 2);
Vec3d vec3d1 = this.getPosition(entity, (double) f4, partialTicks); Vec3d vec3d2 = vec3d.subtract(vec3d1); double d0 = vec3d2.length() + 1.0D; vec3d2 = vec3d2.normalize(); float f5 = (float) Math.acos(vec3d2.y);
ArrayList<Float> points = new ArrayList<>(); double dist = to.subtract(from.getData()).length();
@Override public void doRender(@Nonnull EntityHaloInfusionItem entity, double x, double y, double z, float entityYaw, float partialTicks) { super.doRender(entity, x, y, z, entityYaw, partialTicks); if (entity.world == null || entity.getInfuserPos() == null) return; TileEntity tile = entity.world.getTileEntity(entity.getInfuserPos()); if (!(tile instanceof TileHaloInfuser) || ((TileHaloInfuser) tile).getHalo().isEmpty()) { return; } if (entity.getHaloInfusionItem().getStack().isEmpty()) return; double depthRadius = 0.5; EntityPlayer player = Minecraft.getMinecraft().player; Vec3d playerSub = player.getPositionVector().add(0, player.eyeHeight, 0).subtract(entity.getPositionVector().add(0, entity.height, 0)); Vec3d restricted = playerSub.scale(depthRadius / playerSub.length()); restricted = new Vec3d(restricted.x, restricted.y / 2.0, restricted.z); GlStateManager.pushMatrix(); GlStateManager.translate(x, y, z); GlStateManager.translate(restricted.x, restricted.y + 0.5, restricted.z); GlStateManager.scale(0.4, 0.4, 0.4); GlStateManager.rotate(Minecraft.getMinecraft().player.rotationYaw * -1, 0, 1, 0); GlStateManager.rotate(Minecraft.getMinecraft().player.rotationPitch, 1, 0, 0); Minecraft.getMinecraft().getRenderItem().renderItem(entity.getHaloInfusionItem().getStack(), ItemCameraTransforms.TransformType.NONE); GlStateManager.popMatrix(); }
double d6 = Math.sqrt(vec3d.x * vec3d.x + vec3d.z * vec3d.z); double d8 = Math.sqrt(entity.motionX * entity.motionX + entity.motionZ * entity.motionZ); double d1 = vec3d.length(); float f4 = MathHelper.cos(f); f4 = (float) ((double) f4 * (double) f4 * Math.min(1.0D, d1 / 0.4D));
z += vec3d.z - d2; Vec3d vec3d3 = vec3d2.add(-vec3d1.x, -vec3d1.y, -vec3d1.z); if (vec3d3.length() != 0.0D) { vec3d3 = vec3d3.normalize(); entityYaw = (float) (Math.atan2(vec3d3.z, vec3d3.x) * 180.0D / Math.PI);
double pitch = Math.atan2(combinedVec.y, Math.sqrt(combinedVec.x * combinedVec.x + combinedVec.z * combinedVec.z)); double yaw = Math.atan2(-combinedVec.z, combinedVec.x); double length = combinedVec.length(); length = length * (timer / (TileEntityLaser.MAX_TIMER * 1.0)); GlStateManager.pushMatrix();
double yaw = Math.atan2(-combinedVec.z, combinedVec.x); double length = combinedVec.length();