Condition interface
Пакет: com.hypixel.hytale.builtin.hytalegenerator.materialproviders.spaceanddepth
Файл: com/hypixel/hytale/builtin/hytalegenerator/materialproviders/spaceanddepth/SpaceAndDepthMaterialProvider.java
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
boolean |
qualifiesboolean qualifies(int var1, int var2, int var3, int var4, int var5, int var6, int var7) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.materialproviders.spaceanddepth;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.materialproviders.MaterialProvider;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class SpaceAndDepthMaterialProvider<V> class="kw">extends MaterialProvider<V> {
@Nonnull
class="kw">private class="kw">final SpaceAndDepthMaterialProvider.LayerContextType layerContextType;
@Nonnull
class="kw">private class="kw">final SpaceAndDepthMaterialProvider.Layer<V>[] layers;
@Nonnull
class="kw">private class="kw">final SpaceAndDepthMaterialProvider.Condition condition;
class="kw">private class="kw">final int maxDistance;
class="kw">public SpaceAndDepthMaterialProvider(
@Nonnull SpaceAndDepthMaterialProvider.LayerContextType var1,
@Nonnull List<SpaceAndDepthMaterialProvider.Layer<V>> var2,
@Nonnull SpaceAndDepthMaterialProvider.Condition var3,
int var4
) {
this.layerContextType = var1;
this.maxDistance = var4;
this.layers = new SpaceAndDepthMaterialProvider.Layer[var2.size()];
for (int var5 = 0; var5 < var2.size(); var5++) {
SpaceAndDepthMaterialProvider.Layer var6 = var2.get(var5);
if (var6 == null) {
LoggerUtil.getLogger().warning("Couldn't retrieve layer with index " + var5);
} else {
this.layers[var5] = var6;
}
}
this.condition = var3;
}
@Nullable
@Override
class="kw">public V getVoxelTypeAt(@Nonnull MaterialProvider.Context var1) {
int var2 = class="kw">switch (this.layerContextType) {
case DEPTH_INTO_FLOOR -> var1.depthIntoFloor;
case DEPTH_INTO_CEILING -> var1.depthIntoCeiling;
};
if (var2 > this.maxDistance) {
class="kw">return null;
}
if (!this.condition
.qualifies(var1.position.x, var1.position.y, var1.position.z, var1.depthIntoFloor, var1.depthIntoCeiling, var1.spaceAboveFloor, var1.spaceBelowCeiling)
)
{
class="kw">return null;
}
MaterialProvider var3 = null;
int var4 = 0;
for (SpaceAndDepthMaterialProvider.Layer var8 : this.layers) {
int var9 = var8.getThicknessAt(
var1.position.x,
var1.position.y,
var1.position.z,
var1.depthIntoFloor,
var1.depthIntoCeiling,
var1.spaceAboveFloor,
var1.spaceBelowCeiling,
var1.distanceToBiomeEdge
);
int var10 = var4 + var9;
if (var2 > var4 && var2 <= var10) {
var3 = var8.getMaterialProvider();
break;
}
var4 = var10;
}
class="kw">return var3 == null ? null : var3.getVoxelTypeAt(var1);
}
class="kw">public class="kw">interface Condition {
boolean qualifies(int var1, int var2, int var3, int var4, int var5, int var6, int var7);
}
class="kw">public class="kw">abstract class="kw">static class Layer<V> {
class="kw">public Layer() {
}
class="kw">public class="kw">abstract int getThicknessAt(int var1, int var2, int var3, int var4, int var5, int var6, int var7, double var8);
@Nullable
class="kw">public class="kw">abstract MaterialProvider<V> getMaterialProvider();
}
class="kw">public enum LayerContextType {
DEPTH_INTO_FLOOR,
DEPTH_INTO_CEILING;
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<SpaceAndDepthMaterialProvider.LayerContextType> CODEC = new EnumCodec<>(
SpaceAndDepthMaterialProvider.LayerContextType.class, EnumCodec.EnumStyle.LEGACY
);
LayerContextType() {
}
}
}