FieldDelimiter class
Пакет: com.hypixel.hytale.builtin.hytalegenerator.materialproviders
Файл: com/hypixel/hytale/builtin/hytalegenerator/materialproviders/FieldFunctionMaterialProvider.java
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
bottom |
|
MaterialProvider<V> |
materialProvider |
|
double |
top |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
boolean |
isInsideboolean isInside(double var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.materialproviders;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class FieldFunctionMaterialProvider<V> class="kw">extends MaterialProvider<V> {
@Nonnull
class="kw">private class="kw">final Density density;
@Nonnull
class="kw">private class="kw">final FieldFunctionMaterialProvider.FieldDelimiter<V>[] fieldDelimiters;
@Nonnull
class="kw">private class="kw">final Density.Context rDensityContext;
class="kw">public FieldFunctionMaterialProvider(@Nonnull Density var1, @Nonnull List<FieldFunctionMaterialProvider.FieldDelimiter<V>> var2) {
this.density = var1;
this.fieldDelimiters = new FieldFunctionMaterialProvider.FieldDelimiter[var2.size()];
for (FieldFunctionMaterialProvider.FieldDelimiter var4 : var2) {
if (var4 == null) {
throw new IllegalArgumentException("delimiters contain null value");
}
}
for (int var5 = 0; var5 < var2.size(); var5++) {
this.fieldDelimiters[var5] = var2.get(var5);
}
this.rDensityContext = new Density.Context();
}
@Nullable
@Override
class="kw">public V getVoxelTypeAt(@Nonnull MaterialProvider.Context var1) {
this.rDensityContext.assign(var1);
double var2 = this.density.process(this.rDensityContext);
this.rDensityContext.clearReferences();
for (FieldFunctionMaterialProvider.FieldDelimiter var7 : this.fieldDelimiters) {
if (var7.isInside(var2)) {
class="kw">return var7.materialProvider.getVoxelTypeAt(var1);
}
}
class="kw">return null;
}
class="kw">public class="kw">static class FieldDelimiter<V> {
double top;
double bottom;
MaterialProvider<V> materialProvider;
class="kw">public FieldDelimiter(@Nonnull MaterialProvider<V> var1, double var2, double var4) {
this.bottom = var2;
this.top = var4;
this.materialProvider = var1;
}
boolean isInside(double var1) {
class="kw">return var1 < this.top && var1 >= this.bottom;
}
}
}