NearestBlockUtil class

Пакет: com.hypixel.hytale.math.util

Файл: com/hypixel/hytale/math/util/NearestBlockUtil.java

Поля (22)

МодификаторыТипИмя
final NearestBlockUtil.IterationElement[] DEFAULT_ELEMENTS
private final int ox
private final int oy
private final int oz
int var10
int var11
double var12
double var14
double var16
double var18
double var20
double var22
double var24
Vector3i var26
var26
Vector3i var27
double var28
var28
int var9
private final DoubleUnaryOperator x
private final DoubleUnaryOperator y
private final DoubleUnaryOperator z

Методы (11)

МодификаторыВозвратСигнатура
public IterationElementpublic IterationElement(int var1, int var2, int var3, DoubleUnaryOperator var4, DoubleUnaryOperator var5, DoubleUnaryOperator var6)
abstract throw new UnsupportedOperationExceptionthrow new UnsupportedOperationException()
abstract return findNearestBlockreturn findNearestBlock(DEFAULT_ELEMENTS, var0, var2, var4, var6, var7)
for for(NearestBlockUtil.IterationElement var33 : var0)
public int getOffsetXpublic int getOffsetX()
public int getOffsetYpublic int getOffsetY()
public int getOffsetZpublic int getOffsetZ()
public DoubleUnaryOperator getXpublic DoubleUnaryOperator getX()
public DoubleUnaryOperator getYpublic DoubleUnaryOperator getY()
public DoubleUnaryOperator getZpublic DoubleUnaryOperator getZ()
if if(var26 == null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.math.util;

class="kw">import java.util.function.BiPredicate;
class="kw">import java.util.function.DoubleUnaryOperator;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class="kw">final class NearestBlockUtil {
   class="kw">public class="kw">static class="kw">final NearestBlockUtil.IterationElement[] DEFAULT_ELEMENTS = new NearestBlockUtil.IterationElement[]{
      new NearestBlockUtil.IterationElement(-1, 0, 0, var0 -> 0.0, var0 -> var0, var0 -> var0),
      new NearestBlockUtil.IterationElement(1, 0, 0, var0 -> 1.0, var0 -> var0, var0 -> var0),
      new NearestBlockUtil.IterationElement(0, -1, 0, var0 -> var0, var0 -> 0.0, var0 -> var0),
      new NearestBlockUtil.IterationElement(0, 1, 0, var0 -> var0, var0 -> 1.0, var0 -> var0),
      new NearestBlockUtil.IterationElement(0, 0, -1, var0 -> var0, var0 -> var0, var0 -> 0.0),
      new NearestBlockUtil.IterationElement(0, 0, 1, var0 -> var0, var0 -> var0, var0 -> 1.0)
   };

   class="kw">private NearestBlockUtil() {
      throw new UnsupportedOperationException();
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(@Nonnull Vector3d var0, @Nonnull BiPredicate<Vector3i, T> var1, T var2) {
      class="kw">return findNearestBlock(DEFAULT_ELEMENTS, var0.x(), var0.y(), var0.z(), var1, var2);
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(
      @Nonnull NearestBlockUtil.IterationElement[] var0, @Nonnull Vector3d var1, @Nonnull BiPredicate<Vector3i, T> var2, T var3
   ) {
      class="kw">return findNearestBlock(var0, var1.x(), var1.y(), var1.z(), var2, var3);
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(double var0, double var2, double var4, @Nonnull BiPredicate<Vector3i, T> var6, T var7) {
      class="kw">return findNearestBlock(DEFAULT_ELEMENTS, var0, var2, var4, var6, var7);
   }

   @Nullable
   class="kw">public class="kw">static <T> Vector3i findNearestBlock(
      @Nonnull NearestBlockUtil.IterationElement[] var0, double var1, double var3, double var5, @Nonnull BiPredicate<Vector3i, T> var7, T var8
   ) {
      int var9 = MathUtil.floor(var1);
      int var10 = MathUtil.floor(var3);
      int var11 = MathUtil.floor(var5);
      double var12 = var1 - var9;
      double var14 = var3 - var10;
      double var16 = var5 - var11;
      Vector3i var26 = null;
      Vector3i var27 = new Vector3i();
      double var28 = Double.POSITIVE_INFINITY;

      for (NearestBlockUtil.IterationElement var33 : var0) {
         double var18 = var12 - var33.getX().applyAsDouble(var12);
         double var20 = var14 - var33.getY().applyAsDouble(var14);
         double var22 = var16 - var33.getZ().applyAsDouble(var16);
         double var24 = var18 * var18 + var20 * var20 + var22 * var22;
         var27.set(var9 + var33.getOffsetX(), var10 + var33.getOffsetY(), var11 + var33.getOffsetZ());
         if (var24 < var28 && var7.test(var27, var8)) {
            var28 = var24;
            if (var26 == null) {
               var26 = new Vector3i();
            }

            var26.set(var27);
         }
      }

      class="kw">return var26;
   }

   class="kw">public class="kw">static class IterationElement {
      class="kw">private class="kw">final int ox;
      class="kw">private class="kw">final int oy;
      class="kw">private class="kw">final int oz;
      class="kw">private class="kw">final DoubleUnaryOperator x;
      class="kw">private class="kw">final DoubleUnaryOperator y;
      class="kw">private class="kw">final DoubleUnaryOperator z;

      class="kw">public IterationElement(int var1, int var2, int var3, DoubleUnaryOperator var4, DoubleUnaryOperator var5, DoubleUnaryOperator var6) {
         this.ox = var1;
         this.oy = var2;
         this.oz = var3;
         this.x = var4;
         this.y = var5;
         this.z = var6;
      }

      class="kw">public int getOffsetX() {
         class="kw">return this.ox;
      }

      class="kw">public int getOffsetY() {
         class="kw">return this.oy;
      }

      class="kw">public int getOffsetZ() {
         class="kw">return this.oz;
      }

      class="kw">public DoubleUnaryOperator getX() {
         class="kw">return this.x;
      }

      class="kw">public DoubleUnaryOperator getY() {
         class="kw">return this.y;
      }

      class="kw">public DoubleUnaryOperator getZ() {
         class="kw">return this.z;
      }
   }
}