DeferredFire class

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

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

implements: EntitySupport.DeferredAction

Поля (5)

МодификаторыТипИмя
private final Rotation3f capturedRotation
private double remaining
private final double x
private final double y
private final double z

Методы (2)

МодификаторыВозвратСигнатура
if if(this.remaining > 0.0)
public boolean tickpublic boolean tick(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5)

Исходный код

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

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.random.RandomExtra;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
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.builders.BuilderDeferrableAction;
class="kw">import com.hypixel.hytale.server.npc.instructions.Deferrable;
class="kw">import com.hypixel.hytale.server.npc.instructions.ExecutionSupport;
class="kw">import com.hypixel.hytale.server.npc.role.support.EntitySupport;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class="kw">abstract class DeferrableAction class="kw">extends ActionBase class="kw">implements Deferrable {
   class="kw">protected class="kw">final double[] delayRange;
   class="kw">protected class="kw">final boolean deferred;
   class="kw">protected class="kw">final Vector3d scratch = new Vector3d();

   class="kw">protected DeferrableAction(@Nonnull BuilderDeferrableAction var1, @Nonnull BuilderSupport var2) {
      super(var1);
      this.delayRange = var1.getDelayRange(var2);
      this.deferred = this.delayRange != null && this.delayRange.length >= 2 && this.delayRange[1] > 0.0;
   }

   @Override
   class="kw">public boolean isDeferred() {
      class="kw">return this.deferred;
   }

   class="kw">protected class="kw">abstract void fire(
      @Nonnull Ref<EntityStore> var1, double var2, double var4, double var6, @Nullable Rotation3f var8, @Nonnull Store<EntityStore> var9
   );

   class="kw">protected void scheduleOrFire(
      @Nonnull ExecutionSupport var1, @Nonnull Ref<EntityStore> var2, double var3, double var5, double var7, @Nonnull Store<EntityStore> var9
   ) {
      this.scheduleOrFire(var1, var2, var3, var5, var7, null, var9);
   }

   class="kw">protected void scheduleOrFire(
      @Nonnull ExecutionSupport var1,
      @Nonnull Ref<EntityStore> var2,
      double var3,
      double var5,
      double var7,
      @Nullable Rotation3f var9,
      @Nonnull Store<EntityStore> var10
   ) {
      if (this.deferred) {
         var1.getEntitySupport().addDeferredAction(new DeferrableAction.DeferredFire(RandomExtra.randomRange(this.delayRange), var3, var5, var7, var9));
      } else {
         this.fire(var2, var3, var5, var7, var9, var10);
      }
   }

   class="kw">private class="kw">final class DeferredFire class="kw">implements EntitySupport.DeferredAction {
      class="kw">private double remaining;
      class="kw">private class="kw">final double x;
      class="kw">private class="kw">final double y;
      class="kw">private class="kw">final double z;
      @Nullable
      class="kw">private class="kw">final Rotation3f capturedRotation;

      class="kw">private DeferredFire(double nullx, double nullxx, double nullxxx, double nullxxxx, @Nullable Rotation3f nullxxxxx) {
         this.remaining = nullx;
         this.x = nullxx;
         this.y = nullxxx;
         this.z = nullxxxx;
         this.capturedRotation = nullxxxxx;
      }

      @Override
      class="kw">public boolean tick(@Nonnull Ref<EntityStore> var1, @Nonnull ExecutionSupport var2, double var3, @Nonnull Store<EntityStore> var5) {
         this.remaining -= var3;
         if (this.remaining > 0.0) {
            class="kw">return false;
         }

         DeferrableAction.this.fire(var1, this.x, this.y, this.z, this.capturedRotation, var5);
         class="kw">return true;
      }
   }
}