Advertisement
Guest User

Bed Pearl Angle Thing

a guest
Jul 4th, 2023
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.71 KB | None | 0 0
  1. class Scratch {
  2.     //lazy bed pearl finder
  3.     public static void main(String[] args) {
  4.         Vec3 startPos = new Vec3(99.90119418961288, 50.939999990165234, -0.2676971472132734);
  5.         Vec3 explosionPos = new Vec3(97.5, 51.5, -0.5);
  6.         Plane[] coll = new Plane[]{
  7.                 new Plane(99, 49 - 1.0E-7, -1 - 1.0E-7, 99, 51 + 1.0E-7, 0 + 1.0E-7),
  8.                 new Plane(98, 51.1875 - 1.0E-7, -1 - 1.0E-7, 98, 51.5625 + 1.0E-7, 0 + 1.0E-7),
  9.                 new Plane(47, 102 - 1.0E-7, -3 - 1.0E-7, 47, 103 + 1.0E-7, -1 + 1.0E-7)
  10.         };
  11.         int bb = Integer.MAX_VALUE;
  12.         for (float syaw = 90f; syaw < 105f; syaw += 0.1f) {
  13.             for (float yaw = 80f; yaw < 100f; yaw += 0.1f) {
  14.                 L:
  15.                 for (float pitch = -45f; pitch < 45f; pitch += 0.1f) {
  16.                     Vec3 pPos = new Vec3(startPos.x, startPos.y, startPos.z);
  17.                     float p = MathHelp.MCcos(pitch * MathHelp.RAD());
  18.                     Vec3 pVel = new Vec3(
  19.                             -MathHelp.MCsin(yaw * MathHelp.RAD()) * p,
  20.                             -MathHelp.MCsin(pitch * MathHelp.RAD()),
  21.                             MathHelp.MCcos(yaw * MathHelp.RAD()) * p
  22.                     ).normalize().multiply(1.5f);
  23.                     double juX = (double) (-MathHelp.MCsin(syaw * MathHelp.RAD()) * 0.2f) * .91f;
  24.                     double juZ = (double) (MathHelp.MCcos(syaw * MathHelp.RAD()) * 0.2f) * .91f;
  25.                     juX = Math.abs(juX) < .003 ? 0 : juX;
  26.                     juZ = Math.abs(juZ) < .003 ? 0 : juZ;
  27.                     pVel = pVel.add(juX, 0.33319999363422365, juZ);
  28.                     for (int i = 0; i < 2; i++) {
  29.                         for (Plane plane : coll) {
  30.                             double hitP = (plane.negX - pPos.x) / pVel.x;
  31.                             double hitY = pPos.y + hitP * pVel.y;
  32.                             double hitZ = pPos.z + hitP * pVel.z;
  33.                             if (0.0 < hitP && hitP < 1.0 && plane.negY < hitY && hitY < plane.posY && plane.negZ < hitZ && hitZ < plane.posZ) {
  34.                                 break L;
  35.                             }
  36.                         }
  37.                         pPos.x = (pPos.x + pVel.x);
  38.                         pPos.y = (pPos.y + pVel.y);
  39.                         pPos.z = (pPos.z + pVel.z);
  40.                         pVel.x *= .99f;
  41.                         pVel.y = (pVel.y * .99f) - .03f;
  42.                         pVel.z *= .99f;
  43.                     }
  44.                     Vec3 footDist = pPos.subtract(explosionPos);
  45.                     double exStrength = ((float) Math.sqrt(footDist.x * footDist.x + footDist.y * footDist.y + footDist.z * footDist.z)) / 10.0f;
  46.                     if (exStrength <= 1.0) {
  47.                         exStrength = 1.0 - exStrength;
  48.                         double eyeDist = pPos.y + 0.2125f - explosionPos.y;
  49.                         double dirStrength = (float) Math.sqrt(footDist.x * footDist.x + eyeDist * eyeDist + footDist.z * footDist.z);
  50.                         pVel.x += ((footDist.x / dirStrength) * exStrength * 2);
  51.                         pVel.y += ((eyeDist / dirStrength) * exStrength * 2);
  52.                         pVel.z += ((footDist.z / dirStrength) * exStrength * 2);
  53.                     }
  54.                     int ticks = 0;
  55.                     tra:
  56.                     {
  57.                         for (int i = 0; i < 100; i++) {
  58.                             ticks++;
  59.                             for (Plane plane : coll) {
  60.                                 double hitP = (plane.negX - pPos.x) / pVel.x;
  61.                                 double hitY = pPos.y + hitP * pVel.y;
  62.                                 double hitZ = pPos.z + hitP * pVel.z;
  63.                                 if (0.0 < hitP && hitP < 1.0 && plane.negY < hitY && hitY < plane.posY && plane.negZ < hitZ && hitZ < plane.posZ) {
  64.                                     break tra;
  65.                                 }
  66.                             }
  67.                             pPos.x = (pPos.x + pVel.x);
  68.                             pPos.y = (pPos.y + pVel.y);
  69.                             pPos.z = (pPos.z + pVel.z);
  70.                             pVel.x *= .99f;
  71.                             pVel.y = (pVel.y * .99f) - .03f;
  72.                             pVel.z *= .99f;
  73.                         }
  74.                         continue;
  75.                     }
  76.                     if (pPos.y > 102.58 && pPos.y < 102.73 && pPos.x < 48.3
  77.                             && ticks <= bb) {
  78.                         bb = ticks;
  79.                         System.out.println(String.format("ticks: %d, yaw: %f, pitch: %f, syaw: %f", ticks, yaw, pitch, syaw));
  80.                     }
  81.                 }
  82.             }
  83.         }
  84.     }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement