ConnectedBlockPatternConfig class

Пакет: com.hypixel.hytale.server.core.universe.world.connectedblocks.config

Файл: com/hypixel/hytale/server/core/universe/world/connectedblocks/config/ConnectedBlockPatternConfig.java

Поля (22)

МодификаторыТипИмя
None, Ninety, OneEighty, TwoSeventy, All
public static final EnumCodec<ConnectedBlockPatternConfig.AllowedRotation> CODEC
public static final BuilderCodec<ConnectedBlockPatternConfig.RotationGroup> CODEC
final ArrayCodec<ConnectedBlockPatternConfig.RotationGroup> ROTATION_GROUP_ARRAY
break
break
break
break
private ConnectedBlockPatternConfig.AllowedRotation pitch
private ConnectedBlockPatternConfig.AllowedRotation roll
LinkedHashSet var1
ConnectedBlockPattern var1
Rotation var10
ObjectArrayList var2
ObjectArrayList var3
ObjectArrayList var4
ObjectListIterator var5
Rotation var6
ObjectListIterator var7
Rotation var8
ObjectListIterator var9
private ConnectedBlockPatternConfig.AllowedRotation yaw

Методы (10)

МодификаторыВозвратСигнатура
AllowedRotation AllowedRotation()
public RotationGrouppublic RotationGroup()
public void addRotationTuplespublic void addRotationTuples(LinkedHashSet<RotationTuple> var1)
public void addRotationspublic void addRotations(Collection<Rotation> var1)
for for(ConnectedBlockPatternConfig.RotationGroup var5 : var0.rotationGroups)
abstract for for(int var2 = 0; var2 < this.allowedTransformRotations.size()
public ConnectedBlockPatternOutput getOutputConnectedBlockPatternOutput getOutput()
if if(var0.rotationGroups != null)
public boolean isTransformRulesWithOrientationboolean isTransformRulesWithOrientation()
switch switch(this)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.connectedblocks.config;

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.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.protocol.ConnectedBlockPattern;
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 com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule.ConnectedBlockRule;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import java.util.Collection;
class="kw">import java.util.LinkedHashSet;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class ConnectedBlockPatternConfig {
   class="kw">private class="kw">static class="kw">final ArrayCodec<ConnectedBlockPatternConfig.RotationGroup> ROTATION_GROUP_ARRAY = ArrayCodec.ofBuilderCodec(
      ConnectedBlockPatternConfig.RotationGroup.CODEC, ConnectedBlockPatternConfig.RotationGroup[]::new
   );
   class="kw">public class="kw">static class="kw">final BuilderCodec<ConnectedBlockPatternConfig> CODEC = BuilderCodec.builder(
         ConnectedBlockPatternConfig.class, ConnectedBlockPatternConfig::new
      )
      .append(new KeyedCodec<>("Rule", ConnectedBlockRule.CODEC, true), (var0, var1) -> var0.rule = var1, var0 -> var0.rule)
      .add()
      .append(new KeyedCodec<>("Output", ConnectedBlockPatternOutput.CODEC, false), (var0, var1) -> var0.output = var1, var0 -> var0.output)
      .add()
      .append(
         new KeyedCodec<>("TransformRulesWithOrientation", Codec.BOOLEAN),
         (var0, var1) -> var0.transformRulesWithOrientation = var1,
         var0 -> var0.transformRulesWithOrientation
      )
      .add()
      .append(new KeyedCodec<>("RotationTransforms", ROTATION_GROUP_ARRAY, false), (var0, var1) -> var0.rotationGroups = var1, var0 -> var0.rotationGroups)
      .add()
      .afterDecode(var0 -> {
         if (var0.rotationGroups != null) {
            LinkedHashSet var1 = new LinkedHashSet<>();

            for (ConnectedBlockPatternConfig.RotationGroup var5 : var0.rotationGroups) {
               var5.addRotationTuples(var1);
            }

            var0.allowedTransformRotations = List.copyOf(var1);
            var0.rotationGroups = null;
         }
      })
      .build();
   class="kw">private ConnectedBlockRule rule;
   class="kw">private ConnectedBlockPatternOutput output;
   @Nullable
   class="kw">private ConnectedBlockPatternConfig.RotationGroup[] rotationGroups;
   class="kw">private List<RotationTuple> allowedTransformRotations = List.of(RotationTuple.NONE);
   class="kw">private boolean transformRulesWithOrientation;

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

   @Nullable
   class="kw">public ConnectedBlockRule getRule() {
      class="kw">return this.rule;
   }

   class="kw">public ConnectedBlockPatternOutput getOutput() {
      class="kw">return this.output;
   }

   @Nonnull
   class="kw">public List<RotationTuple> getAllowedTransformRotations() {
      class="kw">return this.allowedTransformRotations;
   }

   class="kw">public boolean isTransformRulesWithOrientation() {
      class="kw">return this.transformRulesWithOrientation;
   }

   @Nonnull
   class="kw">public ConnectedBlockPattern toPacket() {
      ConnectedBlockPattern var1 = new ConnectedBlockPattern();
      var1.rule = this.rule == null ? null : this.rule.toPacket();
      var1.transformRulesWithOrientation = this.transformRulesWithOrientation;
      var1.outputShapeId = this.output == null ? "" : this.output.getShapeId();
      var1.rotations = new int[this.allowedTransformRotations.size()];

      for (int var2 = 0; var2 < this.allowedTransformRotations.size(); var2++) {
         var1.rotations[var2] = this.allowedTransformRotations.get(var2).index();
      }

      class="kw">return var1;
   }

   class="kw">public enum AllowedRotation {
      None,
      Ninety,
      OneEighty,
      TwoSeventy,
      All;

      class="kw">public class="kw">static class="kw">final EnumCodec<ConnectedBlockPatternConfig.AllowedRotation> CODEC = new EnumCodec<>(ConnectedBlockPatternConfig.AllowedRotation.class);

      AllowedRotation() {
      }

      class="kw">public void addRotations(Collection<Rotation> var1) {
         class="kw">switch (this) {
            case None:
               var1.add(Rotation.None);
               break;
            case Ninety:
               var1.add(Rotation.Ninety);
               break;
            case OneEighty:
               var1.add(Rotation.OneEighty);
               break;
            case TwoSeventy:
               var1.add(Rotation.TwoSeventy);
               break;
            case All:
               var1.add(Rotation.None);
               var1.add(Rotation.Ninety);
               var1.add(Rotation.OneEighty);
               var1.add(Rotation.TwoSeventy);
         }
      }
   }

   class="kw">public class="kw">static class RotationGroup {
      class="kw">public class="kw">static class="kw">final BuilderCodec<ConnectedBlockPatternConfig.RotationGroup> CODEC = BuilderCodec.builder(
            ConnectedBlockPatternConfig.RotationGroup.class, ConnectedBlockPatternConfig.RotationGroup::new
         )
         .append(new KeyedCodec<>("Yaw", ConnectedBlockPatternConfig.AllowedRotation.CODEC, false), (var0, var1) -> var0.yaw = var1, var0 -> var0.yaw)
         .add()
         .append(new KeyedCodec<>("Pitch", ConnectedBlockPatternConfig.AllowedRotation.CODEC, false), (var0, var1) -> var0.pitch = var1, var0 -> var0.pitch)
         .add()
         .append(new KeyedCodec<>("Roll", ConnectedBlockPatternConfig.AllowedRotation.CODEC, false), (var0, var1) -> var0.roll = var1, var0 -> var0.roll)
         .add()
         .build();
      class="kw">private ConnectedBlockPatternConfig.AllowedRotation yaw = ConnectedBlockPatternConfig.AllowedRotation.None;
      class="kw">private ConnectedBlockPatternConfig.AllowedRotation pitch = ConnectedBlockPatternConfig.AllowedRotation.None;
      class="kw">private ConnectedBlockPatternConfig.AllowedRotation roll = ConnectedBlockPatternConfig.AllowedRotation.None;

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

      class="kw">public void addRotationTuples(LinkedHashSet<RotationTuple> var1) {
         ObjectArrayList var2 = new ObjectArrayList();
         ObjectArrayList var3 = new ObjectArrayList();
         ObjectArrayList var4 = new ObjectArrayList();
         this.yaw.addRotations(var2);
         this.pitch.addRotations(var3);
         this.roll.addRotations(var4);
         ObjectListIterator var5 = var2.iterator();

         while (var5.hasNext()) {
            Rotation var6 = (Rotation)var5.next();
            ObjectListIterator var7 = var3.iterator();

            while (var7.hasNext()) {
               Rotation var8 = (Rotation)var7.next();
               ObjectListIterator var9 = var4.iterator();

               while (var9.hasNext()) {
                  Rotation var10 = (Rotation)var9.next();
                  var1.add(RotationTuple.of(var6, var8, var10));
               }
            }
         }
      }
   }
}