BasicWorldStructureAsset class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.assets.worldstructures.basic

Файл: com/hypixel/hytale/builtin/hytalegenerator/assets/worldstructures/basic/BasicWorldStructureAsset.java

extends: WorldStructureAsset

Поля (18)

МодификаторыТипИмя
final String BIOMES_KEY
DoubleRange var14
BiomeAsset var15
Biome var16
var16
var16
HashMap var17
BiomeAsset var18
Biome var19
ReferenceBundle var2
Density var20
int var21
PositionProvider var22
BiomeAsset var6
Registry var7
BiomeAsset var7
int var8
SimpleNoiseCarta var9

Методы (9)

МодификаторыВозвратСигнатура
abstract return new WorldStructurereturn new WorldStructure(var9, var7, var21, this.maxBiomeEdgeDistance, var22)
for for(FrameworkAsset var6 : this.frameworkAssets)
for for(BiomeRangeAsset var13 : this.biomeRangeAssets)
for for(FrameworkAsset var4 : this.frameworkAssets)
for for(BiomeRangeAsset var5 : this.biomeRangeAssets)
if if(var18 == null)
if if(var15 == null)
if if(var7 != null)
if if(var6 != null)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.codec.ContainedAssetCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.Registry;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.biomes.BiomeAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.density.ConstantDensityAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.density.DensityAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.framework.FrameworkAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.positionproviders.ListPositionProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.positionproviders.PositionProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.worldstructures.WorldStructureAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.biome.Biome;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.cartas.SimpleNoiseCarta;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.density.Density;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.positionproviders.PositionProvider;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.rangemaps.DoubleRange;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.referencebundle.ReferenceBundle;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.worldstructure.WorldStructure;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import java.util.HashMap;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BasicWorldStructureAsset class="kw">extends WorldStructureAsset {
   class="kw">public class="kw">static class="kw">final String BIOMES_KEY = "Biomes";
   class="kw">public class="kw">static class="kw">final String DEFAULT_BIOME_KEY = "DefaultBiome";
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<BasicWorldStructureAsset> CODEC = BuilderCodec.builder(
         BasicWorldStructureAsset.class, BasicWorldStructureAsset::new, WorldStructureAsset.ABSTRACT_CODEC
      )
      .append(
         new KeyedCodec<>("Biomes", new ArrayCodec<>(BiomeRangeAsset.CODEC, BiomeRangeAsset[]::new), true),
         (var0, var1) -> var0.biomeRangeAssets = var1,
         var0 -> var0.biomeRangeAssets
      )
      .add()
      .append(new KeyedCodec<>("Density", DensityAsset.CODEC, true), (var0, var1) -> var0.densityAsset = var1, var0 -> var0.densityAsset)
      .add()
      .<String>append(
         new KeyedCodec<>("DefaultBiome", new ContainedAssetCodec<>(BiomeAsset.class, BiomeAsset.CODEC), true),
         (var0, var1) -> var0.defaultBiomeId = var1,
         var0 -> var0.defaultBiomeId
      )
      .addValidatorLate(() -> BiomeAsset.VALIDATOR_CACHE.getValidator().late())
      .add()
      .<Integer>append(
         new KeyedCodec<>("DefaultTransitionDistance", Codec.INTEGER, true),
         (var0, var1) -> var0.biomeTransitionDistance = var1,
         var0 -> var0.biomeTransitionDistance
      )
      .addValidator(Validators.greaterThan(0))
      .add()
      .<Integer>append(
         new KeyedCodec<>("MaxBiomeEdgeDistance", Codec.INTEGER, true), (var0, var1) -> var0.maxBiomeEdgeDistance = var1, var0 -> var0.maxBiomeEdgeDistance
      )
      .addValidator(Validators.greaterThanOrEqual(0))
      .add()
      .append(
         new KeyedCodec<>("Framework", new ArrayCodec<>(FrameworkAsset.CODEC, FrameworkAsset[]::new), false),
         (var0, var1) -> var0.frameworkAssets = var1,
         var0 -> var0.frameworkAssets
      )
      .add()
      .append(
         new KeyedCodec<>("SpawnPositions", PositionProviderAsset.CODEC, false),
         (var0, var1) -> var0.spawnPositionsAsset = var1,
         var0 -> var0.spawnPositionsAsset
      )
      .add()
      .build();
   class="kw">private BiomeRangeAsset[] biomeRangeAssets = new BiomeRangeAsset[0];
   class="kw">private int biomeTransitionDistance = 32;
   class="kw">private int maxBiomeEdgeDistance = 0;
   class="kw">private DensityAsset densityAsset = new ConstantDensityAsset();
   class="kw">private String defaultBiomeId = "";
   class="kw">private FrameworkAsset[] frameworkAssets = new FrameworkAsset[0];
   class="kw">private PositionProviderAsset spawnPositionsAsset = ListPositionProviderAsset.INSTANCE;

   class="kw">public BasicWorldStructureAsset() {
   }

   @Nonnull
   @Override
   class="kw">public WorldStructure build(@Nonnull WorldStructureAsset.Argument var1) {
      ReferenceBundle var2 = new ReferenceBundle();

      for (FrameworkAsset var6 : this.frameworkAssets) {
         var6.build(var1, var2);
      }

      HashMap var17 = new HashMap<>();
      BiomeAsset var18 = (BiomeAsset)((DefaultAssetMap)BiomeAsset.getAssetStore().getAssetMap()).getAsset(this.defaultBiomeId);
      if (var18 == null) {
         LoggerUtil.getLogger().warning("Reverting to empty WorldStructure because couldn't find class="kw">default Biome asset with id: " + this.defaultBiomeId);
         class="kw">return WorldStructure.DEFAULT_INSTANCE;
      }

      Biome var19 = var18.build(var1.materialCache, var1.parentSeed, var2, var1.workerId, var1.threadBridge);
      var17.put(var18, var19);
      Density var20 = this.densityAsset.build(DensityAsset.from(var1, var2));
      Registry var7 = new Registry<>();
      int var8 = var7.getIdOrRegister(var19);
      SimpleNoiseCarta var9 = new SimpleNoiseCarta<>(var20, var8);

      for (BiomeRangeAsset var13 : this.biomeRangeAssets) {
         DoubleRange var14 = var13.getRange();
         BiomeAsset var15 = var13.getBiomeAsset();
         if (var15 == null) {
            LoggerUtil.getLogger().warning("Couldn't find Biome asset with name " + var13.getBiomeAssetId());
         } else {
            Biome var16;
            if (var17.containsKey(var15)) {
               var16 = var17.get(var15);
            } else {
               var16 = var15.build(var1.materialCache, var1.parentSeed, var2, var1.workerId, var1.threadBridge);
               var17.put(var15, var16);
            }

            var9.put(var14, var7.getIdOrRegister(var16));
         }
      }

      int var21 = Math.max(1, this.biomeTransitionDistance);
      PositionProvider var22 = this.spawnPositionsAsset.build(new PositionProviderAsset.Argument(var1.parentSeed, var2, var1.workerId, var1.threadBridge));
      class="kw">return new WorldStructure(var9, var7, var21, this.maxBiomeEdgeDistance, var22);
   }

   @Nonnull
   @Override
   class="kw">public PositionProviderAsset getSpawnPositionsAsset() {
      class="kw">return this.spawnPositionsAsset;
   }

   @Override
   class="kw">public void cleanUp() {
      this.densityAsset.cleanUp();

      for (FrameworkAsset var4 : this.frameworkAssets) {
         var4.cleanUp();
      }

      BiomeAsset var7 = (BiomeAsset)((DefaultAssetMap)BiomeAsset.getAssetStore().getAssetMap()).getAsset(this.defaultBiomeId);
      if (var7 != null) {
         var7.cleanUp();
      }

      for (BiomeRangeAsset var5 : this.biomeRangeAssets) {
         BiomeAsset var6 = var5.getBiomeAsset();
         if (var6 != null) {
            var6.cleanUp();
         }
      }

      this.spawnPositionsAsset.cleanUp();
   }
}