SpawnNpcEffect class

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

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

extends: TriggerEffect

Поля (7)

МодификаторыТипИмя
final int MAX_COUNT
Store var2
SpawnNpcEffect var3
Vector3d var3
Rotation3f var4
String var5
int var6

Методы (3)

МодификаторыВозвратСигнатура
for for(int var7 = 0; var7 < var6; var7++)
if if(this.origin == EffectOrigin.VOLUME_ORIGIN)
if if(this.offset != null)

Исходный код

Показать/скрыть
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.Rotation3f;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class SpawnNpcEffect class="kw">extends TriggerEffect {
   class="kw">private class="kw">static class="kw">final int MAX_COUNT = 64;
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<SpawnNpcEffect> CODEC = BuilderCodec.builder(SpawnNpcEffect.class, SpawnNpcEffect::new, BASE_CODEC)
      .append(new KeyedCodec<>("NpcType", Codec.STRING), (var0, var1) -> var0.npcType = var1, var0 -> var0.npcType)
      .add()
      .append(new KeyedCodec<>("GroupType", Codec.STRING, false), (var0, var1) -> var0.groupType = var1, var0 -> var0.groupType)
      .add()
      .append(new KeyedCodec<>("Origin", new EnumCodec<>(EffectOrigin.class), false), (var0, var1) -> var0.origin = var1, var0 -> var0.origin)
      .add()
      .append(new KeyedCodec<>("Offset", Vector3dUtil.CODEC, false), (var0, var1) -> var0.offset = var1, var0 -> var0.offset)
      .add()
      .append(new KeyedCodec<>("Count", Codec.INTEGER, false), (var0, var1) -> var0.count = var1, var0 -> var0.count)
      .add()
      .append(new KeyedCodec<>("Yaw", Codec.FLOAT, false), (var0, var1) -> var0.yaw = var1, var0 -> var0.yaw)
      .add()
      .build();
   @Nullable
   class="kw">private String npcType;
   @Nullable
   class="kw">private String groupType;
   @Nonnull
   class="kw">private EffectOrigin origin = EffectOrigin.VOLUME_ORIGIN;
   @Nonnull
   class="kw">private Vector3d offset = new Vector3d();
   class="kw">private int count = 1;
   class="kw">private float yaw;

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

   @Nonnull
   class="kw">public class="kw">static SpawnNpcEffect create(@Nonnull TriggerEventType var0, @Nonnull String var1, @Nonnull EffectOrigin var2) {
      SpawnNpcEffect var3 = new SpawnNpcEffect();
      var3.setEventType(var0);
      var3.npcType = var1;
      var3.origin = var2;
      class="kw">return var3;
   }

   @Override
   class="kw">public void execute(@Nonnull TriggerContext var1) {
      if (this.npcType != null && !this.npcType.isBlank()) {
         Store var2 = var1.getStore();
         Vector3d var3 = var1.resolveOrigin(this.origin, this.offset, TriggerContext.MissingActor.FALLBACK_TO_VOLUME);
         Rotation3f var4 = new Rotation3f(0.0F, (float)Math.toRadians(this.yaw), 0.0F);
         String var5 = this.groupType != null && !this.groupType.isBlank() ? this.groupType : null;
         int var6 = Math.min(Math.max(this.count, 1), 64);

         for (int var7 = 0; var7 < var6; var7++) {
            NPCPlugin.get().spawnNPC(var2, this.npcType, var5, var3, var4);
         }
      }
   }

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

         this.yaw = YawRotation.addDegrees(this.yaw, var1);
      }
   }
}