ActionSpawnInteraction class

Пакет: com.hypixel.hytale.server.npc.corecomponents.interaction

Файл: com/hypixel/hytale/server/npc/corecomponents/interaction/ActionSpawnInteraction.java

extends: DeferrableAction

Поля (20)

МодификаторыТипИмя
final InteractionType INTERACTION_TYPE
return
RootInteraction var10
Vector3d var11
var11
var11
TransformComponent var12
Ref var13
InteractionManager var14
InteractionContext var15
InteractionChain var16
InteractionHost var17
Rotation3f var18
TransformComponent var2
Ref var5
Rotation3f var6
IPositionProvider var7
Rotation3f var7
Rotation3f var8
Rotation3f var8

Методы (14)

МодификаторыВозвратСигнатура
abstract return new Rotation3freturn new Rotation3f(this.pitchRad, this.yawRad, this.rollRad)
if if(this.interactionId == null)
if if(this.positionSource == PositionSource.Sensor)
if if(var10 != null)
if if(this.positionSource == PositionSource.Sensor)
if if(var12 == null)
if if(var13 != null)
if if(var14 != null)
if if(var17 != null)
if if(this.orientationSource == OrientationSource.UseSensor)
if if(this.orientationSource == OrientationSource.Absolute)
if if(this.orientationSource == OrientationSource.UseTarget)
if if(var6 != null)
abstract super super(var1, var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.npc.corecomponents.interaction;

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionChain;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.host.InteractionHost;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.DeferrableAction;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.OrientationSource;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.PositionSource;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.interaction.builders.BuilderActionSpawnInteraction;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.interactions.NPCInteractionSimulationHandler;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.IPositionProvider;
class="kw">import com.hypixel.hytale.server.npc.sensorinfo.InfoProvider;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class ActionSpawnInteraction class="kw">extends DeferrableAction {
   class="kw">private class="kw">static class="kw">final InteractionType INTERACTION_TYPE = InteractionType.Primary;
   @Nullable
   class="kw">private class="kw">final String interactionId;
   @Nonnull
   class="kw">private class="kw">final PositionSource positionSource;
   @Nonnull
   class="kw">private class="kw">final OrientationSource orientationSource;
   class="kw">private class="kw">final float yawRad;
   class="kw">private class="kw">final float pitchRad;
   class="kw">private class="kw">final float rollRad;
   class="kw">private class="kw">final float ttlSeconds;
   class="kw">private class="kw">final int targetSlot;

   class="kw">public ActionSpawnInteraction(@Nonnull BuilderActionSpawnInteraction var1, @Nonnull BuilderSupport var2) {
      super(var1, var2);
      this.interactionId = var1.getInteraction(var2);
      this.positionSource = var1.getPositionSource();
      this.orientationSource = var1.getOrientationSource();
      this.yawRad = var1.getYaw(var2) * (float) (Math.PI / 180.0);
      this.pitchRad = var1.getPitch(var2) * (float) (Math.PI / 180.0);
      this.rollRad = var1.getRoll(var2) * (float) (Math.PI / 180.0);
      this.ttlSeconds = var1.getTtl(var2);
      this.targetSlot = var1.getTargetSlot(var2);
   }

   @Override
   class="kw">public boolean canExecute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      class="kw">return super.canExecute(var1, var2, var3, var4, var6) && this.interactionId != null;
   }

   @Override
   class="kw">public boolean execute(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable InfoProvider var3, double var4, @Nonnull Store<EntityStore> var6
   ) {
      super.execute(var1, var2, var3, var4, var6);
      if (this.interactionId == null) {
         class="kw">return true;
      }

      IPositionProvider var7 = var3 != null ? var3.getPositionProvider() : null;
      Rotation3f var8 = this.resolveOrientation(var1, var2, var7, var6);
      if (this.positionSource == PositionSource.Sensor) {
         if (var7 == null || !var7.providePosition(this.scratch)) {
            class="kw">return true;
         }

         this.scheduleOrFire(var2, var1, this.scratch.x, this.scratch.y, this.scratch.z, var8, var6);
      } else {
         this.scheduleOrFire(var2, var1, 0.0, 0.0, 0.0, var8, var6);
      }

      class="kw">return true;
   }

   @Override
   class="kw">protected void fire(@Nonnull Ref<EntityStore> var1, double var2, double var4, double var6, @Nullable Rotation3f var8, @Nonnull Store<EntityStore> var9) {
      RootInteraction var10 = RootInteraction.getRootInteractionOrUnknown(this.interactionId);
      if (var10 != null) {
         Vector3d var11;
         if (this.positionSource == PositionSource.Sensor) {
            var11 = new Vector3d(var2, var4, var6);
         } else {
            TransformComponent var12 = var9.getComponent(var1, TransformComponent.getComponentType());
            if (var12 == null) {
               class="kw">return;
            }

            var11 = new Vector3d(var12.getPosition());
         }

         Rotation3f var18 = var8 != null ? var8 : new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
         Ref var13 = InteractionHost.spawnHost(var9, var11, var18, this.ttlSeconds, new NPCInteractionSimulationHandler());
         if (var13 != null) {
            InteractionManager var14 = var9.getComponent(var13, InteractionModule.get().getInteractionManagerComponent());
            if (var14 != null) {
               InteractionContext var15 = InteractionContext.forProxyEntity(var14, var1, var13, var9);
               InteractionChain var16 = var14.initChain(INTERACTION_TYPE, var15, var10, false);
               var14.queueExecuteChain(var16);
               InteractionHost var17 = var9.getComponent(var13, InteractionHost.getComponentType());
               if (var17 != null) {
                  var17.setChain(var16);
               }
            }
         }
      }
   }

   @Nonnull
   class="kw">private Rotation3f resolveOrientation(
      @Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, @Nullable IPositionProvider var3, @Nonnull Store<EntityStore> var4
   ) {
      if (this.orientationSource == OrientationSource.UseSensor) {
         Rotation3f var8 = new Rotation3f();
         class="kw">return var3 != null && var3.provideOrientation(var8) ? var8 : new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
      }

      if (this.orientationSource == OrientationSource.Absolute) {
         class="kw">return new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
      }

      if (this.orientationSource == OrientationSource.UseTarget) {
         Ref var5 = var2.getMarkedEntitySupport().getMarkedEntityRef(this.targetSlot);
         if (var5 != null && var5.isValid()) {
            Rotation3f var6 = readEntityRotation(var5, var4);
            if (var6 != null) {
               class="kw">return var6;
            }
         }
      }

      Rotation3f var7 = readEntityRotation(var1, var4);
      class="kw">return var7 != null ? var7 : new Rotation3f(this.pitchRad, this.yawRad, this.rollRad);
   }

   @Nullable
   class="kw">private class="kw">static Rotation3f readEntityRotation(@Nonnull Ref<EntityStore> var0, @Nonnull Store<EntityStore> var1) {
      TransformComponent var2 = var1.getComponent(var0, TransformComponent.getComponentType());
      class="kw">return var2 != null ? new Rotation3f(var2.getRotation()) : null;
   }
}