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;
}
}
}