RandomRotatorPropAsset class

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

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

extends: PropAsset

Поля (6)

МодификаторыТипИмя
Prop var2
WeightedMap var3
Prop var4
Prop var5
Prop var6
Prop var8

Методы (3)

МодификаторыВозвратСигнатура
for for(OrthogonalRotationAsset var7 : this.rotationAssets)
if if(!this.allHorizontal && this.rotationAssets.length == 0)
if if(this.allHorizontal)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.WeightedMap;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.assets.material.OrthogonalRotationAsset;
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.StaticRotatorProp;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.props.WeightedProp;
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.server.core.asset.type.blocktype.config.Rotation;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import javax.annotation.Nonnull;

class="kw">public class RandomRotatorPropAsset class="kw">extends PropAsset {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<RandomRotatorPropAsset> CODEC = BuilderCodec.builder(
         RandomRotatorPropAsset.class, RandomRotatorPropAsset::new, PropAsset.ABSTRACT_CODEC
      )
      .append(new KeyedCodec<>("Prop", PropAsset.CODEC, true), (var0, var1) -> var0.propAsset = var1, var0 -> var0.propAsset)
      .add()
      .append(
         new KeyedCodec<>("Rotations", new ArrayCodec<>(OrthogonalRotationAsset.CODEC, OrthogonalRotationAsset[]::new), true),
         (var0, var1) -> var0.rotationAssets = var1,
         var0 -> var0.rotationAssets
      )
      .add()
      .append(new KeyedCodec<>("HorizontalRotations", BuilderCodec.BOOLEAN, false), (var0, var1) -> var0.allHorizontal = var1, var0 -> var0.allHorizontal)
      .add()
      .append(new KeyedCodec<>("Seed", BuilderCodec.STRING, true), (var0, var1) -> var0.seed = var1, var0 -> var0.seed)
      .add()
      .build();
   @Nonnull
   class="kw">private PropAsset propAsset = new EmptyPropAsset();
   @Nonnull
   class="kw">private OrthogonalRotationAsset[] rotationAssets = new OrthogonalRotationAsset[0];
   class="kw">private boolean allHorizontal = false;
   @Nonnull
   class="kw">private String seed = "";

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

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

      if (!this.allHorizontal && this.rotationAssets.length == 0) {
         class="kw">return EmptyProp.INSTANCE;
      }

      Prop var2 = this.propAsset.build(var1);
      WeightedMap var3 = new WeightedMap<>();
      if (this.allHorizontal) {
         Prop var4 = new StaticRotatorProp(var2, RotationTuple.of(Rotation.Ninety, Rotation.None, Rotation.None), var1.materialCache);
         Prop var5 = new StaticRotatorProp(var2, RotationTuple.of(Rotation.OneEighty, Rotation.None, Rotation.None), var1.materialCache);
         Prop var6 = new StaticRotatorProp(var2, RotationTuple.of(Rotation.TwoSeventy, Rotation.None, Rotation.None), var1.materialCache);
         var3.add(var2, 1.0);
         var3.add(var4, 1.0);
         var3.add(var5, 1.0);
         var3.add(var6, 1.0);
      } else {
         for (OrthogonalRotationAsset var7 : this.rotationAssets) {
            Prop var8 = new StaticRotatorProp(var2, var7.build(), var1.materialCache);
            var3.add(var8, 1.0);
         }
      }

      class="kw">return new WeightedProp(var3, var1.parentSeed.child(this.seed).createSupplier().get());
   }

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