FieldFunctionMaterialProvider class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.materialproviders

Файл: com/hypixel/hytale/builtin/hytalegenerator/materialproviders/FieldFunctionMaterialProvider.java

extends: MaterialProvider<V>

Поля (4)

МодификаторыТипИмя
double bottom
MaterialProvider<V> materialProvider
double top
double var2

Методы (7)

МодификаторыВозвратСигнатура
public FieldDelimiterpublic FieldDelimiter(@Nonnull MaterialProvider<V> var1, double var2, double var4)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("delimiters contain null value")
for for(FieldFunctionMaterialProvider.FieldDelimiter var4 : var2)
for for(FieldFunctionMaterialProvider.FieldDelimiter var7 : this.fieldDelimiters)
abstract for for(int var5 = 0; var5 < var2.size()
if if(var4 == null)
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;
      }
   }
}