RotationOrigin enum

Пакет: com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential.transforms

Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/operations/sequential/transforms/RotateOperation.java

Поля (1)

МодификаторыТипИмя
OffsetCenter, ClickCenter, Player

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential.transforms;

class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfig;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfigCommandExecutor;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.system.SequenceBrushOperation;
class="kw">import com.hypixel.hytale.builtin.buildertools.tooloperations.transform.Rotate;
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.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.Rotation;
class="kw">import com.hypixel.hytale.protocol.packets.buildertools.BrushAxis;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class RotateOperation class="kw">extends SequenceBrushOperation {
   class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">public class="kw">static class="kw">final BuilderCodec<RotateOperation> CODEC = BuilderCodec.builder(RotateOperation.class, RotateOperation::new)
      .append(new KeyedCodec<>("RotationAxis", new EnumCodec<>(BrushAxis.class)), (var0, var1) -> var0.rotationAxisArg = var1, var0 -> var0.rotationAxisArg)
      .add()
      .append(new KeyedCodec<>("RotationAngle", new EnumCodec<>(Rotation.class)), (var0, var1) -> var0.rotationAngleArg = var1, var0 -> var0.rotationAngleArg)
      .add()
      .append(
         new KeyedCodec<>("RotationOrigin", new EnumCodec<>(RotateOperation.RotationOrigin.class)),
         (var0, var1) -> var0.rotationOriginArg = var1,
         var0 -> var0.rotationOriginArg
      )
      .add()
      .documentation("Rotates the brush based on axis, angle, and origin")
      .build();
   @Nonnull
   class="kw">public Rotation rotationAngleArg = Rotation.None;
   @Nonnull
   class="kw">public BrushAxis rotationAxisArg = BrushAxis.None;
   @Nonnull
   class="kw">public RotateOperation.RotationOrigin rotationOriginArg = RotateOperation.RotationOrigin.OffsetCenter;

   class="kw">public RotateOperation() {
      super("Rotation", "Changes the orientation of the brush shape with a rotation", false);
   }

   @Override
   class="kw">public void modifyBrushConfig(
      @Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
   ) {
      if (this.rotationOriginArg == RotateOperation.RotationOrigin.OffsetCenter) {
         var2.setTransformOrigin(var2.getOriginAfterOffset());
      } else if (this.rotationOriginArg == RotateOperation.RotationOrigin.ClickCenter) {
         var2.setTransformOrigin(var2.getExecutionOrigin());
      } else if (this.rotationOriginArg == RotateOperation.RotationOrigin.Player) {
         TransformComponent var5 = var4.getComponent(var1, TransformComponent.getComponentType());
         if (var5 == null) {
            var2.setErrorFlag("Could not get the player's position.");
            class="kw">return;
         }

         Vector3d var6 = var5.getPosition();
         var2.setTransformOrigin(new Vector3i(MathUtil.floor(var6.x()), MathUtil.floor(var6.y()), MathUtil.floor(var6.z())));
      }

      var2.setTransform(Rotate.forAxisAndAngle(this.rotationAxisArg, this.rotationAngleArg));
   }

   class="kw">public enum RotationOrigin {
      OffsetCenter,
      ClickCenter,
      Player;

      RotationOrigin() {
      }
   }
}