EnvironmentStage class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/engine/stages/EnvironmentStage.java

implements: Stage

Поля (12)

МодификаторыТипИмя
Integer var10
Biome var11
EnvironmentProvider var12
int var13
BufferBundle.Access.View var2
PixelBufferView var3
BufferBundle.Access.View var4
VoxelBufferView var5
Bounds3i var6
Vector3i var7
EnvironmentProvider.Context var8
Registry var9

Методы (3)

МодификаторыВозвратСигнатура
for for(var7.x = var6.min.x; var7.x < var6.max.x; var7.x++)
for for(var7.z = var6.min.z; var7.z < var6.max.z; var7.z++)
for for(var7.y = var6.min.y; var7.y < var6.max.y; var7.y++)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.engine.stages;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.GridUtils;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.Registry;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.biome.Biome;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.BufferBundle;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.CountedPixelBuffer;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.VoxelBuffer;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.type.BufferType;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.bufferbundle.buffers.type.ParametrizedBufferType;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.views.PixelBufferView;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.engine.views.VoxelBufferView;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.environmentproviders.EnvironmentProvider;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.workerindexer.WorkerIndexer;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.worldstructure.WorldStructure;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class EnvironmentStage class="kw">implements Stage {
   @Nonnull
   class="kw">public class="kw">static class="kw">final Class<CountedPixelBuffer> biomeBufferClass = CountedPixelBuffer.class;
   @Nonnull
   class="kw">public class="kw">static class="kw">final Class<Integer> biomeTypeClass = Integer.class;
   @Nonnull
   class="kw">public class="kw">static class="kw">final Class<VoxelBuffer> environmentBufferClass = VoxelBuffer.class;
   @Nonnull
   class="kw">public class="kw">static class="kw">final Class<Integer> environmentClass = Integer.class;
   @Nonnull
   class="kw">private class="kw">final ParametrizedBufferType biomeInputBufferType;
   @Nonnull
   class="kw">private class="kw">final ParametrizedBufferType environmentOutputBufferType;
   @Nonnull
   class="kw">private class="kw">final Bounds3i inputBounds_bufferGrid;
   @Nonnull
   class="kw">private class="kw">final String stageName;
   @Nonnull
   class="kw">private class="kw">final WorkerIndexer.Data<WorldStructure> worldStructure_workerData;

   class="kw">public EnvironmentStage(
      @Nonnull String var1, @Nonnull ParametrizedBufferType var2, @Nonnull ParametrizedBufferType var3, @Nonnull WorkerIndexer.Data<WorldStructure> var4
   ) {
      assert var2.isValidType(biomeBufferClass, biomeTypeClass);
      assert var3.isValidType(environmentBufferClass, environmentClass);
      this.biomeInputBufferType = var2;
      this.environmentOutputBufferType = var3;
      this.stageName = var1;
      this.worldStructure_workerData = var4;
      this.inputBounds_bufferGrid = GridUtils.createUnitBounds3i(Vector3iUtil.ZERO);
   }

   @Override
   class="kw">public void run(@Nonnull Stage.Context var1) {
      BufferBundle.Access.View var2 = var1.bufferAccess.get(this.biomeInputBufferType);
      PixelBufferView var3 = new PixelBufferView<>(var2, biomeTypeClass);
      BufferBundle.Access.View var4 = var1.bufferAccess.get(this.environmentOutputBufferType);
      VoxelBufferView var5 = new VoxelBufferView<>(var4, environmentClass);
      Bounds3i var6 = var5.getBounds();
      Vector3i var7 = new Vector3i(var6.min);
      EnvironmentProvider.Context var8 = new EnvironmentProvider.Context(var7);
      Registry var9 = this.worldStructure_workerData.get(var1.workerId).getBiomeRegistry();

      for (var7.x = var6.min.x; var7.x < var6.max.x; var7.x++) {
         for (var7.z = var6.min.z; var7.z < var6.max.z; var7.z++) {
            Integer var10 = var3.get(var7.x, 0, var7.z);
            assert var10 != null;
            Biome var11 = var9.getObject(var10);
            assert var11 != null;
            EnvironmentProvider var12 = var11.getEnvironmentProvider();

            for (var7.y = var6.min.y; var7.y < var6.max.y; var7.y++) {
               int var13 = var12.getValue(var8);
               var5.set(var13, var7);
            }
         }
      }
   }

   @Nonnull
   @Override
   class="kw">public Map<BufferType, Bounds3i> getInputTypesAndBounds_bufferGrid() {
      class="kw">return Map.of(this.biomeInputBufferType, this.inputBounds_bufferGrid);
   }

   @Nonnull
   @Override
   class="kw">public List<BufferType> getOutputTypes() {
      class="kw">return List.of(this.environmentOutputBufferType);
   }

   @Nonnull
   @Override
   class="kw">public String getName() {
      class="kw">return this.stageName;
   }
}