Anchor enum

Пакет: com.hypixel.hytale.builtin.triggervolumes.effect.builtin

Файл: com/hypixel/hytale/builtin/triggervolumes/effect/builtin/PlayVfxEffect.java

Поля (1)

МодификаторыТипИмя
private final EffectOrigin origin

Методы (1)

МодификаторыВозвратСигнатура
abstract EVENT EVENT(EffectOrigin.EVENT)

Исходный код

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

class="kw">import com.hypixel.hytale.builtin.triggervolumes.YawRotation;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.EffectOrigin;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerContext;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEffect;
class="kw">import com.hypixel.hytale.builtin.triggervolumes.effect.TriggerEventType;
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.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class PlayVfxEffect class="kw">extends TriggerEffect {
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<PlayVfxEffect> CODEC = BuilderCodec.builder(PlayVfxEffect.class, PlayVfxEffect::new, BASE_CODEC)
      .append(new KeyedCodec<>("ParticleSystem", Codec.STRING), (var0, var1) -> var0.particleSystem = var1, var0 -> var0.particleSystem)
      .add()
      .append(new KeyedCodec<>("Offset", Vector3dUtil.CODEC, false), (var0, var1) -> var0.offset = var1, var0 -> var0.offset)
      .add()
      .append(new KeyedCodec<>("Anchor", new EnumCodec<>(PlayVfxEffect.Anchor.class), false), (var0, var1) -> var0.anchor = var1, var0 -> var0.anchor)
      .add()
      .append(new KeyedCodec<>("Scale", Codec.FLOAT, false), (var0, var1) -> var0.scale = var1, var0 -> var0.scale)
      .add()
      .append(new KeyedCodec<>("Rotation", Vector3dUtil.CODEC, false), (var0, var1) -> var0.rotation = var1, var0 -> var0.rotation)
      .add()
      .append(new KeyedCodec<>("Duration", Codec.FLOAT, false), (var0, var1) -> var0.duration = var1, var0 -> var0.duration)
      .add()
      .build();
   @Nullable
   class="kw">private String particleSystem;
   @Nonnull
   class="kw">private Vector3d offset = new Vector3d();
   @Nonnull
   class="kw">private PlayVfxEffect.Anchor anchor = PlayVfxEffect.Anchor.VOLUME;
   class="kw">private float scale = 1.0F;
   @Nonnull
   class="kw">private Vector3d rotation = new Vector3d();
   class="kw">private float duration;

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

   @Nonnull
   class="kw">public class="kw">static PlayVfxEffect create(@Nonnull TriggerEventType var0, @Nonnull String var1, @Nonnull PlayVfxEffect.Anchor var2) {
      PlayVfxEffect var3 = new PlayVfxEffect();
      var3.setEventType(var0);
      var3.particleSystem = var1;
      var3.anchor = var2;
      class="kw">return var3;
   }

   @Override
   class="kw">public void execute(@Nonnull TriggerContext var1) {
      if (this.particleSystem != null) {
         Store var2 = var1.getStore();
         Vector3d var3 = var1.resolveOrigin(this.anchor.origin, this.offset, TriggerContext.MissingActor.SKIP);
         if (var3 != null) {
            ParticleUtil.spawnParticleEffect(
               this.particleSystem,
               var3,
               (float)Math.toRadians(this.rotation.x),
               (float)Math.toRadians(this.rotation.y),
               (float)Math.toRadians(this.rotation.z),
               this.scale,
               this.duration,
               var2
            );
         }
      }
   }

   @Override
   class="kw">public void rotateInPlace(float var1, @Nonnull Vector3d var2) {
      if (this.anchor == PlayVfxEffect.Anchor.VOLUME) {
         if (this.offset != null) {
            YawRotation.rotate(this.offset, var1);
         }

         if (this.rotation != null) {
            this.rotation.x = YawRotation.addDegrees((float)this.rotation.x, var1);
         }
      }
   }

   class="kw">public enum Anchor {
      VOLUME(EffectOrigin.VOLUME_ORIGIN),
      ENTITY(EffectOrigin.ENTITY),
      EVENT(EffectOrigin.EVENT);

      @Nonnull
      class="kw">private class="kw">final EffectOrigin origin;

      Anchor(@Nonnull EffectOrigin nullxx) {
         this.origin = nullxx;
      }
   }
}