ClusterPropAsset class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/assets/props/ClusterPropAsset.java

extends: PropAsset

Поля (12)

МодификаторыТипИмя
public static final AssetBuilderCodec<String, ClusterPropAsset.WeightedEntryAsset> CODEC
private AssetExtraInfo.Data data
private String id
private PropAsset propAsset
Pattern var10
Scanner var11
int var12
WeightedMap var2
Prop var7
Vector3i var8
Vector3i var9
private double weight

Методы (6)

МодификаторыВозвратСигнатура
public WeightedEntryAssetpublic WeightedEntryAsset()
public void cleanUppublic void cleanUp()
for for(ClusterPropAsset.WeightedEntryAsset var6 : this.weightedEntryAssets)
for for(ClusterPropAsset.WeightedEntryAsset var4 : this.weightedEntryAssets)
public String getIdpublic String getId()
if if(var8.x != 1 || var8.z != 1)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetExtraInfo;
class="kw">import com.hypixel.hytale.assetstore.codec.AssetBuilderCodec;
class="kw">import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.LoggerUtil;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.WeightedMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.Cleanable;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.curves.ConstantCurveAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.curves.CurveAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.ConstantPatternAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.patterns.PatternAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.scanners.DirectScannerAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.scanners.ScannerAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.patterns.ConstantPattern;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.patterns.Pattern;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.EmptyProp;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.deprecated.ClusterProp;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.DirectScanner;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.scanners.Scanner;
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.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;

class="kw">public class ClusterPropAsset class="kw">extends PropAsset {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<ClusterPropAsset> CODEC = BuilderCodec.builder(ClusterPropAsset.class, ClusterPropAsset::new, PropAsset.ABSTRACT_CODEC)
      .append(new KeyedCodec<>("Range", Codec.INTEGER, false), (var0, var1) -> var0.range = var1, var0 -> var0.range)
      .addValidator(Validators.greaterThanOrEqual(0))
      .add()
      .append(new KeyedCodec<>("DistanceCurve", CurveAsset.CODEC, true), (var0, var1) -> var0.distanceCurve = var1, var0 -> var0.distanceCurve)
      .add()
      .append(new KeyedCodec<>("Seed", Codec.STRING, false), (var0, var1) -> var0.seed = var1, var0 -> var0.seed)
      .add()
      .append(
         new KeyedCodec<>("WeightedProps", new ArrayCodec<>(ClusterPropAsset.WeightedEntryAsset.CODEC, ClusterPropAsset.WeightedEntryAsset[]::new), true),
         (var0, var1) -> var0.weightedEntryAssets = var1,
         var0 -> var0.weightedEntryAssets
      )
      .add()
      .append(new KeyedCodec<>("Pattern", PatternAsset.CODEC, false), (var0, var1) -> var0.patternAsset = var1, var0 -> var0.patternAsset)
      .add()
      .append(new KeyedCodec<>("Scanner", ScannerAsset.CODEC, false), (var0, var1) -> var0.scannerAsset = var1, var0 -> var0.scannerAsset)
      .add()
      .build();
   class="kw">private int range = 0;
   class="kw">private CurveAsset distanceCurve = new ConstantCurveAsset();
   class="kw">private String seed = "A";
   class="kw">private ClusterPropAsset.WeightedEntryAsset[] weightedEntryAssets = new ClusterPropAsset.WeightedEntryAsset[0];
   class="kw">private PatternAsset patternAsset = new ConstantPatternAsset();
   class="kw">private ScannerAsset scannerAsset = new DirectScannerAsset();

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

   @Nonnull
   @Override
   class="kw">public Prop build(@Nonnull PropAsset.Argument var1) {
      if (super.skip()) {
         class="kw">return EmptyProp.INSTANCE;
      }

      WeightedMap var2 = new WeightedMap<>();

      for (ClusterPropAsset.WeightedEntryAsset var6 : this.weightedEntryAssets) {
         Prop var7 = var6.propAsset.build(var1);
         Vector3i var8 = var7.getReadBounds_voxelGrid().getSize();
         Vector3i var9 = var7.getWriteBounds_voxelGrid().getSize();
         if (var8.x != 1 || var8.z != 1) {
            LoggerUtil.getLogger().log(Level.WARNING, "Cluster Prop child has a read area larger than a column.");
         } else if (var9.x == 1 && var9.z == 1) {
            var2.add(var6.propAsset.build(var1), var6.weight);
         } else {
            LoggerUtil.getLogger().log(Level.WARNING, "Cluster Prop child has a write area larger than a column.");
         }
      }

      Pattern var10 = this.patternAsset == null ? ConstantPattern.INSTANCE_TRUE : this.patternAsset.build(PatternAsset.argumentFrom(var1));
      Scanner var11 = this.scannerAsset == null ? new DirectScanner() : this.scannerAsset.build(ScannerAsset.argumentFrom(var1));
      int var12 = var1.parentSeed.child(this.seed).createSupplier().get();
      class="kw">return new ClusterProp(this.range, this.distanceCurve.build(), var12, var2, var10, var11);
   }

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

      for (ClusterPropAsset.WeightedEntryAsset var4 : this.weightedEntryAssets) {
         var4.cleanUp();
      }

      this.patternAsset.cleanUp();
      this.scannerAsset.cleanUp();
   }

   class="kw">public class="kw">static class WeightedEntryAsset class="kw">implements Cleanable, JsonAssetWithMap<String, DefaultAssetMap<String, ClusterPropAsset.WeightedEntryAsset>> {
      @Nonnull
      class="kw">public class="kw">static class="kw">final AssetBuilderCodec<String, ClusterPropAsset.WeightedEntryAsset> CODEC = AssetBuilderCodec.builder(
            ClusterPropAsset.WeightedEntryAsset.class,
            ClusterPropAsset.WeightedEntryAsset::new,
            Codec.STRING,
            (var0, var1) -> var0.id = var1,
            var0 -> var0.id,
            (var0, var1) -> var0.data = var1,
            var0 -> var0.data
         )
         .append(new KeyedCodec<>("Weight", Codec.DOUBLE, true), (var0, var1) -> var0.weight = var1, var0 -> var0.weight)
         .addValidator(Validators.greaterThan(0.0))
         .add()
         .append(new KeyedCodec<>("ColumnProp", PropAsset.CODEC, true), (var0, var1) -> var0.propAsset = var1, var0 -> var0.propAsset)
         .add()
         .build();
      class="kw">private String id;
      class="kw">private AssetExtraInfo.Data data;
      class="kw">private double weight = 1.0;
      class="kw">private PropAsset propAsset;

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

      class="kw">public String getId() {
         class="kw">return this.id;
      }

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