CaveNodeShapeUtils class
Пакет: com.hypixel.hytale.server.worldgen.cave.shape
Файл: com/hypixel/hytale/server/worldgen/cave/shape/CaveNodeShapeUtils.java
Поля (42)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BiDoubleToDoubleFunction |
LEFT |
|
double |
var10 |
|
double |
var12 |
|
double |
var14 |
|
double |
var15 |
|
double |
var16 |
|
double |
var17 |
|
double |
var18 |
|
double |
var19 |
|
double |
var19 |
|
Vector3d |
var2 |
|
|
var2 |
|
double |
var2 |
|
double |
var21 |
|
double |
var21 |
|
double |
var23 |
|
double |
var23 |
|
double |
var25 |
|
double |
var25 |
|
double |
var27 |
|
double |
var27 |
|
double |
var29 |
|
double |
var3 |
|
double |
var3 |
|
double |
var3 |
|
double |
var31 |
|
double |
var33 |
|
double |
var35 |
|
double |
var37 |
|
double |
var4 |
|
double |
var5 |
|
int |
var5 |
|
IBlockFluidCondition |
var6 |
|
byte |
var6 |
|
double |
var7 |
|
int |
var7 |
|
int |
var7 |
|
double |
var8 |
|
int |
var8 |
|
BlockType |
var8 |
|
double |
var9 |
|
Map |
var9 |
Методы (26)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
int |
getCoverHeightint getCoverHeight(int var0, int var1, int var2, int var3, boolean var4, @Nonnull CaveNodeType.CaveNodeCoverEntry var5, @Nonnull CaveNodeType.CaveNodeCoverEntry.Entry var6) |
static |
double |
getEndHeightdouble getEndHeight(@Nullable CaveNode var0, @Nonnull IDoubleRange var1, Random var2) |
static |
double |
getEndRadiusdouble getEndRadius(@Nullable CaveNode var0, @Nonnull IDoubleRange var1, Random var2) |
static |
double |
getEndRadiusdouble getEndRadius(@Nonnull CaveNodeShape var0, @Nonnull BiDoubleToDoubleFunction var1) |
static |
double |
getEndWidthdouble getEndWidth(@Nullable CaveNode var0, @Nonnull IDoubleRange var1, Random var2) |
abstract |
return |
getRadialProjectionreturn getRadialProjection(var0, var1.x, var1.y, var1.z, var2, var4, var6, var14, var16, var18) |
abstract |
return |
getRadialProjectionreturn getRadialProjection(var0, var15, var17, var19, var3, var5, var7, var33, var35, var37) |
|
|
if if(var2 == Vector3dUtil.ZERO) |
|
|
if if(var0 != null) |
|
|
if if(var3 != -1.0) |
|
|
if if(var0 != null) |
|
|
if if(var3 != -1.0) |
|
|
if if(var0 != null) |
|
|
if if(var3 != -1.0) |
|
|
if if(var0 instanceof CylinderCaveNodeShape) |
|
|
if if(var5 >= 0 && var5 <= 319) |
|
|
if if(var6 == ConstantBlockFluidCondition.DEFAULT_TRUE) |
|
|
if if(var6 == ConstantBlockFluidCondition.DEFAULT_FALSE) |
|
|
if if(var1 >= 0 && var1 <= 319) |
|
|
if if(var6 == 3) |
|
|
if if(var6 != 5) |
|
|
if if(var9 == null) |
|
|
if if(var19 == 0.0) |
static |
boolean |
invalidateCoverboolean invalidateCover(int var0,
int var1,
int var2,
CaveNodeType.CaveNodeCoverType var3,
@Nonnull ChunkGeneratorExecution var4,
@Nonnull BlockTypeAssetMap<String, BlockType> var5) |
static |
boolean |
isCoverMatchingParentboolean isCoverMatchingParent(int var0, int var1, int var2, @Nonnull ChunkGeneratorExecution var3, @Nonnull CaveNodeType.CaveNodeCoverEntry var4) |
|
return |
switchreturn switch(var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.cave.shape;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
class="kw">import com.hypixel.hytale.function.function.BiDoubleToDoubleFunction;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.procedurallib.condition.ConstantBlockFluidCondition;
class="kw">import com.hypixel.hytale.procedurallib.condition.IBlockFluidCondition;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockFace;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RequiredBlockFaceSupport;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CaveNode;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.ChunkGeneratorExecution;
class="kw">import com.hypixel.hytale.server.worldgen.util.BlockFluidEntry;
class="kw">import com.hypixel.hytale.server.worldgen.util.bounds.IWorldBounds;
class="kw">import java.util.Map;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class CaveNodeShapeUtils {
class="kw">public class="kw">static class="kw">final BiDoubleToDoubleFunction LEFT = (var0, var2) -> var0;
class="kw">public class="kw">static class="kw">final BiDoubleToDoubleFunction RIGHT = (var0, var2) -> var2;
class="kw">public class="kw">static class="kw">final BiDoubleToDoubleFunction MIN = Math::min;
class="kw">public class="kw">static class="kw">final BiDoubleToDoubleFunction MAX = Math::max;
class="kw">public CaveNodeShapeUtils() {
}
@Nonnull
class="kw">public class="kw">static Vector3d getBoxAnchor(@Nonnull Vector3d var0, @Nonnull IWorldBounds var1, double var2, double var4, double var6) {
double var8 = var1.fractionX(var2);
double var10 = var1.fractionY(var4);
double var12 = var1.fractionZ(var6);
class="kw">return var0.set(var8, var10, var12);
}
@Nonnull
class="kw">public class="kw">static Vector3d getLineAnchor(@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, double var3) {
double var5 = var1.x + var2.x * var3;
double var7 = var1.y + var2.y * var3;
double var9 = var1.z + var2.z * var3;
class="kw">return var0.set(var5, var7, var9);
}
@Nonnull
class="kw">public class="kw">static Vector3d getSphereAnchor(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, double var2, double var4, double var6, double var8, double var10, double var12
) {
double var14 = var8 * 2.0 - 1.0;
double var16 = var10 * 2.0 - 1.0;
double var18 = var12 * 2.0 - 1.0;
class="kw">return getRadialProjection(var0, var1.x, var1.y, var1.z, var2, var4, var6, var14, var16, var18);
}
@Nonnull
class="kw">public class="kw">static Vector3d getPipeAnchor(
@Nonnull Vector3d var0, @Nonnull Vector3d var1, @Nonnull Vector3d var2, double var3, double var5, double var7, double var9, double var11, double var13
) {
double var15 = var1.x + var2.x * var9;
double var17 = var1.y + var2.y * var9;
double var19 = var1.z + var2.z * var9;
double var21 = var2.length();
double var23 = var2.x / var21;
double var25 = var2.y / var21;
double var27 = var2.z / var21;
double var29 = 2.0 * var11 - 1.0;
double var31 = 2.0 * var13 - 1.0;
double var33 = -var25 * var29 - var27 * var31;
double var35 = var23 * var29;
double var37 = var23 * var31;
class="kw">return getRadialProjection(var0, var15, var17, var19, var3, var5, var7, var33, var35, var37);
}
@Nonnull
class="kw">public class="kw">static Vector3d getOffset(@Nullable CaveNode var0, @Nonnull CaveNodeType.CaveNodeChildEntry var1) {
Vector3d var2 = var1.getOffset();
if (var2 == Vector3dUtil.ZERO) {
class="kw">return var2;
}
if (var0 != null && var0.getShape() class="kw">instanceof PrefabCaveNodeShape) {
var2 = new Vector3d(var2);
((PrefabCaveNodeShape)var0.getShape()).getPrefabRotation().rotate(var2);
}
class="kw">return var2;
}
class="kw">public class="kw">static double getEndRadius(@Nullable CaveNode var0, @Nonnull IDoubleRange var1, Random var2) {
if (var0 != null) {
double var3 = getEndRadius(var0.getShape(), MIN);
if (var3 != -1.0) {
class="kw">return var3;
}
}
class="kw">return var1.getValue(var2);
}
class="kw">public class="kw">static double getEndWidth(@Nullable CaveNode var0, @Nonnull IDoubleRange var1, Random var2) {
if (var0 != null) {
double var3 = getEndRadius(var0.getShape(), LEFT);
if (var3 != -1.0) {
class="kw">return var3;
}
}
class="kw">return var1.getValue(var2);
}
class="kw">public class="kw">static double getEndHeight(@Nullable CaveNode var0, @Nonnull IDoubleRange var1, Random var2) {
if (var0 != null) {
double var3 = getEndRadius(var0.getShape(), RIGHT);
if (var3 != -1.0) {
class="kw">return var3;
}
}
class="kw">return var1.getValue(var2);
}
class="kw">public class="kw">static double getEndRadius(@Nonnull CaveNodeShape var0, @Nonnull BiDoubleToDoubleFunction var1) {
if (var0 class="kw">instanceof CylinderCaveNodeShape) {
class="kw">return ((CylinderCaveNodeShape)var0).getRadius2();
} else if (var0 class="kw">instanceof PipeCaveNodeShape) {
class="kw">return ((PipeCaveNodeShape)var0).getRadius2();
} else if (var0 class="kw">instanceof DistortedCaveNodeShape) {
double var2 = ((DistortedCaveNodeShape)var0).getShape().getWidthAt(1.0);
double var4 = ((DistortedCaveNodeShape)var0).getShape().getHeightAt(1.0);
class="kw">return var1.apply(var2, var4);
} else {
class="kw">return -1.0;
}
}
@Nullable
class="kw">public class="kw">static BlockFluidEntry getFillingBlock(@Nonnull CaveType var0, @Nonnull CaveNodeType var1, int var2, @Nonnull Random var3) {
class="kw">return var0.getFluidLevel().getHeight() >= var2 ? var0.getFluidLevel().getBlockEntry() : var1.getFilling(var3);
}
class="kw">protected class="kw">static int getCoverHeight(
int var0, int var1, int var2, int var3, boolean var4, @Nonnull CaveNodeType.CaveNodeCoverEntry var5, @Nonnull CaveNodeType.CaveNodeCoverEntry.Entry var6
) {
class="kw">return class="kw">switch (var5.getType()) {
case FLOOR -> var0 != Integer.MAX_VALUE && var1 == var0 ? var0 - 1 + var6.getOffset() : -1;
case CEILING -> var4 ? -1 : (var2 != Integer.MIN_VALUE && var3 == var2 ? var2 + 1 - var6.getOffset() : -1);
};
}
class="kw">public class="kw">static boolean isCoverMatchingParent(
int var0, int var1, int var2, @Nonnull ChunkGeneratorExecution var3, @Nonnull CaveNodeType.CaveNodeCoverEntry var4
) {
int var5 = var2 + var4.getType().parentOffset;
if (var5 >= 0 && var5 <= 319) {
IBlockFluidCondition var6 = var4.getParentCondition();
if (var6 == ConstantBlockFluidCondition.DEFAULT_TRUE) {
class="kw">return true;
}
if (var6 == ConstantBlockFluidCondition.DEFAULT_FALSE) {
class="kw">return false;
}
int var7 = var3.getBlock(var0, var5, var1);
int var8 = var3.getFluid(var0, var5, var1);
class="kw">return var6.eval(var7, var8);
} else {
class="kw">return false;
}
}
class="kw">public class="kw">static boolean invalidateCover(
int var0,
int var1,
int var2,
CaveNodeType.CaveNodeCoverType var3,
@Nonnull ChunkGeneratorExecution var4,
@Nonnull BlockTypeAssetMap<String, BlockType> var5
) {
if (var1 >= 0 && var1 <= 319) {
byte var6 = var4.getPriorityChunk().get(var0, var1, var2);
if (var6 == 3) {
class="kw">return true;
}
if (var6 != 5) {
class="kw">return false;
}
int var7 = var4.getBlock(var0, var1, var2);
BlockType var8 = var5.getAsset(var7);
Map var9 = var8.getSupport(var4.getRotationIndex(var0, var1, var2));
if (var9 == null) {
class="kw">return false;
}
class="kw">return class="kw">switch (var3) {
case FLOOR -> var9.containsKey(BlockFace.DOWN);
case CEILING -> var9.containsKey(BlockFace.UP);
};
} else {
class="kw">return false;
}
}
@Nonnull
class="kw">protected class="kw">static Vector3d getRadialProjection(
@Nonnull Vector3d var0, double var1, double var3, double var5, double var7, double var9, double var11, double var13, double var15, double var17
) {
double var19 = var13 * var13 + var15 * var15 + var17 * var17;
if (var19 == 0.0) {
class="kw">return var0.set(var1, var3, var5);
}
double var21 = Math.sqrt(1.0 / var19);
double var23 = Math.abs(var13) * var7 * var21;
double var25 = Math.abs(var15) * var9 * var21;
double var27 = Math.abs(var17) * var11 * var21;
var1 += var23 * var13;
var3 += var25 * var15;
var5 += var27 * var17;
class="kw">return var0.set(var1, var3, var5);
}
}