BuilderSensorAge class

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

Файл: com/hypixel/hytale/server/npc/corecomponents/lifecycle/builders/BuilderSensorAge.java

extends: BuilderSensorBase

Поля (6)

МодификаторыТипИмя
final TemporalAmount MIN_TIME
NPCEntity var2
Instant var3
LocalDateTime var4
TemporalAmount[] var5
Instant[] var6

Методы (1)

МодификаторыВозвратСигнатура
abstract return new SensorAgereturn new SensorAge(this, var1)

Исходный код

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

class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.server.core.modules.time.WorldTimeResource;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Builder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.InstructionType;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.TemporalArrayHolder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.validators.TemporalSequenceValidator;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.builders.BuilderSensorBase;
class="kw">import com.hypixel.hytale.server.npc.corecomponents.lifecycle.SensorAge;
class="kw">import com.hypixel.hytale.server.npc.entities.NPCEntity;
class="kw">import com.hypixel.hytale.server.npc.instructions.Sensor;
class="kw">import java.time.Duration;
class="kw">import java.time.Instant;
class="kw">import java.time.LocalDateTime;
class="kw">import java.time.Period;
class="kw">import java.time.temporal.TemporalAmount;
class="kw">import javax.annotation.Nonnull;

class="kw">public class BuilderSensorAge class="kw">extends BuilderSensorBase {
   class="kw">public class="kw">static class="kw">final TemporalAmount MIN_TIME = Duration.ZERO;
   class="kw">public class="kw">static class="kw">final TemporalAmount MAX_TIME = Period.ofDays(Integer.MAX_VALUE);
   class="kw">protected class="kw">final TemporalArrayHolder ageRange = new TemporalArrayHolder();

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

   @Nonnull
   @Override
   class="kw">public String getShortDescription() {
      class="kw">return "Triggers when the age of the NPC falls between a certain range";
   }

   @Nonnull
   @Override
   class="kw">public String getLongDescription() {
      class="kw">return "Triggers when the age of the NPC falls between a certain range. Range is defined in terms of period (e.g. 1Y2M3W4D - 1 year, 2 months, 3 weeks, 4 days) or duration (e.g. 2DT3H4M - 2 days, 3 hours, 4 minutes)";
   }

   @Nonnull
   class="kw">public Sensor build(@Nonnull BuilderSupport var1) {
      class="kw">return new SensorAge(this, var1);
   }

   @Nonnull
   @Override
   class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
      class="kw">return BuilderDescriptorState.Stable;
   }

   @Nonnull
   @Override
   class="kw">public Builder<Sensor> readConfig(@Nonnull JsonElement var1) {
      this.requireTemporalRange(
         var1,
         "AgeRange",
         this.ageRange,
         TemporalSequenceValidator.betweenMonotonic(MIN_TIME, MAX_TIME),
         BuilderDescriptorState.Stable,
         "The age range within which to trigger",
         null
      );
      this.requireInstructionType(InstructionType.NPCOnlyInstructions);
      class="kw">return this;
   }

   @Nonnull
   class="kw">public Instant[] getAgeRange(@Nonnull BuilderSupport var1) {
      NPCEntity var2 = var1.getHolder().getComponent(NPCEntity.getComponentType());
      assert var2 != null : "NPC component null in age sensor construction!";
      Instant var3 = var2.getSpawnInstant();
      LocalDateTime var4 = LocalDateTime.ofInstant(var3, WorldTimeResource.ZONE_OFFSET);
      TemporalAmount[] var5 = this.ageRange.getTemporalArray(var1.getExecutionContext());
      Instant[] var6 = new Instant[var5.length];
      var6[0] = var4.plus(var5[0]).toInstant(WorldTimeResource.ZONE_OFFSET);
      var6[1] = var4.plus(var5[1]).toInstant(WorldTimeResource.ZONE_OFFSET);
      class="kw">return var6;
   }
}