Advertisement
Guest User

Untitled

a guest
Sep 20th, 2017
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.00 KB | None | 0 0
  1. package net.minecraft.src;
  2.  
  3. import java.util.Random;
  4.  
  5. public class Teleporter {
  6.  
  7.     public void findSpot(World world, Entity entity) {
  8.         byte byte0 = 16;
  9.         double d = -1D;
  10.         int i = MathHelper.floor_double(entity.posX);
  11.         int j = MathHelper.floor_double(entity.posY);
  12.         int k = MathHelper.floor_double(entity.posZ);
  13.         int l = i;
  14.         int i1 = j;
  15.         int j1 = k;
  16.         int k1 = 0;
  17.         int l1 = field_28117_a.nextInt(4);
  18.         for (int i2 = i - byte0; i2 <= i + byte0; i2++) {
  19.             double d1 = ((double)i2 + 0.5D) - entity.posX;
  20.             for (int j3 = k - byte0; j3 <= k + byte0; j3++) {
  21.                 double d3 = ((double)j3 + 0.5D) - entity.posZ;
  22.                 for (int k4 = 127; k4 >= 0; k4--) {
  23.                     if (!world.isAirBlock(i2, k4, j3)) {
  24.                         continue;
  25.                     }
  26.                     for (; k4 > 0 && world.isAirBlock(i2, k4 - 1, j3); k4--) {}
  27. label2:
  28.                     for (int k5 = l1; k5 < l1 + 4; k5++) {
  29.                         int l6 = k5 % 2;
  30.                         int i8 = 1 - l6;
  31.                         if (k5 % 4 >= 2) {
  32.                             l6 = -l6;
  33.                             i8 = -i8;
  34.                         }
  35.                         for (int j9 = 0; j9 < 3; j9++) {
  36.                             for (int k10 = 0; k10 < 4; k10++) {
  37.                                 for (int l11 = -1; l11 < 4; l11++) {
  38.                                     int j12 = i2 + (k10 - 1) * l6 + j9 * i8;
  39.                                     int l12 = k4 + l11;
  40.                                     int j13 = (j3 + (k10 - 1) * i8) - j9 * l6;
  41.                                     if (l11 < 0 && !world.getBlockMaterial(j12, l12, j13).isSolid() || l11 >= 0 && !world.isAirBlock(j12, l12, j13)) {
  42.                                         break label2;
  43.                                     }
  44.                                 }
  45.                             }
  46.                         }
  47.                         double d5 = ((double)k4 + 0.5D) - entity.posY;
  48.                         double d7 = d1 * d1 + d5 * d5 + d3 * d3;
  49.                         if (d < 0.0D || d7 < d) {
  50.                             d = d7;
  51.                             l = i2;
  52.                             i1 = k4;
  53.                             j1 = j3;
  54.                             k1 = k5 % 4;
  55.                         }
  56.                     }
  57.                 }
  58.             }
  59.         }
  60.  
  61.         if (d < 0.0D) {
  62.             for (int j2 = i - byte0; j2 <= i + byte0; j2++) {
  63.                 double d2 = ((double)j2 + 0.5D) - entity.posX;
  64.                 for (int k3 = k - byte0; k3 <= k + byte0; k3++) {
  65.                     double d4 = ((double)k3 + 0.5D) - entity.posZ;
  66.                     for (int l4 = 127; l4 >= 0; l4--) {
  67.                         if (!world.isAirBlock(j2, l4, k3)) {
  68.                             continue;
  69.                         }
  70.                         for (; world.isAirBlock(j2, l4 - 1, k3); l4--) {}
  71. label3:
  72.                         for (int l5 = l1; l5 < l1 + 2; l5++) {
  73.                             int i7 = l5 % 2;
  74.                             int j8 = 1 - i7;
  75.                             for (int k9 = 0; k9 < 4; k9++) {
  76.                                 for (int l10 = -1; l10 < 4; l10++) {
  77.                                     int i12 = j2 + (k9 - 1) * i7;
  78.                                     int k12 = l4 + l10;
  79.                                     int i13 = k3 + (k9 - 1) * j8;
  80.                                     if (l10 < 0 && !world.getBlockMaterial(i12, k12, i13).isSolid() || l10 >= 0 && !world.isAirBlock(i12, k12, i13)) {
  81.                                         break label3;
  82.                                     }
  83.                                 }
  84.                             }
  85.  
  86.                             double d6 = ((double)l4 + 0.5D) - entity.posY;
  87.                             double d8 = d2 * d2 + d6 * d6 + d4 * d4;
  88.                             if (d < 0.0D || d8 < d) {
  89.                                 d = d8;
  90.                                 l = j2;
  91.                                 i1 = l4;
  92.                                 j1 = k3;
  93.                                 k1 = l5 % 2;
  94.                             }
  95.                         }
  96.                     }
  97.                 }
  98.             }
  99.         }
  100.         int k2 = k1;
  101.         int l2 = l;
  102.         int i3 = i1;
  103.         int l3 = j1;
  104.         int i4 = k2 % 2;
  105.         int j4 = 1 - i4;
  106.         if (k2 % 4 >= 2) {
  107.             i4 = -i4;
  108.             j4 = -j4;
  109.         }
  110.         if (d < 0.0D) {
  111.             if (i1 < 70) {
  112.                 i1 = 70;
  113.             }
  114.             if (i1 > 118) {
  115.                 i1 = 118;
  116.             }
  117.             i3 = i1;
  118.         }
  119.  
  120.         double x = (double) l2 + 0.5D;
  121.         double y = (double) i3 + 1.5D;
  122.         double z = (double) l3 + 0.5D;
  123.         entity.setLocationAndAngles(x, y, z, entity.rotationYaw, 0.0F);
  124.         entity.motionX = entity.motionY = entity.motionZ = 0.0D;
  125.     }
  126.  
  127.     private Random field_28117_a;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement