SpawnerNodeActionAsset class

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

Файл: com/hypixel/hytale/builtin/hytalegenerator/assets/graph/nodeactions/SpawnerNodeActionAsset.java

extends: NodeActionAsset

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.bounds.DecimalBounds3dAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.graph.GraphGeneratorAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.graph.contentsuppliers.ConstantContentSupplierAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.graph.contentsuppliers.ContentSupplierAsset;
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.vectorproviders.ConstantVectorProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.vectorproviders.VectorProviderAsset;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.nodeactions.EmptyNodeAction;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.nodeactions.NodeAction;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.graph.nodeactions.SpawnerNodeAction;
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.validation.Validators;
class="kw">import javax.annotation.Nonnull;

class="kw">public class SpawnerNodeActionAsset class="kw">extends NodeActionAsset {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<SpawnerNodeActionAsset> CODEC = BuilderCodec.builder(
         SpawnerNodeActionAsset.class, SpawnerNodeActionAsset::new, NodeActionAsset.ABSTRACT_CODEC
      )
      .append(new KeyedCodec<>("Offset", VectorProviderAsset.CODEC, true), (var0, var1) -> var0.offsetAsset = var1, var0 -> var0.offsetAsset)
      .add()
      .append(new KeyedCodec<>("Positions", PositionProviderAsset.CODEC, true), (var0, var1) -> var0.positionsAsset = var1, var0 -> var0.positionsAsset)
      .add()
      .append(
         new KeyedCodec<>("Content", ContentSupplierAsset.CODEC, true), (var0, var1) -> var0.contentSupplierAsset = var1, var0 -> var0.contentSupplierAsset
      )
      .add()
      .append(
         new KeyedCodec<>("ClusterBounds", DecimalBounds3dAsset.CODEC, true), (var0, var1) -> var0.clusterBoundsAsset = var1, var0 -> var0.clusterBoundsAsset
      )
      .add()
      .<Double>append(
         new KeyedCodec<>("MaxOffsetExclusive", Codec.DOUBLE, true), (var0, var1) -> var0.maxOffsetExclusive = var1, var0 -> var0.maxOffsetExclusive
      )
      .addValidator(Validators.greaterThanOrEqual(0.0))
      .add()
      .append(new KeyedCodec<>("CreateEdges", Codec.BOOLEAN, true), (var0, var1) -> var0.isCreateEdges = var1, var0 -> var0.isCreateEdges)
      .add()
      .build();
   @Nonnull
   class="kw">private VectorProviderAsset offsetAsset = ConstantVectorProviderAsset.INSTANCE;
   @Nonnull
   class="kw">private PositionProviderAsset positionsAsset = ListPositionProviderAsset.INSTANCE;
   @Nonnull
   class="kw">private ContentSupplierAsset contentSupplierAsset = ConstantContentSupplierAsset.INSTANCE;
   @Nonnull
   class="kw">private DecimalBounds3dAsset clusterBoundsAsset = DecimalBounds3dAsset.ZERO_INSTANCE;
   class="kw">private double maxOffsetExclusive = 0.0;
   class="kw">private boolean isCreateEdges = false;

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

   @Nonnull
   @Override
   class="kw">public NodeAction build(@Nonnull GraphGeneratorAsset.Argument var1) {
      if (super.skip()) {
         class="kw">return EmptyNodeAction.INSTANCE;
      }

      assert this.maxOffsetExclusive >= 0.0;
      class="kw">return new SpawnerNodeAction(
         this.offsetAsset.build(new VectorProviderAsset.Argument(var1)),
         this.positionsAsset.build(new PositionProviderAsset.Argument(var1)),
         this.contentSupplierAsset.build(var1),
         this.clusterBoundsAsset.build(),
         this.maxOffsetExclusive,
         this.isCreateEdges
      );
   }

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