WeightedEntryAsset class

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

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

implements: Cleanable, JsonAssetWithMap<String, DefaultAssetMap<String, ClusterPropAsset.WeightedEntryAsset>>

Поля (5)

МодификаторыТипИмя
public static final AssetBuilderCodec<String, ClusterPropAsset.WeightedEntryAsset> CODEC
private AssetExtraInfo.Data data
private String id
private PropAsset propAsset
private double weight

Методы (2)

МодификаторыВозвратСигнатура
public void cleanUppublic void cleanUp()
public String getIdpublic String getId()

Исходный код

Показать/скрыть
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();
      }
   }
}